在关系模型中,要求关系中任意两个元组不能完全相同。这可通过在关系的各个属性中,选出能够唯一标识不同元组的属性或属性组来约束元组数据。将这样的属性或属性组称为键(Key)。
例2-4】 在表2-3的EMPLOYEE(员工)关系表中,EmployeeNumber(工号)属性列的取值是唯一的,可以把它定义为EMPLOYEE关系表的键。
1.复合键
在关系中,有时需要同时使用两个或更多个属性的组合值才能唯一标识不同元组,这种由多个属性所构成的键称为复合键(Compound Key)。在表2-3中,如果没有同姓名的员工在同一部门的情况,可以将“姓名”和“部门”属性组合在一起,其组合值可以唯一标识员工,即将Name和Department属性结合在一起,作为EMPLOYEE关系的复合键。
2.候选键
在一个关系中可能有多个键存在,将每个键都称为候选键(Candidate Key)。例如,在表2-3中,若“EmployeeNumber”“Email”属性列的取值都是唯一的,则它们均是关系的键,也都为候选键。
3.主键
在一个关系中,不管它有多少个候选键,在定义数据库关系表时,都需要确定出一个最合适的键作为主键(Primary Key),它的不同取值用于在该关系表中唯一标识不同元组。例如,在表2-3中,可选定“EmployeeNumber”作为主键。
在关系数据库的设计中,每个关系表都必须确定一个主键。主键在关系数据库中具有如下作用:
1)主键属性列值可用来标识关系的不同行(元组)。
2)当表之间有关联时,主键可以作为表之间的关联属性列。
3)许多DBMS软件使用主键列索引顺序来组织表的数据块存储。
4)通过主键列的索引值可以快速检索关系中的行数据。