我怀疑一组给定的函数依赖关系F = {AE - > BCD,B - > Ë }。这是BCNF还是3NF?这是我最近做过的测试中的一个问题,我会说它是3NF,但我的老师说它既不是3NF也不是BCNF。 (我认为这是一个错误)。
我已经获得了候选键AE和AB,并且如在第一功能依赖性中那样,左侧是候选键并且在B - >中。 E,E包含在候选键中,因此它在3NF中。
这是在BCNF,3NF还是两者都没有?
答案 0 :(得分:1)
假设关系的所有属性都是A B C D和E,并且给出的唯一依赖关系是描述的两个(F),那么你是正确的。由于(仅)候选键是正确的A E和A B,并且由于功能依赖性B→E具有不是超级键的行列式,因此该关系不在BCNF中。鉴于BNCF的一个定义:“对于F + 的所有非平凡的依赖关系X→Y,X是一个超级密钥”,有一个定理表明这是一个必要且充分的条件。是作为超级键的属性适用于F中的所有依赖项。
另一方面,由于E是主要属性,即候选键的属性,因此依赖性B→E不违反3NF,因此该关系为3NF。这再次给出了3NF的一个定义:“对于F + 中的所有非平凡依赖关系X→A,则X是超级密钥或A是主要属性”,是由于一个定理,说这个条件相当于检查,“对于F中的每个函数依赖关系X→A 1 ,...,A n ,以及每个i in in {1..n},A i 属于X,或X是超级密钥或A i 是prime“。这是F的两个依赖性所带来的满足。答案 1 :(得分:0)
当您声明/表明存在关系时,您需要使用NF的定义。
你实际上没有说出所有属性是什么。我假设属性是A到E.否则,CK(候选键)不是你说的。
你反对BCNF的论据是正确的。您使用的定义是FD的所有决定因素(功能依赖性)都不在超密钥中。您找到了反例 FD B→E。
如果它是BCNF对3NF的问题或者问题,你可以在那里停止。
在第一功能依赖性中,左侧是候选键,而在B - >中。 E,E包含在候选键
中
您不会证明该表符合以下任一定义的条件(来自维基百科,恰好是正确的),当且仅在以下情况下,表格在3NF中:
以下两个条件都有:
- 关系是2NF
- 每个非素数属性都是非传递性依赖于每个[候选]键
对于其每个功能依赖关系X→A,至少满足下列条件之一:
- X包含A
- X是超级钥匙
- A-X中的每个属性都是素数
您似乎使用定义2(但不是这样说)。您显示AE→BCD的子弹2保持。指出E在B→E中是素数似乎是表明E-B都是素数的一部分。但是你需要显示每个 FD满足一颗子弹。请注意,比给定的FD更多的FD。阿姆斯特朗的公理告诉你所有的FD是什么。
在实践中,通过应用3NF算法可以更容易地在3NF中显示模式。