[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
計算出來