1 / 34
文档名称:

第五章 数据库完整性.ppt

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

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

分享

预览

第五章 数据库完整性.ppt

上传人:mh900965 2018/4/18 文件大小:1.42 MB

下载得到文件列表

第五章 数据库完整性.ppt

相关文档

文档介绍

文档介绍:数据库完整性
概述
什么是数据库完整性?
数据的正确性和相容性
防止不合语义的数据进入数据库
例:
学生的年龄必须是整数,取值范围为14--29
学生的性别只能是男或女;
学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
完整性:是否真实地反映现实世界
数据库完整性机制维护
完整性约束条件定义机制
是数据库中的数据必须满足必须满足的语义约束条件
一般由SQL的DDL语句来实现
并作为数据库模式的一部分存入数据字典中
完整性检查机制
一般在insert、update、delete语句执行后开始查检,也可以是事务提交时检查
检查用户发出的操作请求是否违背了完整性约束条件
违约处理机制
如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
拒绝(no action)执行
级连(cascade)操作
主要内容
实体完整性
参照完整性
用户自定义完整性
完整性约束命名子句
存储过程
触发器
实体完整性
实体完整性定义
在create table中用primary key定义
码的两种定义方法
单属性构成的码
列级约束条件
表级约束条件
多属性构成的码
表级约束条件
实体完整性(续)
例1:将Student表中的 Sno属性定义为码
Create table Student
(Sno char(9) ,
Sname char(20) not null,
Ssex char(2),
Sage smallint,
Sdept char(20)
)
primary key, /*在列级定义主码*/
primary key (Sno) /*在表级定义码*/
)
,
例2:将SC表中的 o属性组定义为码
Create table SC
(Sno char(9) not null,
Cno char(4) not null,
Grade smallint
)
,
primary key (o) /*只能在表级定义主码*/
)
实体完整性(续)
实体完整性检查和违约处理
什么时候检查(when)
当用户程序对基本表进行插入或对主码列进行更新时,实体完整性规则自动进行检查
怎么检查(how)
检查主码值是否唯一,若不唯一则拒绝插入或修改
检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
思考:
为什么RDBMS一般在表的主码列上
自动建立一个索引呢?
参照完整性
参照完整性定义
在create table中用foreign key短语定义哪些列为外码
用references短语指明这些外码参照哪些表的主码
例:定义SC中的参照完整性
Create table SC
(Sno char(9) not null,
Cno char(4) not null,
Grade Smallint,
Primary key(o) /*在表级定义实体完整性*/
)
Foreign key(Sno) references Student(Sno) ,/*在表级定义
Foreign o) references o) 参照完整性*/
)
,
参照完整性检查和违约处理
可能破坏参照完整性的情况
违约处理
拒绝(No action)执行
一般被设置为默认策略
级连(Cascade)操作
删除或修改被参照表的某一元组造成与参照表不一致时,删除或修改参照表中的所有造成不一致的元组
设置为空值(Null)
删除或修改被参照表的某一元组造成与参照表不一致时,将参照表中的所有造成不一致的元组的对应属性设置为空值
参照表
被参照表
参照关系
插入元组
修改外码值
删除元组
修改主码值
显式指定参照完整性违约处理
违反参照完整性时,系统采用默认策略,即拒绝执行;欲采用其它策略,要显式说明
例:对学生选课表SC显式指定参照完整性违约处理
Create table SC
(Sno char(9) not null,
Cno char(9) not null,
Grade smallint,
Primary key(o),
Foreign key(Sno) references Student(Sno)
On delete cascade
On update cascade,
Foreign o) references o)
On delete no action
On update cascade
)