版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性 数据库完好性5.1 实体的完好性实体的完好性5.2 参照完好性参照完好性5.3 用户定义的完好性用户定义的完好性5.4 完好性约束命名子句完好性约束命名子句*5.5 约中的完好性限制约中的完好性限制5.6 触发器触发器5.7 小结小结数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性数据的正确性和相容性数据的正确性和相容性防止不合语义的数据进入数据库。防止不合语义的数据进入数据库。例例: 学生的年龄必需是整数,取值范围为学生的年龄必需是整数,取值范围为14-29; 学生的性别只能是男或女;学生的性别只能是男或女;
2、学生的学号一定是独一的;学生的学号一定是独一的; 学生所在的系必需是学校开设的系;学生所在的系必需是学校开设的系;完好性:真实地反映现实世界完好性:真实地反映现实世界一、什么是数据库的完好性一、什么是数据库的完好性数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、二、DBMS的完好性控制机制的完好性控制机制1. 定义功能定义功能一个完善的完好性控制机制应该允许用户定义各类完好性约束条件。一个完善的完好性控制机制应该允许用户定义各类完好性约束条件。例:银行数据库例:银行数据库中中“借贷总金额应平借贷总金额应平衡的约束就应该是衡的约束就应该是延迟执行的约束延迟执行的约束3. 违约
3、反响违约反响检查用户发出的操作恳求能否违背了完好性约束条件检查用户发出的操作恳求能否违背了完好性约束条件假设发现用户的操作恳求使数据违背了完好性约束条假设发现用户的操作恳求使数据违背了完好性约束条件,那么采取一定的动作来保证数据的完好性。件,那么采取一定的动作来保证数据的完好性。n立刻执行的约束立刻执行的约束(Immediate constraints)n语句执行完后立刻检查能否违背完好性约束语句执行完后立刻检查能否违背完好性约束n 延迟执行的约束延迟执行的约束(Deferred constrainsts)n完好性检查延迟到整个事务执行终了后进展完好性检查延迟到整个事务执行终了后进展2. 检查
4、功能检查功能n回绝该操作回绝该操作n其他处置方法其他处置方法数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.1 5.1 实体完好性实体完好性一、实体完好性定义一、实体完好性定义实体完好性规那么:关系中的码不能为空也不能反复。实体完好性规那么:关系中的码不能为空也不能反复。定义方法:在定义方法:在CREATE TABLE中用中用PRIMARY KEY。二、实体完好性检查和违约处置二、实体完好性检查和违约处置检查:插入操作或更改码的值时。检查:插入操作或更改码的值时。处置:回绝执行处置:回绝执行数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.2 5.2 参照
5、完好性参照完好性一、参照完好性定义一、参照完好性定义参照完好性规那么:关系中的外码或者取空值,或者等于被参照关系参照完好性规那么:关系中的外码或者取空值,或者等于被参照关系中某个元组的主码值。中某个元组的主码值。定义方法:在定义方法:在CREATE TABLE中用中用FOREIGN KEY。二、参照完好性检查和违约处置二、参照完好性检查和违约处置检查:对参照表和被参照表进展增、删、改操作时,有能够破坏参照检查:对参照表和被参照表进展增、删、改操作时,有能够破坏参照完好性,必需进展检查。完好性,必需进展检查。处置:见表处置:见表5.1被参照表被参照表参照表参照表违约处置违约处置能够被破坏完好性参
6、照能够被破坏完好性参照插入元组插入元组回绝回绝能够被破坏完好性参照能够被破坏完好性参照修正主码值修正主码值回绝回绝删除元组删除元组能够被破坏完好性参照能够被破坏完好性参照回绝回绝/级连删除级连删除/设置为空设置为空修正主码值修正主码值能够被破坏完好性参照能够被破坏完好性参照回绝回绝/级连删除级连删除/设置为空设置为空表表5.1 能够破坏参照完好性的情况及违约处置能够破坏参照完好性的情况及违约处置数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性1. 在被参照关系中删除元组时的问题在被参照关系中删除元组时的问题例:要删除例:要删除Student关系中关系中Sno=200215122
7、的元组,的元组, 而而SC关系中有关系中有4个元组的个元组的Sno都等于都等于200215122 。级联删除:将级联删除:将SC关系中一切关系中一切4个个Sno= 200215122的元组一同删除。假的元组一同删除。假设参照关系同时又是另一个关系的被参照关系,那么这种删除操设参照关系同时又是另一个关系的被参照关系,那么这种删除操作会继续级联下去作会继续级联下去 受限删除:系统将回绝执行此删除操作。受限删除:系统将回绝执行此删除操作。置空值删除:将置空值删除:将SC关系中一切关系中一切Sno= 200215122的元组的的元组的Sno值置为值置为空值。空值。 在学生选课数据库中,显然第一种方法和
8、第二种方法都是对的。在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合运用环境语义。第三种方法不符合运用环境语义。数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性2. 在参照关系中插入元组时的问题在参照关系中插入元组时的问题v出现违约操作的情形出现违约操作的情形v需求在参照关系中插入元组,而被参照关系不存在相应的元组。需求在参照关系中插入元组,而被参照关系不存在相应的元组。v违约反响违约反响v受限插入受限插入v递归插入递归插入 仅当被参照关系中存在相应的元组,其主码仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值一样时,系统值与参照关系插
9、入元组的外码值一样时,系统才执行插入操作,否那么回绝此操作。才执行插入操作,否那么回绝此操作。首先向被参照关系中插入相应的元组,其首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。后向参照关系插入元组。 例:向例:向SC关系插入关系插入 200215125 ,1,90元组,而元组,而Student关系中尚没有关系中尚没有Sno= 200215125的学生的学生受限插入:受限插入:系统将回绝向系统将回绝向SC关系插入关系插入 200215125 ,1,90元组。元组。递归插入:递归插入:系统将首先向系统将首先向S
10、tudent关系插入关系插入Sno= 200215125的元组,然后向的元组,然后向SC关系插关系插入入 200215125 ,1,90元组。元组。数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性3. 修正被参照关系中主码的问题修正被参照关系中主码的问题两种战略两种战略(1) 允许修正主码允许修正主码(2) 不允许修正主码不允许修正主码 数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性1允许修正主码战略允许修正主码战略v违约操作违约操作v要修正被参照关系中某些元组的主码值,而参照关系中有些元组要修正被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等
11、于被参照关系要修正的主码值。的外码值正好等于被参照关系要修正的主码值。v要修正参照关系中某些元组的主码值,而被参照关系中没有任何要修正参照关系中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修正后的主码值。元组的外码值等于被参照关系修正后的主码值。v违约反响违约反响 1:修正的关系是被参照关系:与删除类似:修正的关系是被参照关系:与删除类似v级连修正级连修正v受限修正受限修正v置空值修正置空值修正修正被参照关系中主码值同时,用一样的修正被参照关系中主码值同时,用一样的方法修正参照关系中相应的外码值。方法修正参照关系中相应的外码值。回绝此修正操作。只当参照关系中没有任何回绝此
12、修正操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才干被修正。码值时,这个元组的主码值才干被修正。修正被参照关系中主码值,同时将参照关系修正被参照关系中主码值,同时将参照关系中相应的外码值置为空值。中相应的外码值置为空值。v违约反响违约反响 (2) : 修正的关系是参照关系:与插入类似。修正的关系是参照关系:与插入类似。v受限插入受限插入v递归插入递归插入数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性1允许修正主码战略允许修正主码战略例:将例:将Student关系中关系中Sno= 20021
13、5123的元组中的元组中Sno值改为值改为200215128。而。而SC关系中有关系中有 4个元组的个元组的Sno= 200215123级联修正:将级联修正:将SC关系中关系中4个个Sno= 200215123元组中的元组中的Sno值也改为值也改为200215128 。假设参照关系同时又是另一个关系的被参照关系,那么这。假设参照关系同时又是另一个关系的被参照关系,那么这种修正操作会继续级联下去。种修正操作会继续级联下去。受限修正:只需受限修正:只需SC中没有任何元组的中没有任何元组的Sno= 200215123时,才干修正时,才干修正Student表中表中Sno= 200215123的元组的的
14、元组的Sno值改为值改为200215128 。置空值修正:将置空值修正:将Student表中表中Sno= 200215123的元组的的元组的Sno值改为值改为200215128 。而将。而将SC表中一切表中一切Sno= 200215123的元组的的元组的Sno值置为空值。值置为空值。在学生选课数据库中只需第一种方法是正确的。在学生选课数据库中只需第一种方法是正确的。数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性参照完好性的实现参照完好性的实现RDBMS在实现参照完好性时在实现参照完好性时:需求向用户提供定义主码、外码的机制;需求向用户提供定义主码、外码的机制;向用户提供按照本
15、人的运用要求选择处置依赖关系中对应的元组的向用户提供按照本人的运用要求选择处置依赖关系中对应的元组的方法;方法;普通地,当对参照表和被参照表的操作违反了参照完好性,系统选普通地,当对参照表和被参照表的操作违反了参照完好性,系统选用默许战略,即回绝执行。假设想让系统采用其它的战略那么必需用默许战略,即回绝执行。假设想让系统采用其它的战略那么必需在创建表的时候显式阐明。在创建表的时候显式阐明。例例4 显式阐明参照完好性的违约处置。显式阐明参照完好性的违约处置。CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMAL
16、LINT, PRIMARY key (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno)ON DELETE CASCADEON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) O N D E L E T E O N A C T I O N ON UPDATE CASCADE,);数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.3 用户定义的完好性用户定义的完好性一、属性上约束条件的定义一、属性上约束条件的定义在在CREATE TABLE中定义属性的同时可以
17、根据运用要求中定义属性的同时可以根据运用要求,定义属性上的定义属性上的约束条件约束条件,即属性值的限制。即属性值的限制。列值非空列值非空(NOT NULL)列值独一列值独一(UNIQUE)检查列值能否满足一个布尔表达式检查列值能否满足一个布尔表达式(CHECK)例例5 在定义在定义SC表时,阐明表时,阐明Sno,Cno,Grade属性不允许取空值。属性不允许取空值。CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY key (Sno, Cno), FOREIGN
18、 KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) );数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性例例6 建立部门表建立部门表DEPT,要求部门称号,要求部门称号Dname列取值独一,部门编号列取值独一,部门编号Deptno列为主码。列为主码。 CREATE TABLE DEPT (Deptno NUMERIC(2) NOT NULL, Dname CHAR(9) UNIQUE, Location char(10), PRIMARY key (Deptno) );例例7
19、Student表的表的Ssex 只允许取只允许取“男或男或“女。女。CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK(Seex IN(男男,女女), Sage SMALLINT, Sdept CHAR(20) ); 数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性例例8 SC表中的值应该在表中的值应该在0和和100之间。之间。CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Gra
20、de SMALLINT CHECK(Grade=0 AND Grade=0 AND GRADE=100),;PRIMARY key Sno+Cno tag kk,;FOREIGN KEY Sno tag k1 REFERENCES Student ,;FOREIGN KEY Cno tag k2 REFERENCES Course)数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、属性上的约束条件检查和违约处置二、属性上的约束条件检查和违约处置回绝回绝三、元组上的约束条件定义三、元组上的约束条件定义例例9 当学生性别是男时不允许以当学生性别是男时不允许以Ms.打头。打头。CR
21、EATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK(Seex IN(男男,女女), Sage SMALLINT, Sdept CHAR(20)CHECK Seex=女女 OR Sname NOT LIKE MS.% ); 四、元组上的约束条件检查和违约处置四、元组上的约束条件检查和违约处置回绝回绝数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.4 5.4 完好性约束命名子句完好性约束命名子句一、完好性约束命名子句一、完好性约束命名子句CONSTRAIN
22、T PRIMARY KEY 短语短语|FOREIGN KEY短语短语|CHECK短语短语例例10建立学生登记表建立学生登记表Student,要求学号在,要求学号在90000至至99999之间,姓名不能之间,姓名不能为空,年龄为空,年龄30,性别只能是,性别只能是男男或或女女 。 CREATE TABLE Student (Sno CHAR(6) CONSTRAINT C1 CHECKSno BETWEEN 90000 AND 99999,Sname CHAR(8) CONSTRAINT C2 NOT NULL, Sage NUMERIC3 CONSTRAINT C3 CHECK(Sage=30
23、00);数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、修正表中的完好性限制二、修正表中的完好性限制例例12 去掉去掉例例10中对性别的限制。中对性别的限制。ALTER TABLE StudentDROP CONSTRAINT C4;例例13 修正表中的约束条件,要求学号改为在修正表中的约束条件,要求学号改为在900000999999之间年之间年龄小于龄小于30改为小于改为小于40。ALTER TABLE StudentDROP CONSTRAINT C1;ALTER TABLE StudentADD CONSTRAINT C1CHECKSno BETWEEN 90000
24、0AND 999999 ;ALTER TABLE StudentDROP CONSTRAINT C3;ALTER TABLE StudentADD CONSTRAINT C3CHECKSage 40 ;数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、修正表中的完好性限制二、修正表中的完好性限制例例14建立一个性别域,并声明性别取值的范围。建立一个性别域,并声明性别取值的范围。CREATE DOMAIN GenderDomain CHAR2CHECKVALUE IN (男男,女女);这样这样例例10中的阐明可以改为:中的阐明可以改为:Seex GenderDomain数据库系
25、统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.6 5.6 触发器触发器v数据库触发器:是用户定义在关系表上的一类由事务驱动的特殊过数据库触发器:是用户定义在关系表上的一类由事务驱动的特殊过程;程;v一旦定义,任何用户对该数据的增、删、改操作均由效力器自动激一旦定义,任何用户对该数据的增、删、改操作均由效力器自动激活相应的触发器,在中心层进展集中的完好性控制;活相应的触发器,在中心层进展集中的完好性控制;v触发器类似于约束,但比约束更加灵敏,可以实施比更为复杂的检触发器类似于约束,但比约束更加灵敏,可以实施比更为复杂的检查和操作,具有查和操作,具有 更精细更强大的数据控制才干。更精
26、细更强大的数据控制才干。v定义其它的完好性约束时,需求用数据库触发器定义其它的完好性约束时,需求用数据库触发器Trigger来实现。来实现。数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性阐明:阐明:表的拥有者即创建表的用户才可以在表上创建触发器,并且一个表上只表的拥有者即创建表的用户才可以在表上创建触发器,并且一个表上只能创建一定数量的触发器;能创建一定数量的触发器;触发器名可以包含方式名,也可以不包含方式名。同一方式下,触发器触发器名可以包含方式名,也可以不包含方式名。同一方式下,触发器名必需是独一名必需是独一 的,并且触发器名和的,并且触发器名和必需在同一方式下;必需在同一方式下;表名是指当这个表数据发生变化时,将激活定义在该表上相应表名是指当这个表数据发生变化时,将激活定义在该表上相应 的触发器;的触发器;触发事件可以是触发事件可以是INSERT、DELETE和和UPDATE,也可以是这几个事件,也可以是这几个事件的组合。的组合。UPDATE 后面还可以有后面还可以有OF,即进一步指明,即进一步指明修正哪些列时触发器激活。修正哪些列时触发器激活。触发类型:触发类型:FOR EACH ROW行级触发器和行级触发器和FOR EACH STATEMENT语句级触发器语句级触发器5.6 5.6 触发器触发器一、定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗服务保函协议书
- 化工园区建设项目机械租赁协议
- 沙漠探险路基铺设协议
- 树购销合同范例
- 国家代理销售合同范例
- 合伙租赁铺面合同范例
- 文件柜供货合同模板
- 歇马租房合同范例
- 民间融资居间合同范例
- 矿产资源开发项目聘用合同
- 老年人打球免责协议书范文范本
- (新版)装订技能竞赛理论知识考试题库500题(含答案)
- 部编版道德与法治八年级上册8.2坚持国家利益至上(2)教案
- 高教版(2023)中国历史 第9课 隋唐时期的经济、科技与文化 教案
- 《西游记》导读(12-15回)
- 中国铁路国际有限公司招聘考试试卷2022
- DB34∕T 2290-2022 水利工程质量检测规程
- 国开(河北)2024年《公文写作》形考作业4答案
- 电信行业移动通信网络质量提升方案
- 2021年山东省职业院校技能大赛导游服务赛项-导游英语口语测试题库
- 古代小说戏曲专题-形考任务2-国开-参考资料
评论
0/150
提交评论