原文: https://beginnersbook.com/2015/04/candidate-key-in-dbms/
DBMS 中候选键的定义:没有冗余属性的超键被称为候选键。从超键集中选择候选键,在选择候选键时我们唯一要注意的是候选键不应具有任何冗余属性。这就是他们被称为最小超键的原因。
候选键示例
让我们举一个表Employee的例子。该表有三个属性:Emp_Id,Emp_Number和EMP_NAME。在这里 Emp_Id和Emp_Number将具有唯一值,并且Emp_Name可以具有重复值,因为多个员工可以具有相同的名称。
Emp_Id Emp_Number Emp_Name------ ---------- --------E01 2264 SteveE22 2278 AjeetE23 2288 ChaitanyaE45 2290 Robert
上表可以有多少个超键?
{Emp_Id}{Emp_Number}{Emp_Id, Emp_Number}{Emp_Id, Emp_Name}{Emp_Id, Emp_Number, Emp_Name}{Emp_Number, Emp_Name}
让我们从上面的一组超键中选择候选键。
{Emp_Id}- 无冗余属性{Emp_Number}- 无冗余属性{Emp_Id, Emp_Number}- 有冗余属性。这些属性中的任何一个都可以是最小超键,因为这两个列都具有唯一值。{Emp_Id, Emp_Name}- 冗余属性Emp_Name。{Emp_Id, Emp_Number, Emp_Name}- 有冗余属性。仅Emp_Id或Emp_Number就足以唯一地标识Employee表的一行。{Emp_Number, Emp_Name}- 冗余属性Emp_Name。
我们选择的候选键是:
{Emp_Id}{Emp_Number}
注:从候选键组中选择主键。这意味着我们可以将Emp_Id或Emp_Number作为主键。该决定由 DBA(数据库管理员)完成。
