前置:https://blog.csdn.net/jaihk662/article/details/80066225
候选码:
- 关系中的一个属性组
- 它可以唯一标识一个元组
- 若从该属性组中去掉任意一个属性,他就不具备上一个性质
例如性别年龄无法区分学生,但学号可以,因为每个学生学号一定互不相同,那么学号就单独作为一个候选码
除此之外,名字不可以作为候选码,因为可能重名,但是名字+地址就可以了,因为这样就不可能重复
主码/主键(Primary Key):
当有多个候选码时,选定一个作为主码
DBMS以主码为主要线索管理关系中的各个元组
实体完整性:关系的主码中的属性值不允许为空值(不知道不存在或无意义的值)
主属性与非主属性:
包含在任意一个候选码中的属性被称为主属性,否则为非主属性
- 最简单情况下候选码只包含一个属性(例如学号)
- 最复杂情况下所有属性构成这个关系的候选码,称为全码(All-Key)
外码/外键(Foreign Key):
关系R中的一个属性组,他不是R的候选码,但它与另一个关系的候选码相对应,则称这个属性组为R的外码/外键
两个关系通常通过外码相互连接
例子如下:
参照完整性:如果关系R1的外码Fk与关系R2的主码Pk相对应,那么R1中所有元素的Fk值要不等于关系R2中的某个Pk值,要不为空值
总结:
用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件
例如一个大学生的岁数不可能超过100,也不可能小于5,性别只能是男和女等