嘿,我正在研究一个示例问题,我必须确定哪个关系在3NF / BCNF中。
这些是关系:
R1(A,B,C,D,E)
F =(CE-> ABC,AB-> C,C-> A)
R2(C,d,E,G)
F =(CD-> GE,E-> D)
现在根据答案,R1在3NF,R2在BCNF,在这两种情况下,我都不明白为什么。
如果规则是:
,R1如何在3NF中X - > A,然后A是X的子集
X是超级钥匙
A是R
的某些键的一部分并且在R1中有C-> A = A不是密钥的一部分,C不是超级密钥而A显然不是子集。
对于R2,BCNF的规则是:
X→Y是一个平凡的函数依赖(Y⊆X)
X是架构R的超级键
和E-> D = E不是超级密钥,D也不是E的子集。
答案是错的还是我错过了什么?
非常感谢!
答案 0 :(得分:1)
R1(A,B,C,d,E)
F =(CE-> ABC,AB-> C,C-> A)
现在,正如您所做的那样,告诉主键,以便先找出主键。主键是DCE。 根据我在C-> A中,C不是超级密钥而A不是主要属性。 所以它不在3NF。
R2(C,d,E,G)
F =(CD-> GE,E-> D) 主键是CD。
现在,在E-> D中,E不是超级密钥 这就是为什么它不在BCNF。
所以这意味着这本书有一些印刷错误,你的答案还可以。
答案 1 :(得分:1)
第一个关系R1只有一个候选键CDE,这意味着它有三个属性(C,D,E)。这种关系的FD不满足BCNF和3NF条件,因为3NF表示如果FD是A-> B的形式,则A应该是超级密钥,或者如果A不是超级密钥则B必须是一个主要属性。现在R1的FD不满足这些条件,所以它不在3NF中。 第二关系R2具有两个候选键CD和EC,这意味着它具有三个主要属性(C,D,E)。第一个FD CD-> GE满足BCNF条件,因此它在BCNF和第二个FD E-> D(因为E不是超级密钥,所以我们检查B中的主要属性,在这个D中)。因此关系在BCNF中,如果它在BCNF中,那么它肯定会在3NF中。