【发布时间】:2008-12-10 02:53:20
【问题描述】:
在我看来,您可能希望声明其他函数依赖项(当然除了超级键),但 SQL 并没有提供简单的方法来做到这一点。这是为什么呢?
【问题讨论】:
标签: sql database database-design
在我看来,您可能希望声明其他函数依赖项(当然除了超级键),但 SQL 并没有提供简单的方法来做到这一点。这是为什么呢?
【问题讨论】:
标签: sql database database-design
我不知道 SQL 委员会“为什么”按照他们的方式设计它的第一手答案,但我认为 SQL 的设计者只需要普通表中的一个主键。 3NF 数据库设计中的所有其他列在功能上都依赖于该键,并且仅依赖于该键。
您可以从功能依赖项中派生键,同样您可以从超级键中派生功能依赖项。但前提是它们以逻辑对称的方式正确声明。
如果您可以同时声明 键和 FD,那么就有可能声明一个表与其自身存在逻辑冲突,这会破坏规范化。
语言最好只提供一种机制,以避免模棱两可的声明。
【讨论】: