数据库学习笔记「数据库完整性」
关系的完整性
关系模型的完整性规则是对关系的某种约束条件
关系模型中有三类完整性约束:
- 实体完整性entity integrity
- 参照完整性referential integrity
- 用户定义的完整性user-defined integrity
实体完整性和参照完整性是关系模型必须满足的完整性约束条件
实现完整性
关系数据库中的每个元祖应该是可区分的,是唯一的
实体完整性规则:若数学A是基本关系R的主属性Primary Key,则A不能取空值Null Value。
参照完整性
显示世界中的实体之间往往存在某种联系,在关系模型中实体及实体
设\(F\)是基本关系\(R\)的一个或一组属性,但不是关系\(R\)的码,\(K_3\)是基本关系\(S\)的主码。如果\(F\)与\(K_5\)相对应,则对于\(R\)中每个元组在\(F\)上的值必须满足:
- 或者取空值(\(F\)的每个属性值均为空值)
- 或者等于\(S\)中某个元组的主码值
例如在学生选课系统中,"学生学号"和"课程号"是选修关系的主属性,只能取相应被参照关系中已经存在的主码值
- 学生选课必须选存在的课(选修关系表中不能出现课程表中没有的课程)
- 只有本校的学生才能选课(选修关系表中不能出现学生表中不存在的学生)
用户自定义完整性
不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求
例如学生选课系统,要求学生不能没有姓名;学号必须唯一等