超级键与候选键

时间:2010-06-21 19:07:49

标签: sql database database-design ddl

ERDB中Super和Candidate键之间有什么区别?

感谢。

5 个答案:

答案 0 :(得分:22)

超级键是一组唯一标识行的列。候选键将是唯一标识行的MINIMAL列。因此,基本上Superkey是候选键,其中包含额外不必要的列。

答案 1 :(得分:13)

候选键是最小超级键

答案 2 :(得分:4)

  • 候选键=识别行的最小键
  • 超级密钥=至少与候选密钥一样宽

对我来说,超级密钥通常会在候选密钥上引入歧义

答案 3 :(得分:2)

让我们保持简单

SuperKey - 一组唯一定义row的键。因此,即使任何一个属性都是unique,所有属性中的所有属性都具有该唯一属性属性属于superkey

候选键 - 一个superkey,其中没有可以派生的其他子集可以识别rows uniquely,或者我们可以简单地说它是{{1} }}

答案 4 :(得分:0)

简而言之:候选键是最小的超级键。

超级键是唯一标识RDBMS中关系(表)中任何记录(或元组)的列(或属性)的组合。


例如,在具有A,B,C和D列的表中考虑以下依赖性 (给出此表只是一个简单的示例,因此并未涵盖R可能具有的所有依赖性)。

属性集(行列式) ---可以识别---> (从属)

A -----> AD

B -----> ABCD

C -----> CD

AC -----> ACD

AB -----> ABCD

ABC -----> ABCD

BCD -----> ABCD


现在,B,AB,ABC,BCD会标识所有列,因此这四列都符合超级键的条件。

但是,B⊂AB; B⊂ABC; B⊂BCD,因此AB,ABC和BCD不能通过CANDIDATE KEY进行资格鉴定,因为它们的子集可以识别这种关系,因此它们不是最小的,因此只有B是候选密钥,而其他不是候选密钥。