关系模型中的三类完整性约束
- 实体完整性和参照完整性
- 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
- 用户定义的完整性
- 应用;领域需要遵循的约束条件,体现了具体领域中的语义约束
实体完整性
- 若属性A是基本关系R的主属性,则属性A不能取空值(不知道或不存在或无意义的值)
例:选修(学号,课程号,成绩) 学号和课程号是主码 不能取空值
关系间的引用
- 在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用
参照完整性原则
- 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K~s~相对应(基本关系R和S不一定不同),则对于R中每个元组在F上的值必须为:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值
比如学生关系中每个元组的“专业号”属性只有两种可能
- 空值,表示未分配专业
- 若非空,则一定是专业关系中某个元组的“专业号”,不可能分配不存在的专业
用户定义的完整性
- 针对某一具体关系的数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
- 关系模型应提供定义和检验这类完整性的机制,以便使用统一的系统的方法处理他们,而不需要应用程序承担这一功能
比如课程(课程号,课程名,学分)中 “课程号”属性必须取唯一值