鉴于以下两个陈述:
S1: Every table with two single-valued
attributes is in 1NF, 2NF, 3NF and BCNF.
S2: AB->C, D->E, E->C is a minimal cover for
the set of functional dependencies
AB->C, D->E, AB->E, E->C.
以下哪一项是正确的?
(A) S1 为真,S2 为假。
(B) S1 和 S2 都为真。
(C) S1 为假,S2 为真。
(D) S1 和 S2 都是假的。答案:(一)
解释:
S1: Every table with two single-valued
attributes is in 1NF, 2NF, 3NF and BCNF.
关系模式 R 在 BCNF 中仅当在每个非平凡的功能依赖 X->Y 中,X 是超级键。如果我们可以证明关系在 BCNF 中,那么默认情况下它也将在 1NF、2NF、3NF 中。
设 R(AB) 为二属性关系,则
- 如果 {A->B} 存在,则 BCNF 因为 {A}+ = AB = R
- 如果 {B->A} 存在,则 BCNF 因为 {B}+ = AB = R
- 如果 {A->B,B->A} 存在,那么 BCNF 因为 A 和 B 现在都是超级密钥。
- 如果 {No non-trivial Functional Dependency} 则默认 BCNF。
因此证明了具有两个单值属性的关系在 BCNF 中,因此它也在 1NF、2NF、3NF 中。
因此 S1 为真。
S2: AB->C, D->E, E->C is a minimal cover for
the set of functional dependencies
AB->C, D->E, AB->E, E->C.
众所周知,Minimal Cover 是消除函数依赖集中冗余的函数依赖和无关属性的过程。
所以 F = {AB->C, D->E, AB->E, E->C} 的每个依赖都应该隐含在最小覆盖中。
正如我们所看到的,AB->E 没有被最小覆盖覆盖,因为 {AB}+ = ABC 在给定的覆盖 {AB->C, D->E, E->C}
因此,S2 为假。
此解释由Manish Rai 提供。
在此处了解有关范式的更多信息:
数据库规范化 |介绍
数据库规范化 |范式
这个问题的测验