“如果一个键只包含一个属性,那么它就是简单的”。证明如果关系 R 在 3NF 中并且如果 R 中的每个键都是简单的,则 R 在 BCNF 中。你的证明应该是一般的,例如,它不应该假设 R 有固定数量的,比如两个或三个,属性。
解决方案:
考虑FD X -> Y
在 R 中成立的一个。由于 R 在 3NF 中,要么
- X 是一个超级键或
- Y 是密钥的成员。
在第二种情况下,由于 R 中的每个键都是简单的,因此 Y 本身就是一个键,这意味着 X 是一个超键。因此,X -> Y
在任何一种情况下都不会违反 BCNF,这意味着 R 在 BCNF 中。
除了最后一部分,我什么都懂;Y 是一个键意味着 X 是一个超级键。有人可以详细说明吗?
有趣的问题(我现在正好在读 Ullman 的书)。我认为答案是这样的:
假设这
X
不是超级键。然后,每个属性Y
都是一个键的成员(是素数)。由于每个键由一个属性组成,y -> {every other attribute}
,其中y
是 的成员Y
。然后通过传递性,X -> {every other attribute}
,这意味着它X
是一个超键。我们与最初的假设相矛盾,即X
不是超级密钥,因此X
必须是超级密钥。证明中最重要的部分是传递性部分。