数据库原理及应用-孙浩军 第4章数据库的完整性与安全性

上传人:E**** 文档编号:89471672 上传时间:2019-05-25 格式:PPT 页数:71 大小:158.50KB
返回 下载 相关 举报
数据库原理及应用-孙浩军 第4章数据库的完整性与安全性_第1页
第1页 / 共71页
数据库原理及应用-孙浩军 第4章数据库的完整性与安全性_第2页
第2页 / 共71页
数据库原理及应用-孙浩军 第4章数据库的完整性与安全性_第3页
第3页 / 共71页
数据库原理及应用-孙浩军 第4章数据库的完整性与安全性_第4页
第4页 / 共71页
数据库原理及应用-孙浩军 第4章数据库的完整性与安全性_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《数据库原理及应用-孙浩军 第4章数据库的完整性与安全性》由会员分享,可在线阅读,更多相关《数据库原理及应用-孙浩军 第4章数据库的完整性与安全性(71页珍藏版)》请在金锄头文库上搜索。

1、The Principle of Database and applications,数据库原理及应用 The Principle of Database and applications 第四章数据库的完整性与安全性,The Principle of Database and applications,第四章数据库的完整性与安全性,4-1 数据库的完整性 4-2 SQL Server 2000的完整性 4-3 数据库的安全性 4-4 SQL Server的安全体系结构和安全认证模式 4-5 SQL Server 2000数据库安全性管理,The Principle of Database a

2、nd applications,4-1 数据库的完整性,1完整性约束的分类 2完整性控制 3触发器,The Principle of Database and applications,完整性约束的分类,关系模型中有3类完整性约束 实体完整性 参照完整性 用户定义的完整性 为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中数据的完整性 保证完整性的方法之一是设置完整性检验,The Principle of Database and applications,完整性约束的分类(续),数据库完整性约束条件 加在数据库数据上的语义约束条件 一般是对数据库中数据本身的某些语义、语义限制、数据

3、间的逻辑约束以及数据变化时所应遵循的规则 一般在数据模式中给出,作为模式的一部分存入数据字典中 在运行时由DBMS自动检查,The Principle of Database and applications,完整性约束的分类(续),完整性约束条件的作用对象 可分为列、元组和关系三种级别 对列的约束主要指对其取值类型、范围、精度、排序等的约束条件 对元组的约束是指对记录中各个属性之间的联系的约束条件。 对关系的约束是指对若干记录间、关系集合上以及关系之间联系的约束条件。 在一个数据库管理系统中,完整性约束功能一般包括完整性约束条件设置和它的检查两部分一般通过完整性约束语句给出。,The Pri

4、nciple of Database and applications,完整性约束的分类(续),完整性约束条件的作用状态分为静态约束、动态约束 静态约束 数据库中数据的语法、语义限制与数据间的逻辑约束,它反映了数据及数据间的固有的逻辑特性。 如国家公务员的年龄约束为1860岁,工资约束为3005000元等,它们可分别用逻辑公式表示为: Age60 AND Age18 Salary5000 AND Salary300 动态约束 不是对数据库状态的约束,而是数据库从一个状态变为另一个状态时应遵守的约束,例如在更新职工表时,工资、工龄这些属性值一般只会增加,不会减少。动态约束一般也是显式说明的。,T

5、he Principle of Database and applications,静态约束,静态约束是对数据库状态的约束, 固有约束(Inherent Constraints)指数据模型固有的约束,例如关系的属性应是原子的,即满足第一范式的约束。固有约束主要在DBMS实现时加以考虑,不必特别说明。 隐含约束(Implicit Constraints)指隐含于数据模式中的约束,一般用DDL语句说明,并存于数据目录中,例如域完整性约束、实体完整性约束以及引用完整性约束,它们都用相应的DDL语句说明。 固有约束、隐含约束是最基本的约束,但概括不了所有的约束。数据完整性约束是多种多样的,且依赖于数据

6、的语义和应用,这些约束只能显式地说明,故称显式约束(Explicit Constraints)。,The Principle of Database and applications,2完整性控制,完整性控制 DBMS如何定义、检查并保证这些约束条件得到满足 一个完善的完整性控制机制应该允许用户定义所有这些完整性约束条件,The Principle of Database and applications,DBMS应具备的完整性控制功能,定义功能: 为用户提供定义完整性约束条件的命令或工具。 检查功能: 能够自动检查用户发出的操作请求是否违背了完整性约束条件。 保护功能: 当发现用户的操作请求

7、使数据违背了完整性约束条件时,能够自动采取一定的措施确保数据的完整性不遭破坏。,The Principle of Database and applications,完整性控制(续),实体完整性和参照完整性是最重要的两个约束。 RDBMS都应该自动支持并控制管理这两个完整性约束,而把其他的完整性约束条件原则上都归入用户定义的完整性之中。 目前许多商品化RDBMS都提供了定义和检查实体完整性、参照完整性和用户定义的完整性的功能。 对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以

8、保证数据库的正确性。,The Principle of Database and applications,实现参照完整性需要考虑的几个问题,(1)外键的空值问题 根据实际情况的不同,一个关系的外码有时可以取空值,有时又不能取空值,这是数据库设计人员必须考虑的外码空值问题。 如在学生-选课数据库中,关系Students为被参照关系,其主键为Sno。关系Reports为参照关系,外键为Sno。若关系Reports的外键Sno为空值,则表明尚不存在的某个学生,或者某个不知学号的学生,选修了某门课程,其成绩记录在Grade列中。这显然与学校的实际管理是不相符的,因此,关系Reports的外键Sno列

9、值不能取空值。 在实现参照完整性时,DBMS除了应该提供定义外键的机制以外,还应提供定义外键列值是否允许为空值的机制。,The Principle of Database and applications,(2)被参照关系中删除元组的问题 当用户将被参照关系中的一个元组删除,如何处理参照关系中对应的元组,称为被参照关系中元组的删除问题。 一般地,当删除被参照关系中的某个元组,而参照关系存在若干元组,其外键值与被参照关系删除元组的主键值相同时,这时可有3种不同的处理策略: 级联删除:如果要删除主表的记录,那么把子表所属记录以及这个表所包含的所有内容删除。 受限删除:仅当参照关系中没有任何元组的外

10、码至于被参照关系中要删除元组的主码值相同时,才进行删除操作,否则拒绝次删除操作。 置空值删除:删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。,The Principle of Database and applications,(3)在参照关系中插入元组的问题 当用户向参照关系中插入一个元组时,如果被参照关系中并没有对应的元组时,是拒绝插入操作还是进行其他处理的问题,就是在参照关系中 一般地,当在参照关系插入某个元组,而被参照关系不存在相应的元组时,首先向被参照关系中插入相应的元组,其主键值与参照关系插入元组的外键值相同,然后向参照关系插入该元组。,The Principle o

11、f Database and applications,(4)元组中主键值的修改问题 当用户欲修改关系中某个元组的主键值时,由于可能存在参照与被参照的问题,系统如何处理就是主键值修改而产生的问题。 这个问题一般有以下两种方法: 不允许修改主键值 允许修改主键值,此时所有与其有关的参照关系也要作相应修改,The Principle of Database and applications,3触发器,触发器(Triggers)是当今关系数据库管理系统中应用得比较多的一种数据库完整性保护措施,它是建立(附着)在某个关系(基本表)上的一系列SQL语句的集合(程序),并经预先编译后存储在数据库中。 若某

12、个关系上创建了触发器,则当用户对该关系有某种数据修改操作,比如插入、更新或删除等操作发生时,触发器就会自动被激活并执行。 触发器的功能一般比完整性约束条件要强的多,且更加灵活。 一般而言,在完整性约束功能中,当系统检查数据中有违反完整性约束条件时,则仅给用户必要的提示信息,而触发器的功能则不仅仅起提示作用,它还会引起系统内部自动进行某些操作,以消除违反完整性约束条件所引起的负面影响。触发器除了有完整性保护以外,还具有安全保护的功能。,The Principle of Database and applications,4-2 SQL Server 2000的完整性,4-2-1 SQL Serv

13、er 实现数据完整性的方法 4-2-2 SQL Server 2000支持的约束 4-2-3 SQL Server中的触发器 4-2-4 创建约束的其他选项,The Principle of Database and applications,4-2-1 SQL Server 实现数据完整性的方法,(1)声明数据完整性 声明数据完整性是指定义数据标准规定数据必须作为对象定义的一部分,SQL Server将自动确保数据符合标准。使用这种方法实现数据完整性简单而且不易出错。 (2)过程定义数据完整性 过程定义数据完整性是指通过编写用来定义数据必须满足的标准和强制该标准的脚本来实现数据完整性。过程定

14、义数据完整性通常用于复杂的商业逻辑中。在SQL Server中可以通过使用触发器和存储过程来实现过程定义数据完整性。,The Principle of Database and applications,4-2-2 SQL Server 2000支持的约束,约束是一种强制数据完整性的标准机制。 使用约束可以确保在字段中输入有效数据并维护各表之间的关系。 SQL Server 2000支持下列5类约束。,The Principle of Database and applications,1DEFAULT约束(默认约束) 当向数据库表中插入数据时,如果没有明确的提供输入值时,SQL Server

15、 自动为该列输入指定值。 创建DEFAULT约束时,SQL Server将对表中现有的数据进行数据完整性验证; 表中的每一列上只能定义一个DEFAULT约束; DEFAULT约束只在执行INSERT语句时起作用。,The Principle of Database and applications,2CHECK约束(检查约束) 通过逻辑表达式判断限制插入到列中的值。 3PRIMARY KEY约束(主键约束) 不允许数据库表在指定列上具有相同的值,且不允许有空值。,The Principle of Database and applications,4FOREIGN KEY约束(外键约束) 定义

16、数据库表中指定列上插入或更新的数值必须在另一张被参照表中的特定列上存在。 5UNIQUE约束(唯一约束) 不允许数据库表在指定列上具有相同的值,但允许有空值。,The Principle of Database and applications,4-2-3 SQL Server中的触发器,1触发器及其作用 触发器是一种特殊类型的存储过程,通过事件进行触发而被执行的 当对某一表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合由这些SQL语句所定义的规则。 触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。,The Principle of Database and applications,触发器还有其他许多不同的功能: 强化约束(Enforce Restriction),触发器能够实现比CHECK 语句更为复杂的约束。 跟踪变化(Auditing Changes),触发器可以侦测数据库内的操作,从而不允

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号