数据库保护习题及答案Word下载.docx
《数据库保护习题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《数据库保护习题及答案Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
它由PX协议及一条规则"
X封锁必须保留到事务终点(COMMIT或ROLLBACK)"
组成。
(6)死锁:
有两个或以上的事务处于等待状态,每个事务都在等待另一个事务解除封锁,它才能继续执行下去,结果任何一个事务都无法执行,这种现象就就是死锁。
(7)串行调度:
多个事务依次执行,称为串行调度。
(8)并发调度:
利用分时的方法,同时处理多个事务,称为事务的并发调度。
(9)可串行化调度:
如果某事务集的一个并发调度的结果与某个串行调度等价,则称此并发调度就是就是可串行化调度。
(10)不可串行化调度:
某事务集的一个并发调度结果,如果与任一串行调度均不等价,则该并发调度就是不可串行化调度。
(11)S封锁:
共享型封锁。
果事务T对某数据R加上S封锁,那么其它事务对数据R的X封锁便不能成功,而对数据R的S封锁请求可以成功。
这就保证了其她事务可以读取R但不能修改R,直到事务T释放S封锁。
(12)PS协议:
任何要更新记录R的事务必须先执行LOCKS(R)操作,以获得对该记录寻址的能力并对它取得S封锁。
如果未获准S封锁,那么这个事务进入等待状态,一直到获准S封锁,事务才继续进行下去。
当事务获准对记录R的S封锁后,在记录R修改前必须把S封锁升级为X封锁。
(13)PSC协议:
由PS协议与“将S封锁保持到事务终点”组成。
任何更新记录R的事务必须先执行LOCKS(R)操作,以获得对该记录寻址的能力并对它取得S封锁。
并将S封锁保持到事务终点。
(14)两段封锁协议:
(1)在对任何数据进行读写操作之前,事务首先要获得对该数据的封锁;
(2)在释放一个封锁之后,事务不再获得任何其她封锁。
6、2试叙事务的四个性质,并解释每一个性质对DBS有什么益处?
事务的四个性质就是:
原子性、一致性、隔离性与持久性。
(1)原子性(具体含义见教材):
事务中所有操作应视为整体,不可分割。
(2)一致性(具体含义见教材):
一个事务独立执行的结果将保证数据库的一致性,即数据不会因事务的执行而遭受破坏。
(3)隔离性(具体含义见教材):
隔离性要求在并发事务被执行时,系统应保证与这些事务先后单独执行时结果一样,使事务如同在单用户环境下执行一样。
(4)持久性(具体含义见教材):
要求事务对数据库的所有更新应永久地反映在数据库中。
6、3事务的COMMIT操作与ROLLBACK操作各做些什么事情?
COMMIT操作表示事务成功地结束(提交),此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付实施。
ROLLBACK操作表示事务不成功地结束,此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的更新必须被撤销,数据库应恢复该事务到初始状态。
6、4UNDO操作与REDO操作各做些什么事情?
UNDO操作就是反向扫描"
日志"
文件,撤销对数据库的更新操作,使数据库恢复到更新前的状态;
REDO操作正向扫描日志文件,重新做一次更新,使数据库恢复到更新后的状态。
6、5DBS中有哪些类型的故障?
哪些故障破坏了数据库?
哪些故障未破坏数据库,但其中某些数据变得不正确?
数据库系统故障有事务故障、系统故障、介质故障。
其中介质故障破坏数据库,事务故障、系统故障未破坏数据库但使其中某些数据变得不正确。
6、6什么就是“运行记录优先原则”?
其作用就是什么?
在数据库系统中,写一个修改到数据库中与写一个表示这个修改的登记记录到日志文件中就是两个不同的操作,在这两个操作之间有可能发生故障。
这时,如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改,那么以后也就无法撤消这个修改。
为了安全起见,采用“运行记录优先原则”。
它包括两点:
(1)至少要等相应运行记录已经写入“日志”文件后,才能允许事务往数据库中写记录。
(2)直至事务的所有运行记录都已写入运行“日志”文件后,才能允许事务完成“ENDTRANSACTION”处理。
采用“运行记录优先原则”,可以保证所做的操作都记录在日志中,便于故障处理,维护数据库的一致性。
6、7什么就是数据库的恢复?
恢复的基本原则就是什么,恢复如何实现?
数据库的恢复就是指当数据库系统发生故障时,通过一些技术,使数据库从被破坏、不正确的状态恢复到最近一个正确的状态。
恢复的基本原则就就是冗余,即数据的重复存储。
恢复的常用方法有:
(1)定期对整个数据库进行复制或转储;
(2)建立日志文件;
(3)恢复。
用REDO或UNDO处理。
6、8数据库的并发操作会带来哪些问题?
如何解决?
数据库的并发操作会带来三类问题:
(1)丢失更新问题;
(具体内容见教材P158)
(2)不一致分析问题
(3)“脏数据”的读出。
解决的办法通常就是采用“封锁”技术。
6、9有哪些“丢失更新”问题?
如何处理?
(1)并发调度引起的“丢失更新”问题。
在并发调度中,如两个事务同时对某数据库进行更新操作,在操作中丢失了其中某个事务对某数据的更新操作。
处理的办法就就是对并发操作采用X封锁技术。
(2)由恢复引起的更新丢失现象。
采用X封锁以后,先执行事务T1,再执行事务T2,此时,如果T2做ROLLBACK操作,就把事务T2的更新丢失了。
处理方式就是采用PXC协议,不允许事务T1执行解锁操作直到事务执行到终点(COMMIT或ROLLBACK)。
6、10为什么DML只提供解除S封锁的操作,而不提供解除X封锁的操作?
为了防止由恢复引起的更新丢失现象,PXC协议规定:
X封锁必须保留到事务终点(COMMIT或ROLLBACK)。
因此在DML中,COMMIT或ROLLBACK的语义中包含了X封锁的解除,不用提供解除X封锁的操作。
而对于S封锁而言,它就是一种共享型的封锁(读取但不能修改),其数据不可能就是未提交的修改,封锁不必等提交后才能解除,因此可以由事务用UNLOCK解除各自对数据的封锁。
6、11为什么有些封锁需保留到事务终点,而有些封锁可随时解除?
因为有的封锁需要更新数据,保留到终点才能确认就是否提交或回退以避免脏数据的读出,所以这些封锁需要保留到事务终点。
而有些事务全部或部分操作只就是读取数据,不涉及更新数据操作,因此这一部分操作的封锁可以随时解除。
6、12死锁的发生就是坏事还就是好事?
试说明理由。
如何解除死锁状态?
死锁的发生即就是坏事又就是好事。
(1)使并发事务不能继续执行下去,造成时间开销却不产生结果。
(2)在某些时候我们要利用它来解决更新操作导致的数据库不一致状态。
解除死锁状态:
抽出某个事务作为牺牲品,把它撤消,做回退操作,解除它的所有封锁,并恢复到初始状态。
6、13试叙述"
串行调度"
与"
可串行化调度"
的区别。
串行调度就是多个事务按照一定的次序依次执行;
在某一时刻只有一个事务在执行。
而可串行化调度就是并发调度中的一个概念。
在并发调度中,某一时刻有多个事务同时被处理。
如果某事务集的一个并发调度的结果与某个串行调度等价,则称此并发调度就是就是可串行化调度。
(以上几题具体可参照书上p20-21)
6、14什么就是数据库的完整性?
DBMS的完整性子系统的功能就是什么?
数据库的完整性就是指数据的正确性与相容性。
DBMS完整性子系统的功能就是:
(1)监督事务的执行,并测试就是否违反完整性规则;
(2)如有违反,则采取恰当的操作,如拒绝、报告违反情况,改正错误等方法进行处理。
6、15完整性规则由哪几个部分组成?
关系数据库的完整性规则有哪几类?
完整性规则由三部分组成:
触发条件:
即什么时候使用规则进行检查;
约束条件:
即要检查什么样的错误;
ELSE子句:
即查出错误后该如何处理。
完整性规则有以下三类:
域完整性规则,用于定义属性的取值范围;
域联系的规则,定义一个或多个关系中,属性值间的联系、影响与约束。
关系完整性规则,定义更新操作对数据库中值的影响与限制。
6、16试详述SQL中的完整性约束机制?
SQL中的完整性约束规则有主键约束、外键约束、属性值约束与全局约束等多种形式。
△主键约束。
它就是数据中最重要的一种约束。
在关系中主键值不允许空,也不允许出现重复,体现了关系要满足实体完整性规则。
主键可用主键子句或主键短语进行定义。
△外键约束。
根据参照完整性规则,依赖关系中外键或者为空值,或者就是基本关系(参照关系)中的该键的某个值。
外键用外键关系子句定义,并考虑删除基本关系元组或修改基本关系的主键值的影响,依赖关系可按需要采用RESTRICT、SETNULL、CASCADE方式。
△属性值约束。
当要求某个属性的值不允许空值时,那么可以在属性定义后加上关键字:
NOTNULL,这就是非空值约束。
还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREAT DOMAIN定义新域并加以属性值检查。
△全局约束。
在关系定义时,可以说明一些比较复杂的完整性约束,这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束。
主要有基于元组的检查子句与断言。
前者就是对单个关系的元组值加以约束,后者则可对多个关系或聚合操作有关的完整性约束进行定义。
6、17参照完整性规则在SQL可以用哪几种方式实现?
删除基本关系的元组时,依赖关系可以采取的做法有哪三种?
修改基本关系的主键值时,依赖关系可以采取的做法有哪三种?
参照完整性规则要求"
不引用不存在的实体"
参照完整性规则在SQL可用以下几种方式实现:
(1)在SQL中采用外键子句定义外键,并考虑删除基本关系元组或修改基本关系的主键值,对依赖关系产生的影响;
(2)在属性值上进行约束如基于属性的检查;
(3)全局约束中的基于元组的检查子句等。
删除基本关系元组或修改基本关系的主键值时,依赖关系可以采用的做法有:
△RESTRICT方式:
只有当依赖关系中没有一个外键值与基本关系中要删除/修改的主键值相对应时,系统才能执行删除/修改操作,否则拒绝删除或修改。
△SETNULL方式:
删除基本元组时,将依赖关系中所有与基本关系中被删除主键值相对应的外键值置为空值。
修改基本关系的主键值时,将依赖关系中所有与基本关系中被修改主键值相对应的外键值置为空值。
△CASCADE方式:
若删除则将依赖关系中所有外键值与基本关系中要删除的主键值相对应的元组一并删除,若修改则将依赖关系中所有与基本关系中要修改的主键值相对应的外键值一并修改为新值。
6、1