找到超级键
Find the SuperKeys
我正在做一些教科书练习,要求找出关系 R 的候选键以及超级键。
我已经解决了候选键,但我不确定如何解决超级键?我只是有点困惑。
这里是关系模式和函数依赖:
Relation Schema: **S(A, B, C, D)**
**FD's:**
A-->B
B-->C
B-->D
所以我发现 {A, AB} 是解决后的候选键。我只是不确定如何为此找到超级键。任何帮助将不胜感激。谢谢大家
要找到候选键,您需要查看使用依赖关系将您引向所有属性的路径。所以你关于 A
的说法是正确的,因为从 A
你可以到达 B
,然后可以到达 {C, D}
。 AB
不能被视为候选键,因为它从未在您的依赖项中被提及。另一种思考方式是记住候选键是保证行中唯一性的最少属性数。但是由于 A
已经是候选键,因此 AB
不是最小集。
因为您只有一个候选键 A
。 A
称为关键属性,所有其他属性称为非关键属性。然后你决定超级键的数量 2
非键属性数量的幂 (B, C, D)
。在这种情况下,您应该有 8 个超级键。找到它们的方法很简单,就是将 A 与非关键属性的所有可能组合混合在一起。所以你的超级键是 A, AB, AC, AD, ABC, ABD, ACD, ABCD
。
我正在做一些教科书练习,要求找出关系 R 的候选键以及超级键。
我已经解决了候选键,但我不确定如何解决超级键?我只是有点困惑。
这里是关系模式和函数依赖:
Relation Schema: **S(A, B, C, D)**
**FD's:**
A-->B
B-->C
B-->D
所以我发现 {A, AB} 是解决后的候选键。我只是不确定如何为此找到超级键。任何帮助将不胜感激。谢谢大家
要找到候选键,您需要查看使用依赖关系将您引向所有属性的路径。所以你关于 A
的说法是正确的,因为从 A
你可以到达 B
,然后可以到达 {C, D}
。 AB
不能被视为候选键,因为它从未在您的依赖项中被提及。另一种思考方式是记住候选键是保证行中唯一性的最少属性数。但是由于 A
已经是候选键,因此 AB
不是最小集。
因为您只有一个候选键 A
。 A
称为关键属性,所有其他属性称为非关键属性。然后你决定超级键的数量 2
非键属性数量的幂 (B, C, D)
。在这种情况下,您应该有 8 个超级键。找到它们的方法很简单,就是将 A 与非关键属性的所有可能组合混合在一起。所以你的超级键是 A, AB, AC, AD, ABC, ABD, ACD, ABCD
。