数据库系统原理第五章-完整性控制.ppt

上传人:小飞机 文档编号:5985738 上传时间:2023-09-11 格式:PPT 页数:19 大小:284.61KB
返回 下载 相关 举报
数据库系统原理第五章-完整性控制.ppt_第1页
第1页 / 共19页
数据库系统原理第五章-完整性控制.ppt_第2页
第2页 / 共19页
数据库系统原理第五章-完整性控制.ppt_第3页
第3页 / 共19页
数据库系统原理第五章-完整性控制.ppt_第4页
第4页 / 共19页
数据库系统原理第五章-完整性控制.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《数据库系统原理第五章-完整性控制.ppt》由会员分享,可在线阅读,更多相关《数据库系统原理第五章-完整性控制.ppt(19页珍藏版)》请在三一办公上搜索。

1、1,第5章 数据库完整性,5.1 概述1、定义数据的正确性,有效性和相容性。(防止不符合语义的数据的I/O)2、功能1)完整性要求定义;2)监督事务执行,测试是否违反完整性限制条件;3)若发生违反情况,则进行相应处理(拒绝、报告、纠正)。5.2 完整性约束条件1、基本概念 定义施加于DB中数据之上的语义限制条件 约束对象列级、元组级、关系级,2,约束对象状态静态:反映DB状态合理性的约束。动态:反映DB状态变迁的约束。约束时机(Immediate constraints)(1)立即约束一条语句执行完后立即检查。(2)延迟约束(deferred constraints)事务执行结束后检查。转帐,

2、从A到B后,帐才能平,才能进行检查。2、静态列级约束对一个列的取值域的约束。数据类型约束类型、长度、单位、精度如XM为C型,长8位;YL为I型,长3位。数据格式约束如工作证号前2位表示省,后3位表示县,后4位表示单位顺序号,后5位表示个人顺序号。,3,值域约束CJ100,NL150,XB=男,女 空值约束是否允许空值列。如CJ可为空。其它约束(如:列的排序、是否唯一等等)3、静态元组约束对一个(仅一个)元组中各列值间联系的约束。如:总额单价工龄年龄4、静态关系约束对一个关系中若干元组之间或若干关系的联系的约束。实体完整性约束;参照完整性约束;函数依赖约束;统计约束;如:职工最低工资不能低于本部

3、门职工平均工资的50%。,4,5、动态列级约束修改列定义或列值时的约束。修改定义约束修改定义时新老值间的约束。如:将允许空值列改为不允许空值时,若该列值已有空值,则不可修改。修改值约束修改时新旧值间的约束。如年龄不能修改得更小。6、动态元组约束修改元组时新旧值间的约束。例如新工资不低于原工资+工龄*1.5。7、动态关系约束施加于关系上的前后状态的约束 一致性 原子性,5,5.3 完整性控制1、实体完整性(entity integrity)对关系模式主属性施加的完整性控制。不允许空,在关系中取值唯一例:student(XH,XM,XB,YL)XH不能为空且唯一course(KH,KM)KH不能为

4、空且唯一Sc(XH,KH,CJ)(XH,KH)不能为空且唯一Create table student(XH,Char(6)NOT NULL,);2、参照完整性(referential integrity)对外码施加的完整性控制。(回忆第二章定义)参照关系:外码所在关系,如SC被参照关系:主码(同时又是另一关系中的外码)所在关系,如student,course。外码:sc中的XH,KH,6,1)空值情况 为空(SC中XH为空,表示无这个学生,或无学号学生选修了课程,不合应用语义),或;对应被参照关系中该元组存在;是否可为空,据应用语义确定。DEPT(DH,DM,DD)EMPL(DH,EH,XM)

5、EMPL中DH可为空,表示该职员还未分配到任何部门工作。2)删除被参照关系元组情况 捆绑删除(cascades)参照与被参照关系中相关者一起删除。被参照关系中外码元组删除例如:删除99001号学生(或者01号课程)删去student中XH=99001的元组(删去course中KH=01的元组)则捆绑删除SC中学号为99001(课号为01)的所有元组参照关系中与被参照关系中码值对应元组删除,7,可能层层牵连如:若SC又是另一参照关系的被参照关系,则可能又删除之。受限删除(restricted)参照关系没有一个外码与要删除的被参照关系的主码值相对应时才执行删除。例如:若SC中外码值XH,无一个与主

6、码值(Student.XH,course.KH)对应时才删去student、course中相应元组。置空值删除(nullifies/set null)删去被参照关系中元组;参照关系中所有与被参照关系中已删去的主码值相等的外码值置为空值。如:删去部门表中的某个部门,则职员表中原来属于该部门的职员的所属部门号置空。,8,说明上述三种,选择哪一种实施,视应用需求确定。如:学籍管理中,学生毕业了,删去选课及学生信息,故需捆绑删除(course不删)student信息。DBMS提供相应选择机制。3)修改被参照关系主码值情况 捆绑修改(cascades)修改被参照关系中主码值。如修改student中的XH

7、=99003改为XH=99020同时修改参照关系中相等外码值。如:同时SC中所有99003改为99020可能逐层牵连。,9,受限修改(restricted)仅当参照关系中没有一个外码值与被参照关系中某个元组主码值相等时才可修改被参照关系中的该元组主码值。如:仅当SC中学生无99003时,才可修改student中XH=99003。置空值修改(nullifies)修改被参照关系中的主码值;将参照关系中的与该主码值相等的外码置为空值。说明具体应用中,根据应用需求选择上述方法执行。DBMS提供机制支持用户选择。,10,3、用户定义完整性(integrity of user definition)1)空

8、值控制对给定属性施加不允许空值限制(NOT NULL)2)单个属性控制为:(CJ is Null)OR(CJ BETWEEN 0 AND 100)3)多属性控制如:XB=男 AND YL=0 AND GRADE=100);,11,例3:CREATE TABLE STUDENT(SNO INT PRIMARY KEY,SNAME CHAR(30)NOT NULL,SSEX CHAR(2),SDEPT INT,CHECK(SSEX=女 OR SNAME NOT LIKE Ms.%);例4:CREATE TABLE TEACHER(ENO INT,ENAME CHAR(30)NOT NULL,SAL

9、 INT,DEDUCT INT,CONSTRAINT C1 CHECK(SQL+DEDUCT=1000);,12,例5:ALTER TABLE TEACHER DROP CONSTRAINT C1;ALTER TABLE TEACHER ADD CONSTRAINT C2 CHECK(SAL+DEDUCT=2000 AND SAL=1000);例6:域的使用 CREATE DOMAIN GenderDomain CHAR(2)CHECK(VALUE IN(男,女);或者 CREATE DOMAIN GenderDomain CHAR(2)CONSTRAINT C3 CHECK(VALUE IN

10、(男,女);ssex GenderDomain,例7:ALTER DOMAIN GenderDomain DROP CONSTRAINT C3;,13,4、ORACLE完整性1)实体完整性CREATE TABLE student(XH NUMBER(8),XM VARCHAR(8),YL NUMBER(3),Constraint PK-XH PRIMARY KEY(XH);一旦定义了主码,则DBMS自动进行完整性检查:主码不能为空;主码值须唯一。,14,2)参照完整性 语句FOREIGN KEY:指定外码属性REFERENCES:指定外码对应主码ON DELETE CASCADE:指定捆绑删除

11、要求例:CREATE TABLE SC(XH NUMBER(8),KH NUMBER(3),CJ NUMBER(3),CONSTRAINT FK_SCXH FOREIGN KEY(XH)REFERENCES student(XH)ON DELETE CASCADE,CONSTRAINT FK_SCKH FOREIGN KEY(KH)REFERENCES course(KH)ON DELETE CASCADE);,15,说明:SC中外码为XH,KH。对应student主码为XH。对应course主码为KH。当修改student中XH时,先检查SC中有无元组XH值与之相等,若有,则不能执行该修改;

12、当修改course中KH,先检查SC中有无元组的KH值与之相等,若有,则不能执行该修改。当删除student或course某元组时,则先在SC中找到相应元组,进行捆绑删除。3)用户定义完整性 列值非空(NOT NULL)列值唯一(UNIQUE)CREAE TABLE COURSE(KH NUMBER(3),KM VARCHAR(20)CONSTRAINT U1 UNIQUE,XS NUMBER(2);,16,其中:CONSTRAINT U1 UNIQUE:KM唯一,约束名为U1。列值范围限制例:XB VARCHAR(2)CONSTRAINT CNS_XB1 CHECK(XB IN(男,女);例

13、:GZ NUMBER(8.2)CONSTRAINT CNS_GZ1 CHECK(GZ1000.00);例:CRETATE TRIGGER UPDATE-CJ BEFORE INSERT OR UPDATE ON CJ FOR EACH ROW WHEN(:NEW.KH=001)AS BEGIN IF:NEW.CJ50 THEN:NEW.CJ:=50;ENDIF END,17,说明:利用触发器,当对SC中进入插入元组和修改CJ值时,若为001号课程,则CJ50时一律自动改为50分。定义触发器语句为CREATE OR REPLACE TRIGGER。(先定义后使用)CREATE TRIGGER语句

14、定义触发器的约束条件。一条完整性规则可以用一个五元组(D,O,A,C,P)来形式化地表示,其中:D:数据对象DataO:引发动作地操作OperationA:数据对象必须满足的断言或语义约束AssertionC:选择A作用的数据对象的谓词ConditionP:被触发的过程Procedure例如:教授的工资不得低于1000元。D教师的工资,O修改或插入,A不低于1000元,C职称为教授,P拒绝修改。,18,FOR EACH ROW(FOR EACH STATEMENT)删除触发器DROP TRIGGER 触发器名 ON 表名,19,关于触发器的概念,1.触发器名2.表名3.触发事件INSERT/DELETE/UPDATE(OF)4.触发时机BEFORE,AFTER4.触发器类型FOR EACH ROW,FOR EACH STATEMENT5.触发条件WHEN6.触发动作体AS BEGINEND,维护数据完整性,维护系统安全性,触发器的作用?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号