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

2021-10-03 22:50:23 字數 1145 閱讀 3108

先說明正規化中涉及兩個索引概念:主鍵和復合主鍵。

原則上,該錶address欄位還可以再繼續拆分成下表,

但是最終還是得根據使用者需求來設計,所以兩表都可以說是遵循第一正規化原則。

貨物型別

貨物id

貨物名稱瓷碗1

白色瓷碗瓷碗2

青花瓷碗瓷碗3

雕花瓷碗

三合板1

普通三合板

在該表中的主鍵依然是(貨物型別、貨物id),非主鍵字段「貨物名稱」,完全依賴於這兩個主鍵,那麼我們就可以說,該表是符合資料庫第二正規化的。

不符合第三正規化例子:

學生表id

學生所在院系

院系位址1張三

計算機系

行政樓1號2李四

數學系行政樓2號3王五

計算機系

行政樓1號

符合第三正規化例子:

學生表id

學生院系id1張三

12李四2

3王五1院系表id

所在院系

院系位址

1計算機系

行政樓1樓

2數學系

行政樓2樓

學生表id

學生院系id

所在院系1張三

1計算機系2李四

2數學系3王五

1計算機系

院系表id

所在院系

院系位址

1計算機系

行政樓1樓

2數學系

行政樓2樓

正規化的優點:更新資料快,重複資料少,修改資料少,表很小可以在記憶體中執行,查詢時需要更少的distinct或group by

正規化的缺點:查詢時需要更多的關聯,可能引起索引策略無效

反正規化的優點:所有的資料可以在一張表上顯示,可以避免關聯,可以設計有效的索引

反正規化的缺點:冗餘欄位較多,刪除記錄會造成有用資料丟失

資料庫設計之三正規化

上圖表的設計明顯不符合第一正規化,因為列下面又出現了復合列,破壞了資料庫中的每一列都必須不可拆分的最小單元的原則。實際上在現有的relational dbms中,這種結構的表也是建立不出來的,關係型資料庫不允許把資料庫表的一列再分成兩列或者多列,所以在關係型資料庫中建立的表均滿足最基礎的第一正規化。...

資料庫設計之三大正規化

為了建立冗餘較小 結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的總結。要想設計乙個結構合理的關係型資料庫,必須滿足一定的正規化。在實際開發中最為常見的設計正規化有三個 1 第一正規化 確保每列保持原子性 第一正規化是最基本的正規化...

資料庫設計之三大正規化

背景 表設計後,很可能結構不合理,出現資料重複儲存,簡稱資料的冗餘,這對資料的增刪改查帶來很多後患,所以我們需要審核是否合理,如何審核呢?需要一些有關資料庫設計的理論指導規則,這些規則業界簡稱資料庫的正規化。兩個重要概念 1 部分函式依賴 1 存在資料冗餘 2 新增資料會有異常 3 更新資料會有異常...