Database Normalization 是一種減少資料重複性,及確保資料一致性的過程
共有六個正規化,First Normal Form (1NF) 到 Sixth Normal Form (6NF),大部分的 database 都是到 Third Normal Form (3NF)
First Normal Form (1NF)
- 每個在 column 的 data 必須是 atomic 的,沒有用逗號分開的多個值
- 每個 table 不能包含任何重複的 column groups
- 用 PK 識別每行 record 的唯一性
Second Normal Form (2NF)
要符合第二正規化要滿足以下條件:
- table 滿足 1NF 所有條件
- 將重複的 data 分開到另一個 table
- 用 FK 建立這些 tables 的關係
重複性的資料可能造成以下的問題:
- 浪費儲存空間
- 資料不一致性
- DML queries (e.g.
INSERT
,UPDATE
,DELETE
) 變慢
Third Normal From (3NF)
要符合第三正規化要滿足以下條件:
- table 滿足 1NF 和 2NF 所有條件
- 不包含沒有完全依賴 PK 的 columns (attributes)