資料庫正規化
外觀
![本頁使用了標題或全文手工轉換](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
「database normalization」的各地常用譯名 | |
---|---|
中國大陸 | 數據庫規範化 |
臺灣 | 資料庫正規化 |
港澳 | 資料庫規範化 |
![]() | 此條目可參照英語維基百科相應條目來擴充。 |
數據庫規範化,又稱正規化、標準化,是數據庫設計的一系列原理和技術,以減少數據庫中數據冗餘,增進數據的一致性。關係模型的發明者埃德加·科德最早提出這一概念,並於1970年代初定義了第一範式、第二範式和第三範式的概念,還與Raymond F. Boyce於1974年共同定義了第三範式的改進範式——BC範式。
除外還包括針對多值依賴的第四範式,連接依賴的第五範式、DK範式和第六範式。
現在數據庫設計最多滿足3NF,普遍認為範式過高,雖然具有對數據關係更好的約束性,但也導致數據關係表增加而令數據庫IO更易繁忙,原來交由數據庫處理的關係約束現更多在數據庫使用程序中完成。
範式
[編輯]範式如下(從最不規範到規範排序):
- UNF: 非標準化形式
- 1NF: 第一範式
- 2NF: 第二範式
- 3NF: 第三範式
- EKNF: 主鍵範式
- BCNF: Boyce–Codd 範式
- 4NF: 第四範式
- ETNF: 關鍵元組範式
- 5NF: 第五範式
- DKNF: 域鍵範式
- 6NF: 第六範式
UNF (1970) |
1NF (1971) |
2NF (1971) |
3NF (1971) |
EKNF (1982) |
BCNF (1974) |
4NF (1977) |
ETNF (2012) |
5NF (1979) |
DKNF (1981) |
6NF (2003) | |
---|---|---|---|---|---|---|---|---|---|---|---|
主鍵(無重複元組) | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
沒有重複組 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
字段原子性(元組只有一個值) | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
沒有部分函數依賴(值依賴於每個主鍵這一整體) | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
沒有傳遞函數依賴 (值僅依賴於候選鍵) | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
每個非平凡的函數依賴涉及一個超鍵或者主鍵的子鍵 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不適用 |
沒有函數依賴造成的冗餘 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不適用 |
每個非平凡的多值依賴都有一個超鍵 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不適用 |
超鍵是每個顯式連接依賴的一部分 [1] | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不適用 |
候選鍵隱含了每個非平凡的連接依賴關係 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不適用 |
每個約束都是域約束和鍵約束的結果 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
不適用 |
每個連接依賴都是平凡的 | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
參考文獻
[編輯]- ^ Darwen, Hugh; Date, C. J.; Fagin, Ronald. A Normal Form for Preventing Redundant Tuples in Relational Databases (PDF). Proceedings of the 15th International Conference on Database Theory. EDBT/ICDT 2012 Joint Conference. ACM International Conference Proceeding Series. Association for Computing Machinery: 114. 2012 [2018-05-22]. ISBN 978-1-4503-0791-8. OCLC 802369023. doi:10.1145/2274576.2274589. (原始內容存檔 (PDF)於2017-08-08).
|