【问题标题】:How to determine keys from functional dependencies如何从功能依赖中确定键
【发布时间】:2019-10-30 09:48:57
【问题描述】:

我正在尝试找到关系的关键 R = ABCDE,具有函数依赖关系 AB->C, C->D, C->E, D->A, E->B

当依赖项右侧缺少某些属性时,我知道如何找到键。 但是这里所有的属性都出现在右侧。 我不确定如何找到密钥,也找不到此具体示例的解释。

【问题讨论】:

  • 查找教科书的算法或使用 CK 的定义来查看属性的所有子集。现在,您只是要求我们用定制教程重写教科书。按照教科书的理由展示您的工作步骤,并在您遇到困难的地方进行解释。此外,这是一个常见问题解答。在考虑发布之前,请始终在谷歌上搜索任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,包括和不包括您的特定字符串/名称;阅读许多答案。请参阅How to Ask 和投票箭头鼠标悬停文本。
  • 本例中的候选键是{ (A B) (A E) (B D) (C) (D E) }。有关如何找到它们,请参阅书中介绍的算法,或在本网站或 Google 搜索中搜索“查找候选键”。
  • @philipxy, How to find a candidate key 提供了更好的解释。

标签: relational-database database-normalization functional-dependencies candidate-key


【解决方案1】:

我的回答基于https://stackoverflow.com/a/43467969/206413https://djitz.com/neu-mscs/answers-to-candidate-key-hard-questions/

(1) AB -> C
(2) C -> D
(3) C -> E
(4) D -> A
(5) E -> B

AB+ = (1) ABC               = (2, 3) ABCDE
C+  = (2, 3) CDE = (4) ACDE = (5)    ABCDE
D+  =                       = (4)    AD
E+  =                       = (5)    BE

到目前为止,我们有候选人(AB, C)

进一步探索:

D+ = AD => DAB+ = ABCDE
E+ = BE => EAB+ = ABCDE

因此我们的候选人是(AB, C, DAB, EAB)

【讨论】:

    猜你喜欢
    • 2011-08-09
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多