




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性 数据库完整性5.1 实体的完整性实体的完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名子句完整性约束命名子句*5.5 约中的完整性限制约中的完整性限制5.6 触发器触发器5.7 小结小结数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性数据的正确性和相容性数据的正确性和相容性防止不合语义的数据进入数据库。防止不合语义的数据进入数据库。例例: 学生的年龄必须是
2、整数,取值范围为学生的年龄必须是整数,取值范围为14-29; 学生的性别只能是男或女;学生的性别只能是男或女; 学生的学号一定是唯一的;学生的学号一定是唯一的; 学生所在的系必须是学校开设的系;学生所在的系必须是学校开设的系;完整性:真实地反映现实世界完整性:真实地反映现实世界一、什么是数据库的完整性一、什么是数据库的完整性数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、二、dbms的完整性控制机制的完整性控制机制1. 定义功能定义功能一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。一个完善的完整性控制机制
3、应该允许用户定义各类完整性约束条件。例:银行数据库例:银行数据库中中“借贷总金额应平借贷总金额应平衡衡”的约束就应该是的约束就应该是延迟执行的约束延迟执行的约束3. 违约反应违约反应检查用户发出的操作请求是否违背了完整性约束条件检查用户发出的操作请求是否违背了完整性约束条件如果发现用户的操作请求使数据违背了完整性约束条如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。件,则采取一定的动作来保证数据的完整性。n立即执行的约束立即执行的约束(immediate constraints)语句执行完后立即检查是否违背完整性约束语句执行完后立即检查是否违背完整性约束n
4、 延迟执行的约束延迟执行的约束(deferred constrainsts)完整性检查延迟到整个事务执行结束后进行完整性检查延迟到整个事务执行结束后进行2. 检查功能检查功能n拒绝该操作拒绝该操作n其他处理方法其他处理方法数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.1 5.1 实体完整性实体完整性一、实体完整性定义一、实体完整性定义实体完整性规则:实体完整性规则:关系中的码不能为空也不能重复。关系中的码不能为空也不能重复。定义方法:定义方法:在在create table中用中用primary key。二、实体完整性
5、检查和违约处理二、实体完整性检查和违约处理检查:插入操作或更改码的值时。检查:插入操作或更改码的值时。处理:处理:拒绝执行拒绝执行数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.2 5.2 参照完整性参照完整性一、参照完整性定义一、参照完整性定义参照完整性规则:参照完整性规则:关系中的外码或者关系中的外码或者取空值,取空值,或者或者等于被参照关系等于被参照关系中某个元组的主码值。中某个元组的主码值。定义方法定义方法:在在create table中用中用foreign key。二、参照完整性检查和违约处理二、参照完整性检
6、查和违约处理检查:检查:对参照表和被参照表进行增、删、改操作时,有可能破坏参对参照表和被参照表进行增、删、改操作时,有可能破坏参照完整性,必须进行检查。照完整性,必须进行检查。处理:见表处理:见表5.1被参照表被参照表参照表参照表违约处理违约处理可能被破坏完整性参照可能被破坏完整性参照插入元组插入元组拒绝拒绝可能被破坏完整性参照可能被破坏完整性参照修改主码值修改主码值拒绝拒绝删除元组删除元组可能被破坏完整性参照可能被破坏完整性参照拒绝拒绝/级连删除级连删除/设置为空设置为空表表5.1 可能破坏参照完整性的情况及违约处理可能破坏参照完整性的情况及违约处理数据库系统概论数据库系统概论数据库系统概论
7、数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性1. 在被参照关系中删除元组时的问题在被参照关系中删除元组时的问题例:要删除例:要删除student关系中关系中sno=200215122的元组,的元组, 而而sc关系中有关系中有4个元组的个元组的sno都等于都等于200215122 。级联删除:级联删除:将将sc关系中所有关系中所有4个个sno= 200215122的元组一起删除。的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去操作会继续级联下去 受限删除:受限删除:系统
8、将拒绝执行此删除操作。系统将拒绝执行此删除操作。置空值删除:置空值删除:将将sc关系中所有关系中所有sno= 200215122的元组的的元组的sno值置值置为空值。为空值。 在学生选课数据库中,显然第一种方法和第二种方法都是对的。在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。第三种方法不符合应用环境语义。数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性2. 在参照关系中插入元组时的问题在参照关系中插入元组时的问题v出现违约操作的情形出现违约操作的情形需要在参照关系中插入元组,而被参
9、照关系不存在相应的元组。需要在参照关系中插入元组,而被参照关系不存在相应的元组。v违约反应违约反应受限插入受限插入递归插入递归插入 仅当被参照关系中存在相应的元组,其主码仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。才执行插入操作,否则拒绝此操作。首先向被参照关系中插入相应的元组,其首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。后向参照关系插入元组。 例:向例:向sc关系插入(关系插入( 20021512
10、5 ,1,90)元组,而)元组,而student关系中尚没有关系中尚没有sno= 200215125的学生的学生v受限插入:受限插入:系统将拒绝向系统将拒绝向sc关系插入(关系插入( 200215125 ,1,90)元组。)元组。v递归插入:递归插入:系统将首先向系统将首先向student关系插入关系插入sno= 200215125的元组,然后向的元组,然后向sc关系插入(关系插入( 200215125 ,1,90)元组。)元组。数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性3. 修改被参照关系中主码的问题修改被参照关系
11、中主码的问题两种策略两种策略(1) 允许修改主码允许修改主码(2) 不允许修改主码不允许修改主码 数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性(1)允许修改主码策略)允许修改主码策略v违约操作违约操作要要修改被参照关系修改被参照关系中某些元组的主码值,而参照关系中有些中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值。元组的外码值正好等于被参照关系要修改的主码值。要要修改参照关系修改参照关系中某些元组的主码值,而被参照关系中没有中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参
12、照关系修改后的主码值。任何元组的外码值等于被参照关系修改后的主码值。v违约反应违约反应 (1):修改的关系是被参照关系:与删除类似):修改的关系是被参照关系:与删除类似级连修改级连修改受限修改受限修改置空值修改置空值修改修改被参照关系中主码值同时,用相同的修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。方法修改参照关系中相应的外码值。拒绝此修改操作。只当参照关系中没有任何拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。码值时,这个元组的主码值才能被修改。修改被参照关系中
13、主码值,同时将参照关系修改被参照关系中主码值,同时将参照关系中相应的外码值中相应的外码值置为空值。置为空值。v违约反应违约反应 (2) : 修改的关系是参照关系:与插入类似。修改的关系是参照关系:与插入类似。受限插入受限插入递归插入递归插入数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性(1)允许修改主码策略)允许修改主码策略例:将例:将student关系中关系中sno= 200215123的元组中的元组中sno值改为值改为200215128。而。而sc关系中有关系中有 4个元组的个元组的sno= 200215123级联修
14、改级联修改:将:将sc关系中关系中4个个sno= 200215123元组中的元组中的sno值也改为值也改为200215128 。如果参照关系同时又是另一个关系的被参照关系,则。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。这种修改操作会继续级联下去。受限修改受限修改:只有:只有sc中没有任何元组的中没有任何元组的sno= 200215123时,才能修改时,才能修改student表中表中sno= 200215123的元组的的元组的sno值改为值改为200215128 。置空值修改:置空值修改:将将student表中表中sno= 200215123的元组的的元组的sno
15、值改为值改为200215128 。而将。而将sc表中所有表中所有sno= 200215123的元组的的元组的sno值置为空值置为空值。值。在学生选课数据库中只有第一种方法是正确的。在学生选课数据库中只有第一种方法是正确的。数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性参照完整性的实现参照完整性的实现rdbms在实现参照完整性时在实现参照完整性时:需要向用户提供定义主码、外码的机制;需要向用户提供定义主码、外码的机制;向用户提供按照自己的应用要求选择处理依赖关系中对应的元组向用户提供按照自己的应用要求选择处理依赖关系中对应
16、的元组的方法;的方法;一般地,当对参照表和被参照表的操作违反了参照完整性,系统一般地,当对参照表和被参照表的操作违反了参照完整性,系统选用默认策略,即拒绝执行。如果想让系统采用其它的策略则必选用默认策略,即拒绝执行。如果想让系统采用其它的策略则必须在创建表的时候显式说明。须在创建表的时候显式说明。例例4 显式说明参照完整性的违约处理。显式说明参照完整性的违约处理。create table sc(sno char(9) not null, cno char(4) not null, grade smallint, primary key (sno, cno), foreign key (sno)
17、 references student(sno)on delete cascadeon update cascade, foreign key (cno) references course(cno) on delete on action on update cascade,);数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.3 用户定义的完整性用户定义的完整性一、属性上约束条件的定义一、属性上约束条件的定义在在create table中定义属性的同时可以根据应用要求中定义属性的同时可以根据应用要求,定义属性定义属性
18、上的约束条件上的约束条件,即属性值的限制即属性值的限制。列值非空列值非空(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 key (sno) references student(sn
19、o), 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 stud
20、ent表的表的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,
21、cno char(4) not null, grade 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)数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、属性上的约束条件检查和违约处理二、属性上的约束条件检查和违约处理拒绝拒绝三、元组上的约束条件
22、定义三、元组上的约束条件定义例例9 当学生性别是男时不允许以当学生性别是男时不允许以ms.打头。打头。create 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.% ); 四、元组上的约束条件检查和违约处理四、元组上的约束条件检查和违约处理拒绝拒绝数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论
23、数据库系统概论第五章数据库完整性第五章数据库完整性5.4 5.4 完整性约束命名子句完整性约束命名子句一、完整性约束命名子句一、完整性约束命名子句constraint primary key 短语短语|foreign key短语短语|check短语短语例例10建立学生登记表建立学生登记表student,要求学号在,要求学号在90000至至99999之间,姓名不能之间,姓名不能为空,年龄为空,年龄30,性别只能是,性别只能是男男或或女女 。 create table student (sno char(6) constraint c1 check(sno between 90000 and 99
24、999),sname char(8) constraint c2 not null, sage numeric(3) constraint c3 check(sage=3000);数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、修改表中的完整性限制二、修改表中的完整性限制例例12 去掉去掉例例10中对性别的限制。中对性别的限制。alter table studentdrop constraint c4;例例13 修改表中的约束条件,要求学号改为在修改表中的约束条件,要求学号改为在900000999999之间年之间年龄小
25、于龄小于30改为小于改为小于40。alter table studentdrop constraint c1;alter table studentadd constraint c1check(sno between 90000 0and 999999) ;alter table studentdrop constraint c3;alter table studentadd constraint c3check(sage 40) ;数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性二、修改表中的完整性限制二、修改表中的完整
26、性限制例例14建立一个性别域,并声明性别取值的范围。建立一个性别域,并声明性别取值的范围。create domain genderdomain char(2)check(value in (男男,女女);这样这样例例10中的说明可以改为:中的说明可以改为:seex genderdomain数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完整性第五章数据库完整性5.6 5.6 触发器触发器v数据库触发器:是用户定义在关系表上的一类由事务驱动的特殊过数据库触发器:是用户定义在关系表上的一类由事务驱动的特殊过程;程;v一旦定义,任何用户对该数据的增、删
27、、改操作均由服务器自动激一旦定义,任何用户对该数据的增、删、改操作均由服务器自动激活相应的触发器,在核心层进行集中的完整性控制;活相应的触发器,在核心层进行集中的完整性控制;v触发器类似于约束,但比约束更加灵活,可以实施比更为复杂的检触发器类似于约束,但比约束更加灵活,可以实施比更为复杂的检查和操作,具有查和操作,具有 更精细更强大的数据控制能力。更精细更强大的数据控制能力。v定义其它的完整性约束时,需要用数据库触发器(定义其它的完整性约束时,需要用数据库触发器(trigger)来实现。)来实现。数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论数据库系统概论第五章数据库完
28、整性第五章数据库完整性说明:说明:1.表的拥有者即创建表的用户才可以在表上创建触发器,并且一个表上只能创表的拥有者即创建表的用户才可以在表上创建触发器,并且一个表上只能创建一定数量的触发器;建一定数量的触发器;2.触发器名可以包含模式名,也可以不包含模式名。同一模式下,触发器名必触发器名可以包含模式名,也可以不包含模式名。同一模式下,触发器名必须是唯一须是唯一 的,并且触发器名和的,并且触发器名和必须在同一模式下;必须在同一模式下;3.表名是指当这个表数据发生变化时,将激活定义在该表上相应表名是指当这个表数据发生变化时,将激活定义在该表上相应 的的触发器;触发器;4.触发事件可以是触发事件可以是insert、delete和和update,也可以是这几个事件的组合。,也可以是这几个事件的组合。update 后面还可以有后面还可以有of,即进一步指明修改哪些列时触,即进一步指明修改哪些列时触发器激活。发器激活。5.触发类型:触发类型:for each row(行级触发器)和(行级触发器)和for each statement(语句级触发器)(语句级触发器)5.6 5.6 触发器触发器一、定义触发器一、定义触发器 create trigger before|a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何设计轻质普通型铝合金轮椅项目可行性研究报告技术工艺+设备选型+
- 中国卷铝涂料项目商业计划书
- 2024年成都彭州市事业单位招聘真题
- 培训营协议书
- 船艇考试题库及答案
- 初中中药考试题型及答案
- 急诊骨科考试试题及答案
- 起诉离婚协议书离婚
- 2025年合同执行保障金
- 汽车指标租赁协议书
- 2025四川成都高新投资集团有限公司选聘中高层管理人员4人笔试历年参考题库附带答案详解(3卷合一)
- 新手汽车改装知识培训班课件
- 中国红歌名曲课件
- 化验室救护知识培训课件
- 船舶维护保养指南
- 第8课 《回忆鲁迅先生(节选)》 课件 2025-2026学年统编版语文八年级上册
- (正式版)JBT 11270-2024 立体仓库组合式钢结构货架技术规范
- 妇产科医学—宫颈上皮内病变
- CNC加工流程图最新
- 蛋品深加工项目可行性研究报告写作范文
- 放射医学中级考试资料
评论
0/150
提交评论