0

我很难理解 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)

我不确定如何从这里开始。如果需要进一步分解,我需要做什么?如果我应该在这里结束,你怎么知道什么时候停止分解?

4

3 回答 3

0

计算闭包,我得出的结论是最小的键是 {AB} 和 {AC}。

R的候选键是{AB}和{AC}。

您将 R 分解为这两个关系,并识别每个关系中的所有候选键

  • R 1 { AB -> C}
  • R 2 { C -> B}

R 1的唯一候选键是{AB}。

R 2的唯一候选键是{C}。属性 {C} 不是 R 中的键,但它R 2中的键。

于 2014-03-19T03:59:35.443 回答
0

R1和R2是你停下来的时候。分解后,您可以识别新关系中的键和功能依赖关系。R1 中的密钥是 C(FB:C -> B,没有违反 BCNF),R2 中的密钥是 AC(也没有违反 BCNF)。

于 2014-03-19T08:05:52.400 回答
0

AB->C写出and的闭包C->B

{A,B}+ = {A, B, C} 
{C}+= {C, B}

A+B 是一个超级键,因此它不违反BCNF. 所以我们使用违规的FD(C->B)进行分解。

{A, B, C} - {B, C} = {A} 

C->B然后添加to的左侧{A}和 将有{A, C}{B, C} 因此我们分解R(A, B, C)intoR(B, C)R(A, C)

于 2017-10-17T00:24:00.410 回答