R = (J,K,L,M,N)
具有一组函数依赖项 {J->KL,LM->N,K->M,N->J}
.
我理解BCNF的定义。我相信不存在微不足道的功能依赖,也可能没有 super 键。我不确定第二部分。您将如何从字母中确定 super 键?将不胜感激在这方面的一些投入。
最佳答案
如果所有函数依赖的左侧属性的闭包包含所有关系属性 (J, K, L, M, N)
,则该关系将采用 Boyce-Codd 范式 (BCNF)。 .换句话说,每个函数依赖的左侧属性都包含一个键。
让我们分析你的函数依赖:
J -> KL
.然后K -> M
,然后 LM -> N
和 N -> J
.所以,J ->
KL
满足 BCNF。 LM -> N
.然后N -> J
,然后 J -> KL
和就是这样,我们拥有所有属性。
K -> M
.这个功能依赖显然违反了 BCNF,因为我们不能得到
来自一组依赖项的更多属性。
N -> J
.然后J -> KL
和 K -> M
.满足BCNF。 因此,第三个依赖项违反了 BCNF 和
K
属性不是键本身。
关于SQL-显示 R 不是 Boyce-Codd 范式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19780489/