数据库原理与应用 第 2 章 · 第五节
课程 › 第 2 章 › 第五节 三类完整性实体完整性参照完整性用户自定义 版式
第 2 章 关系数据库 · 第五节

关系的完整性

实体完整性、参照完整性和用户自定义完整性
本 节 知 识 点
  1. 15关系的三类完整性
  2. 16实体完整性
  3. 17参照完整性
  4. 18用户自定义完整性
15
第 2 章 · 第五节 · 课件第 35 页

关系的三类完整性

实体完整性、参照完整性和用户自定义完整性。

课件第 35 页

重 点

实体完整性和参照完整性是关系模型必须满足的,由 DBMS 自动支持。

16
第 2 章 · 第五节 · 课件第 36 页重做

实体完整性

主码的值不能为空,也不能部分为空。

2.3 关系的码和关系的完整性课件第 36 页重做

实体完整性

实体完整性是指主码的值不能为空,也不能部分为空。
  • 课程关系中的主码“课程号”不能为空
  • 授课关系中的主码“教师号 + 课程号”不能部分为空,即教师号和课程号两个属性的值都不能为空
  • 主码的值也不能重复,这样每一个元组才能被唯一地标识

向学生表插入一个学号为空的学生,数据库会拒绝,因为无法区分这个学生。

练一练

选课表 sc 的主码是 (sno, cno)。插入哪一行会违反实体完整性?
  1. A('s1', 'c9', 80)
  2. B(NULL, 'c1', 75)
  3. C('s2', 'c1', NULL)
答案 B

主码中的 sno 为空,违反实体完整性。成绩为空是允许的,它不是主属性。

17
第 2 章 · 第五节 · 课件第 37、38 页合并重做

参照完整性

外码的值必须在被参照的主码中存在,或者为空。

2.3 关系的码和关系的完整性课件第 37、38 页合并

参照完整性

参照完整性是指参照关系中外码的值,必须在被参照关系的主码中存在,或者为空。
例:学生表 s 与选课表 sc
  • 插入选课记录 (s9, c1, 80) 时,学生表中没有 s9,拒绝插入
  • 删除学生 s1 时,选课表中还有 s1 的成绩,要决定怎样处理
删除被参照的记录时,三种处理方法
方法做法SQL
拒绝删除参照它的记录还在,就不允许删除RESTRICT
级联删除连同参照它的记录一起删除CASCADE
置空把参照它的记录的外码置为空SET NULL

置空的前提是外码允许为空。sc 的 sno 是主码的一部分,不能为空,所以只能用前两种方法。

试一试删除商家 R03,订单表会怎样

订单表的商家ID 是外码,参照商家表的主码。订单 O002 的商家是 R03
方法
订单号用户商家ID
18
第 2 章 · 第五节 · 课件第 39 页

用户自定义完整性

具体应用对数据的要求,例如成绩在 0 到 100 之间。

课件第 39 页

重 点

第 5 章用 CHECK、NOT NULL、UNIQUE 等约束实现用户自定义完整性。

练一练

“成绩必须在 0 到 100 之间”属于哪一类完整性?
  1. A实体完整性
  2. B参照完整性
  3. C用户自定义完整性
答案 C

这是具体应用对数据的语义要求,属于用户自定义完整性。

保山学院·人工智能教研室·曹鼎鼎