数据库系统概论(王珊第四版)-第五章

上传人:飞*** 文档编号:46337870 上传时间:2018-06-25 格式:PPT 页数:20 大小:1.50MB
返回 下载 相关 举报
数据库系统概论(王珊第四版)-第五章_第1页
第1页 / 共20页
数据库系统概论(王珊第四版)-第五章_第2页
第2页 / 共20页
数据库系统概论(王珊第四版)-第五章_第3页
第3页 / 共20页
数据库系统概论(王珊第四版)-第五章_第4页
第4页 / 共20页
数据库系统概论(王珊第四版)-第五章_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数据库系统概论(王珊第四版)-第五章》由会员分享,可在线阅读,更多相关《数据库系统概论(王珊第四版)-第五章(20页珍藏版)》请在金锄头文库上搜索。

1、数据库系统概论 An Introduction to Database System第五章 数据库完整性数据库完整性的含义 数据库完整性是指数据的正确性和相容性 数据的完整性和安全性是两个不同概念: 数据的完整性 防止数据库中存在不符合语义的数据,也就是防止 数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库,防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作为维护数据库的完整性,DBMS必须: 1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理完整性约束条件作用的对象: 列:对属性的取值类型、范围、精度等的约束条件 元组:对元组

2、中各个属性列间的联系的约束 关系:对若干元组间、关系集合上以及关系之间的联系 的约束数据库完整性的控制机制5.1 实体完整性例1:定义Student表的Sno属性为主码 在列级定义主码: CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) NOT NULL,Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );实体完整性约束:若属性A是关系R的主属性,则 A不能取空值或部分为空值。实体完整性的定义在表级定义主码: CREATE TABLE Student (Sno CHAR(9) , S

3、name CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY(Sno) );CREATE TABLE SC(Sno CHAR(9)NOT NULL ,Cno CHAR(4)NOT NULL ,Grade SMALLINT,PRIMARY KEY (Sno, Cno) );例2:在SC表中定义(Sno, Cno)为主码u 实体完整性检查: 用户程序对主码列进行更新操作时,系统自动进行完 整性检查1)检查主码值是否唯一。检查方法全表扫描法、索 引表法2)检查主码的各个属性是否为空u 违约处理:拒绝操

4、作,以保证实体完整性5.2 参照完整性参照完整性约束:说明了不同关系的属性之间的约 束条件,若属性(或属性组)F是基本关系R中的外 码,它与基本关系S的主码K相对应,则对于R中每 个元组在F的值:或者取空或者等于S中某个元组的 主码值。CREATE TABLE SC(Sno CHAR(9)NOT NULL ,Cno CHAR(4)NOT NULL ,Grade SMALLINT,PRIMARY KEY (Sno, Cno) , FOREIGN KEY (Sno) REFERENCES Student(Sno),FOREIGN KEY (Cno) REFERENCES Student(Cno);

5、例:定义SC表中的参照完整性,在表级定义一、参照完整性的定义在建表时用FOREIGN KEY 短语定义哪些列为外 码,用 REFERENCES 短语指明这些外码参照哪些表的 主码。可能破坏参照完整性的情况及违约处理被参照表(如Student) 参照表(如SC) 违约处理可能破坏参照完整性可能破坏参照完整性删除元组修改主码值插入元组修改外码值可能破坏参照完整性可能破坏参照完整性拒绝拒绝拒绝/级联删除/设置空值拒绝/级联删除/设置空值例如:学生Student(学号,姓名,性别,专业号,年龄)选课SC(学号,课程号,成绩)专业Specialty(专业号,专业名)二、参照完整性检查和违约处理拒绝执行(

6、NO ACTION)(默认); 级联操作(CASCADE); 设置为空值(SET-NULL)显示说明参照完整性的违约处理 CREATE TABLE SC(Sno CHAR(9) NOT NULL ,Cno CHAR(4) NOT NULL ,Grade SMALLINT,PRIMARY KEY (Sno, Cno) , FOREIGN KEY (Sno) REFERENCES Student(Sno)ON DELETE CASCADEON UPDATE CASCADE,FOREIGN KEY (Cno) REFERENCES Course(Cno)ON DELETE NO ACTIONON U

7、PDATE CASCADE, );5.3 用户定义的完整性用户定义的完整性就是针对某一具体应用的数据必须满 足的语义要求用CREATE TABLE语句在建表时定义用户完整性约束。可 定义三类完整性约束 l 列值非空(NOT NULL短语) l 列值唯一(UNIQUE短语) l 检查列值是否满足一个布尔表达式(CHECK短语)一、属性上的约束条件的定义与检查CREATE TABLE SC( Sno CHAR(9) NOT NULL ,Cno CHAR(4) NOT NULL ,Grade SMALLINT, NOT NULLPRIMARY KEY (Sno, Cno) );例1:不允许取空值例2

8、:列值唯一。建立部门表DEPT,要求部门名称Dname列取 值唯一,部门编号Deptno列为主码 CREATE TABLE DEPT(Deptno NUMERIC(2) ,Dname CHAR(9) UNIQUE,Location CHAR(10),PRIMARY KEY (Deptno) );CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT CHECK (Grade=0 AND Grade PRIMARY KEY短语| FOREIGN KEY短语 | CHECK短语例1:建立学生登记表Studen

9、t,要求学号在100000至 999999之间,年龄=3000),CONSTRAINT EMPFKey FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno) );修改表中的完整性限制例1:去掉Student表中对性别的限制ALTER TABLE StudentDROP CONSTRAINT C4;例2:修改Student表中的约束条件ALTER TABLE StudentDROP CONSTRAINT C1; ALTER TABLE StudentADD CONSTRAINT C1CHECK(Sno BETWEEN 900000 AND 999999); ALTER TABLE StudentDROP CONSTRAINT C3; ALTER TABLE StudentADD CONSTRAINT C3 CHECK (Sage 40);5.7 本章小结本章主要讲解了关系数据库的三类完整性约束的定义、检查以及违约处理方式和触发器的定义激活与删除。1、区分数据库的安全性和完整性的定义;2、理解并掌握三类完整性约束的定义、检查机制以及违约处理方式;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号