1 / 35
文档名称:

第5章 数据库完整性.ppt

格式:ppt   大小:154KB   页数:35页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第5章 数据库完整性.ppt

上传人:s1188831 2018/1/30 文件大小:154 KB

下载得到文件列表

第5章 数据库完整性.ppt

相关文档

文档介绍

文档介绍:第5章数据库完整性
数据库的完整性是指数据的正确性和相容性。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。
数据的完整性和安全性是两个不同概念
数据的完整性是防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
数据的安全性是保护数据库防止恶意的破坏和非法的存取,防范对象是非法用户和非法操作。
为维护数据库的完整性,DBMS必须:
1、提供定义完整性约束条件的机制
2、提供完整性检查的方法
3、违约处理。
实体完整性
实体完整性定义
关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。
单属性构成的码有两种说明方法
定义为列级约束条件
定义为表级约束条件
对多个属性构成的码只有一种说明方法
定义为表级约束条件
[例1] 将S表中的S#属性定义为码
(1)在列级定义主码
CREATE TABLE S
(S# CHAR(9) PRIMARY KEY,
SN CHAR(20) NOT NULL,
SA SMALLINT,
SD CHAR(20));
(2)在表级定义主码
CREATE TABLE S
(S# CHAR(9),
SN CHAR(20) NOT NULL,
SA SMALLINT,
SD CHAR(20),
PRIMARY KEY (S#) );
[例2]将SC表中的S#,C#属性组定义为码
CREATE TABLE SC
(S# CHAR(9) NOT NULL,
C# CHAR(4) NOT NULL,
G SMALLINT,
PRIMARY KEY (S#,C#) /*只能在表级定义主码*/
);
实体完整性
实体完整性检查和违约处理定义
插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:
1. 检查主码值是否唯一,若不唯一则拒绝插入或修改。
2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。
参照完整性
参照完整性定义
关系模型的参照完整性定义:
在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码;
用REFERENCES短语指明这些外码参照哪些表的主码。
[例3] 定义SC中的参照完整性
CREATE TABLE SC
(S# CHAR(9) NOT NULL,
C# CHAR(4) NOT NULL,
G SMALLINT,
PRIMARY KEY (S#, C#), /*在表级定义实体完整性*/
FOREIGN KEY (S#) REFERENCES S (S#),
/*在表级定义参照完整性*/
FOREIGN KEY (C#) REFERENCES C (C#)
/*在表级定义参照完整性*/
);
参照完整性
参照完整性检查和违约处理
一个参照完整性将两个表中的相应元组联系起来了。因此,对被参照表和参照表进行增删改操作时可能破坏参照完整性,必须进行检查。
被参照表(例如Student)
参照表(例如SC)
违约处理
可能破坏参照完整性
插入元组
拒绝
可能破坏参照完整性
修改外码值
拒绝
删除元组
可能破坏参照完整性
拒绝/级连删除/设置为空值
修改主码值
可能破坏参照完整性
拒绝/级连修改/设置为空值
可能破坏参照完整性的情况及违约处理
当发生上述不一致时,系统可以采用以下的策略进行参照完整性违约处理。
1、拒绝(NO ACTION)执行
该策略一般设置为默认策略
2、级联(CASCADE)操作
当删除或修改被参照表的一个元组造成了与参照表的不一致,则删除或修改参照表中的所有造成不一致的元组。
3、设置为空值(SET-NULL)
当删除或修改被参照表的一个元组造成了与参照表的不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。

最近更新