Database 从函数依赖项中查找候选键

Database 从函数依赖项中查找候选键,database,functional-dependencies,Database,Functional Dependencies,我需要从给定关系中查找候选密钥的帮助: 带FD的R(A、B、C、D、E): 步骤: 我知道所有属性都可以识别它们自己:A,B,C,D,E->{ABCDE} 现在我知道了A->BE,所以我可以划掉BE,得到这个:ACD->{ABCDE} 基本属性是(A,C,D) D现在将被B替换,给我另一个候选密钥(ABC) 我的答案是ACD和ABC,但显然是AC。我做错了什么?下面是一个简单的推理 A和C必须出现在任何候选密钥中,因为它们从不出现在某些FD的右侧部分 那么,让我们通过计算它们的闭包AC*来看看它

我需要从给定关系中查找候选密钥的帮助:

带FD的R(A、B、C、D、E):

步骤:

  • 我知道所有属性都可以识别它们自己:A,B,C,D,E->{ABCDE}
  • 现在我知道了A->BE,所以我可以划掉BE,得到这个:ACD->{ABCDE}
  • 基本属性是(A,C,D)
  • D现在将被B替换,给我另一个候选密钥(ABC)

  • 我的答案是ACD和ABC,但显然是AC。我做错了什么?

    下面是一个简单的推理

    A和C必须出现在任何候选密钥中,因为它们从不出现在某些FD的右侧部分

    那么,让我们通过计算它们的闭包AC*来看看它们是否已经是候选密钥


    通过应用计算一组属性闭包的规则,我们可以很容易地看到AC*等于ABCDE,因此AC是一个候选密钥。FD左侧显示的唯一其他属性是B,因此我们应该检查其他候选键是否包含它。但是请注意,属性AC必须存在于任何键中,并且它们已经形成了候选键,因此向它们添加任何属性只会生成超级键,我们可以得出结论,这是唯一的候选键。

    您的“我有这些FD”没有意义。“这些都是持有的FD”?——不可能。“这些都是持有的非平凡FD”?——不可能。“这是一些持有的FD”?——这个问题无法回答。了解什么是封面&应用特定定义/规则/算法的确切条件是什么。为了确定CKs和NFs,我们必须获得构成封面的FD。有时是最小/不可约覆盖。必须给出所有属性的集合。你展示你的工作是很好的,但是:引用并参考你正在遵循的算法——最好是从(好的)教科书中。显示您如何提供正确的输入并遵循其步骤。把你的理由解释清楚。(因为人们采取了太大的不合理的隐秘步骤,比如这里。)PS“识别自己”并没有使用正确的技术术语。此外,“A,B,C,D,E->{ABCDE}”不是FD。我们写x->y,其中每个x&y都是一个集合或属性;属性A表示集合{A}。集合是列表周围相邻的属性或大括号。(或者,相邻的集合名给出了它们的并集。)保持一致。
    A -> BE
    B -> BE
    B -> D