【问题标题】:Find the SuperKeys找到超级键
【发布时间】:2015-05-07 04:09:24
【问题描述】:

我正在做一些教科书练习,要求找出关系 R 的候选键以及超级键。

我已经解决了候选键,但我不确定如何解决超级键?我只是有点困惑。

这里是关系模式和函数依赖:

Relation Schema: **S(A, B, C, D)** 

**FD's:**

A-->B

B-->C

B-->D

所以我发现 {A, AB} 是解决该问题后的候选键。我只是不确定如何为此找到超级键。任何帮助将不胜感激。谢谢大家。

【问题讨论】:

    标签: mysql sql database relation candidate-key


    【解决方案1】:

    要找到候选键,您需要查看使用依赖项指向所有属性的路径。所以你对A 是正确的,因为从A 你可以到达B 可以到达{C, D}AB 不能被视为候选键,因为它从未在您的依赖项中提及。另一种思考方式是记住候选键是保证行中唯一性的最少属性数。但是由于A 已经是候选键,所以AB 不是最小集合。 因为您只有一个候选键 AA 称为关键属性,所有其他属性称为非关键属性。然后您通过2 的非键属性数量(B, C, D) 的幂来决定超级键的数量。在这种情况下,您应该有 8 个超级键。找到它们的方法是简单地将 A 与非关键属性的所有可能组合混合。所以你的超级键是A, AB, AC, AD, ABC, ABD, ACD, ABCD

    【讨论】:

    • 嗨阿拉,感谢您的回复。我相信您说 AB 不是候选键,而只是超级键是正确的,因为它不是最小的(如 A)。不过,我还有一个问题要问你。是否有一个通用公式来计算存在多少个超级键?您提到 2^(# of non-key attributes)。请尽快告诉我。感谢您的帮助,干杯。
    • 嗨@JordanThornley。我给出的规则是当你有一个单一的属性候选键(只有一个具有单一属性的候选键)。如果您有多个候选键,或者您的候选键具有多个属性,那是我不知道的不同公式。如果上一个答案回答了您最初的问题,请将其标记为答案。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-08-19
    • 2012-05-21
    • 1970-01-01
    • 2018-05-25
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多