mysql資料庫設計正規化與反設計正規化操作思考

2021-08-15 01:42:58 字數 783 閱讀 4057

資料庫結構優化的目的

減少資料冗餘,盡量避免資料維護中出現更新、插入和刪除異常,節約資料儲存空間。

資料庫設計正規化

第一正規化:

1、資料表中的所有欄位都只具有單一屬性

2、單一屬性的列是由基本的資料型別所構成的

3、設計出來的表都應該是簡單的二維表

第二正規化:

1、要求乙個表中具有乙個業務主鍵,也就是說符合第二正規化的表中不能存在非主鍵列對部分主鍵的依賴關係

第三正規化:

1、指每乙個非主屬性既不部分依賴

什麼時候反正規化化設計表

當關聯表很多,例如4張以上,可以考慮進行反正規化化冗餘設計,讓關聯表資料減少,因為關聯表越多,mysql效能也會下降。

正規化化設計的優缺點

優點:

1、可以盡量的減少資料冗餘

2、正規化化的更新操作比反正規化化更快

3、正規化化的表通常比反正規化化小

缺點:

1、對於查詢需要對多個表進行關聯(讀效能沒有反正規化化高)

2、更難進行索引優化

反正規化化設計的優缺點

優點:

1、可以減少表的關聯操作

2、可以更好的進行索引優化

缺點:

1、存在資料冗餘及資料維護異常

2、對資料的修改需要更多的成本

資料庫正規化與反正規化

最近涉及到設計和建立數倉表,資料總體劃分為ods fact aggr dws rpt dim層,具體結構如下圖所示 遵從設計規則 以星型模型為設計模式,維度採用反正規化化,且維度資料要整個倉庫可共用,資料準確性要保證,事實表允許冗餘部分維度資料。針對其中幾個地方,解釋並mark一下。多維資料模型是最...

資料庫正規化設計和反正規化設計

1 庫表設計遵從三大正規化。a 資料庫設計的第一大正規化 資料庫表中的所有欄位都只具有單一屬性 單一屬性的列是由基本資料型別所構成的 設計出來的表都是簡單的二維表。乙個列存放的資訊只是乙個屬性的資訊,不能乙個字段存放多個屬性的組合資訊。即資料庫表中的所有字段值都是不可分解的原子值 b 資料庫設計的第...

Mysql資料庫設計之三正規化和反正規化

先說明正規化中涉及兩個索引概念 主鍵和復合主鍵。原則上,該錶address欄位還可以再繼續拆分成下表,但是最終還是得根據使用者需求來設計,所以兩表都可以說是遵循第一正規化原則。貨物型別 貨物id 貨物名稱瓷碗1 白色瓷碗瓷碗2 青花瓷碗瓷碗3 雕花瓷碗 三合板1 普通三合板 在該表中的主鍵依然是 貨...