在商業環境中,絕大多數超越第3正規化的設計都是不切實際的。因為應用程式在3nf級別就能變現的相當出色。我們上述的很多例子,將指向箭頭反過來就是先了反正規化化。所以我們要對整體的結構有個比較深的認識,才確定我們是否正規化話或者反正規化化,正規化化越深的東西越導致表的增多,也就意味著查詢的join開銷。
總結一下反正規化化的一些準則:
分離活動和靜態的資料,資料可分為獨立的物理表,即
活動和靜態表。那些累計的歷史資料導致我們佔據了絕大多數的空間。這是影響效能的最經常的資料,在資料倉儲設計中,我們經常將無效的靜態的資料移植到資料倉儲中,由於olap和資料探勘。
在表之間複製字段,在那些不是直接有鏈結表的之間複製字段,使得我們不必每次進行查詢都要通過第3方表,越少的join操作,使得效能的大幅度提公升。
在夫表中建立統計字段,這樣可以減去消耗大的聚合操作,但是實時更新會給我們帶來另外的麻煩。
分離繁重和輕鬆的字段,就像把活動和靜態的資料資料表分離一樣,這個避免持續物理掃瞄很少使用的資料字段,尤其是當這些欄位不包含空值。這是乙個潛在的合理利用4nf在分離**分為兩個**,相關的一對一關係。
mysql 正規化化 MySQL 正規化和反正規化
1.第一正規化 1nf 列不能再拆分 原子性,字段不可分 列的資訊 只要是關係型資料庫,就自動滿足1nf 2.第二正規化 2nf 主鍵唯一,且被依賴 在第一正規化基礎上建立的,即滿足第二正規化的必須先滿足第一正規化。要求db表中的每個例項或行必須可以被唯一區分,通常設計乙個主鍵來實現,其他屬性完全依...
mysql 正規化化 Mysql正規化與反正規化
第一正規化 1nf 第一正規化,強調屬性的原子性約束,要求屬性具有原子性,不可再分解。第二正規化 2nf 第二正規化,強調記錄的唯一性約束,表必須有乙個主鍵,並且沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。舉個例子 版本表 版本編碼,版本名稱,產品編碼,產品名稱 其中主鍵是 ...
關於資料庫反正規化設計的一些要點
在實際的開發應用中,我們常用的資料庫設計是反正規化的。原因是遵循三大正規化的資料庫設計常常帶來一定的弊端,例如,加大開發的複雜度 帶來一定的效能損耗。第一正規化 強調的是列的原子性,即資料庫表的每一列都是不可分割的原子資料項。第二正規化 要求實體的屬性完全依賴於主關鍵字。所謂完全依賴是指不能存在僅依...