《数据库原理》课件第4章 完整性和安全性.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《数据库原理》课件第4章 完整性和安全性.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库原理 数据库原理课件第4章 完整性和安全性 数据库 原理 课件 完整性 安全性
- 资源描述:
-
1、2024-9-6 1SQL语言高级语言高级应用应用第第4章章 完整性和安全性完整性和安全性2024-9-6 2数据完整性数据完整性v何为数据完整性?何为数据完整性?P9:由由DBMS而不是用户程序自动检查数据的一致性、而不是用户程序自动检查数据的一致性、相容性,保证数据符合完整性约束条件。相容性,保证数据符合完整性约束条件。v数据须符合的条件或数据之间的关系数据须符合的条件或数据之间的关系数据类型准确无误数据类型准确无误数据的值满足范围设置数据的值满足范围设置同一表格数据之间不存在冲突同一表格数据之间不存在冲突多个表格数据之间不存在冲突多个表格数据之间不存在冲突2024-9-6 3完整性约束条
2、件完整性约束条件v整个完整性控制都是围绕完整性约束条件进行整个完整性控制都是围绕完整性约束条件进行的,从这个角度说,完整性约束条件是完整性的,从这个角度说,完整性约束条件是完整性控制机制的核心。控制机制的核心。2024-9-6 4v完整性约束条件作用的对象完整性约束条件作用的对象列列:对属性的取值类型、范围、精度等的约束条件元组元组:对元组中各个属性列间的联系的约束关系关系:对若干元组间、关系集合上以及关系之间的联系的约束v完整性约束条件作用的对象状态完整性约束条件作用的对象状态静态静态v对静态对象的约束是反映数据库状态合理性的约束v这是最重要的一类完整性约束动态动态v对动态对象的约束是反映数
3、据库状态变迁的约束完整性约束条件完整性约束条件2024-9-6 5完整性约束条件分类完整性约束条件分类 对象状态对象状态 动态列级约束动态列级约束 动态元组约束动态元组约束 动态关系约束动态关系约束 动态动态 静态列级约束静态列级约束 静态元组约束静态元组约束 静态关系约束静态关系约束 静态静态 列列 元组元组 关系关系 对象粒度对象粒度6静态列级约束静态列级约束v静态列级约束是对一个列的取值域的说明静态列级约束是对一个列的取值域的说明,这是最常见最简单同时也最容易实现的一类完整性约束v五类静态列级约束五类静态列级约束对数据类型的约束,包括数据的类型、长度、单位、精度等对数据类型的约束,包括数
4、据的类型、长度、单位、精度等 例:规定学生姓名的数据类型应为字符型,长度为例:规定学生姓名的数据类型应为字符型,长度为8。对数据格式的约束对数据格式的约束例:规定学号的格式为前两位表示入学年份,后四位为顺序编号;出生例:规定学号的格式为前两位表示入学年份,后四位为顺序编号;出生日期的格式为日期的格式为YY.MM.DD。对取值范围或取值集合的约束对取值范围或取值集合的约束例:规定成绩的取值范围为例:规定成绩的取值范围为0-100;年龄的取值范围为;年龄的取值范围为14-29;性别的;性别的取值集合为取值集合为男男,女女。对空值的约束:空值表示未定义或未知的值,它与零值和空格不同。有对空值的约束:
5、空值表示未定义或未知的值,它与零值和空格不同。有的列允许空值,有的则不允许。的列允许空值,有的则不允许。例:规定成绩可以为空值。例:规定成绩可以为空值。其他约束其他约束例:关于列的排序说明,组合列等。例:关于列的排序说明,组合列等。2024-9-6 7 静态元组约束静态元组约束v静态元组约束就是规定组成一个元组的各个静态元组约束就是规定组成一个元组的各个列之间的约束关系。列之间的约束关系。v例:订货关系中包含发货量、订货量等列,例:订货关系中包含发货量、订货量等列,发货量不得超过订货量发货量不得超过订货量v例:教师关系中包含职称、工资等列,例:教师关系中包含职称、工资等列,教授的工资不得低于教
6、授的工资不得低于700元元v 静态元组约束只局限在单个元组上。静态元组约束只局限在单个元组上。2024-9-6 8静态关系约束静态关系约束v在一个关系的各个元组之间或者若干关系之间常常存在各种在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。联系或约束。v常见静态关系约束常见静态关系约束实体完整性约束实体完整性约束参照完整性约束参照完整性约束函数依赖约束函数依赖约束统计约束统计约束v定义某个字段值与一个关系多个元组的统计值之间的约束关系定义某个字段值与一个关系多个元组的统计值之间的约束关系v例:规定部门经理的工资不得高于本部门职工平均工资的例:规定部门经理的工资不得高于本部门职工
7、平均工资的5倍,倍,不得低于本部门职工平均工资的不得低于本部门职工平均工资的2倍。本部门职工的平均工资值倍。本部门职工的平均工资值是一个统计计算值。是一个统计计算值。2024-9-6 9动态列级约束动态列级约束v动态列级约束是修改列定义或列值时应满足的约束条动态列级约束是修改列定义或列值时应满足的约束条件。件。v常见动态列级约束常见动态列级约束修改列定义时的约束修改列定义时的约束例:规定将原来允许空值的列改为不允许空值时,如果该列目前例:规定将原来允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。已存在空值,则拒绝这种修改。修改列值时的约束修改列值时的约束v修改列值有时需要
8、参照其旧值,并且新旧值之间需要修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。满足某种约束条件。例:职工工资调整不得低于其原来工资,学生年龄只能增长例:职工工资调整不得低于其原来工资,学生年龄只能增长2024-9-6 10动态元组约束动态元组约束v动态元组约束是指修改某个元组的值时需要动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种参照其旧值,并且新旧值之间需要满足某种约束条件。约束条件。v 例:职工工资调整不得低于其原来工资例:职工工资调整不得低于其原来工资+工龄工龄*1.52024-9-6 11动态关系约束动态关系约束v动态关系约束是加在关系变化
9、前后状态上的动态关系约束是加在关系变化前后状态上的限制条件。限制条件。v例:事务一致性、原子性等约束条件例:事务一致性、原子性等约束条件2024-9-6 12完整性约束条件小结完整性约束条件小结 粒粒 度度状态状态列列 级级 元元 组组 级级 关关 系系 级级 静静 态态 列定义列定义类型类型格式格式值域值域 空值空值 元组值应满足的元组值应满足的条件条件 实体完整性约束实体完整性约束 参照完整性约束参照完整性约束 函数依赖约束函数依赖约束 统计约束统计约束 动动 态态 改变列定义改变列定义或列值或列值 元组新旧值之间应元组新旧值之间应满足的约束条件满足的约束条件 关系新旧状态间应关系新旧状态
10、间应满足的约束条件满足的约束条件 2024-9-6 13DBMS的完整性控制机制的完整性控制机制v定义功能定义功能一个完善的完整性控制机制应该允许用户定义各类完整一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。性约束条件。v检查功能检查功能立即执行的约束立即执行的约束(Immediate constraints)v检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查,我们称这类约束为立即执行的约束检查,我们称这类约束为立即执行的约束 延迟执行的约束延迟执行的约束(Deferred constraints)v在某些情况下
11、,完整性检查需要延迟到整个事务执行结束后再进在某些情况下,完整性检查需要延迟到整个事务执行结束后再进行,我们称这类约束为延迟执行的约束行,我们称这类约束为延迟执行的约束v违约反应违约反应 拒绝该操作拒绝该操作 其他处理方法其他处理方法2024-9-6 14关系系统三类完整性的实现关系系统三类完整性的实现v提供有定义和检查实体完整性、参照完整性和用户提供有定义和检查实体完整性、参照完整性和用户定义的完整性的功能。定义的完整性的功能。v对于违反实体完整性规则和用户定义的完整性规则对于违反实体完整性规则和用户定义的完整性规则的操作一般都是采用拒绝执行的方式进行处理。的操作一般都是采用拒绝执行的方式进
12、行处理。v而对于违反参照完整性的操作,并不都是简单地拒而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时还需要采取另一种方法,即接受这个绝执行,有时还需要采取另一种方法,即接受这个操作,同时执行一些附加的操作,以保证数据库的操作,同时执行一些附加的操作,以保证数据库的状态仍然是正确的。状态仍然是正确的。2024-9-6 15实体完整性的实现实体完整性的实现例:在例:在“学号不能为空学号不能为空”的约束中,约束作用的约束中,约束作用的对象为的对象为Sno属性属性则插入或修改则插入或修改Student 元组时元组时,作何处理?,作何处理?要求要求Sno不能为空不能为空否则,拒绝执行该操作否则
13、,拒绝执行该操作2024-9-6 16用户定义完整性的实现用户定义完整性的实现例:在例:在“教授工资不得低于教授工资不得低于1000元元”的约束中,约束作的约束中,约束作用的对象为工资用的对象为工资Sal属性属性则插入或修改职工元组时,则插入或修改职工元组时,作如何处理?作如何处理?如果职称如果职称=教授教授时,时,Sal不能小于不能小于1000 否则,拒绝执行该操作否则,拒绝执行该操作2024-9-6 17参照完整性的实现参照完整性的实现v外码是否可以接受空值的问题外码是否可以接受空值的问题v删除被参照关系的元组时的问题删除被参照关系的元组时的问题v修改被参照关系中主码的问题修改被参照关系中
14、主码的问题2024-9-6 18外码是否可以接受空值的问题外码是否可以接受空值的问题v外码是否能够取空值是依赖于应用环境的语义外码是否能够取空值是依赖于应用环境的语义的。的。v在实现参照完整性时,系统除了应该提供定义在实现参照完整性时,系统除了应该提供定义外码的机制,还应提供定义外码列是否允许空外码的机制,还应提供定义外码列是否允许空值的机制。值的机制。2024-9-6 19例例1:在职工部门数据库中,:在职工部门数据库中,EMP关系包含有外码关系包含有外码Deptno,某,某一元组的这一列若为空值,表示这个职工尚未分配到任何具体一元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作
15、。的部门工作。这和应用环境的语义是相符的,这和应用环境的语义是相符的,因此因此EMP的的Deptno列应允许空值。列应允许空值。例例2:在学生选课数据库中,:在学生选课数据库中,Student关系为被参照关系,其主关系为被参照关系,其主码为码为Sno。SC为参照关系,外码为为参照关系,外码为Sno。若若SC的的Sno为空值,则表明尚不存在的某个学生,或者某个不知为空值,则表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在学号的学生,选修了某门课程,其成绩记录在Grade列中。列中。这与学校的应用环境是不相符的,这与学校的应用环境是不相符的,因此因此SC的的Sno列不能
16、取空值。列不能取空值。20删除被参照关系的元组时的问题删除被参照关系的元组时的问题v出现违约操作的情形出现违约操作的情形需要删除被参照关系的某个元组,而参照关系有若干元组的外码值需要删除被参照关系的某个元组,而参照关系有若干元组的外码值与被删除的被参照关系的主码值相对应与被删除的被参照关系的主码值相对应v违约反应:可有三种策略违约反应:可有三种策略级联删除(级联删除(CASCADES)v将参照关系中所有外码值与被参照关系中要删除元组主码值相对应的元将参照关系中所有外码值与被参照关系中要删除元组主码值相对应的元组一起删除。组一起删除。受限删除(受限删除(RESTRICTED)v只有当参照关系中没
17、有任何元组的外码值与要删除的被参照关系的元组只有当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作。的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作。置空值删除(置空值删除(NULLIFIES)v删除被参照关系的元组,并将参照关系中所有与被参照关系中被删除元组主码值相等删除被参照关系的元组,并将参照关系中所有与被参照关系中被删除元组主码值相等的外码值置为空值。的外码值置为空值。这三种处理方法,哪一种是正确的,要依应用环境的语义这三种处理方法,哪一种是正确的,要依应用环境的语义来定。来定。2024-9-6 21v例:要删除例
18、:要删除Student关系中关系中Sno=200801的元组,而的元组,而SC关系中关系中有有4个元组的个元组的Sno都等于都等于200801。级联删除:级联删除:将将SC关系中所有关系中所有4个个Sno=200801的元组一起删除。如果的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去。操作会继续级联下去。受限删除:受限删除:系统将拒绝执行此删除操作。系统将拒绝执行此删除操作。置空值删除:置空值删除:将将SC关系中所有关系中所有Sno=200801的元组的的元组的Sno值置为空值。值置为空值。在学生选课数
19、据库中,显然第一种方法和第二种方法都是在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。对的。第三种方法不符合应用环境语义。22修改被参照关系中主码的问题修改被参照关系中主码的问题v两种策略两种策略不允许修改主码不允许修改主码允许修改主码允许修改主码 v允许修改主码策略允许修改主码策略违约操作违约操作要要修改被参照关系修改被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的主码值于被参照关系要修改的主码值要要修改参照关系修改参照关系中某些元组的主码值,而被参照关系中没有任何
20、元组的外码值等中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修改后的主码值于被参照关系修改后的主码值违约反应违约反应v修改的关系是被参照关系:与删除类似修改的关系是被参照关系:与删除类似级联修改级联修改受限修改受限修改置空值修改置空值修改v修改的关系是参照关系:与插入类似修改的关系是参照关系:与插入类似受限修改受限修改级联修改级联修改2024-9-6 23修改被参照关系中主码的问题(续)修改被参照关系中主码的问题(续)级联修改级联修改v修改被参照关系中主码值同时,用相同的方法修改参修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。照关系中相应的外码值。受
21、限修改受限修改v拒绝此修改操作。只当参照关系中没有任何元组的外拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。组的主码值才能被修改。置空值修改置空值修改v修改被参照关系中主码值,同时将参照关系中相应的修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值。外码值置为空值。2024-9-6 24v例:学生例:学生200801休学一年后复学,这时需要将休学一年后复学,这时需要将Student关系关系中中Sno=200801的元组中的元组中Sno值改为值改为 200923。而。而SC
22、关系中关系中有有4个元组的个元组的Sno=200801级联修改:级联修改:将将SC关系中关系中4个个Sno=200801元组中的元组中的Sno值也改为值也改为200923。如果。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。续级联下去。受限修改:受限修改:只有只有SC中没有任何元组的中没有任何元组的Sno=200801 时,才能修改时,才能修改Student表中表中Sno=200801 的元组的的元组的Sno值改为值改为 200923。置空值修改置空值修改:将将Student表中表中Sno=200801 的元
23、组的的元组的Sno值改为值改为 200923。而将。而将S表中所有表中所有Sno=200801 的元组的的元组的Sno值置为空值值置为空值。在学生选课数据库中只有第一种方法是正确的。在学生选课数据库中只有第一种方法是正确的。2024-9-6 25小结小结v如何进行完整性维护系统的设计?如何进行完整性维护系统的设计?1 如何表达完整性约束条件?如何表达完整性约束条件?2 如何检查完整性约束条件?如何检查?如何检查完整性约束条件?如何检查?3 违反条件时候的如何处理?违反条件时候的如何处理?DBMSDBMS中完整性的定义:中完整性的定义:使用约束使用约束完整性的类型完整性的类型约束的类型约束的类型
24、说明说明实体完整性实体完整性PRIMARY KEY唯一标识每一行,保证用户不输入重复的数据,且创建一个索引来提高性能。不允许空值UNIQUE防止非主关键字的重复,并保证创建一个索引来提高性能。允许空值用户定义完整用户定义完整性性DEFAULT指定在INSERT语句中没有明确提供一个值时,为该列提供的值CHECK指定在一个列中可接受的数据值参照完整性参照完整性FOREIGN KEY定义一个列或几个列的组合,他们的值匹配同一个表或另一个表中关键字2024-9-6 27CREATE TABLECREATE TABLE定义约束定义约束v约束涉及单个属性的,有两种说明方法约束涉及单个属性的,有两种说明方
25、法 定义为列级约束条件定义为列级约束条件定义为表级约束条件定义为表级约束条件v若约束涉及多个属性的,只有一种说明方法若约束涉及多个属性的,只有一种说明方法定义为表级约束条件定义为表级约束条件 28v列级约束列级约束例1.CREATE TABLE语句中定义列级约束 CREATE TABLE S (sno NUMERIC(6)PRIMARY KEY,-列级约束列级约束 sname CHAR(8)NOT NULL,age NUMERIC(3,0),sex CHAR(2),bplace CHAR(20);v表级约束表级约束例2.CREATE TABLE语句中定义表级约束 CREATE TABLE SC
展开阅读全文