主键,唯一键和候选键之间的区别

时间:2010-09-01 10:21:58

标签: database terminology

主键,唯一键和候选键有什么区别?

7 个答案:

答案 0 :(得分:14)

超级密钥是唯一标识记录的一个或多个列(即属性)的集合。

候选键是一个最小的超级键。(这意味着我们无法删除它的任何属性,否则它将不再保留超级键。)

主键是任意选择的候选键。必须只有一个主键。我们可以选择任何候选键作为主键。 未被选为主要的其他候选键称为备用键。

如果主键有多个列(或属性),则称为复合键。

答案 1 :(得分:10)

候选键是一个最小的(即不可简化的)键,唯一键是一个多余的键,主键是一个废弃的概念,仍然存在于人们认为一个键可能比任何一个键“更独特”的日子里。其他

答案 2 :(得分:4)

候选键 - 这是一个列,可以唯一标识数据库表的特定行或实例的所有列。您的护照ID是候选密钥的一个很好的例子,使用此ID时,您可以检索与该特定人员相关的人员姓名和其他详细信息。

主键 - 特定数据库表上可能有一些候选键是唯一的,可用于标识表中的特定实例,例如车辆登记号,底盘号,发动机序列号等......但请记住,只能有一个候选钥匙用作主钥匙。 候选键与主键之间的区别: - )主键和候选键都可以唯一地标识数据库中表中的记录。

2)主键和候选键都有约束UNIQUE和NOT NULL。

3)主键或候选键可以是表中的单列或多列的组合。

答案 3 :(得分:3)

答案 4 :(得分:3)

候选键 - 候选键可以是任何列或列的组合,可以作为数据库中的唯一键。一个表中可以有多个候选键。每个候选人密钥都可以作为主要密钥。

主键 - 主键是唯一标识记录的列或列组合。只有一个候选键可以是主键。 在选择主键时需要非常小心,因为不正确的选择会对数据库架构师和将来的规范化产生负面影响。要使候选键成为主键,它应该是非NULL并且在任何域中都是唯一的。我经常观察到主键很少被改变。我希望得到您关于不更改主键的反馈。

For more articles

答案 5 :(得分:2)

复合键是主键,多于1列。例如,考虑学生和课程之间的多对多关系。在这里,我们需要另一张桌子,让我们说学生课程。

此学生课程表将以student_id和course_id为列。这将形成您的复合键。

候选键是一组列,可以唯一地标识表中的值,并可以充当唯一键。其中一个候选键将成为主键,其余键将成为备用键。

顾名思义,唯一键用于唯一标识表中的值。例如,Emp_id等。每个候选键都将作为唯一键。唯一键永远不能是NULL值。

答案 6 :(得分:1)

由于所有答案均缺少物理表示,并且其中一些答案不完整。所以这是图形表示的差异

enter image description here


说明

超级键

超级键是一组一个或多个键,可用于唯一标识表中的记录。

示例:主键,唯一键,备用键是超级键的子集。

候选密钥

候选键是一个或多个字段/列的集合,可以在表中唯一地标识一条记录。一个表中可以有多个候选键。每个候选键都可以用作主键。

示例:在上图ID中,RollNoEnrollNo是候选键,因为这三个字段都可以用作主键。

主键

主键是表的一个或多个字段/列的集合,用于唯一标识数据库表中的记录。它不能接受空的重复值。主键只能是一个候选键。

备用键

备用键是可以用作主键的键。基本上,它是一个候选键,当前不是主键。

示例:在上图中,当我们将RollNo定义为主键时,EnrollNoID成为备用键。

复合/组合键

复合键是一个表的多个字段/列的组合。它可以是候选键,主键。

唯一键

Uniquekey是表的一个或多个字段/列的集合,用于唯一标识数据库表中的记录。就像主键一样,但是它只能接受一个空值,并且不能有重复的值。如需更多帮助,请参阅文章Difference between primary key and unique key

外键

外键是数据库表中的一个字段,是另一个表中的主键。它可以接受多个空值,重复值。如需更多帮助,请参阅文章Difference between primary key and foreign key

示例:我们可以在Employee表中有一个DeptID列,该列指向它是主键的部门表中的DeptID列。

source