文档介绍:数据库系统概论
An Introduction to Database System
第五章数据库完整性
东莞理工学院城市学院计算机与信息科学系
An Introduction to Database Systems
第五章数据库完整性
定义
指数据的正确性和相容性
目的
为了防止不合语义的数据进入数据库。
现实世界的实例:
学生的性别只能是男或女;
本科生的年龄必须是整数,取值范围为14-50;
学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
An Introduction to Database Systems
第五章数据库完整性
完整性和安全性的区别
目的不同
完整性是防止数据库中存在不正确的数据;
安全性是防止数据库被恶意破坏或非法存取。
防范对象不同
完整性是防范不合语义、不正确的数据;
安全性是防范非法用户和非法操作。
An Introduction to Database Systems
数据库完整性
完整性控制机制包括:
完整性约束条件定义机制
DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中
完整性检查的方法
检查用户发出的操作请求是否违背了完整性约束条件,一般在:INSERT、UPDATE、DELETE语句执行后以及事务提交时检查。
An Introduction to Database Systems
数据库完整性
违约处理
如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性,包括:拒绝(NO ACTION)执行该操作,或级联(CASCADE)执行其他操作。
An Introduction to Database Systems
第五章数据库完整性
实体完整性
参照完整性
用户定义的完整性
完整性约束命名子句
触发器
小结
An Introduction to Database Systems
实体完整性定义
在CREATE TABLE中用PRIMARY KEY定义,可以是列级约束条件也可以是表级约束条件,但有些时候只能定义表级约束条件。
CREATE TABLE Student /*列级定义主码*/
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(15));
An Introduction to Database Systems
实体完整性定义
CREATE TABLE Student /*表级定义主码*/
(Sno CHAR(9) ,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2) ,
Sage SMALLINT,
Sdept CHAR(15),
PRIMARY KEY (Sno)
);
An Introduction to Database Systems
实体完整性定义
CREATE TABLE SC /*只能在表级定义主码*/
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno, Cno)
);
An Introduction to Database Systems
实体完整性检查和违约处理
检查
当用户程序对基本表插入一条记录或对主码进行更新操作时进行检查。
包括:
检查主码的值是否唯一,不唯一则拒绝操作;
检查主码的各个属性是否为空,只要有一个为空就拒绝操作。
An Introduction to Database Systems