还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第6章习题答案
一、填空题.在数据库系统中定义存取权限称为.授权一SOL语言用GRANT语句向用户授予对数据的操作权限,用REVOKE.语句收回授予的权限.通过一视图机制「可以把要保密的数据对无权存取的用户隐藏起来从而自动地对数据提供一定层度的安全保护.数据库的完整性指的是数据的.正确性—和一一致性..在SQL中,用PRIMARYKEY短语定义关系模型的实体完整性.在SQL中,关系模型的参照完整性用FOREIGNKEY短语定义哪些列为外码列,用REFERENCES短语指明这些外码列参照哪些表的主码八.在SQL语言中,定义事务的语句主要有BEGINTRANSACTION、COMMIT和ROLLBACK.事务具有的四个性质分别是一原子性.、一一致性.、一隔离性.和一持久性简称事务的—ACID—性质.并发操作带来的数据不一致性包括丢失修改、不可重复读和读脏数据.多个事务中的并发操作的一种执行顺序称为一个调度,当且仅当其执行结果等于按某种顺序串行执行这些事务而得的结果,我们称它为可串行化调度..基本的封锁类型有一共享锁.和—排它用一.在数据库并发控制中,两个或多个事务同时处于相互等待状态,导致这些事务都不能继续运行,这种现象称为死^.在数据库并发控制中,由于事务按优先级分配锁,导致低优先级的事务可能永远申请不到锁而处于无休止的等待状态,这种现象称为活锁一o.封锁对象的大小称为_封锁粒度」o.数据库中可能发生的故障大致可以分为「小务故障.、一系统故障—和介质故障.转储可分为一静态转储―和―动态转储转储方式有.全晟转储一和—增品转储_..日志文件用来记录事务对数据库的操作,主要有两类以一记录.为单位的日志文件和以一数据块一为单位的日志文件.登记日志文件的原则是1)严格按并行操作执行的时间顺序进行:2)先写一且,后写_数据库「..日志文件的作用是在进行数据库恢复时实现事务的和回始时刻的日志文件副本,经过处理后才能得到正确的数据库后备副本3第⑵步重做已完成的事务的算法是1正向扫描口志文件,找出故障发生前己提交的事务的标识将其记入重做队列;2再一次正向扫描日志文件,对重做队列中的所有事务进行重做处理即将日志记录中〃更新后的值写入数据库.事务故障的恢复方法是撤埴所有的完成的事务.系统故障的恢复方法是撤销所有未完成的事务重做所有已提交的事务.介质故障的恢复方法是先用备份将数据库恢复到最近的一致状态,然后重做间于恢复点和故障点之间的所有已提交一的事务
二、单项选择题.SQL中的视图机制提高了数据库系统的—A.完整性B.并发控制C.隔离性D.安全性.SQL语言的GRANT和REVOKE语句主要用于维护数据库的A.完整性B.可靠性C.安全性D.一致性.安全性检查所要防范的对象是」防止它们存取数据库中的数据A.错误数据B.非法用户和操作C.不一致的数据D.以上三者都不是.完整性检查所要防范的对象是上防止它们进入数据库A.错误数据B.非法用户C.非法操作员D.以上三者都不是.在下列SQL命令中,_A是数据控制命令A.GRANTB.DROPC.UPDATED.ALTER.在SQL语言中,定义主码时需要用到_AoA.PRIMARYKEYB.GRANTC.REFERENCESD.ALTER.在SQL语言中,定义外码时需要用到_C一A.DROPB.GRANTC.REFERENCESD.ALTER.事务的上_指的是事务包含的所有操作要么全部执行,要么全部不执行A.原子性B.一致性C.隔离性D.持久性.事务的C指的是:并发运行的多个事务不相互干扰A.原子性B.一致性C.隔离性D.持久性.事务的指的是己提交的事务对数据库的改变是永久的A.原子性B.一致性C.隔离性D.持久性.事务的B指的是:事务的执行必须使数据库保持一致状态A.原子性B.一致性C.隔离性D.持久性.SQL语言中的COMMIT语句的主要作用是一CA.结束程序B.返回系统C.提交事务D.存储数据.SQL语言用」语句实现事务的回滚A.CREATEB.ROLLBACKC.DROPD.COMMIT.为了解决并发操作带来的数据不一致问题,普遍采用_A技术A封锁B.存取控制C.恢亚D.协商.在下列问题中,C不是并发操作带来的问题A.丢失修改B.不可重复读C.死锁D.读脏数据.DBMS普遍采用C方法来保证调度的正确性A.索引B.授权C.封锁D.日志.事务T在修改数据R之前必须现对其加X锁,直到事务结束才释放这是上oA.一级封锁协议B.二级封锁协议C.三级封锁协议D.零级封锁协议.如果事务T获得数据项Q上的排它锁,则T对0CA.只能读不能写B.只能写不能读C.读写均可D.不能写也不能读.事务T1和T2同时对数据对象A进行操作,可能有如下四种情况,其中3不会发生操作冲突A.T1正在读AT2要写AB.T1正在写AT2也要写AC.T1正在写AT2要读AD.T1正在读AT2也要读A.设两个事务同时对数据库中的同一数据进行操作,如果D则不会发生操作冲突A.一个是DELETE一个是SELECTB.一个是SELECT一个是UPDATEC.两个都是UPDATED.两个都是SELECT.在数据库并发控制中,两个或多个事务同时处于相互等待状态,导致这些事务都不能继续运行,这种现象称为_BoA.活锁B.死锁C.X锁D.S锁.在数据库并发控制中,由于事务按优先级分配锁,导致低优先级的事务可能永远申请不到锁而处于无休止的等待状态,这种现象称为_AA.活锁B.死锁C.X锁D.S锁.若系统运行过程中,由于某种硬件故障,使存储在外存上的数据全部损坏,这种情况称为_AA.介质故障B.运行故障C.系统故障D.事务故障.事务日志用于保存_CoA.程序运行过程B.程序执行结果C.事务对数据库的更新操作D.事务对数据库的查询操作.事务是一个C1A.程序B.进程C.操作序列D.完整性规则.数据库恢复的重要依据是A.DBAB.DDC.文档D.事务日志.数据库备份的主要用途是—A.并发控制B.保存历史档案C.故障恢复D.安全性控制.在DB恢复时,对已经COMMIT但更新未写入磁盘的事务要执行A.A.REDOB.UNDOC.ABORTD.ROLLBACK.在DB恢复时,对尚未COMMIT的事务要执行A.REDOB.UNDOC.ABORTD.ROLLBACK.在DB技术中,“脏数据”指的是DA.未回退的数据B.未提交的数据C.回退的数据D.未提交随后又被撤消的数据.事务中并发操作的一种执行顺序称为」―A.过程B.步骤C.调度D.优先级.在事务等待图中,如果存在一个循环,那么就会」_A.出现活锁B.出现死锁C.执行成功D.执行失败.“所有事务都遵守两段封锁协议”是“事务调度可串行化”的」oA.必要条件B.充分条件C.必要充分条件D.前提条件
三、简述题什么是事务的ACID性质?答事务的ACID性质是原子性Atomicity一致性Consistency隔离性Isolation持续性Durability什么是丢失修改?试举一个例子答两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失,这就是丢失修改[例1]飞机订票系统中的一个活动序列
①甲售票点甲事务读出某航班的机票余额A设A=16;
②乙售票点乙事务读出同一航班的机票余额A也为16;
③甲售票点卖出一张机票,修改余额A-A-1所以A为15把A写回数据库;
④乙售票点也卖出一张机票,修改余额A-A-I所以A为15把A写回数据库结果明明卖出两张机票,数据库中机票余额只减少1这种情况称为数据库的不一致性,是由并发操作引起的在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的若按上面的调度序列执行,甲事务的修改就被丢失原因第4步中乙事务修改A并写回后覆盖了甲事务的修改什么是不可重复读?试举一个例子答不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果不可重复读包括三种情况⑴事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值2事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了3事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当TI再次按相同条件读取数据时,发现多了一些记录后两种不可重复读有时也称为幻影现象PhantomRow例如:结果验证不对,不可重复读说明T1读取B=IOO进行运算T2读取同一数据B对其进行修改后将B=200写回数据库TI为了对读取值校对重读BB已为200与第一次读取值不一致什么是读脏数据?试举一个例子答读“脏”数据是指
(1)事务T1修改某〜数据,并将其写回磁盘
(2)事务T2读取同一数据后,T1由于某种原因被撤销
(3)这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据例如结果读脏数据说明T1将C值修改为200T2读到C为200T1由于某种原因撤销其修改作废C恢复原值100
(3)这时T2读到的C为200与数据库内容不一致,就是“脏”简述基于检查点的数据库恢复思路和步骤(检杳点)(检杳点)L(检杳点)L(系统故障)日志文件1\答
(1)从重新开始文件(见图)中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录2由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LISTo这里建立两个事务队列UNDO-LIST:需要执行undo操作的事务集合;REDO-LIST:需要执行redo操作的事务集合把ACTIVE-LIST暂时放入UNDO-LTST队列REDO队列暂为空3从检查点开始正向扫描日志文件如有新开始的事务Ti把Ti暂时放入UNDO-LIST队列;如有提交的事务Tj把Tj从UNDO-LIST队列移到REDO-LIST队列直到日志文件结束4对UNDO-LIST中的每个事务执行UNDO操作对REDO-LIST中的每个事务执行REDO操作试述事务的概念及事务的4个特性答事务是用户定义的一个数据库操作序列这些操作要么全做要么全不做是一个不可分割的工作单位事务具有4个特性:原子性Atomicity、一致性Consistency、隔离性Isolation和持续性Durability这4个特性也简称为ACID特性原子性事务是数据库的逻辑工作单位事务中包括的诸操作要么都做要么都不做一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态隔离性一个事务的执行不能被其他事务干扰即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰持续性持续性也称永久性Permanence指一个事务一旦提交,它对数据库中数据的改变就应该是永久性瞅接下来的其他操作或故障不应该对其执行结果有任何影响为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之答事务执行的结果必须是使数据库从•个•致性状态变到另•个一致性状态如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断这些未完成事务对数据库所做的修改有i部分已写入物理数据库这时数据库就处于一种不正确的状态或者说是不•致的状态例如某工厂的库存管理系统中要把数量为Q的某种零件从仓库1移到仓库2存放则可以定义一个事务TT包括两个操作;Ql=Ql-QQ2=Q2+Q如果T非正常终止时只做了第一个操作则数据库就处于不一致性状态库存量无缘无故少了Q数据库运行中可能产生的故障有哪几类哪些故障影响事务的正常执行哪些故隙破坏数据库数据?答数据库系统中可能发生各种各样的故障大致可以分以下几类1事务内部的故障;2系统故障;3介质故障;4计算机病毒事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据什么是日志文件为什么要设立日志文件?答1日志文件是用来记录事务对数据库的更新操作的文件2设立日志文件的目的是进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复有关日志文件的具体作用,.针对不同的故障试给出恢复的策略和方法即如何进行事务故障的恢复系统故障的恢复介质故障恢复答事务故障的恢复事务故障的恢复是由DBMS自动完成的,对用户是透明的DBMS执行恢复步骤是1反向扫描文件□志即从最后向前扫描日志文件,查找该事务的更新操作;2后该事务的更新操作执行逆操作,即将□志记录中“更新前的值”写入数据库;3继续反向扫描日志文件做同样处理;4如此处理下去直至读到此事务的开始标记该事务故隙的恢复就完成了系统故障的恢复系统故障可能会造成数据库处于不一致状态一是未完成事务对数据库的更新可能已写人数据库二是己提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库因此恢复操作就是要撤销UNDO故障发生时未完成的事务,重做REDO已完成的事务系统的恢复步骤是1正向扫描口志文件,找出在故障发生前己经提交的事务队列REDO队列和未完成的事务队列UNDO队列2对撤销队列中的各个事务进行UNDO处理进行UNDO处理的方法是反向扫描日志文件对每个UNDO事务的更新操作执行逆操作即将日志记录中〃更新前的值〃BeforeImage写人数据库3对重做队列中的各个事务进行REDO处理进行REDO处理的方法是正向扫描日志文件对每个REDO事务重新执行日志文件登记的操作即将日志记录中〃更新后的值”AfterImage写入数据库解析在第1步中如何找出REDO队列和UNDO队列请大家思考一下下面给出一个算法1建立两个事务队列
①UNDO-LIST:需要执行undo操作的事务集合;
②REDO-LIST:需要执行redo操作的事务集合两个事务队列初始均为空2从日志文件头开始正向扫描日志文件如有新开始遇到BoginTransaction的事务Ti把Ti暂时放入UNDO-LIST队列;如有提交的事务遇到EndTransactionTj把Tj从UNDO-LIST队列移到REDO-LIST队列;直到日志文件结束介质故障的恢复介质故障是最严重的•种故障恢复方法是重装数据库然后重做己完成的事务具体过程是DDBA装入最新的数据库后备副本离故障发生时刻最近的转储副本,使数据库恢复到转储时的一致性状态;2DBA装入转储结束时刻的日志文件副本;3DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务解析1假定采用的是静态转储因此第1步装人数据库后备副本便可以了2如果采用的是动态转储,第1步装人数据库后备副本还不够还需同时装入转储开TIT21RA=50RB=100求和二1502RB=100B*2fBB=20033RA=50RB=200求和二250T1T21RC=100C*2tCWC=2002RC=2003RollbackC恢复为100。