《数据库原理与应用章节练习题及答案-第9章.docx》由会员分享,可在线阅读,更多相关《数据库原理与应用章节练习题及答案-第9章.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.试述实现数据库平安性控制的常用方法和技术0数据库平安性控制的常用技术包括用户标识与鉴别、存取控制、视图机制、审计、密码保护等。2.什么是数据库中的自主存取控制方法和强制存取控制方法?在自主存取控制方法中,用户对于不同的数据对象有不同的存 取权限,不同的用户对同一对象也有不同的权限,而且用户还 可将其拥有的存取权限转授给其他用户。DBMS通过验证用户是 否具有对访问数据有相应的权限来决定是否允许用户执行数 据访问。在强制存取控制中,DBMS所管理的全部实体被分为主体和客体 两大类。主体和客体都具有自己的平安级别。但主体访问客体 时,不仅要求主体具有访问客体的权限,而且要求主体的平安 级和客体
2、的平安级之间满足支配关系。3. DBMS的完整性控制机制应具有哪些功能?DBMS的数据库完整性控制机制应具有以下三个功能:(1)定义功能:提供定义完整性约束条件的机制;(2)检查功能:检查用户发出的操作请求是否违背了约束条件。一般有两种检查方式:一种是立即执行约束(即一条语句执行完 成后立即检查),另一种是延迟执行约束(即在整个事务执行完毕 后再检查约束);(3)违约响应功能:如果操作请求使数据违背了完整性约束条件,那么采取一定的动作来保证数据的完整性。4.试述事务的概念及事务的四个特性。数据库系统中的事务是一个不可分的操作序列,其中的操作要 么全部都不执行,要把全部都执行。事务一般应满足四个
3、性质,即原子性(Atomicity)、一致性 (Consistency)x 隔离性(Isolation)和持久性(Durability)。 这四个性质在数据库领域中一般合称为事务的ACID性质。(1)原子性事务的原子性是指一个事务内部的所有操作要么全部都执行, 要么一个也不执行,即所有操作是一个整体。(2) 一致性事务的一致性是指事务的执行保证数据库从一个一致状态转 到另一个一致状态,即数据不会应事务的执行而导致不一致。但 是,事务的内部无须满足数据库的一致性。(3)隔离性事务的隔离性是指多个事务一起执行时相互独立,互相不影 响,任一事务的执行结果直到其成功提交后才对其它事务可见。 从另一角度
4、讲,事务的隔离性要求多个事务并发执行与这些事务 单独顺序执行的结果相同。(4)持久性事务的持久性是指事务一旦成功提交,其结果就在数据库中持 久保存,不会因为关机等而导致数据丧失。5. 并发操作可能会产生哪几类问题?丧失更新、脏读和不可重复读6. 什么是冲突可串?给定N个事务的一个并发调度S1,如果S1冲突等价于这N个事 务的某个串行调度,那么称S1是冲突可串调度。冲突等价是指:给定 N个事务的并发调度S1和S2,如果调度S1通过交换一系列不冲突的 操作,最终能够转换为调度S2,那么称S1和S2冲突等价。所谓冲突 操作,是指并发调度中满足下面条件的一对操作:(1)属于不同的事 务;(2)操作同一
5、个数据对象;(3)至少有一个是写操作。7. 为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。下面的转账例子中,当事务T在Output (A)时故障而没有正常 结束,将出现转出账号A扣了钱而转入账号B没有增加钱的情 况,破坏了数据库的正确性。Read (Aft); tt - 100; Write (Art); Read (Bzt); tt + 100; Write (Brt);Flush Log Output (A); Output (B);Flush Log初始状态:A=1000B=2000故障点闪存磁盘8. 登记日志文件时为什么必须先写日志文件,后写数据库?由于引入日志后,
6、数据的更新操作实际上在执行时需要写磁盘两 次:一次是写数据,还有一次是写日志记录。先写日志规那么规定 日志记录必须先写,然后才是写数据操作。之所以规定WAL规那么, 是考虑到如果先写数据后写日志的话,一旦这两次写操作之间发 生故障导致写数据完成了但写日志没完成,那么DBMS将无法获知这 种故障进而无法完成一致性恢复。例如,假设采用后写日志策略, 如果T1将A从1000修改为900时发生故障,并写数据操作已经 完成(此时900已写到数据库),但还未来得及将表示这一次修改 的日志写入磁盘,那么日志中与T1相关的记录只有一条:Start, T1此时,当DBMS重启后执行恢复时,因为T1没有正常结束所
7、以要撤销其操作,但由于日志中没有T1将A从1000修改为900的更新操作记录,所以DBMS将无法将A恢复到1000o相反,如果采用先写日志,同样假设写日志和写数据之间发生了 故障,那么故障发生时日志中与T1相关的日志记录为:DBMS在恢复时就可以发现T1对A所做的修改,并且可以将A恢 复到T1执行之前的状态,即恢复为1000o9. 试述基于Undo/Redo日志的恢复过程。(1)构建Undo和Redo事务列表:从头扫描日志,找出所有有 Commit, T的事务,放入一个Redo事务列表L.。中。找出所有没 有Commit, T的事务,放入一个Undo事务列表1_.。中;(2)执行Undo操作:
8、从日志尾部往前扫描日志记录,如果 T e Lund0,那么执行:Wr i te (x, o I d_va I ue)Output (x)(3)执行Redo操作:从日志头部开始扫描日志记录CT, x. old_value, new_va I ue,如果 T g Lredo,那么执行:Write (x, new_vaIue)Output (x)(4)写事务回退标志:For each T g Lund0 doWr ite to Iog具有检查点的恢复技术有什么优点?试举一个具体的例子 加以说明。检查点的基本思想是在日志中加入一个特殊的检查点标记,指 示在该标记之前的所有Commi t的事务修改已经全
9、部生效。如 此一来,在恢复时就不需要再扫描检查点标记之前的日志,从 而提高恢复时的性能。Start Checkpoint End Checkpoint CrashT1 :T2 !:!T3 ;!IT4;; !T5:!1时间ts tetf上图给出了基于检查点的数据库恢复例如。在这个例子中,当 开始执行检查点操作时(ts时刻),数据库系统中T1和T2事 务已经完成,因此在恢复时不需要再执行red。操作。10. 举例说明,对并发事务的一个调度是可串行化的,而这些并 发事务不一定遵守两段锁协议。T1 :T2:ABxLi (A)Read (A,2525t)t = t + 100Wr i te (A, t) Ui (A)xL (B)Read (B, t) t = t + 100Write(B,t)UMB)12525xL2 (A)Read (A,125t)t = t * 2Wr i te (A,t)U2 (A)xL2 (B)wa i twa i twa itwa i t Read (B, t)252502502502502525125125Wr ite(B, 250250t)U2(B)在上面的例子中,T1是对A和B都加100, T2是对A和B都乘2。 最终的结果与T1T2的串行调度结果等价,是可串调度,但上面的调 度不是满足两阶段锁协议的调度,因为T1中U1(A)之后又出现了 lock操作。