选择题
1、A。
根据书中10.1.2中事务的原子性性质可知,事务在执行过程中,应该遵守“要么不做,要么全做”的规则,故选项A正确。选项B表示的是事务的持久性。选项C表示的是事务的隔离性。选项D表示的是事务的一致性。
2、D。
由书中10.2并发控制一节可知,当同一数据库系统中有多个事务并发运行时,如果不加以适当控制,可能产生数据的不一致性故选项D正确。
3、D。
事务的一致性要求事务执行完成后,将数据库从一个抑制状态转变到另一个一致状态,故选项D正确。其余选项同题目1。
4、C。
同第1题答案概念相同,故选项C正确。
5、B。
同第1题答案概念相同,故选项B正确。
6、C。
数据库安全性控制:目的是保证数据库的任何部分都不会受到未授权的访问和修改,防止数据泄露和被破坏。
数据库完整性控制:保证数据的正确性和相容性,防止不合语义的数据进入数据库。
数据库并发控制:对并发事务之间的相互作用加以控制,保证存取和存储正确的数据,不破坏数据库的一致性。
数据库可靠性控制:可靠性控制要由外部数据完整,性控制,事务原子性控制,网、络分割/场地毁损检测与处理,事务正确性控制,并发控制和内部数据完整性控制这六部分组成。 由题意可得,“每个用户好像正在使用一个单用户数据库”体现的是多个事务同时工作,因为使用了并发控制,使得每项事务有序进行,故选项C正确。
7、D。
X锁即排他锁,由排他锁的定义我们可知,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁,故选项D正确。
8、D。
在《死锁的预防》一节中提出:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后有都请求对方为其他事务封锁的数据对象加锁,从而出现死锁,故我们可知,在数据库系统中是存在死锁的,所以答案A不正确。一直死锁的预防靠封锁法,故答案B不正确。死锁产生的原因正是因为两个用户竞争相同的资源,故答案C不正确。故答案D正确
9、C。
由书可知,解决并发操作的方法是封锁协议,故选项C正确。
10、D。
由书中10.3.3节中可知,数据库运行过程中发生的故障通常分为事务故障、系统故障和介质故障三类,故选项D正确。
简答题
1、什么是数据库的完整性?数据库的完整性包括哪几种? 数据库的完整性:数据的正确性和相容性。
数据库的完整性包括以下三种:域完整性、实体完整性、参照完整性
2、数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果;后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3、简述事务的概念和事务的四个特性,并解释每一个性质由DBMS的哪个子系统实现,每一个性质对DBS有什么益处。
事务的概念:事务是数据库应用中构成单一逻辑工作单元的操作集合 事务的四个特性及实现与益处:
①、事务的原子性:每个事务的所有操作要么被成功地执行,要么一个也不被执行。
原子性是由DBMS的事务管理子系统实现的。 事务的原子性保证了DBS的完整性。
②、事务的一致性:一个事务的正确执行必须数据库从一个正确状态转换为另一个正确的状
态。
事务的一致性是由DBMS的完整性子系统实现的。 事务的一致性保证数据库的完整性。
③、事务的隔离性:多个并发事务之间不能相互干扰,同时并发不影响事务的执行。
事务的隔离性是由DBMS的并发控制子系统实现的。 隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。
④、事务的持久性:事务对数据库的更新必须是永久的;事务一旦提交,则永久改变数据库
中的数据。
持久性是由DBMS的恢复管理子系统实现的。 持久性能保证DB具有可恢复性。
4、并发操作可能会产生哪几类数据不一致性?分别用什么方法可以避免各种不一致的情况?
①、丢失更新:采用一级封锁协议解决
②、污读:采用二级封锁协议解决 ③、不可重读:采用三级封锁协议解决
5、简述封锁的概念以及基本的封锁类型。
封锁的概念:事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁,加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
基本的封锁类型:①、排他锁
②、共享锁
6、什么是封锁协议?简述不同级别的封锁协议的主要区别。
封锁协议的定义:在运用X锁和S锁对数据对象加锁时,需要约定一些规则,这些规则为封
锁协议
主要区别:①、一级封锁协议:事务T在修改数据R之前必须先对其加排他锁,直到事务结
束才释放。它防止了丢失更新问题,但不能保证可重读和不读“脏”数据。 ②、二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S
锁,读完后即可释放S锁。它防止丢失更新问题,也进一步防止读“脏”数据,但不能解决不可重读问题。
③、三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S
锁,直到事务结束才释放。它防止了丢失更新问题、读“脏”数据,以及不可重读问题。
7、数据库恢复的基本原则是什么?具体实现方法是什么? 基本原则:数据库的重复存储
具体实现方法:①、转储和建立日志
②、数据恢复
8、什么是“脏”数据?如何避免读取“脏”数据? “脏”数据定义:不正确的临时值
如何避免:采用二级封锁协议或者三级封锁协议
9、什么是活锁?试述活锁产生的原因及解决办法。
活锁的定义:多个事务申请对数据R申请加锁,而系统随机地加锁,导致某些事务长等待 活锁产生的原因:系统随机地加锁
解决办法:采用“先来先服务”的策略预防活锁的发生
10、什么是死锁?试述死锁产生的原因及解决办法。
答:死锁的定义:两个或两个以上的事务互相申请对方加锁对象的排它锁,造成了循环等待 死锁产生的原因:系统中有两个或两个以上的事务都处于等待状态,并且每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何一个事务都无法继续执行,这样系统就进入了死锁状态。
解决办法:①、死锁的预防:一次封锁法、顺序封锁法 ②、死锁的诊断与解除:超时法、等待图法
③、选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,
使其它事务能继续运行下去。