第4章 完整性和安全性_第1页
第4章 完整性和安全性_第2页
第4章 完整性和安全性_第3页
第4章 完整性和安全性_第4页
第4章 完整性和安全性_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2021-12-21 1SQL语言高级语言高级应用应用第第4章章 完整性和安全性完整性和安全性2021-12-21 2数据完整性数据完整性v何为数据完整性?何为数据完整性?P9:由由DBMS而不是用户程序自动检查数据的一致性、而不是用户程序自动检查数据的一致性、相容性,保证数据符合完整性约束条件。相容性,保证数据符合完整性约束条件。v数据须符合的条件或数据之间的关系数据须符合的条件或数据之间的关系数据类型准确无误数据类型准确无误数据的值满足范围设置数据的值满足范围设置同一表格数据之间不存在冲突同一表格数据之间不存在冲突多个表格数据之间不存在冲突多个表格数据之间不存在冲突2021-12-21 3

2、完整性约束条件完整性约束条件v整个完整性控制都是围绕完整性约束条件进行整个完整性控制都是围绕完整性约束条件进行的,从这个角度说,完整性约束条件是完整性的,从这个角度说,完整性约束条件是完整性控制机制的核心。控制机制的核心。2021-12-21 4v完整性约束条件作用的对象完整性约束条件作用的对象列列:对属性的取值类型、范围、精度等的约束条件元组元组:对元组中各个属性列间的联系的约束关系关系:对若干元组间、关系集合上以及关系之间的联系的约束v完整性约束条件作用的对象状态完整性约束条件作用的对象状态静态静态v对静态对象的约束是反映数据库状态合理性的约束v这是最重要的一类完整性约束动态动态v对动态对

3、象的约束是反映数据库状态变迁的约束完整性约束条件完整性约束条件2021-12-21 5完整性约束条件分类完整性约束条件分类 对象状态对象状态 动态列级约束动态列级约束 动态元组约束动态元组约束 动态关系约束动态关系约束 动态动态 静态列级约束静态列级约束 静态元组约束静态元组约束 静态关系约束静态关系约束 静态静态 列列 元组元组 关系关系 对象粒度对象粒度6静态列级约束静态列级约束v静态列级约束是对一个列的取值域的说明静态列级约束是对一个列的取值域的说明,这是最常见最简单同时也最容易实现的一类完整性约束v五类静态列级约束五类静态列级约束对数据类型的约束,包括数据的类型、长度、单位、精度等对数

4、据类型的约束,包括数据的类型、长度、单位、精度等 例:规定学生姓名的数据类型应为字符型,长度为例:规定学生姓名的数据类型应为字符型,长度为8。对数据格式的约束对数据格式的约束例:规定学号的格式为前两位表示入学年份,后四位为顺序编号;出生例:规定学号的格式为前两位表示入学年份,后四位为顺序编号;出生日期的格式为日期的格式为YY.MM.DD。对取值范围或取值集合的约束对取值范围或取值集合的约束例:规定成绩的取值范围为例:规定成绩的取值范围为0-100;年龄的取值范围为;年龄的取值范围为14-29;性别的;性别的取值集合为取值集合为男男,女女。对空值的约束:空值表示未定义或未知的值,它与零值和空格不

5、同。有对空值的约束:空值表示未定义或未知的值,它与零值和空格不同。有的列允许空值,有的则不允许。的列允许空值,有的则不允许。 例:规定成绩可以为空值。例:规定成绩可以为空值。其他约束其他约束例:关于列的排序说明,组合列等。例:关于列的排序说明,组合列等。2021-12-21 7 静态元组约束静态元组约束v静态元组约束就是规定组成一个元组的各个静态元组约束就是规定组成一个元组的各个列之间的约束关系。列之间的约束关系。v例:订货关系中包含发货量、订货量等列,例:订货关系中包含发货量、订货量等列,发货量不得超过订货量发货量不得超过订货量v例:教师关系中包含职称、工资等列,例:教师关系中包含职称、工资

6、等列, 教授的工资不得低于教授的工资不得低于700元元v 静态元组约束只局限在单个元组上。静态元组约束只局限在单个元组上。 2021-12-21 8静态关系约束静态关系约束v在一个关系的各个元组之间或者若干关系之间常常存在各种在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。联系或约束。v常见静态关系约束常见静态关系约束实体完整性约束实体完整性约束参照完整性约束参照完整性约束函数依赖约束函数依赖约束统计约束统计约束v定义某个字段值与一个关系多个元组的统计值之间的约束关系定义某个字段值与一个关系多个元组的统计值之间的约束关系v例:规定部门经理的工资不得高于本部门职工平均工资的例:规

7、定部门经理的工资不得高于本部门职工平均工资的5倍,倍,不得低于本部门职工平均工资的不得低于本部门职工平均工资的2倍。本部门职工的平均工资值倍。本部门职工的平均工资值是一个统计计算值。是一个统计计算值。2021-12-21 9动态列级约束动态列级约束v动态列级约束是修改列定义或列值时应满足的约束条动态列级约束是修改列定义或列值时应满足的约束条件。件。v常见动态列级约束常见动态列级约束修改列定义时的约束修改列定义时的约束例:规定将原来允许空值的列改为不允许空值时,如果该列目前例:规定将原来允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。已存在空值,则拒绝这种修改。修改列值时的

8、约束修改列值时的约束v修改列值有时需要参照其旧值,并且新旧值之间需要修改列值有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。满足某种约束条件。 例:职工工资调整不得低于其原来工资,学生年龄只能增长例:职工工资调整不得低于其原来工资,学生年龄只能增长2021-12-21 10动态元组约束动态元组约束v动态元组约束是指修改某个元组的值时需要动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种参照其旧值,并且新旧值之间需要满足某种约束条件。约束条件。 v 例:职工工资调整不得低于其原来工资例:职工工资调整不得低于其原来工资+工龄工龄*1.52021-12-21 11动

9、态关系约束动态关系约束v动态关系约束是加在关系变化前后状态上的动态关系约束是加在关系变化前后状态上的限制条件。限制条件。v例:事务一致性、原子性等约束条件例:事务一致性、原子性等约束条件2021-12-21 12完整性约束条件小结完整性约束条件小结 粒粒 度度状态状态列列 级级 元元 组组 级级 关关 系系 级级 静静 态态 列定义列定义类型类型格式格式值域值域 空值空值 元组值应满足的元组值应满足的条件条件 实体完整性约束实体完整性约束 参照完整性约束参照完整性约束 函数依赖约束函数依赖约束 统计约束统计约束 动动 态态 改变列定义改变列定义或列值或列值 元组新旧值之间应元组新旧值之间应满足

10、的约束条件满足的约束条件 关系新旧状态间应关系新旧状态间应满足的约束条件满足的约束条件 2021-12-21 13DBMS的完整性控制机制的完整性控制机制v定义功能定义功能一个完善的完整性控制机制应该允许用户定义各类完整一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。性约束条件。v检查功能检查功能立即执行的约束立即执行的约束(Immediate constraints)v检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查是否违背完整性约束的时机通常是在一条语句执行完后立即检查,我们称这类约束为立即执行的约束检查,我们称这类约束为立即执行的约束 延迟执行的约束延迟执行的约束

11、(Deferred constraints)v在某些情况下,完整性检查需要延迟到整个事务执行结束后再进在某些情况下,完整性检查需要延迟到整个事务执行结束后再进行,我们称这类约束为延迟执行的约束行,我们称这类约束为延迟执行的约束v违约反应违约反应 拒绝该操作拒绝该操作 其他处理方法其他处理方法2021-12-21 14关系系统三类完整性的实现关系系统三类完整性的实现v提供有定义和检查实体完整性、参照完整性和用户提供有定义和检查实体完整性、参照完整性和用户定义的完整性的功能。定义的完整性的功能。v对于违反实体完整性规则和用户定义的完整性规则对于违反实体完整性规则和用户定义的完整性规则的操作一般都是

12、采用拒绝执行的方式进行处理。的操作一般都是采用拒绝执行的方式进行处理。v而对于违反参照完整性的操作,并不都是简单地拒而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时还需要采取另一种方法,即接受这个绝执行,有时还需要采取另一种方法,即接受这个操作,同时执行一些附加的操作,以保证数据库的操作,同时执行一些附加的操作,以保证数据库的状态仍然是正确的。状态仍然是正确的。2021-12-21 15实体完整性的实现实体完整性的实现例:在例:在“学号不能为空学号不能为空”的约束中,约束作用的的约束中,约束作用的对象为对象为Sno属性属性则插入或修改则插入或修改Student 元组时元组时,作何处理?

13、,作何处理?要求要求Sno不能为空不能为空否则,拒绝执行该操作否则,拒绝执行该操作2021-12-21 16用户定义完整性的实现用户定义完整性的实现例:在例:在“教授工资不得低于教授工资不得低于1000元元”的约束中,约束作的约束中,约束作用的对象为工资用的对象为工资Sal属性属性则插入或修改职工元组时,则插入或修改职工元组时,作如何处理?作如何处理? 如果职称如果职称=教授教授时,时, Sal不能小于不能小于1000 否则,拒绝执行该操作否则,拒绝执行该操作2021-12-21 17参照完整性的实现参照完整性的实现v外码是否可以接受空值的问题外码是否可以接受空值的问题v删除被参照关系的元组时

14、的问题删除被参照关系的元组时的问题v修改被参照关系中主码的问题修改被参照关系中主码的问题2021-12-21 18外码是否可以接受空值的问题外码是否可以接受空值的问题v外码是否能够取空值是依赖于应用环境的语义外码是否能够取空值是依赖于应用环境的语义的。的。v在实现参照完整性时,系统除了应该提供定义在实现参照完整性时,系统除了应该提供定义外码的机制,还应提供定义外码列是否允许空外码的机制,还应提供定义外码列是否允许空值的机制。值的机制。2021-12-21 19例例1:在职工部门数据库中,:在职工部门数据库中,EMP关系包含有外码关系包含有外码Deptno,某,某一元组的这一列若为空值,表示这个

15、职工尚未分配到任何具体一元组的这一列若为空值,表示这个职工尚未分配到任何具体的部门工作。的部门工作。 这和应用环境的语义是相符的,这和应用环境的语义是相符的, 因此因此EMP的的Deptno列应允许空值。列应允许空值。例例2:在学生选课数据库中,:在学生选课数据库中,Student关系为被参照关系,其主关系为被参照关系,其主码为码为Sno。SC为参照关系,外码为为参照关系,外码为Sno。若若SC的的Sno为空值,则表明尚不存在的某个学生,或者某个不知为空值,则表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在学号的学生,选修了某门课程,其成绩记录在Grade列中。列中

16、。 这与学校的应用环境是不相符的,这与学校的应用环境是不相符的,因此因此SC的的Sno列不能取空值。列不能取空值。20删除被参照关系的元组时的问题删除被参照关系的元组时的问题v出现违约操作的情形出现违约操作的情形需要删除被参照关系的某个元组,而参照关系有若干元组的外码值需要删除被参照关系的某个元组,而参照关系有若干元组的外码值与被删除的被参照关系的主码值相对应与被删除的被参照关系的主码值相对应v违约反应:可有三种策略违约反应:可有三种策略级联删除(级联删除(CASCADES)v将参照关系中所有外码值与被参照关系中要删除元组主码值相对应的元将参照关系中所有外码值与被参照关系中要删除元组主码值相对

17、应的元组一起删除。组一起删除。受限删除(受限删除(RESTRICTED)v只有当参照关系中没有任何元组的外码值与要删除的被参照关系的元组只有当参照关系中没有任何元组的外码值与要删除的被参照关系的元组的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作。的主码值相对应时,系统才执行删除操作,否则拒绝此删除操作。置空值删除(置空值删除(NULLIFIES)v删除被参照关系的元组,并将参照关系中所有与被参照关系中被删除元组主码值相等删除被参照关系的元组,并将参照关系中所有与被参照关系中被删除元组主码值相等的外码值置为空值。的外码值置为空值。这三种处理方法,哪一种是正确的,要依应用环境的语义这三种

18、处理方法,哪一种是正确的,要依应用环境的语义来定。来定。2021-12-21 21v例:要删除例:要删除Student关系中关系中Sno=200801的元组,而的元组,而SC关系中关系中有有4个元组的个元组的Sno都等于都等于200801。级联删除:级联删除:将将SC关系中所有关系中所有4个个Sno=200801的元组一起删除。如果的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去。操作会继续级联下去。 受限删除:受限删除: 系统将拒绝执行此删除操作。系统将拒绝执行此删除操作。置空值删除:置空值删除: 将将

19、SC关系中所有关系中所有Sno=200801的元组的的元组的Sno值置为空值。值置为空值。在学生选课数据库中,显然第一种方法和第二种方法都是在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。对的。第三种方法不符合应用环境语义。22修改被参照关系中主码的问题修改被参照关系中主码的问题v两种策略两种策略不允许修改主码不允许修改主码允许修改主码允许修改主码 v允许修改主码策略允许修改主码策略违约操作违约操作要要修改被参照关系修改被参照关系中某些元组的主码值,而参照关系中有些元组的外码值正好等中某些元组的主码值,而参照关系中有些元组的外码值正好等于被参照关系要修改的

20、主码值于被参照关系要修改的主码值要要修改参照关系修改参照关系中某些元组的主码值,而被参照关系中没有任何元组的外码值等中某些元组的主码值,而被参照关系中没有任何元组的外码值等于被参照关系修改后的主码值于被参照关系修改后的主码值违约反应违约反应v修改的关系是被参照关系:与删除类似修改的关系是被参照关系:与删除类似级联修改级联修改受限修改受限修改置空值修改置空值修改v修改的关系是参照关系:与插入类似修改的关系是参照关系:与插入类似受限修改受限修改级联修改级联修改2021-12-21 23修改被参照关系中主码的问题(续)修改被参照关系中主码的问题(续)级联修改级联修改v修改被参照关系中主码值同时,用相

21、同的方法修改参修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。照关系中相应的外码值。受限修改受限修改v拒绝此修改操作。只当参照关系中没有任何元组的外拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。组的主码值才能被修改。置空值修改置空值修改v修改被参照关系中主码值,同时将参照关系中相应的修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值。外码值置为空值。2021-12-21 24v例:学生例:学生200801休学一年后复学,这时需要将休学一年后复学,这时需

22、要将Student关系关系中中Sno=200801的元组中的元组中Sno值改为值改为 200923 。而。而SC关系中关系中有有4个元组的个元组的Sno=200801级联修改:级联修改: 将将SC关系中关系中4个个Sno=200801元组中的元组中的Sno值也改为值也改为200923。如果。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。续级联下去。受限修改:受限修改: 只有只有SC中没有任何元组的中没有任何元组的Sno= 200801 时,才能修改时,才能修改Student表中表中Sno= 200801 的元

23、组的的元组的Sno值改为值改为 200923 。置空值修改置空值修改: 将将Student表中表中Sno= 200801 的元组的的元组的Sno值改为值改为 200923 。而将。而将S表中所有表中所有Sno= 200801 的元组的的元组的Sno值置为空值值置为空值。在学生选课数据库中只有第一种方法是正确的。在学生选课数据库中只有第一种方法是正确的。2021-12-21 25小结小结v如何进行完整性维护系统的设计?如何进行完整性维护系统的设计?1 如何表达完整性约束条件?如何表达完整性约束条件?2 如何检查完整性约束条件?如何检查?如何检查完整性约束条件?如何检查?3 违反条件时候的如何处理

24、?违反条件时候的如何处理?DBMSDBMS中完整性的定义:中完整性的定义:使用约束使用约束完整性的类型完整性的类型约束的类型约束的类型说明说明实体完整性实体完整性PRIMARY KEY唯一标识每一行,保证用户不输入重复的数据,且创建一个索引来提高性能。不允许空值UNIQUE防止非主关键字的重复,并保证创建一个索引来提高性能。允许空值用户定义完整用户定义完整性性DEFAULT指定在INSERT语句中没有明确提供一个值时,为该列提供的值CHECK指定在一个列中可接受的数据值参照完整性参照完整性FOREIGN KEY定义一个列或几个列的组合,他们的值匹配同一个表或另一个表中关键字2021-12-21

25、 27CREATE TABLECREATE TABLE定义约束定义约束v约束涉及单个属性的,有两种说明方法约束涉及单个属性的,有两种说明方法 定义为列级约束条件定义为列级约束条件定义为表级约束条件定义为表级约束条件v若约束涉及多个属性的,只有一种说明方法若约束涉及多个属性的,只有一种说明方法定义为表级约束条件定义为表级约束条件 28v列级约束列级约束例1. CREATE TABLE语句中定义列级约束 CREATE TABLE S ( sno NUMERIC(6) PRIMARY KEY, -列级约束列级约束 sname CHAR(8) NOT NULL, age NUMERIC(3,0), s

26、ex CHAR(2), bplace CHAR(20) );v表级约束表级约束例2. CREATE TABLE语句中定义表级约束 CREATE TABLE SC ( 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, Ena

27、me varchar(8), Sex char(2), Age int, Dno char(2) );v在属性列表后单独说明主码,表级约束在属性列表后单独说明主码,表级约束 CREATE TABLE 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

28、TABLE Employee ADD CONSTRAINT uq_ename UNIQUE(Ename);v删除约束:删除约束:语法:语法:vALTER TABLE DROP CONSTRAINT ,;例5. ALTER TABLE 删除约束。ALTER TABLE Employee DROP CONSTRAINT uq_ename;31UNIQUEUNIQUE约束约束v允许空值允许空值v在一个表上可以放置多个在一个表上可以放置多个UNIQUE约束约束v可以在必须有唯一值,但不是表的主关键字的一个列或多个列上可以在必须有唯一值,但不是表的主关键字的一个列或多个列上应用应用UNIQUE约束约束v

29、通过在指定列上创建唯一索引强制通过在指定列上创建唯一索引强制UNIQUE约束约束v例例6. 添加唯一性约束。添加唯一性约束。 ALTER TABLE Department ADD CONSTRAINT uq_dname UNIQUE nonclustered(dname);v例例7. 增加增加Ename必须取唯一值的约束条件。必须取唯一值的约束条件。 ALTER TABLE Employee /* 用户为该唯一值约束设定约束名为用户为该唯一值约束设定约束名为UQ_Ename */ ADD CONSTRAINT UQ_Ename UNIQUE(Ename); v或者: ALTER TABLE E

30、mployee ADD UNIQUE(Ename); /* 系统将自动为此约束名赋值系统将自动为此约束名赋值 */2021-12-21 32PRIMARY KEYPRIMARY KEY约束约束v每个表每个表只能定义一个只能定义一个PRIMARY KEY约束约束v输入的值必须是唯一的输入的值必须是唯一的v不允许空值不允许空值v它在指定的列上创建一个唯一索引它在指定的列上创建一个唯一索引v例例8. .添加主码约束添加主码约束ALTER TABLE DepartmentADD CONSTRAINT pk_dno PRIMARY KEY clustered(dno);33IDENTITYIDENTIT

31、Y属性属性v每一个表都可有一标识列,其中包含由系统自动生每一个表都可有一标识列,其中包含由系统自动生成的能够标识表中每一行数据的唯一序列值。成的能够标识表中每一行数据的唯一序列值。v格式:格式:IDENTITY ( SEED, INCREMENT) vSEED初始值,表中的第一行数据的标识列的取值,默认值为初始值,表中的第一行数据的标识列的取值,默认值为1vINCREMEN步长值,每一新标识值比上一个增长多少,默认值步长值,每一新标识值比上一个增长多少,默认值为为1v使用IDENTITY列时,应注意:每张表只允许有一个每张表只允许有一个IDENTITY列列该列必须使用下列数据类型之一:deci

32、mal、numeric、int、smallint 和 tinyint该列必须设置成不允许为空值,且不能有默认值该列必须设置成不允许为空值,且不能有默认值2021-12-21 34DEFAULTDEFAULT约束约束v只应用于INSERT语句v每列只能定义一个每列只能定义一个DEFAULT约束约束v不能用于不能用于IDENTITY属性或属性或TIMESTAMP数据类型数据类型TIMESTAMP数据库范围内的唯一数字,8字节,一个表中只能一个此类型的列v允许使用一些系统提供的值允许使用一些系统提供的值v例例9.增加列增加列Title的默认值取值为的默认值取值为“助工助工”。 ALTER TABLE

33、 Employee ADD CONSTRAINT DF_Title DEFAULT 助工助工 for Title;2021-12-21 35CHECKCHECK约束约束v在每次执行INSERT或UPDATE语句时验证数据v可以引用同一表中的其他列可以引用同一表中的其他列v不能在具有IDENTITY属性的列或具有timestamp或uniqueidentifier数据类型的列上放置CHECK约束v不能含有子查询v例例10.增加列性别取值约束。增加列性别取值约束。ALTER TABLE EmployeeADD CONSTRAINT ck_sex CHECK (sex in (男男,女女);2021

34、-12-21 36vCHECK约束也可涉及到表中多个域,称为元组约约束也可涉及到表中多个域,称为元组约束。束。v在对整个元组完成插入或对某一元组的修改完成之后,系统将检查元组是否符合CHECK条件表达式。v例例11. 添加涉及多列的添加涉及多列的CHECK约束。约束。 ALTER TABLE Salary ADD CONSTRAINT ck_RightSalary CHECK(Insure+Fund=18v例例5. 创建具有列表的规则创建具有列表的规则 CREATE RULE sex_rule AS sex IN (男男, 女女);v例例6.创建具有模糊匹配的规则创建具有模糊匹配的规则 CRE

35、ATE RULE telephone_rule AS telephone like 0-90-90-90-90-90-90-90-9;2021-12-21 82捆绑规则捆绑规则v使用系统存储过程使用系统存储过程sp_bindrule可以将规则捆绑到可以将规则捆绑到列或用户自定义数据类型上。列或用户自定义数据类型上。v语法:语法:Sp_bindrule rule, object_name,futureonly_flagrule:规则的名称object_name为规则要捆绑到的列名或用户自定义数据类型名futureonly_flag可选参数,仅在要捆绑到用户自定义数据类型时使用。2021-12-2

36、1 83v例例7. 将规则绑定到列。将规则绑定到列。 EXEC sp_bindrule range_rule, Employee.Age;v例例8. 将规则绑定到别名数据类型。将规则绑定到别名数据类型。 EXEC sp_bindrule telephone_rule, telephone;v例例9. 使用使用futureonly_flag。以下示例将 telephone_rule规则绑定到别名数据类型telephone。由于已指定futureonly,因此不影响类型为telephone的现有列。 EXEC sp_bindrule telephone_rule,telephone, future

37、only;2021-12-21 84v使用使用sp_unbindrule系统存储过程可以解除系统存储过程可以解除捆绑到列或用户自定义数据类型上的规则。捆绑到列或用户自定义数据类型上的规则。v语法:sp_unbindrule object_name,futureonly_flag2021-12-21 85v例例10. 解除绑定列上的规则。解除绑定列上的规则。 EXEC sp_unbindrule Employee.Age;v例例11. 解除绑定别名类型的规则。解除绑定别名类型的规则。 EXEC sp_unbindrule telephone, futureonly;2021-12-21 86查看

38、规则查看规则v使用企业管理器使用企业管理器v使用系统存储过程使用系统存储过程sp_help可以查看规则的可以查看规则的拥有者、创建时间等基本信息。拥有者、创建时间等基本信息。v使用系统存储过程使用系统存储过程sp_helptext可以查看规则可以查看规则的定义。的定义。2021-12-21 87删除规则删除规则v使用使用DROP RULE语句可以删除当前数据库语句可以删除当前数据库中的一个或多个规则。中的一个或多个规则。v在删除一个规则之前,应首先将规则从它所在删除一个规则之前,应首先将规则从它所捆绑的列或用户自定义数据类型上解除下来。捆绑的列或用户自定义数据类型上解除下来。当要删除的规则仍捆

39、绑在列或用户自定义数据类当要删除的规则仍捆绑在列或用户自定义数据类型上时,执行型上时,执行DROP RULE会显示错误信息,同会显示错误信息,同时时DROP RULE操作将被撤销。操作将被撤销。2021-12-21 88v例例12. 删除规则删除规则 -先解除绑定在列上的该规则先解除绑定在列上的该规则EXEC sp_unbindrule Employee.Age; -然后在删除该规则然后在删除该规则DROP RULE range_rule;2021-12-21 893 3 默认值默认值v默认值可以是常量、内置函数或数学表达式。默认值可以是常量、内置函数或数学表达式。v使用使用CREATE TA

40、BLE语句创建表时,使用语句创建表时,使用DEFAULT子句为表中的列提供默认值。子句为表中的列提供默认值。v使用使用CREATE DEFAULT语句来创建一个默语句来创建一个默认对象,然后再将其捆绑到列或用户自定义认对象,然后再将其捆绑到列或用户自定义数据类型上。数据类型上。2021-12-21 90创建默认值创建默认值v使用使用T-SQL语句语句CREATE DEFAULT可以创可以创建默认对象。建默认对象。v语法:语法: CREATE DEFAULT defaultAS constant_expression2021-12-21 91捆绑默认值捆绑默认值v可以使用可以使用sp_binde

41、fault系统存储过程系统存储过程v语法:语法:sp_bindefault default, object_name, futureonly_flagv使用使用sp_unbindefault系统存储过程可以解除捆绑系统存储过程可以解除捆绑导列或用户自定义数据类型上的默认值。导列或用户自定义数据类型上的默认值。v语法:语法:sp_unbindefault object_name,futureonly_flag2021-12-21 92v例例13. 创建默认值创建默认值addressdefault。 CREATE DEFAULT addressdefault AS 杭州下沙杭州下沙;v例例14.

42、绑定默认值。绑定默认值。 EXEC sp_bindefault addressdefault , Employee.Address;v例例15. 解除默认值。解除默认值。 EXEC sp_unbindefault Employee.Address;2021-12-21 93查看默认值查看默认值v可使用企业管理器。可使用企业管理器。v可使用系统存储过程可使用系统存储过程sp_help可以查看默认可以查看默认值的拥有者、创建时间等基本信息。值的拥有者、创建时间等基本信息。v可使用系统存储过程可使用系统存储过程sp_helptext可以查看默可以查看默认值的定义。认值的定义。2021-12-21 9

43、4删除默认值删除默认值v使用使用DROP DEFAULT语句可以删除当前数语句可以删除当前数据库中的一个或多个默认值。据库中的一个或多个默认值。v注意:注意:在删除默认值之前,应使用在删除默认值之前,应使用sp_unbindefault系系统存储过程来解除该默认值在列或用户自定义数统存储过程来解除该默认值在列或用户自定义数据类型上的捆绑。据类型上的捆绑。95数据完整性数据完整性 小结小结v数据库的完整性是为了保证数据库中存储的数据库的完整性是为了保证数据库中存储的数据是正确的数据是正确的vRDBMS完整性实现的机制完整性实现的机制完整性约束定义机制完整性约束定义机制完整性检查机制完整性检查机制

44、违背完整性约束条件时违背完整性约束条件时RDBMS应采取的动作应采取的动作v在关系系统中,最重要的完整性约束是在关系系统中,最重要的完整性约束是实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性v数据库完整性的定义数据库完整性的定义一般由一般由SQL的的DDL语句实现语句实现作为数据库模式的一部分存入数据字典作为数据库模式的一部分存入数据字典在数据库数据修改时在数据库数据修改时,RDBMS的完整性检查机制的完整性检查机制就按照数据字典中定义的这些约束进行检查就按照数据字典中定义的这些约束进行检查v完整性机制的实施会影响系统性能。随着硬完整性机制的实施会影响系统性能。随着硬

45、件性能的提高,数据库技术的发展,目前的件性能的提高,数据库技术的发展,目前的RDBMS都提供了定义和检查实体完整性、都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能。参照完整性和用户定义的完整性的功能。v对于违反完整性的操作对于违反完整性的操作要根据应用语义来选择合适的处理策略,以保证要根据应用语义来选择合适的处理策略,以保证数据库的正确性数据库的正确性2021-12-21 97可能破坏参照完整性的情况及违约处理可能破坏参照完整性的情况及违约处理被参照表(例如被参照表(例如StudentStudent)参照表(例如参照表(例如SCSC)违约处理违约处理可能破坏参照完整性可能破坏

46、参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照可能破坏参照完整性完整性拒绝拒绝/ /级连删除级连删除/ /设置为空值设置为空值修改主码值修改主码值 可能破坏参照可能破坏参照完整性完整性拒绝拒绝/ /级连修改级连修改/ /设置为空值设置为空值2021-12-21 98完整性小结(续):触发器完整性小结(续):触发器v实现数据库完整性的一个重要方法是触发器实现数据库完整性的一个重要方法是触发器是定义在关系表上的由事件驱动的特殊过程是定义在关系表上的由事件驱动的特殊过程可以用于数据库完整性检查可以用于数据库完整性检

47、查也可以用来实现数据库系统的其他功能也可以用来实现数据库系统的其他功能数据库安全性数据库安全性应用系统的一些业务流程和控制流程应用系统的一些业务流程和控制流程基于规则的数据和业务控制功能基于规则的数据和业务控制功能 v不同的不同的RDBMS实现触发器的语法不同实现触发器的语法不同2021-12-21 99作业作业 1v准备第三次上机实验内容(准备第三次上机实验内容(1)详见附录详见附录A:“上机实验八上机实验八 完整性约束的实现完整性约束的实现”。在在Microsoft SQL Server 环境中,上机实现书环境中,上机实现书中第中第4章的各例题。章的各例题。2021-12-21 100SQ

48、L语言语言高级应用(二)高级应用(二)4.3 数据库安全性数据库安全性2021-12-21 101数据库保护数据库保护v数据库中的数据由数据库中的数据由DBMS统一管理控制,为统一管理控制,为适应数据共享的环境,适应数据共享的环境,DBMS必须提供数据必须提供数据的的安全性、完整性、并发控制和数据备份恢安全性、完整性、并发控制和数据备份恢复复等等数据保护数据保护能力,以保证数据库中的数据能力,以保证数据库中的数据安全可靠和正确有效。安全可靠和正确有效。2021-12-21 1021. 完整性完整性v数据库的完整性是指数据库中数据的正确性数据库的完整性是指数据库中数据的正确性与相容性。与相容性。

49、vSQL语言定义完整性约束条件语言定义完整性约束条件CREATE TABLE语句语句ALTER TABLE语句语句v实体完整性:实体完整性: primary key、uniquev参照完整性:参照完整性:foreign keyv用户定义完整性:用户定义完整性:check、default2021-12-21 1032. 安全性安全性v安全性:保护数据库,防止不合法的使用安全性:保护数据库,防止不合法的使用所造成的数据泄露和破坏。所造成的数据泄露和破坏。v保证数据安全性的主要措施保证数据安全性的主要措施: :存取控制:控制用户只能存取他有权存取的数据,存取控制:控制用户只能存取他有权存取的数据,规

50、定不同用户对于不同数据对象所允许执行的操作规定不同用户对于不同数据对象所允许执行的操作2021-12-21 1043. 并发控制并发控制v并发控制:当多个用户并发地对数据库进行并发控制:当多个用户并发地对数据库进行操作时,对他们加以控制、协调,以保证并操作时,对他们加以控制、协调,以保证并发操作正确执行,保持数据库的一致性。发操作正确执行,保持数据库的一致性。vSQL语言并发控制能力:语言并发控制能力:提供事务开始、事务结束、提交、撤销等概念提供事务开始、事务结束、提交、撤销等概念2021-12-21 1054. 数据备份恢复数据备份恢复v恢复:当发生各种类型的故障导致数据库处恢复:当发生各种

51、类型的故障导致数据库处于不一致状态时,将数据库恢复到一致状态于不一致状态时,将数据库恢复到一致状态的功能。的功能。vSQL语言恢复功能:语言恢复功能:提供事务回滚、重做等概念(提供事务回滚、重做等概念(UNDO、REDO)2021-12-21 106数据安全性数据安全性v数据库系统的安全性是数据库保护的首要数据库系统的安全性是数据库保护的首要问题。问题。v安全性是相对的。安全性是相对的。v加强安全性是应用开发一个重要的方面。加强安全性是应用开发一个重要的方面。v安全性与保密性不可分。安全性与保密性不可分。v本节主要讨论安全性的一般概念和方法,本节主要讨论安全性的一般概念和方法,介绍介绍SQL

52、ServerSQL Server数据库系统的安全性措施。数据库系统的安全性措施。2021-12-21 107数据库安全数据库安全v数据库的破坏一般来自以下的四个方面:数据库的破坏一般来自以下的四个方面:系统故障;系统故障;并发所引起的数据不一致;并发所引起的数据不一致;输入或更新数据库数据有误;输入或更新数据库数据有误;人为的破坏。人为的破坏。v所谓数据库安全(所谓数据库安全(SecuritySecurity),就是要防止),就是要防止其中第四种。其中第四种。 2021-12-21 108数据库安全性概念数据库安全性概念v何为数据库安全性?何为数据库安全性?保护数据库以防止不合法的使用所造成的

53、数据泄露、更改或保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。破坏。v系统安全保护措施是否有效是数据库系统的主要性能系统安全保护措施是否有效是数据库系统的主要性能指标之一。指标之一。v安全性问题和保密问题密切相关。安全性问题和保密问题密切相关。前者主要涉及数据的存取控制、前者主要涉及数据的存取控制、 修改和传播的技术手段;修改和传播的技术手段;后者在很大程度上是法律、政策、伦理、道德等问题。后者在很大程度上是法律、政策、伦理、道德等问题。一些国家已成立了专门机构对数据的安全保密制订了法律道一些国家已成立了专门机构对数据的安全保密制订了法律道德准则和政策法规。德准则和政策法规。202

54、1-12-21 109数据库安全保密方式数据库安全保密方式v数据库安全保密方式有:系统处理的和物理的两个数据库安全保密方式有:系统处理的和物理的两个方面。方面。v所谓物理的是指,对于强力逼迫透露口令、在通讯所谓物理的是指,对于强力逼迫透露口令、在通讯线路上窃听、以至盗窃物理存储设备等行为而采取线路上窃听、以至盗窃物理存储设备等行为而采取的将数据编为密码,加强警卫以识别用户身份和保的将数据编为密码,加强警卫以识别用户身份和保护存储设备等措施。护存储设备等措施。v所谓系统处理的是指利用计算机系统方面的技术手所谓系统处理的是指利用计算机系统方面的技术手段。段。v本节主要讲述系统处理方面的数据库安全措

55、施。本节主要讲述系统处理方面的数据库安全措施。2021-12-21 110计算机安全措施设置模型计算机安全措施设置模型v在一般计算机系统中,安全措施是一级一级层层设置的。有如下的模型:2021-12-21 111数据库安全措施数据库安全措施v数据库系统的安全措施是建立在计算机系统数据库系统的安全措施是建立在计算机系统基础之上的,通常有五个方面。基础之上的,通常有五个方面。v1. 1. 用户标识和鉴定用户标识和鉴定v2. 2. 存取控制存取控制v3. 3. 定义视图定义视图v4. 4. 审计审计v5. 5. 数据加密数据加密2021-12-21 112安全措施一:安全措施一:用户标识和鉴定用户标

56、识和鉴定v用户标识和鉴定用户标识和鉴定常用的方法有:常用的方法有:(1 1)用一个用户名或用户标识号标明用户身份。)用一个用户名或用户标识号标明用户身份。(2 2)口令)口令(Password)(Password)(3 3)系统提供一个随机数,用户根据预先约定好的)系统提供一个随机数,用户根据预先约定好的某一过程或者函数进行计算,系统根据用户计算结某一过程或者函数进行计算,系统根据用户计算结果是否正确进一步鉴定用户身份。果是否正确进一步鉴定用户身份。v用户标识和鉴定可重复多次。用户标识和鉴定可重复多次。2021-12-21 113安全措施二:安全措施二:存取控制存取控制v对于获得上机权的用户还

57、要根据预先定义好的用户权限进行对于获得上机权的用户还要根据预先定义好的用户权限进行存取控制,保证用户只能存取他有权存取的数据。所谓用户存取控制,保证用户只能存取他有权存取的数据。所谓用户权限是指不同的用户对于不同的数据对象允许执行的操作权权限是指不同的用户对于不同的数据对象允许执行的操作权限,它由两部分组成:数据对象和操作类型。限,它由两部分组成:数据对象和操作类型。数据对象数据对象操作类型操作类型模式、外模式、内模式模式、外模式、内模式建立、修改、检索建立、修改、检索表或者记录、字段表或者记录、字段查找、插入、修改、删除查找、插入、修改、删除2021-12-21 114安全措施三:安全措施三

58、:视图视图v视图主要用于保证程序的逻辑独立性,也还视图主要用于保证程序的逻辑独立性,也还可将机密数据隐藏起来,能提供一定程度的可将机密数据隐藏起来,能提供一定程度的安全保护,但不精细。安全保护,但不精细。v不同的不同的DBMSDBMS都提供了建立视图的机制。都提供了建立视图的机制。v开发数据系统时应尽可能地为不同的用户建开发数据系统时应尽可能地为不同的用户建立相应的视图来访问数据。立相应的视图来访问数据。 如建立一个如建立一个“信息管理系学生视图信息管理系学生视图”2021-12-21 115安全措施四:安全措施四:审计审计v审计是一种审计是一种预防手段,监测可能的不合法访问。预防手段,监测可

59、能的不合法访问。v审讯追踪技术使用专用文件或数据库自动记录用户审讯追踪技术使用专用文件或数据库自动记录用户对数据库的所有操作,利用这些信息就能找出非法对数据库的所有操作,利用这些信息就能找出非法存取数据的人。存取数据的人。v审讯追踪很费时间和空间,一般审讯追踪很费时间和空间,一般DBMSDBMS只作为一种可只作为一种可选的特性,可灵活地打开或关闭审计功能。选的特性,可灵活地打开或关闭审计功能。v审计功能一般用于安全性要求较高的部门。审计功能一般用于安全性要求较高的部门。 2021-12-21 116安全措施五:安全措施五:数据加密数据加密v对高度机密性数据,通过采用数据加密技术,以密码形式存对

60、高度机密性数据,通过采用数据加密技术,以密码形式存储和传输,这样即使数据被窃取,看到是无法辨识的二进制储和传输,这样即使数据被窃取,看到是无法辨识的二进制代码。代码。v用户正常检索数据时,首先要提供密码钥匙,经系统译码后,用户正常检索数据时,首先要提供密码钥匙,经系统译码后,才能得到可识别的数据。才能得到可识别的数据。v目前很多数据产品都提供了数据加密例行程序,可根据用户目前很多数据产品都提供了数据加密例行程序,可根据用户要求自动对数据进行加密处理,另外有一些数据库产品虽本要求自动对数据进行加密处理,另外有一些数据库产品虽本身未提供加密程序,但允许用户用其他厂商的加密程序来加身未提供加密程序,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论