自考数据库系统原理第6章代码4735练习题6.docx
《自考数据库系统原理第6章代码4735练习题6.docx》由会员分享,可在线阅读,更多相关《自考数据库系统原理第6章代码4735练习题6.docx(17页珍藏版)》请在冰豆网上搜索。
![自考数据库系统原理第6章代码4735练习题6.docx](https://file1.bdocx.com/fileroot1/2023-4/2/9c9518c0-3f8e-403a-8bc2-5b02abb398d8/9c9518c0-3f8e-403a-8bc2-5b02abb398d81.gif)
自考数据库系统原理第6章代码4735练习题6
练习题6
6.1名词解释
1)事务:
事务是构成单一逻辑工作单元的操作集合。
要么完整地执行,要么完全不执行。
2)数据库的一致性:
一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。
3)数据库的可恢复性:
系统能把数据库从被破坏、不确定的状态,恢复到最近一个正确的状态,DBMS的这种能力称为数据库的可恢复性(Recovery)
4)并发操作:
在多用户共享系统中,许多事务可能同时对同一数据进行操作,这种操作称为并发操作。
5)封锁:
封锁是系统保证对数据项的访问以互斥方式进行的一种手段。
6)X锁:
事务T对某数据加了X锁后,其他事务要等T解除X锁后,才能对这个数据进行封锁。
7)S锁:
事务T对某数据加了S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。
8)调度:
事务的执行次序称为“调度”。
9)串行调度:
多个事务依次执行,称为事务的串行调度。
10)并发调度:
利用分时的方法,同时处理多个事务,则称为事务的并发调度。
11)可串行化调度:
如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么这个并发调度称为“可串行化的调度”。
12)不可串行化调度:
如果一个并发调度的执行结果不与某一串行调度的执行结果等价,那么这个并发调度称为“不可串行化调度”。
6.2事务的COMMIT语句和ROLLBACK语句各做什么事情?
答:
COMMIT(提交):
语句表示事务执行成功地结束,此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。
ROLLBACK(“回退”或“回滚”):
语句表示事务执行不成功地结束,此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。
6.3试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?
每一个性质对DBS有什么益处?
答:
①事务的原子性:
是指一个事务对DB的所有操作,是一个不可分割的工作单元。
原子性是由DBMS的事务管理子系统实现的。
事务的原子性保证了DBS的完整性。
②事务的一致性:
是指数据不会因事务的执行而遭受破坏。
事务的一致性是由DBMS的完整性子系统实现的。
事务的一致性保证数据库的完整性。
③事务的隔离性:
是指事务的并发执行与这些事务单独执行时结果一样。
事务的隔离性是由DBMS的并发控制子系统实现的。
隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。
④事务的持久性:
是指事务对DB的更新应永久地反映在DB中。
持久性是由DBMS的恢复管理子系统实现的。
持久性能保证DB具有可恢复性。
6.4典型的数据库恢复策略是什么?
答:
(1)平时做好两件事:
转储和建立日志。
1)周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带存储介质中。
2)建立日志数据库。
记录事务的开始、结束标志,记录事务对数据库的每一次插入和修改前后的值,写到“日志”库中,以便有案可查。
(2)一旦发生数据库故障,分两种情况进行处理:
1)如果数据库遭到灾难性故障,例如磁头脱落、磁盘损坏等,这时数据库已不能用了,就必须装入最近一次拷贝的数据库备份到新的磁盘,然后利用日志执行“重做”(REDO)已提交的事务,把数据库恢复到故障前的状态。
2)如果数据库未遭到灾难性故障,但破坏了数据库的一致性(某些数据不正确),此时不必去拷贝存档的数据库,只要利用日志库“撤销(UNDO)”所有不可靠的修改,再利用日志库执行“重做”(REDO)已提交的、但对数据库的更新可能还留在内存缓冲区的事务,就可以把数据库恢复到正确的状态。
6.5DBS中有哪些类型的故障?
哪些故障破坏了数据库?
哪些故障未破坏数据库,但使其中某些数据变得不正确?
答:
DBS中DB的故障主要有三类:
事务故障、系统故障和介质故障。
前两类故障未破坏DB,但使其中某些数据变得不正确,此时只要利用日志撤消或重做事务。
介质故障将破坏DB,此时只能把DB备份拷贝到新的磁盘,再利用日志重做事务对DB的修改。
6.6“检查点机制”的主要思想是什么?
答:
“检查点机制”的主要思想是在检查点时刻才真正做到把对DB的修改写到磁盘。
在DB恢复时,只有那些在最后一个检查点到故障点之间还在执行的事务才需要恢复。
6.6什么是UNDO操作和REDO操作?
为什么要这样设置?
答:
UNDO和REDO是系统内部命令。
在DB恢复时,对于已经COMMIT但更新仍停留在缓冲区的事务要执行REDO(重做)操作,即根据日志内容把该事务对DB修改重做一遍。
对于还未结束的事务要执行UNDO(撤消)操作,即据日志内容把该事务对DB已作的修改撤消掉。
设置UNDO和REDO操作,是为了使数据库具有可恢复性。
6.8COMMIT语句与检查点时刻的操作如何协调?
事务在COMMIT时,事务对DB的更新已提交,但对DB的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。
因此事务的真正结束是在COMMIT后还要加上遇到检查点时刻。
6.9数据库的并发操作会带来哪些问题?
如何解决?
答:
如果不加控制,数据库的并发操作会带来四个问题:
丢失更新问题、读脏数据问题、错误求和问题、不可重复读问题。
解决并发操作带来的问题,可以使用封锁技术和时标技术。
6.10使用X锁和S锁时各有那些操作?
X锁和S锁之间是如何协调的?
答:
使用X锁的操作有两个:
1)申请X锁操作“XFINDR”:
表示事务对数据R申请加X锁,若成功,则可以读或写数据R;如果不成功,那么这个事务将进入等待队列,一直到获准X锁,事务才能继续做下去。
2)解除X锁操作“XRELEASER”:
表示事务要解除对数据R的X锁。
使用S锁的操作有三个:
1)申请S锁操作“SFINDR”:
表示事务对数据R申请加S锁,若成功,则可以读数据R,但不可以写数据R;如果不成功,那么这个事务将进入等待队列,一直到获准S锁,事务才能继续做下去。
2)升级和写操作“UPDXR”:
表示事务要把对数据R的S锁升级为X锁,若成功则更新数据R,否则这个事务进入等待队列。
3)解除S锁操作“SRELEASER”:
表示事务要解除对数据R的S锁。
6.11为什么X锁需保留到事务重点,而S锁可随时解除?
答:
在一个事务对数据加上X锁后,并且对数据进行了修改,如果过早解X锁,有可能使其它事务读了未提交数据(且随后被退回),引起丢失其它事务的更新。
由于S锁只允许读数据,因此解除S锁的操作不必非要合并到事务的结束操作中去,可以随时根据需要解除S锁。
6.12什么是封锁的粒度?
封锁粒度的大小对并发系统有什么影响?
答:
封锁的粒度:
封锁对象的大小称为封锁的粒度(Granularity)。
封锁粒度与系统的并发度和并发控制的开销密切相关。
封锁的粒度越大,并发度也就越小,但同时系统的开销也就越小;相反,封锁的粒度越小,并发度越高,但系统开销也就越大。
6.13在封锁技术中,封锁协议可分成哪三个级别?
各解决了并发调度中的什么问题?
答:
1)一级封锁协议:
事务T在修改数据之前必须先对其加X锁,直到事务T结束(包括正常结束和非正常结束)才释放。
一级封锁协议可防止丢失数据,并保证事务T是可恢复的。
2)二级封锁协议:
是在一级封锁协议的基础上再加上该事务T在读数据R之前必须先对其加上S锁,读完后释放S锁。
二级封锁协议除防止丢失修改外,还可以进一步防止读“脏”数据。
但由于该协议允许读完数据后即可释放S锁,所以它不能保证可重复读。
3)三级封锁协议:
是在一级封锁协议的基础上再加上事务在读数据之前必须先对其加上S锁,直到事务结束才释放X锁和S锁。
三级封锁协议除防止丢失修改和不读“脏”数据外,还进一步防止了不可重复读。
6.14试叙述“串行调度”与“可串行化调度”的区别。
答:
如果多个事务依次执行,则称事务串行调度。
如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。
如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。
6.15SQL中事务存取模式的定义和隔离级别的定义与数据库的并发控制有什么关系?
答:
事务的存取模式是对事务的读/写操作的限制。
事务的隔离机制是对事务并发控制的约束。
隔离机制从高到低有四个级别:
可串行化,可重复读,读提交数据和可以读未提交数据。
6.16什么是数据库的完整性?
DBMS的完整性子系统的主要功能是什么?
答:
DB的完整性是指数据的正确性、有效性和相容性,防止错误的数据进入DB。
DBMS的完整性子系统的主要功能有两点:
监督事务的执行,并测试是否违反完整性规则;若有违反现象,则采取恰当的操作。
6.17完整性规则由哪几个部分组成?
SQL中的完整性约束有哪些?
答:
完整性规则由三部分组成:
触发条件,约束条件和ELSE子句。
SQL中把完整性约束分成三大类:
域约束,基本表约束和断言。
6.18参照完整性规则在SQL中可以用哪几种方法实现?
答:
参照完整性规则,在SQL中可以用外键子句、检查子句、断言等三种方式实现。
6.19删除参照关系的元组时,对依赖关系有哪些影响?
修改参照关系的主键值时,对依赖关系有哪些影响?
答:
删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一:
RESTRICT方式、CASCADE方式和SETNULL方式。
(解释略)
修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。
(解释略)
6.20试对SQL中检查约束(CHECK子句)和断言两种完整性约束进行比较,各说明什么对象?
何时激活?
能保证数据库的一致性吗?
答:
检查子句主要用于对属性值、元组值加以限制和约束。
断言实际上是一种涉及面广的检查子句,用CREATE语句来定义。
这两种约束都是在进行插入或修改时激活,进行检查。
检查子句只在定义它的基本表中有效,而对其他基本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。
而断言能保证完整性约束彻底实现。
6.21设教学数据库的关系如下:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,SCORE)
C(C#,CNAME,T#)
试用多种方法定义下列完整性约束:
⑴在关系S中插入的学生年龄值应在16~25岁之间。
⑵在关系SC中插入元组时,其S#值和C#值必须分别在S和C中出现。
⑶在关系C中删除一个元组时,首先要把关系SC中具有同样C#值的元组全部删去。
⑷在关系S中把某个S#值修改为新值时,必须同时把关系SC中那些同样的S#值也修改为新值。
解:
这里每个约束用一种方式定义。
(1)用检查子句定义:
CHECK(AGEBETWEEN16AND25);
(2)在关系SC的定义中,用外键子句定义:
FOREIGNKEY(S#)REFERENCESS(S#);
FOREIGNKEY(C#)REFERENCESC(C#);
(3)在关系SC的定义中,用外键子句定义:
FOREIGNKEY(C#)REFERENCESC(C#)
ONDELETECASCADE;
(4)在关系SC的定义中,用外键子句定义:
FOREIGNKEY(S#)REFERENCESS(S#)
ONUPDATECASCADE;
6.22在教学数据库中的关系S、SC、C中,试用SQL的断言机制定义下列两个完整性约束:
⑴学生必须在选修MATHS课后,才能选修其他课程。
⑵每个男学生最多选修20门课程。
解:
(1)这个约束可用下列形式表达:
不存在一个学生的选课,这个学生没学过Maths课。
这样就能很容易地写出断言:
CREATEASSERTIONASSE1CHECK
(NOTEXISTS(SELECTS#
FROMSCX
WHERENOTEXISTS(SELECT*
FROMSCY,C
WHEREY.C#=C.C#ANDY.S#=X.S#
ANDCNAME=’Maths’)));
(2)CREATEASSERTIONASSE2CHECK
(20>=ALL(SELECTCOUNT(C#)
FROMS,SC
WHERES.S#=SC.S#ANDSEX=’M’
GROUPBYS.S#));
6.23什么是触发器?
触发器有哪两个级别?
各用于什么场合?
答:
触发器(Trigger)是一个能由系统自动执行对数据库修改的语句。
触发器有时也称主动规则(Active)或事件—条件—动作规则(Event—Condition—ActionRule,ECA规则)。
触发器分元组级触发器和语句级触发器。
元组级触发器:
用于修改前后的元组。
语句级触发器:
用于修改前后的元组集。
6.24什么是数据库的安全性?
有哪些级别的安全措施?
答:
DB的安全性是指保护DB,防止不合法的使用,以免数据的泄密、更新或破坏。
为了保护DB,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:
环境级、职员级、OS级、网络级、DBS级。
(解释略)
6.25对银行的DBS应采取哪些安全措施?
分别属于哪一级?
(解释略)
答:
6.26什么是“权限”?
用户访问数据库有哪些权限?
对数据库模式有哪些修改权限?
答:
用户(或应用程序)使用DB的方式称为权限。
用户访问DB有四种权限:
Read、Insert、Update和Delete。
用户修改DB模式有四种权限:
Index、Resource、Alteration和Drop。
6.27SQL的视图机制有哪些优点?
答:
SQL的视图机制使系统具有三个优点:
数据安全性,逻辑独立性和操作简便性。
6.28SQL2中的用户权限有哪几类?
并作必要的解释。
答:
SQL2中用户权限有六类:
SELECT、INSERT、DELETE、UPDATE、REFERENCES和USAGE。
(解释略)
6.29试解释SQL中“用户”与“角色”这两个概念。
为什么要有“角色”机制?
答:
在SQL中,用户(User)是实际的人或是访问数据库的应用程序。
而角色(Role)是一组具有相同权限的用户,实际上角色是属于目录一级的概念。
在大型DBS中,用户的数量可能非常大,使用数据库的权限也各不相同。
为了便于管理,引入了角色的概念。
6.30安全性措施中强制存取控制是如何实现的?
答:
这个方法的基本思想是把数据分成若干个密级级别,用户也分成相应的若干个许可证级别。
密级和许可证级别都是严格有序的。
在系统运行时,规定用户只能查看比它级别低或同级的数据,用户只能修改和它同级的数据。
用这种方法来保证系统的安全性。
6.31统计数据库是如何防止用户获取单记录信息的?
答:
在统计数据系统运行时,对查询应作下列限制:
①一个查询查到的记录个数不能太少,至少应是n;
②两个查询查到的记录的“交”数目不能太多,至多是m;
系统可以调整n和m的值,使得用户很难获取个别记录的信息,但要做到完全杜绝是不可能的。
自测题
一、填空题
1.系统目录的功能是存储元数据,元数据主要包括___________的定义。
2.在DBS运行时,DBMS各个子系统要频繁地访问___________,来保证系统正常运行。
3.在应用程序中,事务以BEGINTRANSACTION语句开始,以_COMMIT_或_ROLLBACK____语句结束。
4.事务的原子性是由DBMS的_事务管理子系统______实现的。
5.事务的一致性是由DBMS的_完整性子系统_____实现的。
6.事务的隔离性是由DBMS的__并发控制子系统____实现的。
7.事务的持久性是由DBMS的_恢复管理子系统___实现的。
8.抽象的事务模型中,事务有五种状态:
________、________、________、________和________。
9.恢复的基本原则是___________。
要使数据库具有可恢复性,在平时要做好两件事:
___________和___________。
10.如果对数据库的并发操作不加以控制,则会带来四类问题:
___________、___________、___________和___________。
11.锁(lock)描述了数据项的状态,其作用是使________________。
12.事务的执行次序称为___________。
13.判断一个并发调度是否正确,可以用___________概念来解决。
14.封锁能避免错误的发生,但会引起问题。
15.S封锁增加了并发度,但缺点是___________。
16.两段式封锁是可串行化的_充分__条件。
17.数据库的完整性是指数据的___________、___________和___________。
18.错误数据的输入和输出,称为___________。
19.数据库中数据发生错误,往往是由___________引起的。
20.数据库完整性子系统是根据___________工作的。
21.数据库完整性规则由三部分组成:
___________、___________和___________。
22.SQL中完整性约束有四种:
___________,___________,___________和___________。
23.SQL中全局约束有_基于元组的检查子句___和_断言___两种。
24.在SQL的外键约束中,如果“ONDELETE……”短语不写时,系统默认是__RESTRICT____方式。
25.用户使用数据库的方式,称为___________。
26.SQL中的安全性机制,主要有两个:
_视图___和___授权___。
27.SQL的授权语句中的关键字PUBLIC表示___________。
28.SQL中“REVOKEGRANTOPTIONFOR……”表示___________。
二、单项选择题(在备选的答案中选出一个正确答案)
1.事务(transaction)是一个[]
A.程序B.进程C.操作序列D.完整性规则
2.事务对DB的修改,应该在数据库中留下痕迹,永不消逝。
这个性质称为事务的[]
A.持久化B.隔离性C.一致性D.原子性
3.事务的并发执行不会破坏DB的完整性,这个性质称为事务的[]
A.持久化B.隔离性C.一致性D.原子性
4.数据库恢复的重要依据是[]
A.DBAB.DDC.文档D.事务日志
5.后备副本的主要用途是[]
A.数据转储B.历史档案C.故障恢复D.安全性控制
6.“日志”文件用于保存[]
A.程序运行过程B.数据操作
C.程序执行结果D.对数据库的更新操作
7.在DB恢复时,对已经COMMIT但更新未写入磁盘的事务执行[]
A.REDO处理B.UNDO处理C.ABORT处理D.ROLLBACK处理
8.在DB恢复时,对尚未做完的事务执行[]
A.REDO处理B.UNDO处理C.ABORT处理D.ROLLBACK处理
9.在DB技术中,“脏数据”是指[]
A.未回退的数据B.未提交的数据
C.回退的数据D.未提交随后又被撤消的数据
10.如果有n个事务串行调度,那么不同的有效调度有[]
A.n2B.2nC.4nD.n!
11.如果n个事务并发调度,那么可能的并发调度数目[]
A.为nB.为4nC.为n!
D.大于n!
12.事务的执行次序称为[]
A.过程B.步骤C.调度D.优先级
13.在事务依赖图中,如果两个事务的依赖关系形成一个循环,那么就会[]
A.出现活锁现象B.出现死锁现象
C.事务执行成功D.事务执行失败
14.“所有事务都是两段式”与“事务的并发调度是可串行化”两者之间关系是[]
A.同时成立与不成立B.没有必然的联系
C.前者蕴涵后者D.后者蕴涵前者
15.“断言”是DBS采用的[]
A.完整性措施B.安全性措施C.恢复措施D.并发控制措施
三、简答题
1.试叙述事务的ACID性质及其实现者。
2.COMMIT操作和检查点时的操作有些什么联系?
你认为应该如何恰当协调这两种操作才有利于DB的恢复?
3.日志文件中记载了哪些内容?
4.试比较并发与并行的区别。
5.试解释DB的并发控制与恢复有什么关系?
6.X封锁与S封锁有什么区别?
四、设计题
设教学数据库中有四个基本表:
系DEPT(D#,DNAME,MGR#)
其属性分别表示系编号、系名、系主任的教师工号。
教师T(T#,TNAME,AGE,SEX,SALARY,D#)
其属性分别表示教师工号、姓名、年龄、性别、工资、所在系的编号。
任课TC(T#,C#,TEXTBOOK)
其属性分别表示教师工号、课程号和所用的教材名。
课程C(C#,CNAME,D#)
其属性分别表示课程号、课程名和开课系的编号。
下面的题目都是针对这四个基本表进行操作。
1.用SQL的子句或语句定义下列完整性约束:
①编号小于D8的系的教师年龄在20~40岁之间,其他系的教师年龄在20~60岁之间。
②在教师表T中出现的D#值必须在DEPT表中出现(用三种形式定义)。
③每个女教师至少要任教一门课。
④每个男教师至少要任教两门课。
⑤每个系教师的平均工资不能低于2000元。
⑥不允许男教师担任“艺术体操”课程。
2.试对下列操作写出授权语句:
①把对DEPT表的插入、修改、删除、查询的权限授给用户LIU。
②把对TC、C表的查询权限转授给全体用户。
③允许用户ZHANG引用C表的主键作为新表的外键,并有转让权限。
④从用户ZHANG回收对C表主键引用的转授权。
练习题答案
一、填空题答案
1.DB三级结构、两级映象
2.系统目录
3.COMMITROLLBACK
4.事务管理子系统
5.完整性子系统
6.并发控制子系统
7.恢复管理子系统
8.活动状态局部提交状态失败状态异常中止状态提交状态
9.冗余转储(备份)记“日志”
10.丢失更新问题读“脏数据”问题错误求和问题不可重复读问题
11.并发事务对数据库中数据项的访问能够同步
12.