主键还是超级密钥和候选密钥吗?

时间:2013-02-07 06:12:41

标签: database

主键是否也是超级密钥和候选密钥?他们的定义很冗长,但我想知道这是否属实?

请注意,我不是在问他们是否是同一个词。我只是向一个方向询问,而不是反过来。

6 个答案:

答案 0 :(得分:7)

  • 超级密钥 - 是一组可用于在表格中唯一标识记录的一列或多列

  • 候选键 - 可以是任何可以作为数据库中唯一键的列或列组合。一个表中可以有多个候选键。每个候选密钥都可以作为主键。您可以将此视为“最短”超级密钥或最小超级密钥

  • 主键 - 是唯一标识记录的列或列组合。只有一个候选密钥可以是主密钥。

要使候选人资格成为主要资格,它应该是唯一且非空的。

因此,基本上主键只是候选键之一,这只是一个最小的超级键。

答案 1 :(得分:2)

根据干燥定义:

根据定义,您的主键是超级键 - 您不能有两行具有相同的主键。
但是,主键不是您商家的natural约束,而是数据存储中的人为约束:例如,您可以将某人的生日设置为表中的主键,并且永远不会有两个人出生在同一天。那将是愚蠢的,但可能。在这种情况下,表的主键不是域的超级键

但是,您的主键不一定是候选键 - 您可以向主键添加冗余列。

答案 2 :(得分:0)

能够识别数据库中任何行的不同属性集称为超级密钥。并且最小超级密钥被称为候选密钥,即具有最小数量的属性的一组超级密钥。主键可以是能够以唯一方式标识数据库中的特定行的任何键。 from this thread

在Google中键入所有三个键会显示2,480,000 results

答案 3 :(得分:0)

取决于。

主键是表用于在不同元素之间进行标识的主键。它是从候选键中选择的。

候选键是可以作为主键的所有键。所有键都是唯一的,可以在表格中区分。

超级密钥是具有附加属性的主键,此额外信息用于唯一标识实体集的实例。

答案 4 :(得分:0)

候选键是唯一标识元组的最小字段子集。例如,如果列上有候选键" user_id"和" pet_id"你永远不会有超过1个具有相同user_id和pet_id的元组,并且user_id和pet_id都不能单独作为元组的唯一标识符。

超级密钥是一组包含密钥的字段。使用以上示例组合" user_id"和" pet_id"如果我们添加" pet_name"则唯一标识元组。 (这不是关键,因为我们可以有多个名为&#34的宠物;蓬松")它将是一把超级钥匙。基本上它就像一个没有"最小字段子集的候选键"约束。

主键是您告诉DB优化的候选键。可能有多种方式可以引用唯一的元组(即多个候选键),但是当您创建最常使用的表时,可以指定一个。

答案 5 :(得分:0)

是的,我们可以简单地说一个候选键是主键,但是它必须是唯一的。