diff --git a/docs/chapter1/1.1.md b/docs/chapter1/1.1.md index 007165b..2a7dc6f 100644 --- a/docs/chapter1/1.1.md +++ b/docs/chapter1/1.1.md @@ -146,6 +146,8 @@ _关系键是关系数据库的重要组成部分。关系键是一个表中的 超键(superkey),有的文献称“超码”,是在数据库关系模式设计中能够唯一标示多元组(即“行”)的属性集。包含所有属性的集叫做明显(平凡)超键。 +超键指的是可以唯一标识一条记录的属性集合,不一定是最小的。超键的属性集合可能还包括其他属性,但是其中必须包含唯一标识记录的属性集合。例如,一个学生信息表中,学号和班级可以作为超键,因为这两个属性集合可以唯一标识一条学生记录,但是其中班级属性可以不包括,仍然是超键。 + ### 候选键 在关系模型中,候选键或候选码(candidate key)是某个关系变量的一组属性所组成的集合,它需要同时满足下列两个条件: @@ -155,6 +157,8 @@ _关系键是关系数据库的重要组成部分。关系键是一个表中的 满足第一个条件的属性集合称为超键,因此我们也可以把候选键定义为“最小超键”,也就是不含有多余属性的超键。 +候选键指的是可以唯一标识一条记录的最小属性集合(最小超键),即在该关系中,候选键的属性集合不可再被减少,否则将无法保证唯一标识一条记录。例如,一个学生信息表中,可以将学号作为候选键,因为学号可以唯一标识一条学生记录。 + 候选键的重要性是它们能够在关系中唯一标识出不同的元组,因此超键也是在设计数据库模式时需要指定的最重要的约束之一。由于在关系模型中,每个关系都是一个集合(没有重复的元素),所以每个关系都至少有一个候选键(因为所有属性组合必然是个超键)。但是在某些关系型数据库中表也能代表多重集,所以在每个关系中都显式地定义至少一个候选键是一条很重要的设计原则。数据库管理系统通常都需要将每个关系中的某个候选键定义为主键,亦即这个候选键是区分不同元组时首选的识别方式,例如外键通常就是引用主键而非其他候选键。 ### 外键