SQL-Show R不是Boyce-Codd Normal Form

时间:2013-11-05 01:30:08

标签: sql database-normalization functional-dependencies

带有一组功能依赖项R = (J,K,L,M,N)

{J->KL,LM->N,K->M,N->J}

我理解BCNF的定义。我相信没有普通的功能依赖,也可能没有超级密钥。我不确定第二部分。你如何从字母中确定超级密钥?会对此有所了解。

1 个答案:

答案 0 :(得分:1)

如果所有函数依赖项的左侧属性的闭包含有所有关系属性(J, K, L, M, N),则该关系将采用Boyce-Codd Normal Form(BCNF)。换句话说,每个函数依赖项的左侧属性都包含一个键。

让我们分析你的功能依赖:

  1. J -> KL。然后是K -> M,然后是LM -> NN -> J。所以,J -> KL满足BCNF。
  2. LM -> N。然后是N -> J,然后是J -> KL和 就是这样,我们拥有所有属性。
  3. K -> M。这个功能 依赖显然违反了BCNF,因为我们无法得到 来自依赖集的更多属性。
  4. N -> J。然后是J -> KLK -> M。它满足BCNF。
  5. 因此,第三个依赖项违反了BCNF,而K属性本身并不是关键。