文档介绍:中国地质大学信息工程学院
数据库系统概论
An Introduction to Database System
第五章 数据库完整性
10/1/
1
数据库系统概论之数据库完整性
第1页
什么是数据库完整性
数据正确性和
4. 动态列级约束
动态列级约束是修改列定义或列值时应满足约束条件
10/1/
16
数据库系统概论之数据库完整性
第16页
完整性约束条件(续)
1) 修改列定义时约束
例:将原来允许空值列改为不允许空值时:
该列当前已存在空值,则拒绝这种修改
2) 修改列值时约束
修改列值时新旧值之间要满足约束条件
例:职员工资调整 >= 原来工资
年纪只能增加
10/1/
17
数据库系统概论之数据库完整性
第17页
完整性约束条件(续)
5. 动态元组约束
修改元组值: 各个字段之间要满足约束条件
例: 职员工资调整不得低于其原来工资 + 工龄*
10/1/
18
数据库系统概论之数据库完整性
第18页
完整性约束条件(续)
6. 动态关系约束
关系改变前后状态:限制条件
例:事务一致性、原子性等约束条件
10/1/
19
数据库系统概论之数据库完整性
第19页
实体完整性
实体完整性定义
实体完整性检验和违约处理
10/1/
20
数据库系统概论之数据库完整性
第20页
实体完整性定义
实体完整性(Entity Integrity)
若属性A是基本关系R主属性,则属性
A不能取空值
例
SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)
POSTGRADUATE属性为主码
(假设硕士不会重名),则其不能取空值
10/1/
21
数据库系统概论之数据库完整性
第21页
实体完整性定义
关系模型必须恪守实体完整性规则原因
实体完整性规则是针对基本关系而言。
一个基本表通常对应现实世界一个实体集或多对多联络。
(2) 现实世界中实体和实体间联络都是可区分,即它们含有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识。
(4) 主码中属性即主属性不能取空值。
空值就是“不知道”或“无意义”值。
主属性取空值,就说明存在某个不可标识实体,即存在不可区分实体,这与第(2)点相矛盾,所以这个规则称为实体完整性。
10/1/
22
数据库系统概论之数据库完整性
第22页
实体完整性定义
关系模型实体完整性在Create table 中用 Primary Key定义。
对单属性组成码有两种说明方法:
定义为列级约束条件
表级约束条件
对多个属性组成码只有一个说明方法,即定义为表级约束条件
10/1/
23
数据库系统概论之数据库完整性
第23页
[例题1]将Student表中Sno属性定义为码。
Create table student
(Sno char(9) primary key,/*在列级定义主码*/
Sname char(20) not null,
Ssex char(2),
Sage smallint,
Sdept char(20)
);
实体完整性定义
10/1/
24
数据库系统概论之数据库完整性
第24页
实体完整性定义
或者
Create table student
( sno char(9),
Sname char(20) not null,
Ssex char(2),
Sage smallint,
Sdept char(20),
primary key (sno) ,/*在表级定义主码*/
);
10/1/
25
数据库系统概论之数据库完整性
第25页
实体完整性定义
[例题2] 将SC表中Sno,Cno属性组定义为码
Create table SC
( Sno char(9) not null,
Cno char(4) not null,
grade smallint,
Primary key (Sno,Cno) ,/*只能在表级定义主码*/
);
10/1/
26
数据库系统概论之数据库完整性
第26页
实体完整性检验和违约处理
用primary key 短语定义了关系主码后,
每当应用程序对基本表插入一条统计或者对主