【问题标题】:BCNF Decomposition, when to stop decomposing?BCNF分解,什么时候停止分解?
【发布时间】:2014-03-19 03:10:54
【问题描述】:

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

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

【问题讨论】:

    标签: database database-schema bcnf


    【解决方案1】:

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

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

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

    • R1 {AB -> C}
    • R2 {C -> B}

    R1 的唯一候选键是 {AB}。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        AB->CC->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)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-14
          • 1970-01-01
          • 2015-11-05
          • 2011-11-20
          • 2014-11-24
          • 1970-01-01
          相关资源
          最近更新 更多