Gday小伙伴,
好的,所以我有一个数据库类,我有这个例子让我觉得我真的没有完全理解两个NF之间的区别..
我知道
如果满足以下条件中的至少一个条件的R满足每个非平凡FD(X-> A),则关系R为3NF:
(a)X是R的超级密钥,或
(b)A是R
的关键属性
和
对于每个非平凡FD(X-> A)满足,关系R在BCNF中 由R满足以下条件:
(a)X是R
的超级密钥
以下是示例:
R =(A,B,C,D)F = {AB-> C,AB-> D,C-> A,D-> B} 1.R在3NF,为什么? 如果不是,请将其分解为3NF
Sol: Yes. Find all the Candidate Keys: AB, BC, CD, AD Check all FDs in F for 3NF condition
嗯,不是C-> A导致违规? C不是超级密钥,它不是微不足道的,对于D-> B?
也是如此但它不是BCNF:
- BC在BCNF,为什么?如果不是,则将其分解为BCNF 不。因为对于C-> A,C不是超级密钥。类似于D-> B R1 = {C, D},R2 = {A,C},R3 = {B,D}
醇>
答案 0 :(得分:4)
嗯,不是C-> A导致违规? C不是超级密钥,它不是一件轻而易举的事......
3NF的第二个条件怎么样?是R中某个键的属性吗?
(提示:此类练习的目的部分也是为了向您展示为什么3NF不是一个非常有用的正常形式,以及3NF和BCNF之间区别的情况)