当前课程知识点:数据库系统原理与开发 > 第2章 数据库关系模型 > 2.2 关系模型原理 > 2.2.2关系模型原理-2
同学们,大家好!
我是主讲教师陆鑫
下面我们继续学习数据库课程的
第2.2小节 “关系模型原理”的完整性约束
本节学习目标如下:
1)理解关系模型完整性约束
2)理解实体完整性
3)理解参照完整性
4)理解用户自定义完整性
在学习关系模型的操作原理之后
开始学习关系模型另一主题——完整性约束
一、关系模型完整性
为什么需要定义关系模型完整性呢?
因为系统数据之间存在一定的联系和约束
关系模型完整性可以将这些数据关系或约束进行描述
关系模型完整性是指在关系数据模型中
对关系实施的完整性约束
完整性约束作用如下:
消除关系表的元组重复存储
保持关联表的数据一致性
实现业务数据规则
关系模型完整性约束组成如下:
实体完整性约束
参照完整性约束
用户自定义完整性约束
二、实体完整性
实体完整性是指在关系表中实施的主键取值约束
以保证关系表的每个元组可以被唯一标识
实体完整性约束规则如下:
每个关系表中的主键属性列都不允许为空值(NULL)
否则就不可能标识实体
现实世界中的实体是靠主键来标识
主键取值应该唯一
并区分关系表中的每个元组
下面以一个实例来说明关系表的实体完整性定义
例 选课注册关系表(Register)的实体完整性定义
在选课注册关系表(Register)中
为了确保表中不重复存放选课记录数据
需要将RegID列定义了为主键
其值不允许为空
且取值唯一
因此,该关系表的实体完整性就是对RegID列进行约束
下面进行实体完整性练习
在表2-7、表2-8、表2-9所示的GRADE成绩关系表中
请判断哪些表符合实体完整性约束
哪些表不符合实体完整性约束?
GRADE关系表1不满足实体完整性约束
其理由是复合主键的部分列有空值
GRADE关系表2也不符合实体完整性约束
其理由是第1元组与第3个元组的复合主键值相同,即不唯一
GRADE关系表3满足实体完整性约束
其理由是符合实体完整性约束规则
三、参照完整性
参照完整性是指关系表之间需要遵守的数据约束
以保证关系之间关联列的数据一致性
参照完整性约束规则
若关系R中的外键F与关系S中的主键K相关联
则R中外键F值必须与S中主键K值一致
与参照完整性相关的一个重要概念就是外键
外键(Foreign key)是在关联的两个表中
它们具有一个或多个相同属性
若关联列在第一个关系中作为主键
则在第二个关系中作为外键
下面以模型图来表示关系表之间的参照完整性约束关系
例 在下面的出版社、书名关系表中
它们都有相同的“出版社编号”属性列
在出版社关系表中
“出版社编号”作为主键
而在书名关系表中
相同列名“出版社编号”作为外键
这两个表的参照完整性约束是指“书名”关系表的“出版社编号”列
必须与“出版社”关系表中的“出版社编号”列的值匹配
即需要维持它们之间的数据一致性
在关系模型中
还可以用户自定义完整性约束
其目的是为了实现一些业务数据规则
四、用户自定义完整性
用户自定义完整性是指用户根据具体业务
对数据处理规则要求所定义的数据约束
用户可以定义如下类型的完整性约束:
定义列的数据类型与取值范围
定义列的缺省值
定义列是否允许取空值
定义列取值是否唯一性
定义列之间的数据依赖性
在关系模型中
实施用户自定义完整性约束
其目的是为了实现一些业务规则
例如 在下面表2-10所示的成绩关系表中
业务要求分数字段Score的取值范围为0-100或为空值
在设计GRADE关系表结构时
需要对分数Score列的取值范围进行约束
限定该列值域范围为0-100
该列也允许空值
本节学习结束!
-1.1 数据库及其系统概念
-1.2 数据库技术发展
-1.3 数据库应用系统
-1.4 典型数据库管理系统
-1.5 PostgreSQL对象-关系数据库系统软件
-第1章 数据库系统概论--本章单元测试
-2.1 关系及其相关概念
-2.2 关系模型原理
-2.3 PostgreSQL数据库关系操作实践
-第2章 数据库关系模型--本章单元测试
-3.1 SQL语言概述
-3.2 数据定义SQL语句
-3.3 数据操纵SQL语句
-3.4 数据查询SQL语句
-3.5 数据控制SQL语句
-3.6 视图SQL语句
-3.7 PostgreSQL数据库SQL实践
-第3章 数据库操作SQL语言--本章单元测试
-4.1 数据库设计概述
-4.2 E-R模型方法
-4.3 数据库建模设计
-4.4 数据库规范化设计
-4.5 数据库设计模型SQL实现
-4.6 基于Power Designer的数据库设计建模实践
--4.6 基于Power Designer的数据库设计建模实践
-第4章 数据库设计与实现--本章单元测试
-5.1 数据库管理概述
-5.2 事务管理
--5.2 事务管理
-5.3 并发控制
-5.4 安全管理
-5.5 数据库备份与恢复
-5.6 PostgreSQL数据库管理项目实践
-第5章 数据库管理--本章单元测试
-6.1 数据库连接技术
-6.2 数据库存储过程
-6.3 数据库触发器
-6.4 数据库游标
-6.5 嵌入式SQL编程
-第6章 数据库应用编程--本章单元测试
-7.1 NoSQL数据库概述
-7.2 列存储数据库
-7.3 键值对数据库
-7.4 文档型数据库
-7.5 图形数据库
-7.6 HBase数据库项目实践
-第7章 NoSQL数据库技术--本章单元测试
-期末测试--期末测试