男孩科德并找到候选人的钥匙

时间:2013-01-13 22:49:29

标签: database database-normalization functional-dependencies bcnf candidate

需要绝望的帮助来理解boyce codd并找到候选键。 我在这里找到了一个http://djitz.com/neu-mscs/how-to-find-candidate-keys/的链接,我已经理解了大部分但我被卡住了

e.g

(A B C D E F)

A B→C D E

B C D→A

B C E→A D

B D→E

就我所知,从链接中我知道你发现左边的公共集合只有B,而右边的公共集合没有

现在我从哪里开始?我知道所有候选人集合中都有B,但我需要在此之后找到候选人集合的指导。有人用简单的语言解释

2 个答案:

答案 0 :(得分:1)

链接的文章编写得不是特别好。 (这是一个观察,而不是批评。作者的第一语言不是英语。)我将尝试重写算法。这不是告诉你如何做到这一点。这是我对原作者如何告诉你这样做的解释。

  1. 识别任何FD左侧和右侧的属性。
  2. 识别仅位于任何FD右侧的属性。
  3. 识别仅位于任何FD左侧的属性。
  4. 合并步骤1和3中的属性。
  5. 计算步骤4中属性的闭包。如果闭包包含 all 属性,则步骤4中的属性构成唯一的候选键。 (无论有多少候选键,其中每一个必须包含这些属性。)
  6. 确定步骤4和步骤2中未包含的属性。
  7. 计算步骤4中属性的闭包 plus 步骤6中每个可能的属性组合。
  8. 因此,对于你发布的FD,你最终会得到这个。

    1. {F}
    2. {}
    3. {B}
    4. {BF}
    5. {BF}的关闭是{BF}。这不是所有的属性。 (但每个候选键必须包含{BF}。)
    6. {ACDE}
    7. 计算这些属性集的闭包。
      • {ABF}
      • {CBF}
      • {DBF}
      • {EBF}
      • {ACBF}
      • {ADBF}
      • {AEBF}
      • {CDBF}
      • {CEBF}
      • {DEBF}
      • {ACDBF}
      • {ADEBF}
      • {CDEBF}
    8. 如果我得到了正确的组合,那么每个候选键都会在步骤7中找到。在你的例子中,有3个候选键。

答案 1 :(得分:-1)

http://www.sroede.nl/projects/fdhelper.aspx

这有助于你加入你的关系和FD 点击底部的生成