ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# DBMS 中的候选键 > 原文: [https://beginnersbook.com/2015/04/candidate-key-in-dbms/](https://beginnersbook.com/2015/04/candidate-key-in-dbms/) **DBMS** 中候选键的定义:没有冗余属性的[超键](https://beginnersbook.com/2015/04/super-key-in-dbms/)被称为候选键。从超键集中选择候选键,在选择候选键时我们唯一要注意的是候选键不应具有任何冗余属性。这就是他们被称为最小超键的原因。 ## 候选键示例 让我们举一个表`Employee`的例子。该表有三个属性:`Emp_Id`,`Emp_Number`和`EMP_NAME`。在这里 `Emp_Id`和`Emp_Number`将具有唯一值,并且`Emp_Name`可以具有重复值,因为多个员工可以具有相同的名称。 ``` Emp_Id Emp_Number Emp_Name ------ ---------- -------- E01 2264 Steve E22 2278 Ajeet E23 2288 Chaitanya E45 2290 Robert ``` 上表可以有多少个超键? 1. `{Emp_Id}` 2. `{Emp_Number}` 3. `{Emp_Id, Emp_Number}` 4. `{Emp_Id, Emp_Name}` 5. `{Emp_Id, Emp_Number, Emp_Name}` 6. `{Emp_Number, Emp_Name}` 让我们从上面的一组超键中选择候选键。 1. `{Emp_Id}` - 无冗余属性 2. `{Emp_Number}` - 无冗余属性 3. `{Emp_Id, Emp_Number}` - 有冗余属性。这些属性中的任何一个都可以是最小超键,因为这两个列都具有唯一值。 4. `{Emp_Id, Emp_Name}` - 冗余属性`Emp_Name`。 5. `{Emp_Id, Emp_Number, Emp_Name}` - 有冗余属性。仅`Emp_Id`或`Emp_Number`就足以唯一地标识`Employee`表的一行。 6. `{Emp_Number, Emp_Name}` - 冗余属性`Emp_Name`。 我们选择的**候选键**是: + `{Emp_Id}` + `{Emp_Number}` **注**:从候选键组中选择[主键](https://beginnersbook.com/2015/04/primary-key-in-dbms/)。这意味着我们可以将`Emp_Id`或`Emp_Number`作为主键。该决定由 DBA(数据库管理员)完成。