Stan Blog

學習過程中的一些記錄

[DB] 正規化 (normalization)

正規化的目的在於減少資料重複、增加資料一致性

正規化又分為

  • 第一階正規化  (First Normal Form, 1NF)
  • 第二階正規化  (Second Normal Form, 2NF)
  • 第三階正規化  (Third Normal Form, 3NF)
  • BC正規化    (Boyce–Codd Normal Form, BCNF)
  • 第四階正規化  (Fourth Normal Form, 4NF)
  • 第五階正規化  (Fifth Normal Form, 5NF)
  • 第六階正規化  (Sixth Normal Form, 6NF)
  • DK正規化    (Domain/Key Normal Form, DKNF)

這裡只介紹常用的 1NF、2NF、3NF

1NF

一個欄位只放一個值 每個表格都有 primary key

2NF

非主鍵欄位都和主鍵欄位具有相依性

e.g. 有 post 跟 user 兩張 table post 裡面有 user id 與 user name user name 這個欄位可以省略,由 user table 查詢

3NF

非主鍵欄位彼此都有相依性

e.g. order table 存了 price、quantity、total price 三個欄位 total price 這個欄位可以省略,用 price * quantity 計算出來


Ref:

Comments

comments powered by Disqus