《数据库技术及应用 教学课件 ppt 作者 陆桂明 05 数据库保护技术》由会员分享,可在线阅读,更多相关《数据库技术及应用 教学课件 ppt 作者 陆桂明 05 数据库保护技术(36页珍藏版)》请在金锄头文库上搜索。
1、数据库技术及应用 第五章 数据库保护技术,机械工业出版社,1,目录,机械工业出版社,2,本章从完整性控制、安全性控制、并发控制、数据库恢复四个方面来介绍数据库的安全与保护功能,读者应掌握安全性(Security)、完整性(Integrity)、 并发控制(Concurrent Control)和数据库恢复(Recovery)的含义,掌握这四个方面的分别实现 安全保护功能的方法。,机械工业出版社,3,5.1 安全与保护概述 DBMS层所提供的如下数据库安全和保护功能:,机械工业出版社,4,安全性(security)保护:即防止非法用户对数据库的非法使用,以避免数据的泄露、篡改或破坏。,完整性 (
2、integrity) 保护:即保证数据的正确性和一致性。,数据库恢复(database recovery):即在系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。,机械工业出版社,5,5.2 数据库的完整性(Integrity) 数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。 比如年龄属于数值型数据,只能含0,1,9,不能含字母或特殊符号; 月份只能用112之间的正整数表示;性别只能是男或者女等等。表示同一事实的两个数据应相同,否则就不相容,如一个人不能有两个学号。 维护数据库的完整性非常重要,数据库中的数据是否具备完整性关系到
3、数据能否真实地反映现实世界。因此维护数据的完整性是非常重要的。,机械工业出版社,6,5.2.1数据库的完整性分类 1. 实体完整性 实体完整性也就是对主码的约束,在关系中,主码不能为空,也不允许重复出现。实体完整性的定义可在创建基本表时说明,也可在修改基本表时增加或删除。说明方式有两种:列级说明和表级说明。 2. 参照完整性 参照完整性也就是对外码进行约束,在关系中,外码的取值或者是空值,或者是参照被参照关系的相应属性列的取值。参照完整性简单地说就是表间主码外码的关系,其属于表间规则。 3. 用户定义完整性 用户定义完整性是指用户为了满足特定的要求而做的一些与数据完整性有关的一些定义,主要体现
4、实际运用的业务规则,可在列 级和表级上定义。,机械工业出版社,7,5.2.2数据库的完整性约束 为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中数据的完整性。保证数据库中数据的完整性的方法之一是设置 完整性检验,即DBMS检查数据是否满足完整性条件的机制。,机械工业出版社,8,5.2.2.1完整性约束类型 1静态约束 静态约束是指数据库每个确定状态所应满足的约束条件,是反映数据库状态合理性的约束,这是重要的一类完整性约束。又可分为下面三种: 1) 固有约束:指数据模型固有的约束,例如关系的属性应当是原子 的,即满足1NF的约束。 2) 隐含约束:指隐含于数据模式中的约束,一般用DD
5、L语句说明, 并存于数据目录中,例如域完整性约束、实体完整性约束以及引用 完整性约束,都用相应的DDL语句说明。 3) 显式约束:数据完整性是多种多样的,且依赖于数据的语义和应 用,这些约束只有显式地说明,故称显式约束。,机械工业出版社,9,2动态约束 动态约束是指数据库从一种状态转变为另一种状态时,新旧值之间所有应满足的约束条件,动态约束反映的是数据库状态变迁的约束。例如:学生年龄在更改时只能增长,职工工资在调整时不得低于其原来的工资。,机械工业出版社,10,完整性约束条件的六种类型 :,机械工业出版社,11,5.2.2.2完整性约束说明 1. 用过程说明约束 把约束的说明和检验推给应用程序
6、。 2. 用断言说明约束 断言指数据库状态必须满足的逻辑条件。 3. 用触发器说明约束 触发器是建立在某个关系上的一系列SQL语句的集合,并经预先编译后存储在数据库中。,机械工业出版社,12,5.3数据库的安全性 5.3.1用户的标识与鉴别 5.3.2 存取权限控制 对每个用户,可以定义以下两种存取控制权限: (1)数据对象权限:规定了用户使用数据库中数据对象的范围; (2)操作类型权限:规定了用户在可使用数据对象上能执行的操作;,机械工业出版社,13,表5-1:关系系统中的存取权限,机械工业出版社,14,5.3.3 视图机制 在关系数据库系统中,视图是提供给用户以多种角度观察数据库中数据的重
7、要机制,是从一个或几个基表(或视图)导出的表,它与基表不同,是一个虚表。 5.3.4 跟踪审查 跟踪审查是一种后监视措施,它跟踪数据库的访问活动,以发现数据库的非法访问,达到安全防范的目的。 5.3.5 数据加密存储 数据加密就是将明文数据经过一定的变换变成密文数据。,机械工业出版社,15,5.4数据库的并发控制 5.4.1 事务及特性 1事务 在SQL中,用户显式定义事务的语句有如下3条: BEGIN TRANSACTION:该语句显式地定义一个事务的开始。在应用程序的某处嵌入此语句,就表示一个新的事务已经开始。 COMMIT:该语句显式地提交一个事务,并表示该事务已正常结束。所谓提交事务,
8、就是将该事务对数据库的所有更新操作结果永久地保存到磁盘上的物理数据库中去。因此,此语句用于事务的正常结束情况。 ROLLBACK:该语句显式地回滚一个事务,且表示事务因执行失败而结束。所谓回滚事务,就是撤消该事务对数据库的所有更新操作,使数据库恢复到该事务开始时的状态。因此,此语句用于事务执行失败的结束情况。,机械工业出版社,16,2事务的特性,原子性,事务具有四个特性,即原子性、一致性、隔离性和持续 性,又常简称为ACID特性。,机械工业出版社,17,例: BEGIN TRAN Read A AA-S If A0 /*A款不足*/ Then Begin Display “A款不足” ROLL
9、BACK End Else Begin BB+S Display “拨款完成” COMMIT End,这个事务有两个可能的出口: 以ROLLBACK(撤消)命令结束,即撤消事务的影响,这相当于“nothing”; 以COMMIT(提交)命令结束,这相当于“all”。 只有在COMMIT之后,事务对数据库所产生的变化才对其他事务开放。,机械工业出版社,18,5.4.2数据库的并发控制 DBMS的并发控制是以事务为单位进行的。 5.4.3 并发的目的 改善系统的资源利用率。 改善短事务的响应时间。,机械工业出版社,19,5.4.4并发所引起的问题 并发操作所带来的数据不一致可以分为四种情况: 1丢
10、失修改(lost update):,事务T1 时间 事务T2 读A=16 t1 t2 读A=16 A=A-1 t3 写回A =15 t4 A=A-4 写回A=12(覆盖了T1对A的修改),机械工业出版社,20,2脏读(dirty read):,事务T1 时间 事务T2 读B=100 t1 B=B*2=200 写回B=200 t2 读B=200(读入T1的脏数据) ROLLBACK t3 B恢复为100 ,机械工业出版社,21,3不可重复读(unrepeatable read):,事务T1 时间 事务T2 读A=50 t1 读B=100 求和S =150 t2 读B=100 B=B*2,写回B=
11、200 读A=50 t3 读B=200 求和S =250 ,4.产生幽灵数据,机械工业出版社,22,5.4.5并发控制方法 5.4.5.1 封锁技术 封锁是防止其他事务访问指定资源的一种手段。封锁(locking)是实现并发控制的一个非常重要的技术。所谓封锁就是在一段时间内禁止某些用户对数据对象作某些操作以避免产生数据的不一致性问题,即事务T在对某个数据对象如表、元组等进行操作之前,先向系统发出请求,封锁其所要使用的数据。加锁成功后,事务T就对数据对象有了一定的控制权,在事务T释放它的锁之前,其他的事务就不能更新此数据对象。基本的封锁一般有排它锁和共享锁两种类型。,机械工业出版社,23,机械工
12、业出版社,24,表5-2 封锁类型的相容矩阵 2.封锁粒度 3.封锁协议,排它锁与共享锁的控制方式可以用如表5-2所示的相容矩阵来表示。,机械工业出版社,25,封锁协议,一级封锁协议,若某事务T要修改某个数据对象,则必须先对该数据对象加X锁,直到事务结束后才释放。此种封锁协议可防止“丢失修改”所产生的数据不一致性问题。,一级封锁协议加上某事务T若要读取某个数据对象之前,必须先对该数据对象加S锁,读完后即可释放S锁,这样可进一步防止“读脏数据”的问题。,一级封锁协议加上某事务T若要读取某个数据对象之前,必须先对该数据对象加S锁,且直到该事务结束后才可释放S锁,这样可进一步防止数据“不可重复读”的
13、问题。,二级封锁协议,三级封锁协议,机械工业出版社,26,事务T1 时间 事务T2 对A 加X锁获得 t1 读A=16 t2 t3 要对A加X锁 等待 修改A=A-1 t4 等待 写回A=15 释放对A的X锁 t5 等待 t6 获得对A的X锁 t7 读A=15 t8 修改A=A-4,写回A=11 释放对A的X锁 图5-4 没有丢失修改,机械工业出版社,27,事务T1 时间 事务T2 对C加X锁获得 t1 读C=50 t2 求C=C*2 t3 写回C=100 t4 要对C加S锁 等待 回滚 t5 等待 (C恢复为50) 释放C的锁 t6 等待 t7 获得C的S锁 t8 读C=50 释放C的S锁 图5-5 不读“脏”数据,机械工业出版社,28,事务T1 时间 事务T2 对A、B分别加S锁获得 t1 读A =50,B=100 t2 求和S=100 t3 要对B加X锁 等待 读A =50,B=100 t4 等待 求和S= 150 将和值写回到数据库中 t5 等待 释放A的锁 t6 等待 释放B的锁