mysql - 找到 super 键

标签 mysql sql database relation candidate-key

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

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

这是关系模式和功能依赖关系:

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

**FD's:**

A-->B

B-->C

B-->D

所以我发现 {A, AB} 是解决该问题后的候选键。我只是不知道如何找到这个的 super 键。任何帮助将不胜感激。谢谢大家。

最佳答案

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

关于mysql - 找到 super 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091757/

相关文章:

sql - 嵌入 select 语句的(相关)子查询中的别名范围

mysql - 更新 Node mysql 中的行时出现问题

sql - iSeries DB2 - 有没有办法从插入语句中选择标识值?

mysql - Data Mapper 是不是比 Active Record 更现代的趋势

php - mysql查询因两个表连接而爆炸

php - mysql 查询在循环内不起作用

javascript - 如何使用 Angular JS 更新表中的值

c# - 如何从 MySQL 获取所有可用数据库到 C# Windows 窗体中的组合框控件

php - 如何创建从数据库中动态提取的静态 WordPress 页面?

database - haskell 与甲骨文