关系模型中的三类完整性约束

  • 实体完整性和参照完整性
    • 关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持
  • 用户定义的完整性
    • 应用;领域需要遵循的约束条件,体现了具体领域中的语义约束

实体完整性

  • 若属性A是基本关系R的主属性,则属性A不能取空值(不知道或不存在或无意义的值)

例:选修(学号,课程号,成绩) 学号和课程号是主码 不能取空值

关系间的引用

  • 在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用

参照完整性原则

  • 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K~s~相对应(基本关系R和S不一定不同),则对于R中每个元组在F上的值必须为:
    • 或者取空值(F的每个属性值均为空值)
    • 或者等于S中某个元组的主码值

比如学生关系中每个元组的“专业号”属性只有两种可能

  • 空值,表示未分配专业
  • 若非空,则一定是专业关系中某个元组的“专业号”,不可能分配不存在的专业

用户定义的完整性

  • 针对某一具体关系的数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
  • 关系模型应提供定义和检验这类完整性的机制,以便使用统一的系统的方法处理他们,而不需要应用程序承担这一功能

比如课程(课程号,课程名,学分)中 “课程号”属性必须取唯一值