Gday小伙子们,
好的,所以我有一个数据库类,我有这个例子让我觉得我真的没有完全理解两个 NF 之间的区别..
我知道
一个关系 R 在 3NF 中,当且仅当对于 R 满足的每个非平凡 FD (X->A) 至少满足以下条件之一为真:
(a) X 是 R 的超键,或
(b) A 是 R 的关键属性
和
关系 R 在 BCNF 中当且仅当对于 R 满足的每个非平凡 FD (X->A) 满足以下条件:
(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:
- R在BCNF中,为什么?如果不是,则将其分解为 BCNF No。因为对于 C->A,C 不是超键。D->B 类似 R1 = {C, D}, R2 = {A, C}, R3 = {B, D}