ImageVerifierCode 换一换
格式:DOCX , 页数:59 ,大小:48.08KB ,
资源ID:29829037      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/29829037.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库 系统实现技术.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库 系统实现技术.docx

1、数据库 系统实现技术第7章 系统实现技术7.1 基本知识点7.1.1 本章重要概念(1)系统目录及其和DBMS各子系统的联系。(2)事务的定义,COMMIT和ROLLBACK的语义,事务的ACID性质,事务的状态变迁图。(3)存储器类型,稳定存储器的实现,数据传送过程。(4)恢复的定义、基本原则和实现方法,故障的类型,检查点技术,REDO和UNDO操作,运行记录优先原则。(5)并发操作带来的三个问题,X锁、PX协议、PXC协议,S锁、PS协议、PSC协议,活锁、饿死和死锁,并发调度,串行调度,并发调度的可串行化,两段封锁法,SQL中事务的存取模式和隔离级别。(6)完整性的定义,完整性子系统的功

2、能,完整性规则的组成。SQL中的三大类完整性约束,SQL3中的触发器技术。(7)安全性的定义、级别,权限,SQL中的安全性机制,几种常用的安全性措施,自然环境的安全性。7.1.2 本章的重点篇幅(1)教材中P261 的图7.7。(检查点技术)(2)并发操作带来的四个问题,封锁带来的三个问题,并发调度的可串行化。(教材P265-276)(3)SQL中完整性约束的实现:断言(教材P290)。(4)安全性中的授权语句(教材P298)。7.2 教材中习题7的解答7.1 名词解释系统目录:系统目录(system catalog)是任何通用DBMS的核心。系统目录本身就是一个“微型数据库”,其主要功能是存

3、储DBMS管理的数据库的定义或描述。这类信息被称为元数据(metadata),主要包括数据库三级结构、两级映像的定义。事务:事务是构成单一逻辑工作单元的操作集合。 DB的可恢复性:系统能把DB从被破坏、不正确的状态,恢复到最近一个正确的状态,DBMS的这种功能称为DB的可恢复性。 并发操作:在多用户共享系统中,许多事务可能同时对同一数据进行操作,这种操作称为并发操作。 封锁:封锁是系统保证对数据项的访问以互斥方式进行的一种手段。 X锁:事务T对某数据加了X锁后,其他事务要等T解除X锁后,才能对这个数据进行封锁。 PX协议:只有获准X锁的事务,才能修改数据,否则这个事务进入等待状态。 PXC协议

4、:PX协议再加上一条规则:“X锁必须保留到事务终点才能解除”。 S锁:事务T对某数据加了S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。 PS协议:获准S锁的事务,只能读数据,不能修改数据。 PSC协议:PS协议再加上一条规则:“S锁必须保留到事务终点才能解除”。 活锁:系统可能使某个事务永远处于等待状态,得不到封锁的机会,这种现象称为“活锁”。 饿死:若干事务连续不断地对某数据实现加S锁和释放S锁的操作,那么若有一个事务欲对该数据加X锁,将永远轮不上封锁的机会。这种现象称为“饿死”。死锁:若干事务都处于等待状态,相互等待对方解除封锁,结

5、果造成这些事务都无法继续执行,这种现象称为系统进入了“死锁”状态。 调度:事务的执行次序称为“调度”。 串行调度:多个事务依次执行,称为事务的串行调度。 并发调度:利用分时的方法,同时处理多个事务,则称为事务的并发调度。 可串行化调度/不可串行化调度:如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么这个并发调度称为“可串行化的调度”,否则称为“不可串行化调度”。 两段封锁协议:事务分成两个阶段,前一阶段只能申请封锁,后一阶段只能释放封锁,这一规则称为事务的两段封锁协议。7.2 关系DBMS的系统目录中存储那些信息?答:关系DBMS的系统目录存储下列信息: 关系名,属性名,属性域(数

6、据类型); 各种约束,主键,辅助键,外键,空值/非空值; 视图的外部级描述,存储结构和索引的内部级描述; 安全性和授权规则; 数据完整性规则。在关系DBMS中,系统目录被组织成关系(表格),例如Oracle系统中,系统目录由42个关系组成。DBMS可以对目录执行查询、修改和维护操作;而用户一般只能执行查询操作不能进行修改或维护。7.3 试叙述系统目录中三级模式的信息是如何存储的?答:系统目录中存储三级模式结构的信息主要有以下一些表格: 存储数据库中关系模式定义的表格。其属性有关系模式的名字、属性名、类型名、是否主键、是否外键等。 存储数据库中视图定义的表格要两张。一张表格用于存储视图的定义,另

7、一张表格用于存储视图中的属性。 有关数据库中关键码、索引的信息,各用一张表格。7.4 为什么必须有效地访问DBMS的系统目录?试举例说明。答:在DBS运行时,DBMS各个子系统都要频繁地使用系统目录。所有用户的逻辑数据和磁盘中物理数据,都要与系统目录中的数据定义去比较。也就是这两种数据之间的数据传输和格式转换都要在系统目录定义的框架中进行。因此DBMS的DDL编译程序,DML的分析程序、编译程序、优化程序,安全性、完整性等检查程序都要随时访问系统目录,必须是有效地访问,否则势必造成系统效率低下,甚至瘫痪、崩溃。7.5 试把教材中P251的图7.3扩充的ER图转换成等价的关系模式集。解:这个扩充

8、的ER图可转换成如下的关系模式集。由于教材中ER图里的属性较少,这里又增加了一些属性。 关系(关系编号,关系名,数据库编号) 视图关系(视图关系编号,视图名,创建者,创建时间) 视图属性(视图属性编号,属性名,类型,视图关系编号) 基本关系(基本关系编号,关系名,创建者,创建时间) 属性(属性编号,属性名,类型,基本关系编号,键编号,索引编号) 键(键编号,键名,键类型,基本关系编号,索引编号) 外键(外键编号,外键名,基本关系编号) 索引(索引编号,索引名,索引类型,基本关系编号)7.6 试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?每一个性质对DBS有什么益处?答: 事

9、务的原子性,是指一个事务对DB的所有操作,是一个不可分割的工作单元。原子性是由DBMS的事务管理子系统实现的。事务的原子性保证了DBS的完整性。 事务的一致性,是指数据不会因事务的执行而遭受破坏。事务的一致性是由DBMS的完整性子系统实现的。事务的一致性保证数据库的完整性。 事务的隔离性,是指事务的并发执行与这些事务单独执行时结果一样。事务的隔离性是由DBMS的并发控制子系统实现的。隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。 事务的持久性,是指事务对DB的更新应永久地反映在DB中。持久性是由DBMS的恢复管理子系统实现的。持久性能保证DB具有可恢复性。7.7 事务的C

10、OMMIT语句和ROLLBACK语句各做什么事情?答:COMMIT语句表示事务执行成功地结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。 ROLLBACK语句表示事务执行不成功地结束(应该“回退”),此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。7.8 试列出事务状态变迁图(教材P255的图7.4)中所有可能的状态路径。并叙述路径中状态变迁的原因。答:状态变迁如图7.1所示。状态变迁变迁的原因活动状态 = 局部提交状态事务的最后一个语句执行之后局部提交状态 = 提交状态事

11、务未与并发事务发生干扰,并且事务对DB修改均已写到磁盘活动状态 = 失败状态事务还没到达最后一个语句就中止执行局部提交状态 = 失败状态局部提交的事务,发现与其他并发事务发生干扰,或未能完成对磁盘中DB的修改失败状态 = 异常中止处于失败状态的事务,应该被撤销,即回退图7.17.9 试解释三种存储器类型之间的区别。答:从存储器的访问速度、容量和恢复能力角度考察,计算机系统的存储介质可分成三类。 易失性存储器,指内存和cache存储器。在系统发生故障时,存储的信息会立即丢失。但访问速度最快。 非易失性存储器,指磁盘和磁带。在系统故障时,存储的信息不会丢失。但这一类存储器受制于本身的故障,会导致信

12、息的丢失。访问速度要比易失性存储器慢几个数量级。 稳定存储器,这是一个理论上的概念。存储的信息是决不会丢失。这可以通过对非易失性存储器进行技术处理来达到稳定存储器的目标。7.10 为什么稳定性存储器是不可能实现的?在DBS中采用什么方法追求这个目标?答:由于存储器受制于本身的故障,会导致信息的丢失,因此稳定性存储器是不可能实现的。但可以通过对非易失性存储器进行技术处理来达到稳定性存储器的目标。主要是通过数据备份和数据银行形式实现。7.11假设一个DBS决不会发生故障,是否还需要有恢复管理机制?试说出理由。答:即使一个DBS不会发生故障,那么仍然需要有恢复管理机制。譬如,事务并发执行时由封锁产生

13、的死锁问题,以及掉电引起的系统停止运行,这些都是系统运行时遇到的不可抗拒的事件,仍然需要由恢复管理机制利用日志执行REDO和UNDO处理。7.12 数据库恢复的基本原则是什么?具体实现方法是什么?答:恢复的基本原则是“冗余”,即数据重复存储。 为了做好恢复工作,在平时应做好两件事:定时对DB进行备份;建立日志文件,记录事务对DB的更新操作。7.13 DBS中有哪些类型的故障?哪些故障破坏了数据库?哪些故障未破坏数据库,但使其中某些数据变得不正确?答:DBS中DB的故障主要有三类:事务故障、系统故障和介质故障。前两类故障未破坏DB,但使其中某些数据变得不正确,此时只要利用日志撤消或重做事务。介质

14、故障将破坏DB,此时只能把DB备份拷贝到新的磁盘,再利用日志重做事务对DB的修改。7.14 “检查点机制”的主要思想是什么?COMMIT语句与检查点时刻的操作如何协调?答:“检查点机制”的主要思想是在检查点时刻才真正做到把对DB的修改写到磁盘。在DB恢复时,只有那些在最后一个检查点到故障点之间还在执行的事务才需要恢复。 事务在COMMIT时,事务对DB的更新已提交,但对DB的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。因此事务的真正结束是在COMMIT后还要加上遇到检查点时刻。7.15 什么是UNDO操作和REDO操作?为什么要这样设置?答:UNDO和REDO是系统内部命令 在DB

15、恢复时,对于已经COMMIT但更新仍停留在缓冲区的事务要执行REDO(重做)操作,即根据日志内容把该事务对DB修改重做一遍。 对于还未结束的事务要执行UNDO(撤消)操作,即据日志内容把该事务对DB已作的修改撤消掉。 设置UNDO和REDO操作,是为了使数据库具有可恢复性。7.16 什么是“运行记录优先原则”?其作用是什么?答:写一个修改到DB中和写一个表示这个修改的登记记录到日志文件中是两个不同的操作,后者比前者重要,后者应先做。这就是运行记录优先原则。其作用是保证DBS具有可恢复性。7.17 数据库的并发操作会带来哪些问题?如何解决?答:如果不加控制,数据库的并发操作会带来四个问题:丢失更

16、新问题、读脏数据问题、错误求和问题、不可重复读问题。 解决并发操作带来的问题,可以使用封锁技术和时标技术。7.18 为什么DML可以单独提供解除S封锁的命令,而不单独提供解除X封锁的命令?答:为防止由事务的ROLLBACK引起丢失更新操作,X封锁必须保留到事务终点,因此DML不提供专门的解除X锁的操作,即解除X锁的操作合并到事务的终点去做。 而在未到事务终点时,执行解除S锁的操作,可以增加事务并发操作的程度,但对DB不会产生什么错误的影响,因此DML可以提供专门的解除S锁的操作,让用户使用。7.19 为什么有些封锁需保留到事务终点,而有些封锁可随时解除?答:(答案与7.18题的解答相同)7.2

17、0 封锁会带来哪些问题?如何解决?答:封锁技术,可以避免并发操作引起的各种错误,但有可能产生三个问题,其解决办法如下:“活锁”问题,可用“先来先服务”排队的方式和提高事务优先级的方法来解决。“饿死”问题,可用“授权加锁”方法来避免。“死锁”问题,可用抽取某事务作为牺牲品,把它撤销的方法来解决。7.21 死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?答:在DBS运行时,死锁状态是我们不希望发生的,因此死锁的发生本身是一件坏事。但是坏事可以转换为好事。如果我们不让死锁发生,让事务任意并发做下去,那么有可能破坏DB中数据,或用户读了错误的数据。从这个意义上讲,死锁的发生是一件好事,能防止错

18、误的发生。 在发生死锁后,系统的死锁处理机制和恢复程序就能起作用,抽取某个事务作为牺牲品,把它撤消,做ROLLBACK操作,使系统有可能摆脱死锁状态,继续运行下去。7.22 试叙述“串行调度”与“可串行化调度”的区别。答:如果多个事务依次执行,则称事务串行调度。 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。7.23 SQL中事务存取模式的定义和隔离级别的定义与数据库的并发控制有什么关系?答:事务的存取模式是对事务的读/写操作的限制。 事务的隔离机制是对事务并发控制的约束。隔离机制从高到低有四个级别

19、:可串行化,可重复读,读提交数据和可以读未提交数据。7.24 什么是事务的时标?时标顺序协议的基本思想是什么?答:在事务Ti运行时,有惟一的时间标志,称为时标或时戳。具体地说,事务的时标是指事务的启动时间或某个逻辑编号。时标顺序协议的基本思想有三点: 数据库中,所有的物理更新推迟到COMMIT的时候执行。, 不允许一个事务查看被较年轻事务更新了的记录,也不允许要求更新被较年轻事务查看过或更新过的记录。如果发生这种事情,那么提出要求的事务被重新启动。 事务重启动时不需要任何回退操作。7.25 就实现的难度和额外开销两方面,比较阴影页恢复技术和基于日志恢复技术的优缺点。答:这个比较见图7.2。阴影

20、页恢复技术基于日志恢复技术实现难度实现难度较大系统中常用的恢复技术额外开销优点减少了额外的output操作,恢复比较快,不必做REDO和UNDO操作与存储技术无关,利用日志来进行恢复缺点增加了存储技术的复杂性,产生了垃圾回收问题恢复时,要执行REDO和UNDO操作图7.27.26 图7.3表示事务T1和T2 的并发执行,在下列条件下各会发生什么情况? PSC协议(并执行两段封锁法)。 PXC协议。 时标顺序协议。时间事务T1事务T2t1* startt2* startt3FIND At4FIND Bt5FIND Bt6FIND At7UPD BT8UPD A图7.3 一个并发调度解:则三种情况

21、的执行示意图分别如图7.4、图7.5、图7.6所示。时间事务T1事务T2t1* startt2* startt3SFIND At4SFIND Bt5SFIND Bt6SFIND At7UPDX B(失败)t8waitUPDX A(失败)t9waitwaitt10waitwait(两事务在t9时刻进入死锁状态)图7.4 执行PSC协议(并执行两段封锁法)时的示意图时间事务T1事务T2t1* startt2* startt3XFIND At4XFIND Bt5XFIND B(失败)t6waitXFIND A(失败)t7waitwaitt8waitwait(两事务在t7时刻进入死锁状态)图7.5 执

22、行PXC协议时的示意图时间事务T1事务T2R_timestamp(A)W_timestamp(A)R_timestamp(B)W_timestamp(B)TS(T1)*start*0000TS(T2)*start*t3read(A)TS(T1)t4read(B)TS(T2)t5read(B)TS(T2)t6read(A)TS(T2)t7write(B)t8*restart*write(A)TS(T2)(为方便,此图中把FIND和UPD操作改成read和write操作。这个例子在t7时刻,事务T1 的写操作失败,将重新启动)图7.6 执行时标顺序协议时的示意图7.27 什么是数据库的完整性?DB

23、MS的完整性子系统的主要功能是什么?答:DB中完整性是指数据的正确性、有效性和相容性,防止错误的数据进入DB。 DBMS完整性子系统的主要功能有两点:监督事务的执行,并测试是否违反完整性规则;若有违反现象,则采取恰当的操作。7.28 完整性规则由哪几个部分组成?SQL中的完整性约束有哪些?答:完整性规则由三部分组成:触发条件,约束条件和ELSE子句。 SQL中把完整性约束分成三大类:域约束。基本表约束和断言。7.29 参照完整性规则在SQL中可以用哪几种方法实现?删除参照关系的元组时,对依赖关系有哪些影响?修改参照关系的主键值时,对依赖关系有哪些影响?答:参照完整性规则,在SQL中可以用外键子

24、句、检查子句、断言等三种方式实现。删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一: RESTRICT方式、CASCADE方式和SET NULL方式。(解释略) 修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。(解释略)7.30 试对SQL中检查约束(CHECK子句)和断言两种完整性约束进行比较,各说明什么对象?何时激活?能保证数据库的一致性吗?答:检查子句主要用于对属性值、元组值加以限制和约束。断言实际上是一种涉及面广的检查子句,用CREATE语句来定义。 这两种约束都是在进行插入或修改时激活,进行检查。 检查子句只在定义它的基本表中有效,而对其他基

25、本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。 而断言能保证完整性约束彻底实现。7.31 设教学数据库的关系如下: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER)试用多种方法定义下列完整性约束: 在关系S中插入的学生年龄值应在1625岁之间。 在关系SC中插入元组时,其S#值和C#值必须分别在S和C中出现。 在关系C中删除一个元组时,首先要把关系SC中具有同样C#值的元组全部删去。 在关系S中把某个S#值修改为新值时,必须同时把关系SC中那些同样的S#值也修改为新值。解:这里每个

26、约束用一种方式定义。 (1)用检查子句定义: CHECK(AGE BETWEEN 16 AND 25); (2)在关系SC的定义中,用外键子句定义: FOREIGN KEY(S#) REFERENCES S(S#); FOREIGN KEY(C#) REFERENCES C(C#); (3)在关系SC的定义中,用外键子句定义: FOREIGN KEY(C#) REFERENCES C(C#) ON DELETE CASCADE; (4)在关系SC的定义中,用外键子句定义: FOREIGN KEY(S#) REFERENCES S(S#) ON UPDATE CASCADE;7.32 在教学数据

27、库中的关系S、SC、C中,试用SQL的断言机制定义下列两个完整性约束: 学生必须在选修MATHS课后,才能选修其他课程。 每个男学生最多选修20门课程。解:(1)这个约束可用下列形式表达: 不存在一个学生的选课,这个学生没学过Maths课。 这样就能很容易地写出断言: CREATE ASSERTION ASSE1 CHECK (NOT EXISTS( SELECT S# FROM SC X WHERE NOT EXISTS (SELECT * FROM SC Y, C WHERE Y.C#=C.C# AND Y.S#=X.S# AND CNAME=Maths); (2)CREATE ASSER

28、TION ASSE2 CHECK (20=ALL(SELECT COUNT(C#) FROM S, SC WHERE S.S#=SC.S# AND SEX=M GROUP BY S.S#);7.33 什么是数据库的安全性?有哪些级别的安全措施?答:DB的安全性是指保护DB,防止不合法的使用,以免数据的泄密、更新或破坏。为了保护DB,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:环境级、职员级、OS级、网络级、DBS级。(解释略)7.34 对银行的DBS应采取哪些安全措施?分别属于哪一级?(解释略)7.35 什么是“权限”?用户访问数据库有哪些权限?对数据库模式有哪些修改权限?答:用

29、户(或应用程序)使用DB的方式称为权限。 用户访问DB有四种权限:Read、Insert、Update和Delete。 用户修改DB模式有四种权限:Index、Resource、Alteration和Drop。7.36 试解释权限的转授与回收。答:权限的转授与回收是指DBS允许用户把已获得的权限再转授给其它用户,也允许把已授给其它用户的权限再回收上来,但应保证转授出去的权限能收得回来。为了便于回收,用权限图表示转让关系。一个用户拥有权限的充分必要条件是在权限图中从根结点到该用户结点存在一条路经。7.37 SQL的视图机制有哪些优点?答:SQL的视图机制使系统具有三个优点:数据安全性,逻辑独立性

30、和操作简便性。7.38 SQL2中的用户权限有哪几类?并作必要的解释。答:SQL2中用户权限有六类:SELECT、INSERT、DELETE、UPDATE、REFERENCES和USAGE。(解释略)7.39 安全性措施中强制存取控制是如何实现的?答:这个方法的基本思想是把数据分成若干个密级级别,用户也分成相应的若干个许可证级别。密级和许可证级别都是严格有序的。在系统运行时,规定用户只能查看比它级别低或同级的数据,用户只能修改和它同级的数据。用这种方法来保证系统的安全性。7.40 统计数据库是如何防止用户获取单记录信息的?答:在统计数据系统运行时,对查询应作下列限制: 一个查询查到的记录个数不能太

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1