当且仅当BC在BCNF中时,R在3NF中?

时间:2016-01-28 15:34:16

标签: database primary-key functional-dependencies 3nf bcnf

考虑关系R和函数依赖关系集F,仅包括一个函数依赖关系:{X->A}。 证明如果R在3NF iff R在BCNF。

到目前为止,根据定义,< - 方向是微不足道的。但我挣扎着 - >方向。我们对F-closure了解多少?从定义中,我需要检查Y->B中的每个函数依赖F-closure,它的琐碎或Y是超级密钥。对于我失踪的R超级钥匙有什么结论吗?

1 个答案:

答案 0 :(得分:1)

这是证明的草图。

BCNF中的关系模式暗示模式也在3NF中这一事实是由于3NF的定义(每个行列式都是超级密钥或仅暗示主要属性,并且我们知道每个行列式都是超级密钥,因为模式在BCNF)。

所以我们必须证明,如果关系是3NF,那么它也在BCNF中。

现在考虑唯一的依赖项{X->A}。对于3NF的定义,X是超级密钥,或者A是主要的。

在第一种情况下,如果X是超级密钥,我们就知道该模式也在BCNF中。

因此,我们只需检查X不是(超级)键的情况,A是素数。 我们可以通过以下步骤证明这种情况是不可能的。

我们只有两种可能性,X包含A,或不包含。{/ p>

  1. 如果X包含A,那么这种依赖关系是微不足道的,并且,由于没有其他依赖关系,X是一个关键,这违反了我们的假设,所以我们有矛盾。

  2. 另一方面,如果X中未包含A,则X再次成为关键,这再次与我们的假设相矛盾。

  3. 最后,请注意,在此证明中,我假设RXU{A}部分中没有其他属性,否则其他属性应出现在关系的任何关键字中,并且至少应该是与他们的另一种依赖。