《数据库原理》课件第4章 完整性和安全性.ppt

上传人(卖家):momomo 文档编号:7939025 上传时间:2024-09-06 格式:PPT 页数:136 大小:2.04MB
下载 相关 举报
《数据库原理》课件第4章 完整性和安全性.ppt_第1页
第1页 / 共136页
《数据库原理》课件第4章 完整性和安全性.ppt_第2页
第2页 / 共136页
《数据库原理》课件第4章 完整性和安全性.ppt_第3页
第3页 / 共136页
《数据库原理》课件第4章 完整性和安全性.ppt_第4页
第4页 / 共136页
《数据库原理》课件第4章 完整性和安全性.ppt_第5页
第5页 / 共136页
点击查看更多>>
资源描述

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

26、 (sno NUMERIC(6)NOT NULL,cno varchar(3)not null,PRIMARY KEY(sno,cno),-表级约束表级约束 grade NUMERIC(2);29v例3.在Employee表中说明Eno为主码,有两种方法。v将属性直接说明为主码,列级约束将属性直接说明为主码,列级约束 CREATE TABLE Employee (Eno char(4)PRIMARY KEY,Ename varchar(8),Sex char(2),Age int,Dno char(2);v在属性列表后单独说明主码,表级约束在属性列表后单独说明主码,表级约束 CREATE TA

27、BLE Employee (Eno char(4),Ename varchar(8),Sex char(2),Age int,Dno char(2),PRIMARY KEY(Eno);30ALTER TABLEALTER TABLE定义约束定义约束v添加约束添加约束语法:语法:vALTER TABLE ADD CONSTRAINT ,;例4.ALTER TABLE 添加约束。ALTER TABLE Employee ADD CONSTRAINT uq_ename UNIQUE(Ename);v删除约束:删除约束:语法:语法:vALTER TABLE DROP CONSTRAINT ,;例5.A

28、LTER TABLE 删除约束。ALTER TABLE Employee DROP CONSTRAINT uq_ename;31UNIQUEUNIQUE约束约束v允许空值允许空值v在一个表上可以放置多个在一个表上可以放置多个UNIQUE约束约束v可以在必须有唯一值,但不是表的主关键字的一个列或多个列上可以在必须有唯一值,但不是表的主关键字的一个列或多个列上应用应用UNIQUE约束约束v通过在指定列上创建唯一索引强制通过在指定列上创建唯一索引强制UNIQUE约束约束v例例6.添加唯一性约束。添加唯一性约束。ALTER TABLE Department ADD CONSTRAINT uq_dnam

29、e UNIQUE nonclustered(dname);v例例7.增加增加Ename必须取唯一值的约束条件。必须取唯一值的约束条件。ALTER TABLE Employee /*用户为该唯一值约束设定约束名为用户为该唯一值约束设定约束名为UQ_Ename*/ADD CONSTRAINT UQ_Ename UNIQUE(Ename);v或者:ALTER TABLE Employee ADD UNIQUE(Ename);/*系统将自动为此约束名赋值系统将自动为此约束名赋值*/2024-9-6 32PRIMARY KEYPRIMARY KEY约束约束v每个表每个表只能定义一个只能定义一个PRIMA

30、RY KEY约束约束v输入的值必须是唯一的输入的值必须是唯一的v不允许空值不允许空值v它在指定的列上创建一个唯一索引它在指定的列上创建一个唯一索引v例例8.添加主码约束添加主码约束ALTER TABLE DepartmentADD CONSTRAINT pk_dno PRIMARY KEY clustered(dno);33IDENTITYIDENTITY属性属性v每一个表都可有一标识列,其中包含由系统自动生每一个表都可有一标识列,其中包含由系统自动生成的能够标识表中每一行数据的唯一序列值。成的能够标识表中每一行数据的唯一序列值。v格式:格式:IDENTITY (SEED,INCREMENT)

31、vSEED初始值,表中的第一行数据的标识列的取值,默认值为初始值,表中的第一行数据的标识列的取值,默认值为1vINCREMEN步长值,每一新标识值比上一个增长多少,默认值步长值,每一新标识值比上一个增长多少,默认值为为1v使用IDENTITY列时,应注意:每张表只允许有一个每张表只允许有一个IDENTITY列列该列必须使用下列数据类型之一:decimal、numeric、int、smallint 和 tinyint该列必须设置成不允许为空值,且不能有默认值该列必须设置成不允许为空值,且不能有默认值2024-9-6 34DEFAULTDEFAULT约束约束v只应用于INSERT语句v每列只能定义

32、一个每列只能定义一个DEFAULT约束约束v不能用于不能用于IDENTITY属性或属性或TIMESTAMP数据类型数据类型TIMESTAMP数据库范围内的唯一数字,8字节,一个表中只能一个此类型的列v允许使用一些系统提供的值允许使用一些系统提供的值v例例9.增加列增加列Title的默认值取值为的默认值取值为“助工助工”。ALTER TABLE Employee ADD CONSTRAINT DF_Title DEFAULT 助工助工 for Title;2024-9-6 35CHECKCHECK约束约束v在每次执行INSERT或UPDATE语句时验证数据v可以引用同一表中的其他列可以引用同一表

33、中的其他列v不能在具有IDENTITY属性的列或具有timestamp或uniqueidentifier数据类型的列上放置CHECK约束v不能含有子查询v例例10.增加列性别取值约束。增加列性别取值约束。ALTER TABLE EmployeeADD CONSTRAINT ck_sex CHECK(sex in(男男,女女);2024-9-6 36vCHECK约束也可涉及到表中多个域,称为元组约约束也可涉及到表中多个域,称为元组约束。束。v在对整个元组完成插入或对某一元组的修改完成之后,系统将检查元组是否符合CHECK条件表达式。v例例11.添加涉及多列的添加涉及多列的CHECK约束。约束。A

34、LTER TABLE Salary ADD CONSTRAINT ck_RightSalary CHECK(Insure+Fund=18v例例5.创建具有列表的规则创建具有列表的规则 CREATE RULE sex_rule AS sex IN(男男,女女);v例例6.创建具有模糊匹配的规则创建具有模糊匹配的规则 CREATE RULE telephone_rule AS telephone like 0-90-90-90-90-90-90-90-9;2024-9-6 82捆绑规则捆绑规则v使用系统存储过程使用系统存储过程sp_bindrule可以将规则捆绑到可以将规则捆绑到列或用户自定义数据

35、类型上。列或用户自定义数据类型上。v语法:语法:Sp_bindrule rule,object_name,futureonly_flagrule:规则的名称object_name为规则要捆绑到的列名或用户自定义数据类型名futureonly_flag可选参数,仅在要捆绑到用户自定义数据类型时使用。2024-9-6 83v例例7.将规则绑定到列。将规则绑定到列。EXEC sp_bindrule range_rule,Employee.Age;v例例8.将规则绑定到别名数据类型。将规则绑定到别名数据类型。EXEC sp_bindrule telephone_rule,telephone;v例例9.

36、使用使用futureonly_flag。以下示例将 telephone_rule规则绑定到别名数据类型telephone。由于已指定futureonly,因此不影响类型为telephone的现有列。EXEC sp_bindrule telephone_rule,telephone,futureonly;2024-9-6 84v使用使用sp_unbindrule系统存储过程可以解除系统存储过程可以解除捆绑到列或用户自定义数据类型上的规则。捆绑到列或用户自定义数据类型上的规则。v语法:sp_unbindrule object_name,futureonly_flag2024-9-6 85v例例10

37、.解除绑定列上的规则。解除绑定列上的规则。EXEC sp_unbindrule Employee.Age;v例例11.解除绑定别名类型的规则。解除绑定别名类型的规则。EXEC sp_unbindrule telephone,futureonly;2024-9-6 86查看规则查看规则v使用企业管理器使用企业管理器v使用系统存储过程使用系统存储过程sp_help可以查看规则的可以查看规则的拥有者、创建时间等基本信息。拥有者、创建时间等基本信息。v使用系统存储过程使用系统存储过程sp_helptext可以查看规则可以查看规则的定义。的定义。2024-9-6 87删除规则删除规则v使用使用DROP

38、RULE语句可以删除当前数据库语句可以删除当前数据库中的一个或多个规则。中的一个或多个规则。v在删除一个规则之前,应首先将规则从它所在删除一个规则之前,应首先将规则从它所捆绑的列或用户自定义数据类型上解除下来。捆绑的列或用户自定义数据类型上解除下来。当要删除的规则仍捆绑在列或用户自定义数据类当要删除的规则仍捆绑在列或用户自定义数据类型上时,执行型上时,执行DROP RULE会显示错误信息,同会显示错误信息,同时时DROP RULE操作将被撤销。操作将被撤销。2024-9-6 88v例例12.删除规则删除规则 -先解除绑定在列上的该规则先解除绑定在列上的该规则EXEC sp_unbindrule

39、 Employee.Age;-然后在删除该规则然后在删除该规则DROP RULE range_rule;2024-9-6 893 3 默认值默认值v默认值可以是常量、内置函数或数学表达式。默认值可以是常量、内置函数或数学表达式。v使用使用CREATE TABLE语句创建表时,使用语句创建表时,使用DEFAULT子句为表中的列提供默认值。子句为表中的列提供默认值。v使用使用CREATE DEFAULT语句来创建一个默语句来创建一个默认对象,然后再将其捆绑到列或用户自定义认对象,然后再将其捆绑到列或用户自定义数据类型上。数据类型上。2024-9-6 90创建默认值创建默认值v使用使用T-SQL语句

40、语句CREATE DEFAULT可以创可以创建默认对象。建默认对象。v语法:语法:CREATE DEFAULT defaultAS constant_expression2024-9-6 91捆绑默认值捆绑默认值v可以使用可以使用sp_bindefault系统存储过程系统存储过程v语法:语法:sp_bindefault default,object_name,futureonly_flagv使用使用sp_unbindefault系统存储过程可以解除捆绑系统存储过程可以解除捆绑导列或用户自定义数据类型上的默认值。导列或用户自定义数据类型上的默认值。v语法:语法:sp_unbindefault o

41、bject_name,futureonly_flag2024-9-6 92v例例13.创建默认值创建默认值addressdefault。CREATE DEFAULT addressdefault AS 杭州下沙杭州下沙;v例例14.绑定默认值。绑定默认值。EXEC sp_bindefault addressdefault,Employee.Address;v例例15.解除默认值。解除默认值。EXEC sp_unbindefault Employee.Address;2024-9-6 93查看默认值查看默认值v可使用企业管理器。可使用企业管理器。v可使用系统存储过程可使用系统存储过程sp_hel

42、p可以查看默认可以查看默认值的拥有者、创建时间等基本信息。值的拥有者、创建时间等基本信息。v可使用系统存储过程可使用系统存储过程sp_helptext可以查看默可以查看默认值的定义。认值的定义。2024-9-6 94删除默认值删除默认值v使用使用DROP DEFAULT语句可以删除当前数语句可以删除当前数据库中的一个或多个默认值。据库中的一个或多个默认值。v注意:注意:在在删除默认值之前,应使用删除默认值之前,应使用sp_unbindefault系系统存储过程来解除该默认值在列或用户自定义数统存储过程来解除该默认值在列或用户自定义数据类型上的捆绑。据类型上的捆绑。95数据完整性数据完整性 小结

43、小结v数据库的完整性是为了保证数据库中存储的数据库的完整性是为了保证数据库中存储的数据是正确的数据是正确的vRDBMS完整性实现的机制完整性实现的机制完整性约束定义机制完整性约束定义机制完整性检查机制完整性检查机制违背完整性约束条件时违背完整性约束条件时RDBMS应采取的动作应采取的动作v在关系系统中,最重要的完整性约束是在关系系统中,最重要的完整性约束是实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性v数据库完整性的定义数据库完整性的定义一般由一般由SQL的的DDL语句实现语句实现作为数据库模式的一部分存入数据字典作为数据库模式的一部分存入数据字典在数据库数据修改时在

44、数据库数据修改时,RDBMS的完整性检查机制的完整性检查机制就按照数据字典中定义的这些约束进行检查就按照数据字典中定义的这些约束进行检查v完整性机制的实施会影响系统性能。随着硬完整性机制的实施会影响系统性能。随着硬件性能的提高,数据库技术的发展,目前的件性能的提高,数据库技术的发展,目前的RDBMS都提供了定义和检查实体完整性、都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能。参照完整性和用户定义的完整性的功能。v对于违反完整性的操作对于违反完整性的操作要根据应用语义来选择合适的处理策略,以保证要根据应用语义来选择合适的处理策略,以保证数据库的正确性数据库的正确性2024-9-

45、6 97可能破坏参照完整性的情况及违约处理可能破坏参照完整性的情况及违约处理被参照表(例如被参照表(例如StudentStudent)参照表(例如参照表(例如SCSC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照可能破坏参照完整性完整性拒绝拒绝/级连删除级连删除/设置为空值设置为空值修改主码值修改主码值 可能破坏参照可能破坏参照完整性完整性拒绝拒绝/级连修改级连修改/设置为空值设置为空值2024-9-6 98完整性小结(续):触发器完整性小结(续):触发器v实现数据

46、库完整性的一个重要方法是触发器实现数据库完整性的一个重要方法是触发器是定义在关系表上的由事件驱动的特殊过程是定义在关系表上的由事件驱动的特殊过程可以用于数据库完整性检查可以用于数据库完整性检查也可以用来实现数据库系统的其他功能也可以用来实现数据库系统的其他功能数据库安全性数据库安全性应用系统的一些业务流程和控制流程应用系统的一些业务流程和控制流程基于规则的数据和业务控制功能基于规则的数据和业务控制功能 v不同的不同的RDBMS实现触发器的语法不同实现触发器的语法不同2024-9-6 99作业作业 1v准备第三次上机实验内容(准备第三次上机实验内容(1)详见详见附录附录A:“上机实验上机实验八八

47、 完整性约束的实现完整性约束的实现”。在在Microsoft SQL Server 环境中,上机实现书环境中,上机实现书中第中第4章的各例题。章的各例题。2024-9-6 100SQL语言语言高级应用(二)高级应用(二)4.3 数据库安全性数据库安全性2024-9-6 101数据库保护数据库保护v数据库中的数据由数据库中的数据由DBMS统一管理控制,为统一管理控制,为适应数据共享的环境,适应数据共享的环境,DBMS必须提供数据必须提供数据的的安全性、完整性、并发控制和数据备份恢安全性、完整性、并发控制和数据备份恢复复等等数据保护数据保护能力,以保证数据库中的数据能力,以保证数据库中的数据安全可

48、靠和正确有效。安全可靠和正确有效。2024-9-6 1021.完整性完整性v数据库的完整性是指数据库中数据的正确性数据库的完整性是指数据库中数据的正确性与相容性。与相容性。vSQL语言定义完整性约束条件语言定义完整性约束条件CREATE TABLE语句语句ALTER TABLE语句语句v实体完整性:实体完整性:primary key、uniquev参照完整性:参照完整性:foreign keyv用户定义完整性:用户定义完整性:check、default2024-9-6 1032.安全性安全性v安全性:保护数据库,防止不合法的使用安全性:保护数据库,防止不合法的使用所造成的数据泄露和破坏。所造成

49、的数据泄露和破坏。v保证数据安全性的主要措施保证数据安全性的主要措施:存取控制:控制用户只能存取他有权存取的数据,存取控制:控制用户只能存取他有权存取的数据,规定不同用户对于不同数据对象所允许执行的操作规定不同用户对于不同数据对象所允许执行的操作2024-9-6 1043.并发控制并发控制v并发控制:当多个用户并发地对数据库进行并发控制:当多个用户并发地对数据库进行操作时,对他们加以控制、协调,以保证并操作时,对他们加以控制、协调,以保证并发操作正确执行,保持数据库的一致性。发操作正确执行,保持数据库的一致性。vSQL语言并发控制能力:语言并发控制能力:提供事务开始、事务结束、提交、撤销等概念

50、提供事务开始、事务结束、提交、撤销等概念2024-9-6 1054.数据备份恢复数据备份恢复v恢复:当发生各种类型的故障导致数据库处恢复:当发生各种类型的故障导致数据库处于不一致状态时,将数据库恢复到一致状态于不一致状态时,将数据库恢复到一致状态的功能。的功能。vSQL语言恢复功能:语言恢复功能:提供事务回滚、重做等概念(提供事务回滚、重做等概念(UNDO、REDO)2024-9-6 106数据安全性数据安全性v数据库系统的安全性是数据库保护的首要数据库系统的安全性是数据库保护的首要问题。问题。v安全性是相对的。安全性是相对的。v加强安全性是应用开发一个重要的方面。加强安全性是应用开发一个重要

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《数据库原理》课件第4章 完整性和安全性.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|