Boyce-Codd Normal Form

时间:2013-12-06 17:46:59

标签: database relational-database bcnf

我不懂Boyce-Codd Normal Form。我看了看我的教科书,但我不明白。假设关系R =(A,B,C,D,E)并且F = {A-> C,D-> CB,AC-> E}。你如何确定R是否在BCNF?需要帮忙。谢谢!

2 个答案:

答案 0 :(得分:2)

为了确定关系是否是BCNF,我们检查它的功能依赖性。

如果对于每个FD X→Y,我们要么在BCNF中

  • X→Y是一个平凡的函数依赖(Y⊆X)
  • X是架构R的超级键。

FD是A→C,D→CB,AC→E。让我们从第一个FD A→C开始。

A→C并不简单,因为例如C∉A. A→A是微不足道的依赖。

现在是A→C超级钥匙?检查我们是否计算FD左侧的闭包,在这种情况下为A.闭包是A逻辑上隐含的所有元素。 [A] + =A∪C∪E= ACE左​​右我们有A→ACE。

ACE不是超级密钥,因为它确实包含关系的所有属性。

所以关系不在BCNF中,因为A→C既不是微不足道的,也不是超级密钥。

还有其他违反BCNF的行为。 [D] + = BCD不是超级钥匙或琐碎的。 [AC] + = ACE不是超级钥匙或琐碎的。

希望这有帮助!我认为一切都是正确的,但我现在正在攻读决赛,并试图学习很多这些材料。

答案 1 :(得分:0)

非正式地,您首先要识别所有候选键。然后你看一下功能依赖中的箭头。

如果每个箭头都是候选键的箭头 out ,则它在BCNF中。