1

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

例如

(ABCDEF)

AB → CDE

BCD → A

公元前 → 公元

BD → E

据我从链接中了解的权利,我知道您从左侧找到只有 B 的公共集,从右侧找到没有的公共集

现在我该去哪里?我知道所有候选集都会有 B,但我需要在那之后找到候选集的指导。有人用简单的语言解释

4

2 回答 2

1

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

  1. 识别既不在任何 FD 的左侧也不在右侧的属性。
  2. 识别仅位于任何 FD 右侧的属性。
  3. 识别仅位于任何 FD 左侧的属性。
  4. 结合步骤 1 和 3 中的属性。
  5. 计算来自步骤 4 的属性的闭包。如果闭包包含所有属性,则来自步骤 4 的属性构成唯一的候选键。(无论有多少个候选键,每个候选键都必须包含这些属性。)
  6. 识别步骤 4 和步骤 2 中未包含的属性。
  7. 计算第 4 步中的属性的闭包加上第 6 步中所有可能的属性组合。

因此,对于您发布的 FD,您最终会得到这个。

  1. {F}
  2. {}
  3. {B}
  4. {高炉}
  5. {BF} 的闭包是 {BF}。这还不是所有属性。(但每个候选键必须包含 {BF}。)
  6. {ACDE}
  7. 计算这些属性集的闭包。
    • {ABF}
    • {CBF}
    • {DBF}
    • {EBF}
    • {ACBF}
    • {ADBF}
    • {AEBF}
    • {CDBF}
    • {CEBF}
    • {DEBF}
    • {ACDBF}
    • {ADEBF}
    • {CDEBF}

如果我得到了正确的组合,每个候选键都将在步骤 7 的可能性中找到。在您的示例中,有 3 个候选键。

于 2013-02-02T05:49:09.830 回答
-1

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

这将有助于'只需将您的关系和 FD 的点击生成在底部

于 2013-11-18T04:14:47.743 回答