数据库规范化
数据库规范化,又称正规化、标准化,是数据库设计的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念,还与Raymond F. Boyce于1974年共同定义了第三范式的改进范式——BC范式。
“database normalization”的各地常用译名 | |
---|---|
中国大陆 | 数据库规范化 |
台湾 | 资料库正规化 |
港澳 | 资料库规范化 |
此条目可参照英语维基百科相应条目来扩充。 |
除外还包括针对多值依赖的第四范式,连接依赖的第五范式、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).