数据库原理与应用(第二版)Chapter6课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库原理与应用(第二版)Chapter6课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 第二 Chapter6 课件
- 资源描述:
-
1、第六章第六章数据库的保护数据库的保护6.1 数据的安全性数据的安全性 数据库的安全性是指保护数据库中的数据不因用户的非数据库的安全性是指保护数据库中的数据不因用户的非法使用而造成破坏、更改和泄露机密。也就是数据库法使用而造成破坏、更改和泄露机密。也就是数据库中的数据不允许受到任何的恶意侵害或未经授权的存中的数据不允许受到任何的恶意侵害或未经授权的存取和修改。取和修改。安全性的问题一般采用如下的处理办法:安全性的问题一般采用如下的处理办法:(1)用户标识和鉴定用户标识和鉴定(2)存取控制存取控制(3)定义视图定义视图(4)审计审计(5)数据加密数据加密有关利用有关利用SQLSQL语句实现视图定义
2、和存取控制内容,可参语句实现视图定义和存取控制内容,可参考考3.53.5节和节和3.63.6节。节。6.2 数据的完整性数据的完整性 数据库的完整性是指数据的正确性、一致性及数据库的完整性是指数据的正确性、一致性及相容性。相容性。为了维护数据的完整性,为了维护数据的完整性,DBMS必须提供一种必须提供一种机制来检查数据库的数据,看其是否符合机制来检查数据库的数据,看其是否符合语义规定的条件。这些加在数据库数据之语义规定的条件。这些加在数据库数据之上的语义约束条件称为数据库完整性约束上的语义约束条件称为数据库完整性约束条件,它们作为模式的一部分存入数据库条件,它们作为模式的一部分存入数据库中。而
3、中。而DBMS中检查数据是否满足完整性中检查数据是否满足完整性条件的机制称为完整性检查。条件的机制称为完整性检查。6.2.1 完整性约束条件完整性约束条件完整性约束条件作用的对象可以有列级、元组级完整性约束条件作用的对象可以有列级、元组级和关系级三种粒度:和关系级三种粒度:列级的约束:主要是对其取值类型、范围、精度等列级的约束:主要是对其取值类型、范围、精度等的约束条件。的约束条件。元组的约束:是指对记录中各个字段之间的联系的元组的约束:是指对记录中各个字段之间的联系的约束。约束。关系的约束:是指对若干记录间、关系之间的联系关系的约束:是指对若干记录间、关系之间的联系的约束。的约束。完整性约束
4、条件涉及的以上三类对象,其状态可完整性约束条件涉及的以上三类对象,其状态可以是静态的,也可以是动态的:以是静态的,也可以是动态的:静态对象是反映数据库状态合理性的约束。静态对象是反映数据库状态合理性的约束。动态对象的约束是反映数据状态变迁的约束。动态对象的约束是反映数据状态变迁的约束。1.1.静态列级约束静态列级约束 静态列级约束是对一个列(字段)的取值域的说明静态列级约束是对一个列(字段)的取值域的说明.(1)(1)对数据类型的约束,包括数据的类型、长度、单位、对数据类型的约束,包括数据的类型、长度、单位、精度等。精度等。(2)对取值范围或取值集合的约束。对取值范围或取值集合的约束。(3)对
5、空值的约束:对空值的约束:空值表示未定义或未知的值,它与空值表示未定义或未知的值,它与零值和空格不同。零值和空格不同。2.2.静态元组约束静态元组约束静态元组约束就是规定组成一个元组的各个列之间的约静态元组约束就是规定组成一个元组的各个列之间的约束关系。束关系。例如,若一个人的职称为正教授,则其基本工资必须在例如,若一个人的职称为正教授,则其基本工资必须在10001000元以上,当输入工资时,必须考虑其职称的值元以上,当输入工资时,必须考虑其职称的值以确定其输入的合理性。以确定其输入的合理性。3.3.静态关系约束静态关系约束在一个关系中的各个元组之间或若干关系之间常常存在在一个关系中的各个元组
6、之间或若干关系之间常常存在着各种联系和约束。着各种联系和约束。(1)(1)实体完整性约束实体完整性约束(2)(2)参照完整性约束参照完整性约束(3)(3)函数依赖约束函数依赖约束(4)(4)统计约束:某个字段值与一个关系多个元组统计值统计约束:某个字段值与一个关系多个元组统计值之间的约束关系。之间的约束关系。4.4.动态列级约束动态列级约束动态列级约束是修改列定义或列值时应满足的约束条件,动态列级约束是修改列定义或列值时应满足的约束条件,包括下面的几方面。包括下面的几方面。(1)(1)修改列定义时的约束修改列定义时的约束(2)(2)修改列值时的约束修改列值时的约束5.5.动态元组约束动态元组约
7、束动态元组约束是指修改某个元组的值时需要参动态元组约束是指修改某个元组的值时需要参考其旧值,并且在新旧值之间需要满足某种考其旧值,并且在新旧值之间需要满足某种约束条件。约束条件。例如:工资调整时的规则是在原工资基础上增例如:工资调整时的规则是在原工资基础上增加原工资的加原工资的10%10%。6.6.动态状态约束动态状态约束动态关系约束是加在关系变化前后状态上的限动态关系约束是加在关系变化前后状态上的限制条件。动态关系在实现时系统开销较大。制条件。动态关系在实现时系统开销较大。6.2.2 完整性控制完整性控制 DBMSDBMS的完整性控制机制有三方面的功能的完整性控制机制有三方面的功能:(1)(
8、1)定义功能,即提供定义完整性约束条件的定义功能,即提供定义完整性约束条件的机制。机制。(2)(2)检查功能,即检查用户发出的操作请求是检查功能,即检查用户发出的操作请求是否违背了完整性约束条件。否违背了完整性约束条件。(3)(3)如果发现用户的操作请求使数据违背了完如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数整性约束条件,则采取一定的动作来保证数据的完整性。据的完整性。根据对检查是否违背控制机制时机可以将约束根据对检查是否违背控制机制时机可以将约束分为两类:分为两类:(1)(1)立即执行约束:这类约束是指在招待用户事立即执行约束:这类约束是指在招待用户事务时,对
9、事务中的某一更新语句招待完毕后,务时,对事务中的某一更新语句招待完毕后,马上对此数据进行完整性检查。马上对此数据进行完整性检查。(2)(2)延迟执行约束:这类约束是指在整个事务执延迟执行约束:这类约束是指在整个事务执行完毕后才进行完整性检查。行完毕后才进行完整性检查。6.3 并发控制并发控制 数据库是一个共享资源,可以供多个用户使用。数据库是一个共享资源,可以供多个用户使用。允许多个用户同时使用的数据库系统称为多允许多个用户同时使用的数据库系统称为多用户数据库系统。用户数据库系统。在多用户共享系统中,如果多个事务同时对同在多用户共享系统中,如果多个事务同时对同一数据进行操作称为并发操作。一数据
10、进行操作称为并发操作。若对并发操作不加控制就可能会存取和存储不若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。据库管理系统必须提供并发控制机制。6.3.1 并发控制概述并发控制概述1.事务事务所谓事务是用户定义的一个数据库操作序列,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不这些操作要么全做,要么全不做,是一个不可分割的工作单位。可分割的工作单位。事务是并发控制的基本单位,保证事务事务是并发控制的基本单位,保证事务ACID特特性是事务处理的重要任务,而事务性是
11、事务处理的重要任务,而事务ACID特性特性可能遭到破坏的原因之一是多个事务对数据可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。库的并发操作造成的。2.事务的事务的ACID特性特性原子性原子性(Atomicity):原子性是指事务处理是有或:原子性是指事务处理是有或无的命题,一旦启动,整个事务或者提交,或者无的命题,一旦启动,整个事务或者提交,或者放弃。放弃。一致性一致性(Consistency):一致性是指事务处理的所:一致性是指事务处理的所有进程都不能违背规定的商务规则。而这些商务有进程都不能违背规定的商务规则。而这些商务规则规定了数据的一致性。规则规定了数据的一致性。隔离性隔离
12、性(Isolation):隔离性是指多个事务处理之间:隔离性是指多个事务处理之间的并发控制,即保证各个事务之间不互相影响。的并发控制,即保证各个事务之间不互相影响。持久性持久性(Durability):持久性是指一旦完成了事务:持久性是指一旦完成了事务处理,事务处理的结果就应该得到维持。处理,事务处理的结果就应该得到维持。3.并发操作带来的数据的不一致性问题并发操作带来的数据的不一致性问题 例如,考虑飞机订票系统中的一个活动序列:例如,考虑飞机订票系统中的一个活动序列:甲售票点(甲事务)读出某航班的机票余额甲售票点(甲事务)读出某航班的机票余额A,设,设A=16;乙售票点(乙事务)读出同一航班
13、的机票余额乙售票点(乙事务)读出同一航班的机票余额A,也为也为16;甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额AA-1,所以,所以A为为15,把,把A写回数据库;写回数据库;乙售票点也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额AA-1,所以,所以A为为15,把,把A写回数据库;写回数据库;简单分析结果可知,订票系统分明卖出了两张机票,简单分析结果可知,订票系统分明卖出了两张机票,数据库中的机票余额只减少数据库中的机票余额只减少1。并发操作带来的不一致性包括三类:并发操作带来的不一致性包括三类:(1)(1)丢失修改(丢失修改(Lost UpdataLost Upda
14、ta):):两个事务两个事务T1和和T2读入同一数据并修改,读入同一数据并修改,T2提交的结果破坏提交的结果破坏了了T1提交的结果,导致提交的结果,导致T1的修改被丢失的修改被丢失 (2)(2)不可重复读(不可重复读(Non-Repeatable ReadNon-Repeatable Read):):事事务务T1读取数据后,实务读取数据后,实务T2执行更新操作,使执行更新操作,使T1无法再现前一次读取结果无法再现前一次读取结果 (3)(3)读读“脏脏”数据(数据(Dirty ReadDirty Read):):事务事务T1修改修改某一数据,将其写回磁盘,事务某一数据,将其写回磁盘,事务T2读取
15、同一读取同一数据后,数据后,T1由于某种原因被撤消,这时由于某种原因被撤消,这时T1已已修改过的数据恢复原值,修改过的数据恢复原值,T2读到的数据就与读到的数据就与数据库中的数据不一致,则数据库中的数据不一致,则T2读到的数据为读到的数据为“脏脏”数据,即不正确数据。数据,即不正确数据。封锁是实现并发控制的一个非常重要的技术。封锁是实现并发控制的一个非常重要的技术。所谓封锁就是事务所谓封锁就是事务T在对某个数据对象例如表、在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其记录等操作之前,先向系统发出请求,对其加锁。加锁后事务加锁。加锁后事务T就对该数据对象有了一定就对该数据对象有了
16、一定的控制,在事务的控制,在事务T释放它的锁之前,其他的事释放它的锁之前,其他的事务不能更新此数据对象。务不能更新此数据对象。6.3.2 6.3.2 封锁和封锁协议封锁和封锁协议基本的封锁类型有两种:排它锁(基本的封锁类型有两种:排它锁(X锁)和共享锁)和共享锁(锁(S锁)锁)(1)(1)排它锁排它锁:若事务若事务T T对数据对象对数据对象A A加加X X锁,则只允锁,则只允许许T T读取和修改读取和修改A A,其他任何事务都不能再对,其他任何事务都不能再对A A加任何锁,直到加任何锁,直到T T释放释放A A上的锁。这就保证了上的锁。这就保证了其他事务在其他事务在T T释放释放A A上的锁之
17、前不能再读取和上的锁之前不能再读取和修改修改A A。(2)(2)共享锁共享锁:若事务若事务T T对数据对象对数据对象A A加加S S锁,则事务锁,则事务T T可以读取可以读取A A但不能修改但不能修改A A,其他事务只能再对,其他事务只能再对A A加加S S锁,而不能加锁,而不能加X X锁,直到锁,直到T T释放释放A A上的上的S S锁。锁。这就保证了其他事务可以读这就保证了其他事务可以读A A,但在,但在T T释放释放A A上上的的S S锁之前不能对锁之前不能对A A做任何修改。做任何修改。T2T1XSXSNNYNYYYYYY:相容请求:相容请求N:不相容请求:不相容请求封锁类型的相容矩阵
18、封锁类型的相容矩阵在运用在运用X锁和锁和S锁两种基本封锁对数据对象加锁,锁两种基本封锁对数据对象加锁,还需要约定一些规则,例如何时申请还需要约定一些规则,例如何时申请X锁或锁或S锁、封锁时间、何时释放等。称这些规则为锁、封锁时间、何时释放等。称这些规则为封锁协议(封锁协议(Locking Protocol)。)。对封锁方式规定不同的规则,就形成了各种不对封锁方式规定不同的规则,就形成了各种不同的封锁协议。同的封锁协议。(1)(1)一级封锁协议:事务一级封锁协议:事务T T在修改数据在修改数据R R之前必之前必须先须先对其加对其加X X锁,直到事务结束才释放。事务锁,直到事务结束才释放。事务结束
19、包括正常结束(结束包括正常结束(COMMITCOMMIT)和非正常结束)和非正常结束(ROLLBACKROLLBACK)。)。一级封锁协议可防止丢失修改,并保证事务一级封锁协议可防止丢失修改,并保证事务T T是是可恢复的。可恢复的。(2)(2)二级封锁协议:一级封锁协议加上事务二级封锁协议:一级封锁协议加上事务T T在在读取数据读取数据R R之前必须先对其加之前必须先对其加S S锁,读完后即锁,读完后即可释放可释放S S锁。锁。二级封锁协议除防止了丢失修改,还可以进一二级封锁协议除防止了丢失修改,还可以进一步防止读步防止读“脏脏”数据。数据。(3)(3)三级封锁协议:一级封锁协议加上事务三级封
20、锁协议:一级封锁协议加上事务T T在在读取数据读取数据R R之前必须先对其加之前必须先对其加S S锁,直到事务锁,直到事务结束才释放。结束才释放。三级封锁协议除防止了丢失修改和不读三级封锁协议除防止了丢失修改和不读“脏脏”数据外,还进一步防止了不可重复读。数据外,还进一步防止了不可重复读。X X锁锁S S锁锁一致性保证一致性保证操作操作结束结束释放释放事务事务结束结束释放释放操作操作结束结束释放释放事务事务结束结束释放释放不丢不丢失失修改修改不读不读“脏脏”数据数据可重可重复复读读一级一级封锁封锁协议协议二级二级封锁封锁协议协议三级三级封锁封锁协议协议不同级别的封锁协议不同级别的封锁协议 1.
21、1.活锁活锁 如果事务如果事务T T1 1封锁了数据封锁了数据R R,事务,事务T T2 2又请求封锁又请求封锁R R,于是于是T T2 2等待。等待。T T3 3也请求封锁也请求封锁R R,当,当T T1 1释放了释放了R R上上的封锁之后系统首先批准了的封锁之后系统首先批准了T T3 3的请求,的请求,T T2 2仍然仍然等待。然后等待。然后T T4 4又请求封锁又请求封锁R R,当,当T T3 3释放了释放了R R上的上的封锁之后系统又批准了封锁之后系统又批准了T T4 4的请求的请求T T2 2有可能有可能永远等待,这就是活锁的情形永远等待,这就是活锁的情形。避免活锁的简单方法是采用先
22、来先服务的策略,避免活锁的简单方法是采用先来先服务的策略,当多个事务请求封锁同一数据对象时,封锁当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中数据对象上的锁一旦释放就批准申请队列中第第1个事务获得锁。个事务获得锁。6.3.3 活锁和死锁活锁和死锁 2.2.死锁死锁 如果事务如果事务T T1 1封锁了数据封锁了数据R R1 1,T T2 2封锁了数据封锁了数据R R2 2,然,然后后T1T1又请求封锁又请求封锁R R2 2,因,因T T2 2已封锁了已封锁了R R2 2,于是,于是T T1
23、1等待等待T T2 2释放释放R R2 2上的锁。接着上的锁。接着T T2 2又申请封锁又申请封锁R R1 1,因因T T1 1已封锁了已封锁了R R1 1,T T2 2也只能等待也只能等待T T1 1释放释放R R1 1上的上的锁。这样就出现了锁。这样就出现了T T1 1在等待,而在等待,而T T2 2又在等待又在等待T T1 1的局面,的局面,T T1 1和和T T2 2两个事务永远不能结束,形成两个事务永远不能结束,形成死锁。死锁。在数据库中解决死锁问题主要有两类方法,一在数据库中解决死锁问题主要有两类方法,一类方法是采取一定措施来预防死锁的发生,类方法是采取一定措施来预防死锁的发生,另
24、一类方法是允许发生死锁,采用一定手段另一类方法是允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之。定期诊断系统中有无死锁,若有则解除之。(1)(1)死锁的预防死锁的预防 一次封锁法一次封锁法:要求每个事务必须一次将所有要使:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。用的数据全部加锁,否则就不能继续执行。顺序封锁法:顺序封锁法:预先对数据对象规定一个封锁顺序,预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。所有事务都按这个顺序实行封锁。(2)(2)死锁的诊断与解除死锁的诊断与解除 超时法:超时法:如果一个事务的等待时间超过了规定的如果一个事务
展开阅读全文