MySQL 主键和候选键的区别

MySQL 主键和候选键的区别

在MySQL中,键是用于从表中访问记录的属性或一组属性。它们还用于构建两个表之间的关系。主键和候选键都可以在表或关系中唯一标识每个记录。其中最大的区别是,一个表只能有一个主键,但可以有多个候选键。本文将根据各种参数比较主键和候选键之间的基本区别。在进行比较之前,我们将简要介绍这些键。

MySQL 主键和候选键的区别

什么是主键?

主键是在表或关系中唯一标识每个记录的关键属性。它是一个最小的超键;这就是为什么在任何关系中只能包含一个主键。 例如,假设我们有一个名为“students”的表,其中包含ID、姓名、年龄和地址列。在这里,我们只能将ID列设置为主键,因为所有其他列的值可以相同,但ID列不能相同。

什么是候选键?

候选键是在表或关系中唯一标识每个记录的属性或属性集,但请注意,表中可以包含多个候选键。这个键可以存储与主键相反的NULL值。 例如,假设我们有一个名为“students”的表,其中包含ID、姓名、出生日期、年龄和地址列。在这里,我们可以找出两个候选键,分别是{ID}和{Name,出生日期}。因此,这表明有多个候选键可用来唯一标识表或关系。

由于一个表或关系可以有多个候选键,所以只有一个候选键能够成为主键。请注意,每个候选键都可以成为主键,但只能选择一个作为主键。成为主键的规则是键的属性值必须是唯一的,并且对于任何域,它们都不能为Null。

主键和候选键的主要区别

以下几点解释了主键和候选键之间的主要区别:

  • 主键是表或关系的唯一且必需的属性。相比之下,候选键有多个候选值,其中一个候选键可以被选为主键。
  • 两者之间的根本区别在于,模式中的一个表或关系只能有一个主键,但可以有多个候选键。
  • 不强制定义主键,但没有候选键就无法建立关系。
  • 主键属性永远不能为NULL,因为其主要功能是唯一标识表或关系中的记录。我们还可以将主键用作其他关系中的外键。因此,它不能为NULL。此功能有助于在所引用的关系中查找记录。候选键可以为NULL,除非指定了非空属性约束。
  • 每个主键都可以是候选键,但反过来则不可能。

主键与候选键比较图表

以下比较图表以简明的方式解释了它们的主要区别:

比较基础 主键 候选键
定义 它是一个唯一且非空的键,用于唯一地标识模式中每个表的记录。 它也是一个唯一键,用于唯一地标识关系或表中的记录。
基本 一个表或关系只能包含一个主键。 一个表或关系可以有多个候选键。
NULL 主键的任何列都不能为NULL。 候选键的列可以包含NULL值。
目标 它是表或关系的基本组成部分。 它表示哪个键可以用作主键。
用途 它可以用作候选键。 它可能或可能不用作主键。
指定 不需要为任何关系指定主键。 在不指定候选键的情况下无法建立关系。
示例 考虑一个名为“student”的表,具有列(roll_no., name, class, DOB, email, mobile)。这里, roll_no**列可以作为关系的主键,因为它可以唯一标识学生的记录。 给定表中的roll_no, mobile和email列可以作为候选键,因为它们可以唯一标识学生的记录。

结论

在这篇文章中,我们对主键和候选键进行了比较。我们得出的结论是,在关系中指定主键是可选的。但是如果我们在声明一个关系,候选键必须存在于该关系中。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程