数据库保护及SQLServer的数据库保护技术.ppt

上传人:wuy****n92 文档编号:80485220 上传时间:2023-03-23 格式:PPT 页数:75 大小:1.07MB
返回 下载 相关 举报
数据库保护及SQLServer的数据库保护技术.ppt_第1页
第1页 / 共75页
数据库保护及SQLServer的数据库保护技术.ppt_第2页
第2页 / 共75页
点击查看更多>>
资源描述

《数据库保护及SQLServer的数据库保护技术.ppt》由会员分享,可在线阅读,更多相关《数据库保护及SQLServer的数据库保护技术.ppt(75页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第8 8章章 数据库保护及数据库保护及SQL ServerSQL Server的数据库保护技术的数据库保护技术8.3 8.3 数据库的并发控制及数据库的并发控制及SQL ServerSQL Server的并发控制机制的并发控制机制8.3.1 8.3.1 事务及并发控制的基本概念事务及并发控制的基本概念事务是多用户系统的一个数据操作基本单元。允许事务是多用户系统的一个数据操作基本单元。允许多个事务并行地执行多个事务并行地执行,对并发执行的事务的控制也就对并发执行的事务的控制也就称为并发控制。称为并发控制。1.1.事务的概念事务的概念所谓事务是用户定义的一个数据库操作序列,这些操作所谓事务是用户

2、定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。要么全做要么全不做,是一个不可分割的工作单位。2.2.并发控制并发控制一次材料的入库:一次材料的入库:在入库日记文件中写入材料入库记录在入库日记文件中写入材料入库记录,修改库存文件,更新当前库存量修改库存文件,更新当前库存量一次产品的销售一次产品的销售:在销售文件中写入销售记录,在销售文件中写入销售记录,修改成品库存文件,更新成品库存量修改成品库存文件,更新成品库存量银行的转账业务:银行的转账业务:从从A账户提款,插入取款记录,修改余额账户提款,插入取款记录,修改余额 存入存入B账户。插入存款记录,修改余额账户。插

3、入存款记录,修改余额事务反映客观世界中以完整单位提交的一项工作事务反映客观世界中以完整单位提交的一项工作.是现实是现实世界定义的一个逻辑工作单位。世界定义的一个逻辑工作单位。事务处理是保证数据库事务处理是保证数据库一致性状态一致性状态的重的重要方法。数据库的一致性状态是指所有数据要方法。数据库的一致性状态是指所有数据必须满足数据完整性约束条件的状态。必须满足数据完整性约束条件的状态。最常见的事务处理是由二次或多次对最常见的事务处理是由二次或多次对数据库的操作完成的。数据库的操作完成的。(2 2)事务的特性事务的特性原子性原子性事务所有操作必须完成,否则事务将被撤消事务所有操作必须完成,否则事务

4、将被撤消一致性一致性数据库必须保持一致性状态,当一个事务完成之后,数据库必须保持一致性状态,当一个事务完成之后,数据库必须达到一个新的一致性状态。数据库必须达到一个新的一致性状态。隔离性隔离性当一个事务执行期间,所使用的数据,不能被第二个当一个事务执行期间,所使用的数据,不能被第二个事务再使用,直到第一个事务结束为止。事务再使用,直到第一个事务结束为止。持续性持续性事务被提交后,不管系统发生什么故障,该事务对数事务被提交后,不管系统发生什么故障,该事务对数据库的所有更新操作都永久保留在数据库中,不会丢据库的所有更新操作都永久保留在数据库中,不会丢失。失。(1)丢失修改丢失修改丢失更新的实际例子

5、丢失更新的实际例子:库存处理库存处理T1:(进货入库处理进货入库处理)进库产品进库产品400件件库存量库存量=库存量库存量+400T2:(销售出库处理销售出库处理)销售产品销售产品40件件库存量库存量=库存量库存量-402个事务顺序处理的过程个事务顺序处理的过程顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量602T1计算计算:在库数量在库数量=在库数量在库数量+4003T1写在库数量写在库数量4604T2读在库数量读在库数量4605T2计算计算:在库数量在库数量=在库数量在库数量-406T2写在库数量写在库数量4202个事务并发执行丢失修改的过程个事务并发执行丢失修改的过程

6、顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量602T2读出在库数量读出在库数量603T1计算计算:在库数量在库数量=在库数量在库数量+4004T2计算计算:在库数量在库数量=在库数量在库数量-405T1写在库数量写在库数量460(丢失丢失)6T2写在库数量写在库数量20(2)不一致性分析不一致性分析事例:事例:T1:分析数据:分析数据T2:与此同时,:与此同时,T2修改数据修改数据T1:SELECTSUM(在库数量在库数量)FROM库存库存T2:UPDATE库存库存SET在库数量在库数量=在库数量在库数量+50WHERE产品名称产品名称=B不一致性分析不一致性分析(1)顺

7、序顺序事务事务操作操作值值累加累加1T1读产品读产品A的在库数量的在库数量50502T1读产品读产品B的在库数量的在库数量1001503T2读产品读产品B的在库数量的在库数量1004T2在库数量在库数量=在库数量在库数量*25T2写产品写产品B的在库数量的在库数量2006T1读产品读产品A的在库数量的在库数量50507T1读产品读产品B的在库数量的在库数量200250不一致性分析(不一致性分析(2 2)事例:事例:T1:汇总库存产品的库存量:汇总库存产品的库存量T2:与此同时,:与此同时,T2更新库存中的二种产品更新库存中的二种产品T1:SELECTSUM(在库数量在库数量)FROM库存库存T

8、2:UPDATE库存库存SET在库数量在库数量=在库数量在库数量+50WHERE产品名称产品名称=CUPDATE库存库存SET在库数量在库数量=在库数量在库数量-50WHERE产品名称产品名称=D更新事务的结果更新事务的结果前前后后产品产品在库数量在库数量在库数量在库数量A6060B120120C7012070+50D180130180-50E120120合计合计550550不一致分析(不一致分析(2 2)顺序顺序事务事务操作操作值值累加累加1T1读产品读产品A的在库数量的在库数量60602T1读产品读产品B的在库数量的在库数量1201803T2读产品读产品C的在库数量的在库数量704T2在库

9、数量在库数量=在库数量在库数量+505T2写产品写产品C的在库数量的在库数量1206T1读产品读产品C的在库数量的在库数量120(修改后)(修改后)3007T1读产品读产品D的在库数量的在库数量180(修改前)(修改前)4808T2读产品读产品D的在库数量的在库数量1809T2在库数量在库数量=在库数量在库数量-5010T2写产品写产品D的在库数量的在库数量13011T2COMMIT12T1读产品读产品E的在库数量的在库数量120600(3)读未提交数据(读未提交数据(脏脏数据)数据)2个事务顺序处理的过程个事务顺序处理的过程顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量6

10、02T1计算计算:在库数量在库数量=在库数量在库数量+4003T1写在库数量写在库数量4604T1ROLLBACK605T2读在库数量读在库数量606T2计算计算:在库数量在库数量=在库数量在库数量-407T2写在库数量写在库数量20T2使用使用T1未提交数据可能产生的问题未提交数据可能产生的问题顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量602T1计算计算:在库数量在库数量=在库数量在库数量+4003T1写在库数量写在库数量4604T2读在库数量读在库数量4605T2计算计算:在库数量在库数量=在库数量在库数量-406T1ROLLBACK607T2写在库数量写在库数量4

11、208.3.28.3.2封锁及封锁协议封锁及封锁协议封锁及封锁协议封锁及封锁协议1.1.锁的类型锁的类型 (1)(1)排它锁(排它锁(Exclusive LocksExclusive Locks,简称,简称X X锁)锁)排排它它锁锁也也称称为为独独占占锁锁或或写写锁锁。一一旦旦事事务务T T对对数数据据对对象象 A A 加加上上排排它它锁锁(X X锁锁),允允许许T T读读取取和和修修改改 A A,其其他他任任何何事事务务不不能能再再对对 A A 加任何类型的锁,直到加任何类型的锁,直到 T T 释放释放 A A 上的锁为止。上的锁为止。(2)(2)共享锁(共享锁(Share LocksSha

12、re Locks,简称,简称S S锁)锁)共共享享锁锁又又称称读读锁锁。如如果果事事务务T T对对数数据据对对象象A A加加上上共共享享锁锁(S S 锁锁),允允许许T T读读取取A A,但但不不能能和和修修改改 A A。其其他他事事务务只只能能再再对对 A A 加加S S锁,不能加锁,不能加 X X 锁,直到事务锁,直到事务 T T 释放释放 A A 上的上的 S S 锁为止。锁为止。数据状态:无锁,共享锁数据状态:无锁,共享锁S,排它锁,排它锁X(2)封锁类型的相容性封锁类型的相容性T1T2SXSYESNOXNONONO:不相容的请求:不相容的请求YES:相容的请求:相容的请求如果如果 2

13、个封锁是不相容的,再提出封锁的事务要等待个封锁是不相容的,再提出封锁的事务要等待(1)一级封锁协议一级封锁协议一一级级封封锁锁协协议议是是事事务务T在在修修改改数数据据之之前前必必须须先先对对其其加加X锁锁,直直到事务结束才释放。到事务结束才释放。2.2.封锁协议封锁协议对数据加锁需要一些规则主要涉及时间(申请、持有,释放)对数据加锁需要一些规则主要涉及时间(申请、持有,释放)和锁的类型(和锁的类型(S,X)T1T2X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60X锁锁在库数量(失败)在库数量(失败)等待等待在库数量在库数量=在库数量在库数量+400等待等待写写在库数量在库数量

14、=460等待等待COMMIT等待等待释放释放X锁锁在库数量在库数量X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=460在库数量在库数量=在库数量在库数量-40写写在库数量在库数量=420COMMIT释放释放X锁锁在库数量在库数量(2)二级封锁协议二级封锁协议二二级级封封锁锁协协议议是是:事事务务T对对要要修修改改数数据据必必须须先先加加X锁锁,直直到到事事务务结结束束才才释释放放X锁锁;对对要要读读取取的的数数据据必必须须先先加加S锁锁,读读完完后后即即可可释释放放S锁。锁。T1T2X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60S锁锁在库数量(失败)在库数量(失

15、败)等待等待在库数量在库数量=在库数量在库数量+400等待等待写写在库数量在库数量=460等待等待COMMIT等待等待释放释放X锁锁在库数量在库数量S锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=460释放释放S锁锁在库数量在库数量COMMIT.(3)三级封锁协议三级封锁协议三三级级封封锁锁协协议议是是事事务务T在在读读取取数数据据之之前前必必须须先先对对其其加加S锁锁,在在要要修修改改数数据据之之前前必必须须先先对对其其加加X锁锁,直直到到事事务务结结束束后后才才释释放所有锁。放所有锁。T1T2S锁锁产品产品AS锁锁产品产品B读读A=50读读B=100A+B=150X锁产品锁产品

16、B(失败)(失败)读读A=50等待等待读读B=100等待等待A+B=150等待等待COMMIT等待等待S锁释放锁释放BS锁释放锁释放A等待等待X锁产品锁产品B(成功)(成功)操作操作协议协议修改数据修改数据X锁锁读取数据读取数据S锁锁一致性保证一致性保证一级一级事务结束事务结束不丢失修改不丢失修改二级二级事务结束事务结束读完后读完后不丢失修改不丢失修改不读未提交数据不读未提交数据三级三级事务结束事务结束事务结束事务结束不丢失修改不丢失修改不读未提交数据不读未提交数据一致性分析一致性分析三封锁协议三封锁协议一级封锁协议不能防止不一致性分析据一级封锁协议不能防止不一致性分析据T1T2读读在库数量在

17、库数量=60X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60在库数量在库数量=在库数量在库数量+400写写在库数量在库数量=460读读在库数量在库数量=460二级封锁协议不能防止不一致性分析据二级封锁协议不能防止不一致性分析据T1T2S锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60 释放释放S锁锁在库数量在库数量X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60在库数量在库数量=在库数量在库数量+400写写在库数量在库数量=460COMMIT释放释放X锁锁在库数量在库数量S锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=460释放释放S锁

18、锁在库数量在库数量一级封锁协议不能防止读未提交数据一级封锁协议不能防止读未提交数据T1T2X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60在库数量在库数量=在库数量在库数量+400写写在库数量在库数量=460读读在库数量在库数量=460ROLLBACKCOMMIT释放释放X锁锁在库数量在库数量 8.3.38.3.3封锁出现的问题及解决方法封锁出现的问题及解决方法封锁出现的问题及解决方法封锁出现的问题及解决方法1.1.活锁和死锁活锁和死锁(1)活锁活锁在在多多个个事事务务请请求求对对同同一一数数据据封封锁锁时时,总总是是使使某某一一用用户户等等待待的的情情况况称称为为活活锁锁。(

19、总总是是有有机机会会获获得得锁锁的的事事务务却却永永远远没没得得到锁)到锁)解解决决活活锁锁的的方方法法是是采采用用先先来来先先服服务务的的方方法法,即即对对要要求求封封锁数据的事务排队,使前面的事务先获得数据的封锁权。锁数据的事务排队,使前面的事务先获得数据的封锁权。(2)死锁死锁多多事事务务相相互互等等待待对对方方释释放放封封锁锁,形形成成交交错错等等待待的的僵僵持持局局面面称称为死锁。为死锁。T1T2X锁锁数据数据A(成功成功)X锁锁数据数据B(成功成功)X锁锁数据数据B(失败失败)X锁锁数据数据A(失败失败)等待等待等待等待等待等待等待等待等待等待等待等待.预防死锁通常有两种方法:预防

20、死锁通常有两种方法:1)一一次次封封锁锁法法:要要求求每每个个事事务务必必须须一一次次将将所所有有要要使使用用的的数数据全部加锁,否则该事务不能继续执行。据全部加锁,否则该事务不能继续执行。2)顺顺序序封封锁锁法法:预预先先对对数数据据对对象象规规定定一一个个封封锁锁顺顺序序,所所有有事务都按这个顺序实行封锁。事务都按这个顺序实行封锁。死锁的恢复:死锁的恢复:当死锁出现时,一定要解除它。当死锁出现时,一定要解除它。DBMS周期地测试数据周期地测试数据库是否处于死锁状态库是否处于死锁状态将其中一个处理代价小的事务撤消将其中一个处理代价小的事务撤消,ROLLBACK这个事务这个事务,释放这个事务进

21、行的封锁释放这个事务进行的封锁,使其它使其它事务可能进行下去。(诊断与解除)事务可能进行下去。(诊断与解除)2.2.并发调度的可串行性并发调度的可串行性多多个个事事务务并并发发执执行行的的结结果果与与按按串串行行执执行行的的结结果果相相同同,这这种种调调度度策策略略称称为为可可串串行行化化的的调调度,反之称为不可串行化调度。度,反之称为不可串行化调度。T1T2S锁锁BY=B=2锁释放锁释放BX锁锁AA=Y+1写写A=3锁释放锁释放AS锁锁AX=A=3锁释放锁释放AX锁锁BB=X+1写写B=4锁释放锁释放B串行调度串行调度T1T2T1T2S锁锁AX=A=2锁释放锁释放AX锁锁BB=X+1写写B=

22、3锁释放锁释放BS锁锁BY=B=3锁释放锁释放BX锁锁AA=Y+1写写A=4锁释放锁释放A串行调度串行调度T2T1T1T2S锁锁BY=B=2S锁锁AX=A=2锁释放锁释放B锁释放锁释放AX锁锁AA=Y+1写写A=3X锁锁BB=X+1写写B=3锁释放锁释放A锁释放锁释放B不可串行化的调度不可串行化的调度T1T2S锁锁BY=B=2锁释放锁释放BX锁锁AS锁锁AA=Y+1wait写写A=3wait锁释放锁释放AwaitS锁锁AX=A=3锁释放锁释放AX锁锁BB=X+1写写B=4可串行化的调度可串行化的调度T1读读B,A=B+1回写回写A,T2读读AB=A+1回写回写B,设初始值:设初始值:A=B=2

23、3.3.两段锁协议两段锁协议1)1)在在对对任任何何数数据据进进行行读读、写写操操作作之之前前,首首先先要要申申请请并并获获得得对对该数据的封锁。该数据的封锁。2)2)在在释放释放一个封锁之后,事务不再申请并获得任何其他封锁一个封锁之后,事务不再申请并获得任何其他封锁事务分为两个阶段:事务分为两个阶段:获得封锁(扩展阶段),申请获得锁,不释放锁。获得封锁(扩展阶段),申请获得锁,不释放锁。释放封锁(收缩阶段),释放封锁,不再申请任何封锁。释放封锁(收缩阶段),释放封锁,不再申请任何封锁。SlockAXlockBUnlockAUnlockB扩展阶段扩展阶段收缩阶段收缩阶段并发执行的所有事务均遵守

24、两段封锁协议,则对并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略是可串行化的这些事务的任何并发调度策略是可串行化的4.4.封锁的粒度封锁的粒度封锁粒度(封锁粒度(Granularity)是指封锁对象的大小。)是指封锁对象的大小。逻辑单元:属性值、属性值的集合、元组、关系、数据库逻辑单元:属性值、属性值的集合、元组、关系、数据库物理单元:页,块物理单元:页,块封锁粒度与系统的并发度和并发控制的开销密切相关。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越大,并发度越低,系统开

25、销也越小。封锁的粒度越大,并发度越低,系统开销也越小。(1)多粒度封锁)多粒度封锁多粒度树多粒度树数据库数据库关系关系R1关系关系Rn元组元组元组元组元组元组元组元组根节点根节点子节点子节点允许每个节点独立加锁允许每个节点独立加锁后裔节点被加以同样类后裔节点被加以同样类型锁型锁显式封锁:直接加到数显式封锁:直接加到数据对象上的封锁据对象上的封锁隐式封锁:上级对象加隐式封锁:上级对象加锁而使该数据对象加锁锁而使该数据对象加锁数据对象加锁,系统要数据对象加锁,系统要进行三种检查进行三种检查(2)意向锁)意向锁意向锁含义:如果对一个节点加意向锁,则说明下层节意向锁含义:如果对一个节点加意向锁,则说明

26、下层节点正在被加锁;对任一节点加锁时,必须先对它的上层节点正在被加锁;对任一节点加锁时,必须先对它的上层节点加意向锁。点加意向锁。数据库数据库关系关系R1关系关系Rn元组元组元组元组元组元组元组元组加锁加锁加意向锁加意向锁1IS(IntentShareLock)意向共享锁意向共享锁如果对一个数据对象加如果对一个数据对象加IS锁,表示它的后裔节点意向加锁,表示它的后裔节点意向加S锁锁2IX(IntentExclusiveLock)意向排它锁意向排它锁如果对一个数据对象加如果对一个数据对象加IX锁,表示它的后裔节点意向加锁,表示它的后裔节点意向加X锁锁3SIX(ShareIntentExclusi

27、veLock)共享意向排它锁共享意向排它锁如果对一个数据对象加如果对一个数据对象加SIX锁,表示对它加锁,表示对它加S锁,锁,再加再加IX锁锁1.SQL Server1.SQL Server的事务类型的事务类型SQLServer的事务分为两种类型:的事务分为两种类型:系系统统提提供供的的事事务务是是指指在在执执行行某某些些语语句句时时,一一条条语语句句就就是是一一个个事事务务,它它的的数数据据对对象象可可能能是是一一个个或或多多个个表表(视视图图),可可能能是是表表(视图)中的一行数据或多行数据;(视图)中的一行数据或多行数据;用用户户定定义义的的事事务务以以BEGIN TRANSACTION

28、TRANSACTION语语语语句句句句开开开开始始始始,以以以以COMMITCOMMIT(事务提交)或事务提交)或事务提交)或事务提交)或ROLLBAKROLLBAK(回滚)结束。回滚)结束。回滚)结束。回滚)结束。8.3.4SQLServer的并发控制机制的并发控制机制2 2 锁的级别锁的级别3 3 锁的类型锁的类型完完整整性性约约束束条条件件针针对对的的对对象象有有:关关系系、元元组组、列列。根根据据约约束束对对象可分为:象可分为:表级约束:若干元组间、关系中以及关系之间联系的约束表级约束:若干元组间、关系中以及关系之间联系的约束某门课的成绩优秀比例不能超过某门课的成绩优秀比例不能超过20

29、%先修课必须是有效值先修课必须是有效值外码必须是有效值外码必须是有效值8.2 8.2 8.2 8.2 数据库完整性及数据库完整性及数据库完整性及数据库完整性及SQL ServerSQL ServerSQL ServerSQL Server的完整性控制的完整性控制的完整性控制的完整性控制数据完整性是指数据的正确性和相容性,为保证数据数据完整性是指数据的正确性和相容性,为保证数据库的完整性,库的完整性,DBMS必须提供定义检查和控制数据完整性的必须提供定义检查和控制数据完整性的机制,并把用户定义的数据库完整性约束条件作为模式的机制,并把用户定义的数据库完整性约束条件作为模式的一部分存入数据库中。一

30、部分存入数据库中。8.2.1 8.2.1 8.2.1 8.2.1 完整性约束条件及完整性控制完整性约束条件及完整性控制完整性约束条件及完整性控制完整性约束条件及完整性控制元组级约束:元组中的字段组和字段间联系的约束元组级约束:元组中的字段组和字段间联系的约束对于学生表中的学号前对于学生表中的学号前4位与入学年份中的年份一致位与入学年份中的年份一致列级约束:取值范围、精度、排序等而制定的约束条件。列级约束:取值范围、精度、排序等而制定的约束条件。对于成绩表中的成绩应大于等于对于成绩表中的成绩应大于等于0,小于等于,小于等于100以上三类对象可以是静态的,也可以是动态的。以上三类对象可以是静态的,

31、也可以是动态的。静态约束:静态约束:每一确定状态时数据库对象影满足的约束确定,数据库状态稳每一确定状态时数据库对象影满足的约束确定,数据库状态稳定时的约束,是重要的一类完整性约束。定时的约束,是重要的一类完整性约束。动态约束:动态约束:数据处理上的改变以及数据库从一种状态转变成另一种状态时,数据处理上的改变以及数据库从一种状态转变成另一种状态时,新旧值之间所应满足的约束条件。新旧值之间所应满足的约束条件。1.1.静态级约束静态级约束(1)(1)静态列级约束静态列级约束1)1)对数据类型的约束。对数据类型的约束。2)2)对数据格式的约束。对数据格式的约束。3)3)对取值范围的约束。对取值范围的约

32、束。4)4)对空值的约束。对空值的约束。5)5)其他约束(默认,唯一,检查)其他约束(默认,唯一,检查)(2)(2)静态元组级约束静态元组级约束静静态态元元组组级级约约束束是是对对元元组组的的属属性性组组值值的的限限定定,及及规规定定了了属属性性之间的值或结构的相互制约关联。之间的值或结构的相互制约关联。(3)(3)静态表级约束静态表级约束1)1)实体完整性约束。实体完整性约束。2)2)参照完整性约束。参照完整性约束。3)3)函数依赖约束。函数依赖约束。满足满足3NF3NF但不满足但不满足BCNFBCNF的关系,例如:的关系,例如:学生教师课程(学生教师课程(学生,课程学生,课程,教师),教师

33、)学学生生,课课程程教教师师,教教师师课课程程,将将学学生生,课课程程作作为为主主码码,还还需表示出教师需表示出教师课程这个函数依赖课程这个函数依赖createtable课表课表(学号学号char(9),课程名课程名char(10),教师名教师名char(6)primarykey(学号学号,课程名课程名)CREATETRIGGERT_SON课表课表FORINSERTASDECLAREt_namechar(6),S_namechar(10)SELECTT_name=教师名教师名,S_name=课程名课程名FROMinsertedIFEXISTS(SELECT*FROM课表课表WHERE教师名教师

34、名=T_nameAND课程名课程名!=S_name)BEGINPRINT教师授课不唯一,教师授课不唯一,ROLLBACKTRANSACTIONEND2.2.动态级约束动态级约束(1)(1)动态列级约束动态列级约束1)1)修改列定义时的约束。修改列定义时的约束。例如;容许空值改为不容许空值,有空值则禁止修改例如;容许空值改为不容许空值,有空值则禁止修改 列长度由列长度由1010改为改为8 8,该列目前存在超过,该列目前存在超过8 8个长度则禁止修改个长度则禁止修改 2)2)修改列值时的约束。修改列值时的约束。(2)(2)动态元组级约束动态元组级约束动动态态元元组组级级约约束束是是指指修修改改元元

35、组组的的值值时时元元组组中中字字段段组组或或字字段段间间需要满足某种约束。需要满足某种约束。(3)动态表级约束动态表级约束动态表级约束是加在关系变化前后状态上的限制条件。动态表级约束是加在关系变化前后状态上的限制条件。3.3.完整性控制机制的功能及执行约束完整性控制机制的功能及执行约束(1)(1)完整性控制机制应具有的功能完整性控制机制应具有的功能1)1)定义完整性功能,定义完整性功能,提提供供定定义义完完整整性性约约束束条条件件的的机机制制。(规规则则、默默认认、约约束束、触触发发器、事务)器、事务)2)2)检查完整性功能,检查完整性功能,检查用户发出的操作请求,看其是否违背了完整性约束条件

36、。检查用户发出的操作请求,看其是否违背了完整性约束条件。3)3)控制完整性功能,控制完整性功能,监监视视数数据据操操作作的的整整个个过过程程,如如果果发发现现有有违违背背了了完完整整性性约约束束条条件件的情况,则采取一定的动作来保证数据的完整性。的情况,则采取一定的动作来保证数据的完整性。(2)立即执行约束和延迟执行约束立即执行约束和延迟执行约束立即执行约束立即执行约束有有关关数数据据操操作作语语句句执执行行完完后后立立即即进进行行完完整整性性检检查查为为立立即即执执行行约束(触发器)约束(触发器)延迟执行约束延迟执行约束在整个事务执行结束后再进行完整性检查为延迟执行约束在整个事务执行结束后再

37、进行完整性检查为延迟执行约束。(事务)(事务)4.4.实现参照完整性要考虑的几个问题实现参照完整性要考虑的几个问题(1)(1)外码能够接受空值的问题外码能够接受空值的问题(2)(2)在被参照关系中删除元组的问题在被参照关系中删除元组的问题1)级联删除)级联删除学号学号姓名姓名.200009001葛文卿葛文卿.200104019郑秀莉郑秀莉.20020300l刘成锴刘成锴.200206001李涛李涛.200203002沈香娜沈香娜.200206002李涛李涛.200203003肖一竹肖一竹.学号学号课程号课程号成绩成绩200203001C80198200203002C80470200206001

38、C80185200203001C80299200206002C80382将参照关系中所有外码值与被参照关系中要删除元组主码值将参照关系中所有外码值与被参照关系中要删除元组主码值相同的元组一起删除相同的元组一起删除主码:学号(被参照关系)主码:学号(被参照关系)外码:学号外码:学号(参照关系)(参照关系)2)受限删除受限删除仅当参照关系中仅当参照关系中没有没有任何元组的外码值与被参照关系中要删任何元组的外码值与被参照关系中要删除元组主码值相同时,才执行删除除元组主码值相同时,才执行删除学号学号姓名姓名.200009001葛文卿葛文卿.200104019郑秀莉郑秀莉.20020300l刘成锴刘成锴

39、.200206001李涛李涛.200203002沈香娜沈香娜.200206002李涛李涛.200203003肖一竹肖一竹.主码:学号(被参照关系)主码:学号(被参照关系)学号学号课程号课程号成绩成绩200203001C80198200203002C80470200206001C80185200203001C80299200206002C80382外码:学号外码:学号(参照关系)(参照关系)3)置空值删除(置空值删除(NULLIFIES)市场开发部03销售部02工程部01部门名称部门号财务部04魏明1007李一宁1006徐建1005何建东1004张东名1003李清1002王红1001姓名职工号0

40、4010201部门号040303NULLNULL将参照关系中相应元组的外码值置为空值将参照关系中相应元组的外码值置为空值外码:部门号外码:部门号(参照关系)(参照关系)主码:部门号(被参照关系)主码:部门号(被参照关系)(3)在参照关系中插入元组时的问题在参照关系中插入元组时的问题1)受限插入。受限插入。市场开发部03销售部02工程部01部门名称部门号财务部04外码:部门号外码:部门号(参照关系)(参照关系)主码:部门号(被参照关系)主码:部门号(被参照关系)职工号 姓名部门号1001王红011002李清021003张东名 011004何建东 041005白明011006孙明05当被参照关系存

41、在相应的远祖,其主码值与插入关系远祖外当被参照关系存在相应的远祖,其主码值与插入关系远祖外码值相同时,系统才执行插入操作,否则拒绝此操作码值相同时,系统才执行插入操作,否则拒绝此操作2)递归插入递归插入市场开发部03销售部02工程部01部门名称部门号财务部04外码:部门号外码:部门号(参照关系)(参照关系)主码:部门号(被参照关系)主码:部门号(被参照关系)职工号 姓名部门号1001王红011002李清021003张东名 011004何建东 041005白明011006孙明0505在被参照关系中插入插入相应远祖,其主码值等于参照关系在被参照关系中插入插入相应远祖,其主码值等于参照关系插入元组的

42、外码值,然后向参照关系插入元组插入元组的外码值,然后向参照关系插入元组(4)修改关系的主码问题修改关系的主码问题1)不不允允许许修修改改主主码码。如如果果需需要要修修改改主主码码值值,只只能能先先删删除除该该元元组,然后再把具有新主码值的元组插入到关系中。组,然后再把具有新主码值的元组插入到关系中。2)允允许许修修改改主主码码。允允许许修修改改关关系系主主码码,但但必必须须保保证证主主码码的的惟惟一性和非空,否则拒绝修改。一性和非空,否则拒绝修改。(5)修改表是被参照关系的问题。修改表是被参照关系的问题。1)级级联联修修改改。如如果果要要修修改改被被参参照照关关系系中中的的某某个个元元组组的的

43、主主码码值值,则参照关系中相应的外码值也作相应的修改。则参照关系中相应的外码值也作相应的修改。市场开发部03销售部02工程部01部门名称部门号财务部04外码:部门号外码:部门号(参照关系)(参照关系)主码:部门号(被参照关系)主码:部门号(被参照关系)职工号 姓名部门号1001王红011002李清021003张东名 011004何建东 040909092)拒拒绝绝修修改改。如如果果参参照照关关系系中中,有有外外码码值值与与被被参参照照关关系系中中要要修改的主码值相同的元组,则拒绝修改。修改的主码值相同的元组,则拒绝修改。市场开发部03销售部02工程部01部门名称部门号财务部04外码:部门号外码

44、:部门号(参照关系)(参照关系)主码:部门号(被参照关系)主码:部门号(被参照关系)职工号 姓名部门号1001王红011002李清021003张东名 011004何建东 04093)置置空空值值修修改改。修修改改被被参参照照关关系系的的元元组组,并并将将参参照照关关系系中中相相应元组的外码值置空值。应元组的外码值置空值。市场开发部03销售部02工程部01部门名称部门号财务部04外码:部门号外码:部门号(参照关系)(参照关系)主码:部门号(被参照关系)主码:部门号(被参照关系)职工号 姓名部门号1001王红011002李清021003张东名 011004何建东 0409NULLNULL1.1.1

45、.1.事务内部的故障事务内部的故障事务内部的故障事务内部的故障2.2.2.2.系统故障系统故障系统故障系统故障3.3.3.3.介质故障介质故障介质故障介质故障4.4.计算机病毒计算机病毒5.5.用户操作错误用户操作错误8.48.4数据库恢复技术与数据库恢复技术与数据库恢复技术与数据库恢复技术与SQLServerSQLServer的数据恢复机制的数据恢复机制的数据恢复机制的数据恢复机制 8.4.18.4.1故障的种类故障的种类故障的种类故障的种类 1.1.数据转储数据转储(1)(1)静态转储和动态转储静态转储和动态转储1)1)静静态态转转储储:进进行行的的转转储储操操作作的的过过程程中中,系系统

46、统不不运运行行其其他他事事务,专门进行数据转储工作。务,专门进行数据转储工作。2)2)动动态态转转储储:在在转转储储期期间间,允允许许其其他他事事务务对对数数据据库库进进行行存存取取或修改操作。也就是说,转储和用户事务并发执行。或修改操作。也就是说,转储和用户事务并发执行。(2)(2)海量转储和增量转储海量转储和增量转储1)1)海量转储:海量转储:指每次转储全部数据库。指每次转储全部数据库。2)2)2)2)增量转储:增量转储:指每次只转储上一次更新过的数据。指每次只转储上一次更新过的数据。8.4.2数据恢复的实现技术数据恢复的实现技术2 2 登记日志文件登记日志文件日志文件是用来记录对数据库更

47、新的文件日志文件是用来记录对数据库更新的文件日志文件主要用于数据恢复日志文件主要用于数据恢复登记日志文件严格按并发事务执行的时间顺序登记日志文件严格按并发事务执行的时间顺序先写日志文件,后写数据库先写日志文件,后写数据库8.4.3 8.4.3 数据库恢复策略数据库恢复策略1事务故障恢复事务故障恢复事事务务T由由于于故故障障,没没有有运运行行到到正正常常终终止止点点被被撤撤消消。所所以对事务以对事务T应做应做UNDO撤消处理,撤消处理,从日志文件尾反向搜索事务从日志文件尾反向搜索事务T的所有更新,做它的逆向的所有更新,做它的逆向操作(插入操作(插入/删除,删除删除,删除/插入,修改后插入,修改后

48、/修改前)。修改前)。故障点故障点T检查点检查点检查点检查点系统发生故障时,已经提交的事务没写进数据库,仅保留在系统发生故障时,已经提交的事务没写进数据库,仅保留在内存缓冲区内。造成数据库不一致状态。内存缓冲区内。造成数据库不一致状态。2系统故障恢复系统故障恢复故障故障T2T1检查点检查点恢复的步骤:恢复的步骤:1)根据日志文件建立重做队列和撤消队列。从日志文件头搜根据日志文件建立重做队列和撤消队列。从日志文件头搜索,找出在故障前已经提交的事务,记入索,找出在故障前已经提交的事务,记入REDO重做队列。重做队列。找出故障发生时没有完成的事务,记入找出故障发生时没有完成的事务,记入UNDO撤消队

49、列。撤消队列。2)根据根据2个队列做个队列做REDO和和UNDO处理处理故障故障检查点检查点T1T2T3T4T5T1:不必恢复T2:REDOT3:UNDOT4:REDOT5:UNDO3 3 介质故障和病毒破坏的恢复步骤:介质故障和病毒破坏的恢复步骤:1)重装后援副本重装后援副本2)故障点开始,反向搜索日志文件,建立故障点开始,反向搜索日志文件,建立REDO队列队列3)正向扫描日志文件,根据正向扫描日志文件,根据REDO队列的记录,重新实施队列的记录,重新实施对数据库的更新操作。对数据库的更新操作。在发生介质故障或遭受到病毒破坏时,磁盘上的物理数在发生介质故障或遭受到病毒破坏时,磁盘上的物理数据

50、被破坏。恢复可分为据被破坏。恢复可分为3步步8.18.1数据库的安全性及数据库的安全性及数据库的安全性及数据库的安全性及SQLServerSQLServer的安全管理的安全管理的安全管理的安全管理 8.1.18.1.1数据库安全性控制的一般方法数据库安全性控制的一般方法数据库安全性控制的一般方法数据库安全性控制的一般方法在计算机系统中,安全,模式是多层设置的在计算机系统中,安全,模式是多层设置的检验是否是计算机系统的合法用户检验是否是计算机系统的合法用户检验是否是数据库的用户检验是否是数据库的用户1.1.用户标识与鉴别用户标识与鉴别是是进进入入计计算算机机系系统统时时最最外外层层的的安安全全保

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com