mysql優化 三 逆規範化與反三正規化

2021-07-25 20:40:17 字數 803 閱讀 4951

資料庫設計時要滿足規範化這個道理大家都非常清楚,甚至有資料庫的三正規化, 好吧, 這有點讓我想起了機械人的三定律.但是否資料的規範化程度越高越好呢?這還是由實際需求來決定。

反規範的好處是降低連線操作的需求、降低外碼和索引的數目,還可能減少表的數目,相 應帶來的問題是可能出現資料的完整性問題。加快查詢速度,但會降低修改速度。因此,決定 做反規範時,一定要權衡利弊,仔細分析應用的資料訪問需求和實際的效能特點,好的索引和 其他方法經常能夠解決效能問題,而不必採用反規範這種方法。

在進行反規範操作之前,要充分考慮資料的訪問需求、常用表的大小、一些特殊的計算(例 如合計)、資料的物理儲存位置等。常用的反規範技術有增加冗餘列、增加派生列、重新組表 和分割表。

另外,逆規範技術需要維護資料的完整性。無論使用何種反規範技術,都需要一定的管理 來維護資料的完整性,常用的方法是批處理維護、應用邏輯和觸發器

1. 批處理維護是指對複製列或派生列的修改積累一定的時間後,執行一批處理作業或存 儲過程對複製或派生列進行修改,這只能在對實時性要求不高的情況下使用.

2. 資料的完整性也可由應用邏輯來實現,這就要求必須在同一事務中對所有涉及的表進 行增、刪、改操作.用應用邏輯來實現資料的完整性風險較大,因為同一邏輯必須在所有的應 用中使用和維護,容易遺漏,特別是在需求變化時,不易於維護。

3. 另一種方式就是使用觸發器,對資料的任何修改立即觸發對複製列或派生列的相應修 改,觸發器是實時的,而且相應的處理邏輯只在乙個地方出現,易於維護•一般來說,是解決 這類問題比較好的辦法。

資料庫規範化與經典三正規化

冗餘導致多種更新異常,也就是插入 更新和刪除行的操作困難。規範化 normalization 是通過修改表以減少冗餘和矛盾的一系列步驟。在每一步之後,資料庫都達到乙個特定的正規化 normal form 關係模型定義了三種正規化,以著名的序數命名。第一正規化 1nf 第二正規化 2nf 第三正規化 ...

SQL基礎 資料庫規範化與三正規化

冗餘導致多種更新異常,也就是插入 更新和刪除行的操作困難。規範化 normalization 是通過修改表以減少冗餘和矛盾的一系列步驟。在每一步之後,資料庫都達到乙個特定的正規化 normal form 關係模型定義了三種正規化,以著名的序數命名。第一正規化 1nf 第二正規化 2nf 第三正規化 ...

MySQL三正規化與反三正規化

目錄反三正規化 對於三正規化和反三正規化的選擇 參考cs notes 資料庫 資料庫系統原理.html 正規化 屬性不可再分 即表中的字段不能再拆分 例 乙個name屬性可以分為firstname屬性和lastname屬性,則不符合第一正規化。表中有鍵碼,非主屬性完全依賴鍵碼 即表中的非主屬性完全依...