DBMS 中的候选键

2025年3月17日 | 阅读 3 分钟

候选键是称为超键在上一节讨论过)的一部分键,超键是所有可以唯一标识表的属性的超集。

在这里,我们将讨论候选键、它的作用以及它的用法。我们还将看一些例子,以便更好地理解候选键的概念。

什么是候选键

候选键是超键集合的一个子集,其中不包含冗余属性的键就是候选键。为了从超键集合中选择候选键,我们需要查看超键集合。

候选键的作用

候选键的作用是唯一地标识表行或列。此外,候选键的值不能为 Null。根据专家们的说法,候选键的描述是“没有冗余属性”和“元组的最小表示”。

候选键与主键的区别

虽然候选键和主键的目的相同,即唯一标识元组,但它们之间也存在差异。这是因为,在一个表中,我们可以有一个或多个候选键,但对于一个表,我们只能创建一个主键。因此,从获得的候选键数量中,我们可以识别出合适的主键。但是,如果一个表中只有一个候选键,那么它可以被同时考虑用于两个键约束。

候选键示例

让我们看在讨论超键时使用的相同示例,以理解候选键的工作原理。

我们有一个 EMPLOYEE_DETAIL 表,其中包含以下属性

Emp_SSN: SSN 号码存储在此字段中。

Emp_Id: 存储员工标识号值的属性。

Emp_name: 存储具有指定员工 ID 的员工姓名的属性。

Emp_email: 一个属性,用于存储指定员工的电子邮件 ID。

下面的 EMPLOYEE_DETAIL 表将帮助您更好地理解

Candidate Key in DBMS

因此,从上表中,我们得到了下面给出的超键(在上一节讨论过)

Candidate Key in DBMS

现在,从这些超键集合中,我们可以得出候选键。为了选择候选键,最好的方法是尽可能多地分析并形成主键。因此,我们需要从超键集合中识别那些能够单独标识整个表,或者说标识表中其他属性的集合。因此,结果是

Candidate Key in DBMS

因此,这三个属性可以标识表中的其他非主属性。所有这些都是候选键,从中我们可以选择最适合的属性,该属性可以轻松标识表中的所有记录,这将作为主键进行描述。

候选键与超键的区别

从上面的讨论中,我们可以得出以下区别点

超键候选键
它是所有可以唯一标识表的属性的超集。它是超键的子集或一部分。
并非所有超键都是候选键,这一点并非绝对。另一方面,所有候选键都是超键。
超键属性可以为 NULL,这意味着它的值可以是 null。包含候选键的属性永远不能为 NULL,这意味着它的值不能为 null。
所有形成的超键共同带来候选键。同样,候选键组合在一起以创建主键。
形成的超键数量总是较多。这里,候选键少于超键。

因此,超键是超集,候选键是子集,主键是超键的子子集。


下一个主题DBMS 中的主键