我有以下示例,我想了解,其中:
R = {A, B, C}
FD = {A->B, B->C, AB->C}
Prime键是A
。
我知道这个例子是2NF,因为主键只有一个元素,但我不明白为什么这个例子不在3NF中。
C功能依赖于AB,但B不是密钥或密钥的一部分。这就是它不在3NF的原因。
由于
答案 0 :(得分:3)
在关系R中,依赖关系FD的规范封面是:
1. A → B
2. B → C
原因是依赖关系A B → C
可以从其他人那里得到:
1. A → B (given)
2. AB → B (by enrichment of A → B)
3. AB → C (by transitivity of AB → B and B → C)
关系的候选键是A
,因为它的闭包确定了所有其他属性:
A+ = A
A+ = AB (by using A → B)
A+ = ABC (by using B → C)
其他任何属性都不能成为密钥(B
无法确定A
,C
仅出现在依赖项的严格部分上。
请记住,当且仅当规范封面的功能依赖性的所有决定因素都是超级密钥时,或者只有当第三范式(3NF)的所有决定因素都是,当且仅当规范封面的功能依赖性的所有决定因素都是超级密钥,或者确定性是主要属性。
因此,模式不在BCNF中,也不在3NF中,因为存在功能依赖B → C
,其中行列式B
不是键,而C
不是主要属性。最后,以两种关系分解模式:
R1 < (A B), { A → B } >
R2 < (B C), { B → C } >
我们有两个在3NF和BCNF中的关系,这种分解保留了原始模式的功能依赖性。