考虑关系R
和函数依赖关系集F
,仅包括一个函数依赖关系:{X->A}
。
证明如果R在3NF iff R在BCNF。
到目前为止,根据定义,< - 方向是微不足道的。但我挣扎着 - >方向。我们对F-closure
了解多少?从定义中,我需要检查Y->B
中的每个函数依赖F-closure
,它的琐碎或Y是超级密钥。对于我失踪的R超级钥匙有什么结论吗?
答案 0 :(得分:1)
这是证明的草图。
BCNF中的关系模式暗示模式也在3NF中这一事实是由于3NF的定义(每个行列式都是超级密钥或仅暗示主要属性,并且我们知道每个行列式都是超级密钥,因为模式在BCNF)。
所以我们必须证明,如果关系是3NF,那么它也在BCNF中。
现在考虑唯一的依赖项{X->A}
。对于3NF的定义,X
是超级密钥,或者A
是主要的。
在第一种情况下,如果X
是超级密钥,我们就知道该模式也在BCNF中。
因此,我们只需检查X
不是(超级)键的情况,A
是素数。
我们可以通过以下步骤证明这种情况是不可能的。
我们只有两种可能性,X
包含A
,或不包含。{/ p>
如果X
包含A
,那么这种依赖关系是微不足道的,并且,由于没有其他依赖关系,X
是一个关键,这违反了我们的假设,所以我们有矛盾。
另一方面,如果X
中未包含A
,则X
再次成为关键,这再次与我们的假设相矛盾。
最后,请注意,在此证明中,我假设R
中XU{A}
部分中没有其他属性,否则其他属性应出现在关系的任何关键字中,并且至少应该是与他们的另一种依赖。