五邑大学 78911章数据库答案.docx
- 文档编号:15890108
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:17
- 大小:60.21KB
五邑大学 78911章数据库答案.docx
《五邑大学 78911章数据库答案.docx》由会员分享,可在线阅读,更多相关《五邑大学 78911章数据库答案.docx(17页珍藏版)》请在冰点文库上搜索。
五邑大学78911章数据库答案
这里是第7、8、9、11章课本的答案,里面有少部分没有的,请大家自己对照一下原来邮箱里面的答案,有疏忽的地方,请原谅!
另一部分等整理好就发上去……
第7章数据库恢复技术
1.试述事务的概念及事务的4个特性。
答:
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务具有4个特性:
原子性(Atomicity)、一致性(consistency)、隔离性(Isolation)和持续性(Durability)。
这4个特性也简称为ACID特性。
原子性:
事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:
一个事务的执行不能被其他事务干扰。
即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:
持续性也称永久性(Perfnanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
接下来的其他操作或故障不应该对其执行结果有任何影响。
2.为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
答:
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。
则可以定义一个事务T,T包括两个操作;Ql=Ql一Q,Q2=Q2+Q。
如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。
3.数据库中为什么要有恢复子系统?
它的功能是什么?
答:
因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:
把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。
4.数据库运行中可能产生的故障有哪几类?
哪些故障影响事务的正常执行?
哪些故障破坏数据库数据?
答:
数据库系统中可能发生各种各样的故障,大致可以分以下几类:
(1)事务内部的故障;
(2)系统故障;
(3)介质故障;
(4)计算机病毒。
事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据。
5.数据库恢复的基本技术有哪些?
答:
数据转储和登录日志文件是数据库恢复的基本技术。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
6.数据库转储的意义是什么?
试比较各种数据转储方法。
答:
数据转储是数据库恢复中采用的基本技术。
所谓转储即DBA定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。
当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。
静态转储:
在系统中无运行事务时进行的转储操作,如上图所示。
静态转储简单,但必须等待正运行的用户事务结束才能进行。
同样,新的事务必须等待转储结束才能执行。
显然,这会降低数据库的可用性。
动态转储:
指转储期间允许对数据库进行存取或修改。
动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。
但是,转储结束时后援副本上的数据并不能保证正确有效。
因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。
为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件(109file)。
这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。
转储还可以分为海量转储和增量转储两种方式。
海量转储是指每次转储全部数据库。
增量转储则指每次只转储上一次转储后更新过的数据。
从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。
但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。
7.什么是日志文件?
为什么要设立日志文件?
答:
(1)日志文件是用来记录事务对数据库的更新操作的文件。
(2)设立日志文件的目的是:
进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
8.登记日志文件时为什么必须先写日志文件,后写数据库?
答:
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。
有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。
如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。
所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
9.针对不同的故障,试给出恢复的策略和方法。
(即如何进行事务故障的恢复?
系统故障的恢复?
介质故障恢复?
)
答:
事务故障的恢复:
事务故障的恢复是由DBMSDBMs执行恢复步骤是:
自动完成的,对用户是透明的。
(1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作;
(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库;
(3)继续反向扫描日志文件,做同样处理;
(4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
系统故障的恢复:
系统故障可能会造成数据库处于不一致状态:
一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。
因此恢复操作就是要撤销(UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务。
系统的恢复步骤是:
(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(uNDO队列)。
(2)对撤销队列中的各个事务进行UNDO处理。
进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”BeforeImage)写入数据库。
(3)对重做队列中的各个事务进行REDO处理。
进行REDO处理的方法是:
正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。
即将日志记录中“更新后的值”Afte,Image)写入数据库。
介质故障的恢复:
介质故障是最严重的一种故障。
恢复方法是重装数据库,然后重做已完成的事务。
具体过程是:
(1)DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态;
(2)DBA装入转储结束时刻的日志文件副本;
(3)DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。
10、11缺
第8章并发控制
1.在数据库中为什么要并发控制?
答:
数据库是共享资源,通常有许多个事务同时在运行。
当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。
若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。
所以数据库管理系统必须提供并发控制机制。
2.并发操作可能会产生哪几类数据不一致?
用什么方法能避免各种不一致的情况?
答:
并发操作带来的数据不一致性包括三类:
丢失修改、不可重复读和读“脏’夕数据。
(l)丢失修改(lostupdate)两个事务Tl和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl提交的结果,导致Tl的修改被丢失。
(2)不可重复读(Non一RepeatableRead)不可重复读是指事务Tl读取数据后,事务几执行更新操作,使Tl无法再现前一次读取结果。
(3)读“脏”数据(DirtyRead)读“脏’夕数据是指事务Tl修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl由于某种原因被撤销,这时Tl已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。
避免不一致性的方法和技术就是并发控制。
最常用的技术是封锁技术。
也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
3.什么是封锁?
答:
封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。
加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
4、基本的封锁类型有几种?
试述它们的含义。
基本的封锁类型有两种:
排它锁(ExclusiveLocks,简称x锁)和共享锁(ShareLocks,简称S锁)。
排它锁又称为写锁。
若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。
这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁又称为读锁。
若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。
这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。
5、如何用封锁机制保证数据的一致性?
答:
DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务Tl在对A进行修改之前先对A执行xock(A),即对A加x锁。
这样,当几请求对A加x锁时就被拒绝,几只能等待Tl释放A上的锁后才能获得对A的x锁,这时它读到的A是Tl更新后的值,再按此新的A值进行运算。
这样就不会丢失Tl的更新。
DBMS按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读“脏’夕数据等数据不一致性。
8.什么是活锁?
什么是死锁?
答:
如果事务Tl封锁了数据R,事务几又请求封锁R,于是几等待。
几也请求封锁R,当Tl释放了R上的封锁之后系统首先批准了几的请求,几仍然等待。
然后几又请求封锁R,当几释放了R上的封锁之后系统又批准了几的请求……几有可能永远等待,这就是活锁的情形。
活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。
如果事务Tl封锁了数据Rl,几封锁了数据凡,然后Tl又请求封锁几,因几已封锁了几,于是Tl等待几释放几上的锁。
接着几又申请封锁Rl,因Tl已封锁了Rl,几也只能等待Tl释放Rl上的锁。
这样就出现了Tl在等待几,而几又在等待T}的局面,T}和几两个事务永远不能结束,形成死锁。
9.试述活锁的产生原因和解决方法。
答:
活锁产生的原因:
当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。
避免活锁的简单方法是采用先来先服务的策略。
当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
11.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
答:
数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除的方法。
DBMS中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
超时法是:
如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。
若时限设置得太长,又不能及时发现死锁发生。
DBMS并发控制子系统检测到死锁后,就要设法解除。
通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。
当然,对撤销的事务所执行的数据修改操作必须加以恢复。
12.什么样的并发调度是正确的调度?
答:
可串行化(Serializable)的调度是正确的调度。
可串行化的调度的定义:
多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
13.设Tl,几,几是如下的3个事务:
Tl:
A:
=A+2;
T2:
A:
=A*2;
T3:
A:
=A**2;(A<-A*A)
设A的初值为0。
(l)若这3个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。
答:
A的最终结果可能有2、4、8、16。
因为串行执行次序有TlT2T3、TlT3T2、T2T1T3、T2T3Tl、T3T1T2、T3T2Tl。
对应的执行结果是16、8·4·2·4·2。
(2)请给出一个可串行化的调度,并给出执行结果
答:
最后结果A为16,是可串行化的调度。
(3)请给出一个非串行化的调度,并给出执行结果。
答:
最后结果A为0,为非串行化的调度。
(4)若这3个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
答:
(5)若这3个事务都遵守两段锁协议,请给出一个产生死锁的调度。
答:
15.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。
证明:
首先以两个并发事务Tl和T2为例,存在多个并发事务的情形可以类推。
根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
(l)事务Tl写某个数据对象A,T2读或写A;
(2)事务Tl读或写某个数据对象A,T2写A。
下面称A为潜在冲突对象。
设Tl和T2访问的潜在冲突的公共对象为{A1,A2…,An}。
不失一般性,假设这组潜在冲突对象中X=(A1,A2,…,Ai}均符合情况1。
Y={Ai+1,…,An}符合所情况
(2)。
VX∈x,Tl需要XlockX①
T2需要Slockx或Xlockx②
1)如果操作①先执行,则Tl获得锁,T2等待
由于遵守两段锁协议,Tl在成功获得x和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。
这时如果存在w∈x或Y,T2已获得w的锁,则出现死锁;否则,Tl在对x、Y中对象全部处理完毕后,T2才能执行。
这相当于按Tl、T2的顺序串行执行,根据可串行化定义,Tl和几的调度是可串行化的。
2)操作②先执行的情况与(l)对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。
证毕。
16.举例说明,对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。
答:
其他的缺!
第9章数据库设计概论
1.试述数据库设计的特点。
答:
数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。
其主要特点有:
(l)数据库建设是硬件、软件和干件(技术与管理的界面)的结合。
(2)从软件设计的技术角度看,数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。
2.(缺)
3.试述数据库设计过程。
答:
这里只概要列出数据库设计过程的六个阶段:
(l)需求分析;
(2)概念结构设计;(3)逻辑结构设计;(4)数据库物理设计;(5)数据库实施;(6)数据库运行和维护。
这是一个完整的实际数据库及其应用系统的设计过程。
不仅包括设计数据库本身,还包括数据库的实施、运行和维护。
设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。
4.试述数据库设计过程中结构设计部分形成的数据库模式。
答:
数据库结构设计的不同阶段形成数据库的各级模式,即:
(l)在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E一R图;
(2)在逻辑设计阶段将E一R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图(Vi娜),形成数据的外模式;(3)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
第11章关系数据库设计理论
1.理解并给出下列术语的定义:
函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All一key)、1NF、ZNF、3NF、BcNF、多值依赖、4NF。
定义1:
设R(U)是属性集U上的关系模式。
X,Y是属性集U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作XY。
(即只要X上的属性值相等,Y上的值一定相等。
)
术语和记号:
XY,但Y不是X的子集,则称XY是非平凡的函数依赖。
若不特别声明,总是讨论非平凡的函数依赖。
XY,但Y是X的子集,则称XY是平凡的函数依赖。
若XY,则X叫做决定因素(Determinant)。
若XY,YX,则记作XY。
若Y不函数依赖于X,则记作XY。
定义2:
在R(U)中,如果XY,并且对于X的任何一个真子集X’,都有X’Y,则称Y对X完全函数依赖
若XY,但Y不完全函数依赖于X,则称Y对X部分函数依赖
定义3:
若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)。
定义4:
若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式R∈2NF。
(即1NF消除了非主属性对码的部分函数依赖则成为2NF)。
定义5:
关系模式R中若不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集)使得XY,YX,YZ成立,则称R∈3NF。
定义6:
关系模式R∈1NF。
若XY且Y不是X的子集时,X必含有码,则R∈BCNF。
定义7:
关系模式R∈1NF,如果对于R的每个非平凡多值依赖XY(Y不是X的子集,Z=U-X-Y不为空),X都含有码,则称R∈4NF。
2.建立一个关于系、学生、班级、学会等诸信息的关系数据库。
学生:
学号、姓名、出生年月、系名、班号、宿舍区。
班级:
班号、专业名、系名、人数、入校年份。
系:
系名、系号、系办公地点、人数。
学会:
学会名、成立年份、办公地点、人数。
语义如下:
一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。
每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。
指出各关系模式的候选码、外部码,有没有全码存在?
解:
(1)关系模式如下:
学生:
S(Sno,Sname,Sbirth,Dept,Class,Rno)
班级:
C(Class,Pname,Dept,Cnum,Cyear)
系:
D(Dept,Dno,Office,Dnum)
学会:
M(Mname,Myear,Maddr,Mnum)
(2)每个关系模式的最小函数依赖集如下:
A、学生S(Sno,Sname,Sbirth,Dept,Class,Rno)的最小函数依赖集如下:
SnoSname,SnoSbirth,SnoClass,ClassDept,DEPTRno
传递依赖如下:
由于SnoDept,而DeptSno,DeptRno(宿舍区)
所以Sno与Rno之间存在着传递函数依赖。
由于ClassDept,DeptClass,DeptRno
所以Class与Rno之间存在着传递函数依赖。
由于SnoClass,ClassSno,ClassDept
所以Sno与Dept之间存在着传递函数依赖。
B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:
ClassPname,ClassCnum,ClassCyear,PnameDept.
由于ClassPname,PnameClass,PnameDept
所以C1ass与Dept之间存在着传递函数依赖。
C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:
DeptDno,DnoDept,DnoOffice,DnoDnum
根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。
D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:
MnameMyear,MnameMaddr,MnameMnum
该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
A、学生S候选码:
Sno;外部码:
Dept、Class;无全码
B、班级C候选码:
Class;外部码:
Dept;无全码
C、系D候选码:
Dept或Dno;无外部码;无全码
D、学会M候选码:
Mname;无外部码;无全码
3.试举出3个多值依赖的实例。
答:
(1)关系模式MSC(M,S,C)中,M表示专业,S表示学生,C表示该专业的必修课。
假设每个专业有多个学生,有一组必修课。
设同专业内所有学生选修的必修课相同,实例关系如下。
按照语义对于M的每一个值Mi,s有一个完整的集合与之对应而不问C取何值,所以M一一S。
由于C与S的完全对称性,必然有M一一C成立。
(2)关系模式ISA(I,S,A)中,I表示学生兴趣小组,S表示学生,A表示某兴趣小组的活动项目。
假设每个兴趣小组有多个学生,有若干活动项目。
每个学生必须参加所在兴趣小组的所有活动项目,每个活动项目要求该兴趣小组的所有学生参加。
按照语义有I一一S,I一一A成立。
(3)关系模式RDP(R,D,P)中,R表示医院的病房,D表示责任医务人员,P表示病人。
假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该病房的所有病人。
7.试由amstrong公理系统推导出下面三条推理规则:
(l)合并规则:
若X一Z,X一Y,则有X一YZ
(2)伪传递规则:
由x一Y,明吟z有翔一z
(3)分解规则:
x一Y,zcy,有x一z
证明
(l)已知X一Z,由增广律知哟,YZ,又因为X一Y,可得狱一X卜)YZ,最后根据传递律得x一YZ。
(2)已知X一Y,据增广律得翔一Wy,因为阴几)Z,所以X林协
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五邑大学 78911章数据库答案 大学 78911 数据库 答案