Boyce codd范式,试图了解如何分解

问题描述 投票:-1回答:1

我正在尝试学习BCNF。

假设

R =(A,B,C,D)

F = {C→D,C→A,B→C}

我猜R不是在BCNF中,因为C是C→AC→A,而是B→C。如何改善答案,如何分解使其成为BCNF?

schema database-normalization relation bcnf
1个回答
0
投票

短语“ R不在BCNF中”无效,因为只有功能依赖项(FD)才可能违反BCNF。

要根据您的情况进行分解,请先找到候选键(FD关闭后可以获取所有属性的最小键)

Key = B,因为B + = {A,B,C,D}

BCNF的法则:left side of all FDs need to be superkeys

让我们从第一个FD开始,C-> D

[C -> D violates BCNF因为C is not a superkey of B

分解公式:Assume X -> Y, R1 = X+, R2 = R - (X+ - X)

在我们的例子中,使用基本数学,R1 = (C,D), R2 = (A,B,C)

现在C-> D满足BCNF

第二FD:C -> A violates BCNF,因为C is not a superkey of B

由于R2包含那些属性,因此使用与上面相同的公式分解R2:

R21 = (A,C), R22 = (B,C)

现在C-> A满足BCNF

让我们检查最后一个FD,B -> C satisfies BCNF,因为B is superkey of B

因此分解后,R =(A,B,C,D)分解为

R1 = (C,D)

R2 = (A, C)

R3 = (B, C)

© www.soinside.com 2019 - 2024. All rights reserved.