0

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

到目前为止,对于 <- 方向的定义是微不足道的。但我努力向 -> 方向发展。我们知道什么F-closure?根据定义,我需要检查其中的每个函数依赖项Y->BF-closure即其微不足道或 Y 是超键。关于我缺少的 R 的超级键是否有一些结论?

4

1 回答 1

1

这是证明的草图。

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},否则这些其他属性应该存在于关系的任何键中,并且至少应该与它们存在另一个依赖关系。

于 2016-01-28T17:32:58.237 回答