Skip to content

Latest commit

 

History

History
43 lines (31 loc) · 1.83 KB

24.md

File metadata and controls

43 lines (31 loc) · 1.83 KB

DBMS 中的候选键

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

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

候选键示例

让我们举一个表Employee的例子。该表有三个属性:Emp_IdEmp_NumberEMP_NAME。在这里 Emp_IdEmp_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_IdEmp_Number就足以唯一地标识Employee表的一行。
  6. {Emp_Number, Emp_Name} - 冗余属性Emp_Name

我们选择的候选键是:

  • {Emp_Id}
  • {Emp_Number}

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