1

考虑R(A,B,C,D,E) F = {BC->AE, A->D, D->C, ABD->E}。我需要找到模式的所有候选键。我知道BA, BC,BD是关键,但我想知道如何发现它们。

我在功能依赖项的候选键中看到了一些答案= 但我没有完全理解它们。形成他们的建议,我得到了,,L={B}现在 我需要一次添加一个到。我开始,我明白了。所以, (微不足道的)并且因为所以和因为我们得到。但是,我们如何得到?M={A,C,D}R={E}MLABABA->ABA->BA->DBA->DD->CBA->CE

4

1 回答 1

1

改编来自https://stackoverflow.com/a/14595217/3591273的答案

由于我们有功能依赖:BC->AE, A->D, D->C, ABD->E,我们有以下超级键:

  • ABCDE(所有属性始终是超级键)
  • ABCDE(我们可以通过获取属性ABD -> E
  • ABC(只需D通过添加A -> D
  • ABD(只需C通过添加D -> C
  • AB(我们可以D通过A -> D,然后我们可以C通过D -> C
  • BC(我们可以E通过BC -> E,然后我们可以C通过D -> C
  • BD(我们可以C通过D -> C,然后我们可以AE通过BC -> AE

(这里要实现的一个技巧是,由于B 永远不会出现在函数依赖的右侧,因此每个键都必须包含B,即键B独立的,不能从其他键派生

现在我们有了所有的超级键,我们可以看到只有最后三个是候选键。由于前四个都可以修剪下来。但是我们不能从最后三个超级键中删除任何属性,并且仍然让它们仍然是超级键。

所以最小的键是AB, BC,BD

更新

这是一种缩减方法,即通过使用函数依赖关系来连续缩减平凡的超级密钥,但可以采取相反的方式并使用增强方法,即从单个平凡的密钥开始,并用其他密钥与依赖关系来增加它们,直到密钥变得多余。

于 2015-12-13T15:42:36.790 回答