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