原文: https://beginnersbook.com/2015/04/candidate-key-in-dbms/

DBMS 中候选键的定义:没有冗余属性的超键被称为候选键。从超键集中选择候选键,在选择候选键时我们唯一要注意的是候选键不应具有任何冗余属性。这就是他们被称为最小超键的原因。

候选键示例

让我们举一个表Employee的例子。该表有三个属性:Emp_IdEmp_NumberEMP_NAME。在这里 Emp_IdEmp_Number将具有唯一值,并且Emp_Name可以具有重复值,因为多个员工可以具有相同的名称。

  1. Emp_Id Emp_Number Emp_Name
  2. ------ ---------- --------
  3. E01 2264 Steve
  4. E22 2278 Ajeet
  5. E23 2288 Chaitanya
  6. 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_IdEmp_Number就足以唯一地标识Employee表的一行。
  6. {Emp_Number, Emp_Name} - 冗余属性Emp_Name

我们选择的候选键是:

  • {Emp_Id}
  • {Emp_Number}

:从候选键组中选择主键。这意味着我们可以将Emp_IdEmp_Number作为主键。该决定由 DBA(数据库管理员)完成。