我有一个关于根据功能依赖性确定关系是否在第三范式中的问题。
R = {A,B,C,D,E}
A -> B
BC -> E
ED -> A
由此,我确定候选键是:
{ACD},{BCD},{CDE}
维基百科说,如果对于每个函数依赖关系X-> Y,它满足以下至少一个要求,则关系为第三范式:
1. Y是X的子集
2. X是超级钥匙
对于某些关键K,Y是K的子集
我的工作:A -> B
满足3因为{BCD}
,BC->E
因{CDE}
而满足3,而CD -> A
因{ACD}
而满足3 1}}。
这是解释这些规则的正确方法吗?
答案 0 :(得分:1)
A -> B
表示功能依赖。但是这些
R 1 = { A ,B}
R 2 = { B,C ,E}
R 3 = { E,D ,A}
正常形式适用于关系;它们不适用于功能依赖。说“A -> B
在3NF中”或“A确定B在3NF中”没有任何意义。
所以R 1 = { A ,B}是一种关系。由于密钥{B,C,D},它不“满足规则3”。它不能,因为{B,C,D}不在R 1 中。
这些规则与分解R的关系的候选键有关,而不是与R本身的候选键有关。
稍后。 。 我看到我的假设不正确。您正在尝试评估 R,而不是分解它。在这种情况下,你的推理是正确的,R在3NF。您还可以得出R在3NF中的结论,因为没有非素数属性。由于没有非素数属性,因此每个FD的右侧必须是候选键的一部分。
但是R不在BCNF。 (或4NF,或5NF。)你能解决这个问题吗?