📜  关系模型中的键类型(候选键、超级键、主要键、备用键和外键)

📅  最后修改于: 2021-09-08 16:13:24             🧑  作者: Mango

我们强烈建议参考以下帖子作为此的先决条件。

数据库管理系统 |关系模型介绍和 Codd 规则

关系模型中不同类型的键

图像

候选键:可以唯一标识元组的最小属性集称为候选键。例如, STUDENT 关系中的 STUD_NO。

  • Candidate Key 的值对于每个元组都是唯一且非空的。
  • 一个关系中可以有多个候选键。例如, STUD_NO 是关系 STUDENT 的候选键。
  • 候选键可以是简单的(只有一个属性),也可以是复合的。例如,{STUD_NO, COURSE_NO} 是关系 STUDENT_COURSE 的复合候选键。
  • 一个关系中没有候选键是 nC(floor(n/2)),例如如果一个关系有 5 个属性,即 R(A,B,C,D,E) 那么候选键的总数是 5C(floor( 5/2))=10。

注 –在 Sql Server 中,具有可为空列的唯一约束允许该列中的值“”一次。这就是为什么 STUD_PHONE 属性在这里作为候选,但不能是主键属性中的“空”值。

超级键:可以唯一标识元组的属性集称为超级键。例如,STUD_NO、(STUD_NO, STUD_NAME) 等。

  • 向候选键添加零个或多个属性会生成超级键。
  • 候选键是超级键,反之则不然。

主键:关系中可以有多个候选键,可以从中选择一个作为主键。例如,STUD_NO 和 STUD_PHONE 都是关系 STUDENT 的候选键,但可以选择 STUD_NO 作为主键(只有一个候选键)。

备用键:主键以外的候选键称为备用键。例如, STUD_NO 和 STUD_PHONE 都是关系 STUDENT 的候选键,但 STUD_PHONE 将是备用键(只有一个候选键)。

外键:如果一个属性只能采用作为其他属性值存在的值,则它将是它所引用的属性的外键。被引用的关系称为被引用关系,对应的属性称为被引用属性,引用被引用关系的关系称为引用关系,对应的属性称为引用属性。被引用关系的被引用属性应该是它的主键。例如, STUDENT_COURSE 中的 STUD_NO 是 STUDENT 关系中 STUD_NO 的外键。

值得注意的是,与任何给定关系的主键不同,外键可以为 NULL,也可以包含重复的元组,即它不需要遵循唯一性约束。

例如, STUDENT_COURSE 关系中的 STUD_NO 不是唯一的。对第一和第三元组重复了这一过程。但是,STUDENT 关系中的 STUD_NO 是主键,必须始终唯一,不能为空。