《数据库原理与应用 教学作者林 小 玲第6章习题答案.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用 教学作者林 小 玲第6章习题答案.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章习题答案一、填空题1 .在数据库系统中定义存取权限称为.授权一。SOL语言用 GRANT 语句向用户授予对数据的操作权限,用 REVOKE.语句收回授予的权限。2 .通过一视图机制 可以把要保密的数据对无权存取的用户隐藏起来,从而自动地 对数据提供一定层度的安全保护。3 .数据库的完整性指的是数据的.正确性和一一致性.。4 .在SQL中,用 PRIMARY KEY 短语定义关系模型的实体完整性。5 .在SQL中,关系模型的参照完整性用 FOREIGN KEY 短语定义哪些列为外码 列,用 REFERENCES短语指明这些外码列参照哪些表的主码八6 .在SQL语言中,定义事务的语句主要有
2、BEGIN TRANSACTION 、 COMMIT 和 ROLLBACK 。7 .事务具有的四个性质分别是:一原子性.、一一致性.、一隔离性.和一持久性, 简称事务的ACID性质。8 .并发操作带来的数据不一致性包括丢失修改、不可重复读和读脏数据。9 .多个事务中的并发操作的一种执行顺序称为一个调度,当且仅当其执行结果等 于按某种顺序串行执行这些事务而得的结果,我们称它为可串行化调度.10 .基本的封锁类型有一共享锁.和排它用一。11 .在数据库并发控制中,两个或多个事务同时处于相互等待状态,导致这些事务都不 能继续运行,这种现象称为 死 。12 .在数据库并发控制中,由于事务按优先级分配锁
3、,导致低优先级的事务可能永远申 请不到锁而处于无休止的等待状态,这种现象称为 活锁一o13 .封锁对象的大小称为_封锁粒度o14 .数据库中可能发生的故障大致可以分为小:务故障.、一系统故障和介质故障。15 .转储可分为一静态转储和动态转储转储方式有.全晟转储一和增品转储_ .16 .日志文件用来记录事务对数据库的操作,主要有两类:以一记录.为单位 的日志文件和以一数据块一为单位的日志文件。17 .登记日志文件的原则是:1)严格按并行操作执行的时间顺序 进行:2)先写一 且,后写_数据库.18 .日志文件的作用是:在进行数据库恢复时实现事务的和回始时刻的日志文件副本,经过处理后才能得到正确的数
4、据库后备副本。(3)第步重做已完成的事务的算法是:1)正向扫描口志文件,找出故障发生前己提交的事务的标识,将其记入重做队列;2)再一次正向扫描日志文件,对重做队列中的所有事务进行重做处理即将日志记录中更新 后的值写入数据库。19 .事务故障的恢复方法是:撤埴所有的完成的事务。20 .系统故障的恢复方法是:撤销所有未完成的事务,重做 所有已提交的事务。21 .介质故障的恢复方法是:先用备份将数据库恢复到最近的一致状态,然后重做 间于恢复点和故障点之间的所有已提交一的事务。二、单项选择题1 . SQL中的视图机制提高了数据库系统的。A.完整性B.并发控制 C.隔离性D.安全性2 . SQL语言的G
5、RANT和REVOKE语句主要用于维护数据库的A.完整性B.可靠性C.安全性D.一致性3 .安全性检查所要防范的对象是,防止它们存取数据库中的数据。A.错误数据B.非法用户和操作C.不一致的数据 D.以上三者都不是4 .完整性检查所要防范的对象是上,防止它们进入数据库。A.错误数据B.非法用户C.非法操作员 D.以上三者都不是5 .在下列SQL命令中,_A 是数据控制命令。A. GRANTB. DROPC. UPDATED. ALTER6 .在SQL语言中,定义主码时需要用到_A oA. PRIMARY KEY B. GRANT C. REFERENCES D. ALTER7 .在SQL语言中
6、,定义外码时需要用到_C一。A. DROP B. GRANT C. REFERENCES D. ALTER8 .事务的上_指的是:事务包含的所有操作要么全部执行,要么全部不执行。A.原子性B. 一致性C.隔离性D.持久性9 .事务的 C 指的是:并发运行的多个事务不相互干扰。A.原子性B. 一致性C.隔离性D.持久性10 .事务的 指的是:己提交的事务对数据库的改变是永久的。A.原子性B. 一致性C.隔离性D.持久性11 .事务的 B指的是:事务的执行必须使数据库保持一致状态。A.原子性B. 一致性C.隔离性D.持久性12 . SQL语言中的COMMIT语句的主要作用是一 C 。A.结束程序B
7、.返回系统 C.提交事务D.存储数据13 . SQL语言用语句实现事务的回滚。A. CREATEB. ROLLBACK C. DROP D. COMMIT14 .为了解决并发操作带来的数据不一致问题,普遍采用_A技术。A,封锁B.存取控制C.恢亚 D.协商15 .在下列问题中,C 不是并发操作带来的问题。A.丢失修改B.不可重复读 C.死锁D.读脏数据16 . DBMS普遍采用 C方法来保证调度的正确性。A.索引B.授权C.封锁D.日志17 .事务T在修改数据R之前必须现对其加X锁,直到事务结束才释放,这是上 oA. 一级封锁协议B.二级封锁协议C.三级封锁协议D.零级封锁协议18 .如果事务
8、T获得数据项Q上的排它锁,则T对0 C ,A.只能读不能写B.只能写不能读C.读写均可 D.不能写也不能读19 .事务T1和T2同时对数据对象A进行操作,可能有如下四种情况,其中3 不会发生操作冲突。A. T1正在读A, T2要写AB. T1正在写A, T2也要写AC. T1正在写A, T2要读AD. T1正在读A, T2也要读A20 .设两个事务同时对数据库中的同一数据进行操作,如果 D,则不会发生操 作冲突。A. 一个是 DELETE, 一个是 SELECT B. 一个是 SELECT, 一个是 UPDATEC.两个都是UPDATED.两个都是SELECT21 .在数据库并发控制中,两个或
9、多个事务同时处于相互等待状态,导致这些事务都不 能继续运行,这种现象称为_B oA.活锁B.死锁C. X锁D. S锁22 .在数据库并发控制中,由于事务按优先级分配锁,导致低优先级的事务可能永远申 请不到锁而处于无休止的等待状态,这种现象称为_A。A.活锁B.死锁C. X锁D. S锁23 .若系统运行过程中,由于某种硬件故障,使存储在外存上的数据全部损坏,这种情 况称为_A。A.介质故障B.运行故障C.系统故障D.事务故障24 .事务日志用于保存_C oA.程序运行过程B.程序执行结果C.事务对数据库的更新操作D.事务对数据库的查询操作25 .事务是一个C 1A.程序B.进程C.操作序列D.完
10、整性规则26 .数据库恢复的重要依据是A. DBAB. DDC.文档D.事务日志27 .数据库备份的主要用途是A.并发控制B.保存历史档案 C.故障恢复 D.安全性控制28 .在DB恢复时,对已经COMMIT但更新未写入磁盘的事务要执行 A .A. REDOB. UNDOC. ABORTD. ROLLBACK29 .在DB恢复时,对尚未COMMIT的事务要执行。A. REDOB. UNDOC. ABORTD. ROLLBACK30 .在DB技术中,“脏数据”指的是D 。A.未回退的数据B.未提交的数据C.回退的数据D.未提交随后又被撤消的数据31 .事务中并发操作的一种执行顺序称为。A.过程
11、B.步骤 C.调度 D.优先级32 .在事务等待图中,如果存在一个循环,那么就会_。A.出现活锁B.出现死锁 C.执行成功 D.执行失败33 .“所有事务都遵守两段封锁协议”是“事务调度可串行化”的oA.必要条件B.充分条件 C.必要充分条件 D.前提条件三、简述题34 什么是事务的ACID性质?答:事务的ACID性质是原子性(Atomicity), 一致性(Consistency),隔离性(Isolation),持续性(Durability35 什么是丢失修改?试举一个例子。答:两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了 T1提交的结果,导致T1的修改被丢失,这就是丢失修改。
12、例1飞机订票系统中的一个活动序列甲售票点(甲事务)读出某航班的机票余额A,设A=16;乙售票点(乙事务)读出同一航班的机票余额A,也为16;甲售票点卖出一张机票,修改余额A-A-1,所以A为15,把A写回数据库;乙售票点也卖出一张机票,修改余额A-A-I,所以A为15,把A写回数据库结果明明卖出两张机票,数据库中机票余额只减少1这种情况称为数据库的不一致性,是由并发操作引起的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若按上面的调度序列执行,甲事务的修改就被丢失。原因:第4步中乙事务修改A并写回后覆盖了甲事务的修改36 什么是不可重复读?试举一个例子。答:不可重复读是指事务T
13、1读取数据后,事务T2,执行更新操作,使T1无法再现前一次读取结果。不可重复读包括三种情况:事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到 与前一次不同的值(2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记 录,当T1再次按相同条件读取数据时,发现某些记录消失了(3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当 TI再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象(Phantom Row)例如:TIT2(1) R (A) =50R (B) =100求和二150(2) R (B
14、) =100 B*2fB(B) =200(3)(3) R (A) =50R (B) =200 求和二250结果:验证不对,不可重复读说明:(1) T1读取B=IOO进行运算(2) T2读取同一数据B,对其进行修改后将B=200写回数据库。(3) TI为了对读取值校对重读B, B已为200,与第一次读取值不一致37 什么是读脏数据?试举一个例子。答:读“脏”数据是指:(1)事务T1修改某数据,并将其写回磁盘(2)事务T2读取同一数据后,T1由于某种原因被撤销(3)这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致(4) T2读到的数据就为“脏”数据,即不正确的数据例如:T1T
15、2(1) R (C) =100 C*2tCW (C) =200(2) R (C) =200(3) RollbackC恢复为100结果:读脏数据说明:(5) T1将C值修改为200, T2读到C为200(6) T1由于某种原因撤销,其修改作废,C恢复原值100(3)这时T2读到的C为200,与数据库内容不一致,就是“脏”38 简述基于检查点的数据库恢复思路和步骤(检杳点)(检杳点)L(检杳点)L(系统故障)日志文件 1答:(1)从重新开始文件(见图)中找到最后一个检查点记录在日志文件中的地址,由该地 址在日志文件中找到最后一个检查点记录。(2)由该检查点记录得到检查点建立时刻所有正 在执行的事务
16、清单ACTIVE-LISTo这里建立两个事务队列:1) UNDO-LIST:需要执行undo操作的事务集合;2) 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操 作。39 试述事务的概念及事务的4个特性。答:事务是用户定义的
17、一个数据库操作序列,这些操作要么全做要么全不做,是一个不 可分割的工作单位。事务具有4个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation) 和持续性(Durability)。这4个特性也简称为ACID特性。 原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不 做。 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状 态。 隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数 据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 持续性:持续性也称永久性(Permanence)
18、,指一个事务一旦提交,它对数据库中数 据的改变就应该是永久性瞅接下来的其他操作或故障不应该对其执行结果有任何 影响。40 为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。答:事务执行的结果必须是使数据库从个致性状态变到另个一致性状态。如果数 据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的 修改有i部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不致的 状态。例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。则可以定义一个事务T,T包括两个操作;Ql=Ql-Q,Q2=Q2+Q。如果T非正常终止时只做 了第
19、一个操作,则数据库就处于不一致性状态,库存量无缘无故少了 Q。41 数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故隙破 坏数据库数据?答:数据库系统中可能发生各种各样的故障,大致可以分以下几类:(1)事务内部的故障;(2)系统故障;(3)介质故障;(4)计算机病毒。事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据 库数据。42 什么是日志文件?为什么要设立日志文件?答:(1)日志文件是用来记录事务对数据库的更新操作的文件。(2)设立日志文件的目的 是:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。有关日志文 件的具体作用,
20、43 .针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复?系统故障 的恢复?介质故障恢复?)答:事务故障的恢复:事务故障的恢复是由DBMS自动完成的,对用户是透明的。DBMS 执行恢复步骤是:(1)反向扫描文件志(即从最后向前扫描日志文件),查找该事务的更新操作;(2)后该事务的更新操作执行逆操作,即将志记录中“更新前的值”写入数据库;(3)继续反向扫描日志文件,做同样处理;(4)如此处理下去,直至读到此事务的开始标记,该事务故隙的恢复就完成了。系统故障的恢复:系统故障可能会造成数据库处于不一致状态:一是未完成事务对数据库的更新可能已写 人数据库:二是己提交事务对数据库的更新
21、可能还留在缓冲区,没来得及写入数据库。因此 恢复操作就是要撤销(UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务。系统的恢复步骤是:(1)正向扫描口志文件,找出在故障发生前己经提交的事务队列(REDO队列)和未完成的 事务队列(UNDO队列)。(2)对撤销队列中的各个事务进行UNDO处理。进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作, 即将日志记录中更新前的值(Before Image)写人数据库。(3)对重做队列中的各个事务进行REDO处理。进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记 的操作。即将日志
22、记录中更新后的值”(After Image)写入数据库。解析:在第(1)步中如何找出REDO队列和UNDO队列?请大家思考一下。下面给出一个算法:1)建立两个事务队列:UNDO-LIST:需要执行undo操作的事务集合;REDO-LIST:需要执行redo操作的事务集合。两个事务队列初始均为空。2)从日志文件头开始,正向扫描日志文件: 如有新开始(遇到Bogin Transaction)的事务Ti,把Ti暂时放入UNDO-LIST队列; 如有提交的事务(遇到End Transaction)Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列;直到日志文件结束。介质故障的恢复:介质故障是最严重的种故障。恢复方法是重装数据库,然后重做己完成的事务。具体过程是:(DDBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复 到转储时的一致性状态;(2) DBA装入转储结束时刻的日志文件副本;(3)DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。解析:(1)假定采用的是静态转储,因此第(1)步装人数据库后备副本便可以了。(2)如果采用的是动态转储,第(1)步装人数据库后备副本还不够,还需同时装入转储开