在参考互联网和教科书时,我遇到了两种规范化程序。即。
键入 1。仅基于主键的范式。
在这种类型中,
-> 2NF 不允许部分依赖于主键。
-> 3NF 不允许对主键的传递依赖。
键入 2。基于所有候选键的更通用的范式
在这种类型中,
考虑了对所有候选键的部分依赖和传递依赖。
在我提到的大多数站点中,我都找到了仅基于第一种类型的教程和注释。但是 Navathe 和 Elmasri 的教科书“数据库系统基础”描述了这两种类型。甚至维基百科关于 2NF 的页面也单独提到了基于第二种类型的“2NF 和候选密钥”。
但是教科书和 wiki 都没有提到哪种类型更好或者实际上更喜欢哪种类型。
当没有提到类型时应该遵循哪种类型?希望你理解我的问题。
请帮我解决这个问题。
规范化涉及所有候选键。主键只是一个候选键。主键与任何其他候选键没有区别。
可能会出现混淆,因为在关系数据库理论的早期,术语主键用于表示任何和所有候选键,而现代用法是主键仅表示一个“首选”或被认为对数据库用户具有特殊意义的键. 不幸的是,您在网上或什至在印刷品上看到的许多“定义”都是错误的。