DBMS 中的候选键,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
上表可以有多少个超键?
{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(数据库管理员)完成。