R 在 3NF 中当且仅当 R 在 BCNF 中?

R in 3NF if and only if R in BCNF?

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

到目前为止,<- 方向根据定义是微不足道的。但我努力向 -> 方向努力。我们对 F-closure 了解多少?根据定义,我需要检查 F-closure 中的每个函数依赖性 Y->B,它的琐碎或 Y 是超级键。是否有关于我遗漏的 R 超级密钥的一些结论?

这是证明的草图。

BCNF 中的关系模式暗示该模式也在 3NF 中的事实是由于 3NF 的定义(每个行列式是一个超键或仅暗示素数属性,我们知道每个行列式是一个超键,因为架构在 BCNF 中)。

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

现在考虑唯一的依赖项 {X->A}。对于 3NF 的定义,X 是超键,或者 A 是素数。

在第一种情况下,如果 X 是一个超键,我们知道模式也在 BCNF 中。

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

我们只有两种可能,要么X包含A,要么不包含。

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

  2. 另一方面,如果 X 不包含在 A 中,那么 X 又是一个键,这再次与我们的假设相矛盾。

最后,请注意,在这个证明中,我假设 R 中没有其他属性来自 XU{A} 的一部分,否则那些其他属性应该出现在关系的任何键中,并且至少应该有另一个依赖关系。