📅  最后修改于: 2020-12-13 05:33:12             🧑  作者: Mango
候选键是称为超级键(在上一节中讨论过)的键的一部分,其中超级键是可以唯一标识表的所有那些属性的超级集。
在这里,我们将讨论候选密钥,其作用及其使用。我们还将查看一些示例,这些示例将使我们更好地理解候选密钥的概念。
候选密钥是超级密钥集的子集,其中不包含冗余属性的密钥就是候选密钥。为了从超级键集中选择候选键,我们需要查看超级键集。
候选键的作用是唯一标识表的行或列。另外,候选键的值不能为Null。根据专家的说法,候选键的描述是“无冗余属性”,是“元组的最小表示”。
尽管候选键和主键的目的是相同的,但这是唯一地标识元组,然后它们也彼此不同。这是因为在一个表中,我们可以有一个或多个候选键,但是只能为一个表创建一个主键。因此,根据获得的候选密钥的数量,我们可以确定适当的主密钥。但是,如果表中只有一个候选键,则可以考虑两个键约束。
让我们看一下讨论超级密钥以了解候选密钥的工作时所用的同一示例。
我们有一个EMPLOYEE_DETAIL表,其中具有以下属性:
Emp_SSN: SSN号存储在此字段中。
Emp_Id:存储员工标识号值的属性。
Emp_name:一个属性,用于存储持有指定员工ID的员工的姓名。
Emp_email:存储指定员工的电子邮件ID的属性。
下面提供了EMPLOYEE_DETAIL表,它可以帮助您更好地理解:
因此,从上表中,我们获得了以下给定的超级键(在上一节中进行了讨论):
现在,从这些超级键集中,我们可以得出候选键。为了挑选候选密钥,最好的方法是尽可能地分析和形成主密钥。因此,我们需要从超级键集中识别那些集,这些键集可以单独识别整个表,或者可以说出表的其他属性。因此,结果是:
因此,这是获得的三个属性,可以识别表的其他非主要属性。所有这些都是候选键,从中我们可以选择最合适的属性,该属性可以轻松识别表的所有记录,该属性将称为主键。
通过以上讨论,我们可以得出以下几点区别:
Super Key | Candidate Key |
---|---|
It is the superset of all such attributes that can uniquely identify the table. | It is the subset or the part of the Super key. |
It is not at all compulsory that all super keys are candidate keys. | On the other hand, all candidate keys are super keys. |
The super key attribute can be NULL, which means its values can be null. | An attribute holding a candidate key can never be NULL, which means its values cannot be null. |
All the super keys formed together to bring the candidate keys. | Similarly, candidate keys are put together to create primary keys. |
The number of super keys formed is always seen more. | Here, Candidate keys are less than super keys. |
因此,超键是超集,候选键是子集,主键是超键的子子集。