在我看来,您可能希望声明其他功能依赖项(当然不是超级键),但SQL没有提供简单的方法。这是为什么?
答案 0 :(得分:3)
我不知道SQL委员会以“为什么”设置它的方式的第一手答案,但我认为SQL的设计者只需要普通表中的一个主键。 3NF数据库设计中的所有其他列在功能上都依赖于该密钥,而且仅依赖于该密钥。
您可以从函数依赖项派生键,同样可以从超级键派生函数依赖项。但只有当它们以逻辑对称的方式被正确宣布时才会被宣布。
如果你可以声明两个键和FD,那么就有可能声明一个与自身逻辑冲突的表,这会破坏规范化。
这种语言最好只提供一种机制,以避免模糊的声明。