为什么SQL标准没有提供指定除超级密钥之外的FD的方法?

时间:2008-12-10 02:53:21

标签: sql database database-design

在我看来,您可能希望声明其他功能依赖项(当然不是超级键),但SQL没有提供简单的方法。这是为什么?

1 个答案:

答案 0 :(得分:3)

我不知道SQL委员会以“为什么”设置它的方式的第一手答案,但我认为SQL的设计者只需要普通表中的一个主键。 3NF数据库设计中的所有其他列在功能上都依赖于该密钥,而且仅依赖于该密钥。

您可以从函数依赖项派生键,同样可以从超级键派生函数依赖项。但只有当它们以逻辑对称的方式被正确宣布时才会被宣布。

如果你可以声明两个键和FD,那么就有可能声明一个与自身逻辑冲突的表,这会破坏规范化。

这种语言最好只提供一种机制,以避免模糊的声明。