我很难理解BCNF分解。
如果我有:
R=(A,B,C)
FDs: AB -> C, C -> B
计算闭包,我得出结论,最小键是{AB}和{AC}。
Therefore,
AB --> C is NOT in BCNF violation because AB is a key
C --> B IS in violation because C is not a key.
I decompose C --> B like this
R1 = Closure of C = (C,B)
R2 = (A,C)
我不确定如何从这里开始。如果需要进一步分解,我需要做什么?如果我应该在这里结束,你怎么知道何时停止分解?
答案 0 :(得分:0)
计算闭包,我得出结论,最小键是{AB}和{AC}。
R的候选键是{AB}和{AC}。
您将R分解为这两个关系,并且识别每个关系中的所有候选键。
R 1 的唯一候选键是{AB}。
R 2 的唯一候选键是{C}。属性{C}不是R中的键,但 是R 2 中的键。
答案 1 :(得分:0)
R1和R2是你停止的时候。在分解之后,您可以识别新关系中的键和功能依赖关系。 R1中的键是C(FB:C - > B,没有BCNF违规),R2中的键是AC(也没有BCNF违规)。
答案 2 :(得分:0)
为AB->C
和C->B
编写闭包:
{A,B}+ = {A, B, C}
{C}+= {C, B}
A + B是一个超级密钥,因此它没有违反BCNF
。因此,我们使用违反FD (C->B)
进行分解。
{A, B, C} - {B, C} = {A}
然后将C->B
的左侧添加到{A}
,并{A, C}
和{B, C}
因此,我们将R(A, B, C)
分解为R(B, C)
和R(A, C)
。