数据库 系统实现技术.docx

上传人:b****0 文档编号:17638720 上传时间:2023-07-27 格式:DOCX 页数:59 大小:48.08KB
下载 相关 举报
数据库 系统实现技术.docx_第1页
第1页 / 共59页
数据库 系统实现技术.docx_第2页
第2页 / 共59页
数据库 系统实现技术.docx_第3页
第3页 / 共59页
数据库 系统实现技术.docx_第4页
第4页 / 共59页
数据库 系统实现技术.docx_第5页
第5页 / 共59页
数据库 系统实现技术.docx_第6页
第6页 / 共59页
数据库 系统实现技术.docx_第7页
第7页 / 共59页
数据库 系统实现技术.docx_第8页
第8页 / 共59页
数据库 系统实现技术.docx_第9页
第9页 / 共59页
数据库 系统实现技术.docx_第10页
第10页 / 共59页
数据库 系统实现技术.docx_第11页
第11页 / 共59页
数据库 系统实现技术.docx_第12页
第12页 / 共59页
数据库 系统实现技术.docx_第13页
第13页 / 共59页
数据库 系统实现技术.docx_第14页
第14页 / 共59页
数据库 系统实现技术.docx_第15页
第15页 / 共59页
数据库 系统实现技术.docx_第16页
第16页 / 共59页
数据库 系统实现技术.docx_第17页
第17页 / 共59页
数据库 系统实现技术.docx_第18页
第18页 / 共59页
数据库 系统实现技术.docx_第19页
第19页 / 共59页
数据库 系统实现技术.docx_第20页
第20页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库 系统实现技术.docx

《数据库 系统实现技术.docx》由会员分享,可在线阅读,更多相关《数据库 系统实现技术.docx(59页珍藏版)》请在冰点文库上搜索。

数据库 系统实现技术.docx

数据库系统实现技术

第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)完整性的定义,完整性子系统的功能,完整性规则的组成。

SQL中的三大类完整性约束,SQL3中的触发器技术。

(7)安全性的定义、级别,权限,SQL中的安全性机制,几种常用的安全性措施,自然环境的安全性。

7.1.2本章的重点篇幅

(1)教材中P261的图7.7。

(检查点技术)

(2)并发操作带来的四个问题,封锁带来的三个问题,并发调度的可串行化。

(教材P265-276)

(3)SQL中完整性约束的实现:

断言(教材P290)。

(4)安全性中的授权语句(教材P298)。

7.2教材中习题7的解答

7.1名词解释

·系统目录:

系统目录(systemcatalog)是任何通用DBMS的核心。

系统目录本身就是一个“微型数据库”,其主要功能是存储DBMS管理的数据库的定义或描述。

这类信息被称为元数据(metadata),主要包括数据库三级结构、两级映像的定义。

·事务:

事务是构成单一逻辑工作单元的操作集合。

·DB的可恢复性:

系统能把DB从被破坏、不正确的状态,恢复到最近一个正确的状态,DBMS的这种功能称为DB的可恢复性。

·并发操作:

在多用户共享系统中,许多事务可能同时对同一数据进行操作,这种操作称为并发操作。

·封锁:

封锁是系统保证对数据项的访问以互斥方式进行的一种手段。

·X锁:

事务T对某数据加了X锁后,其他事务要等T解除X锁后,才能对这个数据进行封锁。

·PX协议:

只有获准X锁的事务,才能修改数据,否则这个事务进入等待状态。

·PXC协议:

PX协议再加上一条规则:

“X锁必须保留到事务终点才能解除”。

·S锁:

事务T对某数据加了S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。

·PS协议:

获准S锁的事务,只能读数据,不能修改数据。

·PSC协议:

PS协议再加上一条规则:

“S锁必须保留到事务终点才能解除”。

·活锁:

系统可能使某个事务永远处于等待状态,得不到封锁的机会,这种现象称为“活锁”。

·饿死:

若干事务连续不断地对某数据实现加S锁和释放S锁的操作,那么若有一个事务欲对该数据加X锁,将永远轮不上封锁的机会。

这种现象称为“饿死”。

·死锁:

若干事务都处于等待状态,相互等待对方解除封锁,结果造成这些事务都无法继续执行,这种现象称为系统进入了“死锁”状态。

·调度:

事务的执行次序称为“调度”。

·串行调度:

多个事务依次执行,称为事务的串行调度。

·并发调度:

利用分时的方法,同时处理多个事务,则称为事务的并发调度。

·可串行化调度/不可串行化调度:

如果一个并发调度的执行结果与某一串行调度的执行结果等价,那么这个并发调度称为“可串行化的调度”,否则称为“不可串行化调度”。

·两段封锁协议:

事务分成两个阶段,前一阶段只能申请封锁,后一阶段只能释放封锁,这一规则称为事务的两段封锁协议。

7.2关系DBMS的系统目录中存储那些信息?

答:

关系DBMS的系统目录存储下列信息:

①关系名,属性名,属性域(数据类型);

②各种约束,主键,辅助键,外键,空值/非空值;

③视图的外部级描述,存储结构和索引的内部级描述;

④安全性和授权规则;

⑤数据完整性规则。

在关系DBMS中,系统目录被组织成关系(表格),例如Oracle系统中,系统目录由42个关系组成。

DBMS可以对目录执行查询、修改和维护操作;而用户一般只能执行查询操作不能进行修改或维护。

7.3试叙述系统目录中三级模式的信息是如何存储的?

答:

系统目录中存储三级模式结构的信息主要有以下一些表格:

①存储数据库中关系模式定义的表格。

其属性有关系模式的名字、属性名、类型名、是否主键、是否外键等。

②存储数据库中视图定义的表格要两张。

一张表格用于存储视图的定义,另一张表格用于存储视图中的属性。

③有关数据库中关键码、索引的信息,各用一张表格。

7.4为什么必须有效地访问DBMS的系统目录?

试举例说明。

答:

在DBS运行时,DBMS各个子系统都要频繁地使用系统目录。

所有用户的逻辑数据和磁盘中物理数据,都要与系统目录中的数据定义去比较。

也就是这两种数据之间的数据传输和格式转换都要在系统目录定义的框架中进行。

因此DBMS的DDL编译程序,DML的分析程序、编译程序、优化程序,安全性、完整性等检查程序都要随时访问系统目录,必须是有效地访问,否则势必造成系统效率低下,甚至瘫痪、崩溃。

 

7.5试把教材中P251的图7.3扩充的ER图转换成等价的关系模式集。

解:

这个扩充的ER图可转换成如下的关系模式集。

由于教材中ER图里的属性较少,这里又增加了一些属性。

关系(关系编号,关系名,数据库编号)

视图关系(视图关系编号,视图名,创建者,创建时间)

视图属性(视图属性编号,属性名,类型,视图关系编号)

基本关系(基本关系编号,关系名,创建者,创建时间)

属性(属性编号,属性名,类型,基本关系编号,键编号,索引编号)

键(键编号,键名,键类型,基本关系编号,索引编号)

外键(外键编号,外键名,基本关系编号)

索引(索引编号,索引名,索引类型,基本关系编号)

7.6试叙述事务的四个性质,并解释每一个性质由DBMS的哪个子系统实现?

每一个性质对DBS有什么益处?

答:

①事务的原子性,是指一个事务对DB的所有操作,是一个不可分割的工作单元。

原子性是由DBMS的事务管理子系统实现的。

事务的原子性保证了DBS的完整性。

②事务的一致性,是指数据不会因事务的执行而遭受破坏。

事务的一致性是由DBMS的完整性子系统实现的。

事务的一致性保证数据库的完整性。

③事务的隔离性,是指事务的并发执行与这些事务单独执行时结果一样。

事务的隔离性是由DBMS的并发控制子系统实现的。

隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。

④事务的持久性,是指事务对DB的更新应永久地反映在DB中。

持久性是由DBMS的恢复管理子系统实现的。

持久性能保证DB具有可恢复性。

7.7事务的COMMIT语句和ROLLBACK语句各做什么事情?

答:

COMMIT语句表示事务执行成功地结束(提交),此时告诉系统,DB要进入一个新的正确状态,该事务对DB的所有更新都已交付实施(写入磁盘)。

ROLLBACK语句表示事务执行不成功地结束(应该“回退”),此时告诉系统,已发生错误,DB可能处在不正确的状态,该事务对DB的所有更新必须被撤消,DB应恢复该事务到初始状态。

7.8试列出事务状态变迁图(教材P255的图7.4)中所有可能的状态路径。

并叙述路径中状态变迁的原因。

答:

状态变迁如图7.1所示。

状态变迁

变迁的原因

活动状态=>局部提交状态

事务的最后一个语句执行之后

局部提交状态=>提交状态

事务未与并发事务发生干扰,并且事务对DB修改均已写到磁盘

活动状态=>失败状态

事务还没到达最后一个语句就中止执行

局部提交状态=>失败状态

局部提交的事务,发现与其他并发事务发生干扰,或未能完成对磁盘中DB的修改

失败状态=>异常中止

处于失败状态的事务,应该被撤销,即回退

图7.1

7.9试解释三种存储器类型之间的区别。

答:

从存储器的访问速度、容量和恢复能力角度考察,计算机系统的存储介质可分成三类。

①易失性存储器,指内存和cache存储器。

在系统发生故障时,存储的信息会立即丢失。

但访问速度最快。

②非易失性存储器,指磁盘和磁带。

在系统故障时,存储的信息不会丢失。

但这一类存储器受制于本身的故障,会导致信息的丢失。

访问速度要比易失性存储器慢几个数量级。

③稳定存储器,这是一个理论上的概念。

存储的信息是决不会丢失。

这可以通过对非易失性存储器进行技术处理来达到稳定存储器的目标。

7.10为什么稳定性存储器是不可能实现的?

在DBS中采用什么方法追求这个目标?

答:

由于存储器受制于本身的故障,会导致信息的丢失,因此稳定性存储器是不可能实现的。

但可以通过对非易失性存储器进行技术处理来达到稳定性存储器的目标。

主要是通过数据备份和数据银行形式实现。

7.11假设一个DBS决不会发生故障,是否还需要有恢复管理机制?

试说出理由。

答:

即使一个DBS不会发生故障,那么仍然需要有恢复管理机制。

譬如,事务并发执行时由封锁产生的死锁问题,以及掉电引起的系统停止运行,这些都是系统运行时遇到的不可抗拒的事件,仍然需要由恢复管理机制利用日志执行REDO和UNDO处理。

7.12数据库恢复的基本原则是什么?

具体实现方法是什么?

答:

恢复的基本原则是“冗余”,即数据重复存储。

为了做好恢复工作,在平时应做好两件事:

定时对DB进行备份;建立日志文件,记录事务对DB的更新操作。

7.13DBS中有哪些类型的故障?

哪些故障破坏了数据库?

哪些故障未破坏数据库,但使其中某些数据变得不正确?

答:

DBS中DB的故障主要有三类:

事务故障、系统故障和介质故障。

前两类故障未破坏DB,但使其中某些数据变得不正确,此时只要利用日志撤消或重做事务。

介质故障将破坏DB,此时只能把DB备份拷贝到新的磁盘,再利用日志重做事务对DB的修改。

7.14“检查点机制”的主要思想是什么?

COMMIT语句与检查点时刻的操作如何协调?

答:

“检查点机制”的主要思想是在检查点时刻才真正做到把对DB的修改写到磁盘。

在DB恢复时,只有那些在最后一个检查点到故障点之间还在执行的事务才需要恢复。

事务在COMMIT时,事务对DB的更新已提交,但对DB的更新可能还留在内存的缓冲区,在检查点时刻才真正写到磁盘。

因此事务的真正结束是在COMMIT后还要加上遇到检查点时刻。

7.15什么是UNDO操作和REDO操作?

为什么要这样设置?

答:

UNDO和REDO是系统内部命令

在DB恢复时,对于已经COMMIT但更新仍停留在缓冲区的事务要执行REDO(重做)操作,即根据日志内容把该事务对DB修改重做一遍。

对于还未结束的事务要执行UNDO(撤消)操作,即据日志内容把该事务对DB已作的修改撤消掉。

设置UNDO和REDO操作,是为了使数据库具有可恢复性。

7.16什么是“运行记录优先原则”?

其作用是什么?

答:

写一个修改到DB中和写一个表示这个修改的登记记录到日志文件中是两个不同的操作,后者比前者重要,后者应先做。

这就是运行记录优先原则。

其作用是保证DBS具有可恢复性。

7.17数据库的并发操作会带来哪些问题?

如何解决?

答:

如果不加控制,数据库的并发操作会带来四个问题:

丢失更新问题、读脏数据问题、错误求和问题、不可重复读问题。

解决并发操作带来的问题,可以使用封锁技术和时标技术。

7.18为什么DML可以单独提供解除S封锁的命令,而不单独提供解除X封锁的命令?

答:

为防止由事务的ROLLBACK引起丢失更新操作,X封锁必须保留到事务终点,因此DML不提供专门的解除X锁的操作,即解除X锁的操作合并到事务的终点去做。

而在未到事务终点时,执行解除S锁的操作,可以增加事务并发操作的程度,但对DB不会产生什么错误的影响,因此DML可以提供专门的解除S锁的操作,让用户使用。

7.19为什么有些封锁需保留到事务终点,而有些封锁可随时解除?

答:

(答案与7.18题的解答相同)

7.20封锁会带来哪些问题?

如何解决?

答:

封锁技术,可以避免并发操作引起的各种错误,但有可能产生三个问题,其解决办法如下:

①“活锁”问题,可用“先来先服务”排队的方式和提高事务优先级的方法来解决。

②“饿死”问题,可用“授权加锁”方法来避免。

③“死锁”问题,可用抽取某事务作为牺牲品,把它撤销的方法来解决。

7.21死锁的发生是坏事还是好事?

试说明理由。

如何解除死锁状态?

答:

在DBS运行时,死锁状态是我们不希望发生的,因此死锁的发生本身是一件坏事。

但是坏事可以转换为好事。

如果我们不让死锁发生,让事务任意并发做下去,那么有可能破坏DB中数据,或用户读了错误的数据。

从这个意义上讲,死锁的发生是一件好事,能防止错误的发生。

在发生死锁后,系统的死锁处理机制和恢复程序就能起作用,抽取某个事务作为牺牲品,把它撤消,做ROLLBACK操作,使系统有可能摆脱死锁状态,继续运行下去。

7.22试叙述“串行调度”与“可串行化调度”的区别。

答:

如果多个事务依次执行,则称事务串行调度。

如果利用分时的方法,同时处理多个事务,则称为事务的并发调度。

如果一个并发调度的结果与某一串行调度执行结果等价,则称这个并发调度是可串行化调度。

7.23SQL中事务存取模式的定义和隔离级别的定义与数据库的并发控制有什么关系?

答:

事务的存取模式是对事务的读/写操作的限制。

事务的隔离机制是对事务并发控制的约束。

隔离机制从高到低有四个级别:

可串行化,可重复读,读提交数据和可以读未提交数据。

7.24什么是事务的时标?

时标顺序协议的基本思想是什么?

答:

在事务Ti运行时,有惟一的时间标志,称为时标或时戳。

具体地说,事务的时标是指事务的启动时间或某个逻辑编号。

时标顺序协议的基本思想有三点:

①数据库中,所有的物理更新推迟到COMMIT的时候执行。

②不允许一个事务查看被较年轻事务更新了的记录,也不允许要求更新被较年轻事务查看过或更新过的记录。

如果发生这种事情,那么提出要求的事务被重新启动。

③事务重启动时不需要任何回退操作。

7.25就实现的难度和额外开销两方面,比较阴影页恢复技术和基于日志恢复技术的优缺点。

答:

这个比较见图7.2。

 

阴影页恢复技术

基于日志恢复技术

实现难度

实现难度较大

系统中常用的恢复技术

额外开销

优点

减少了额外的output操作,恢复比较快,不必做REDO和UNDO操作

与存储技术无关,

利用日志来进行恢复

缺点

增加了存储技术的复杂性,

产生了垃圾回收问题

恢复时,要执行REDO和UNDO操作

图7.2

7.26图7.3表示事务T1和T2的并发执行,在下列条件下各会发生什么情况?

①PSC协议(并执行两段封锁法)。

②PXC协议。

③时标顺序协议。

时间

事务T1

事务T2

t1

*start

t2

*start

t3

FINDA

t4

FINDB

t5

FINDB

t6

FINDA

t7

UPDB

T8

UPDA

图7.3一个并发调度

解:

则三种情况的执行示意图分别如图7.4、图7.5、图7.6所示。

时间

事务T1

事务T2

t1

*start

t2

*start

t3

SFINDA

t4

SFINDB

t5

SFINDB

t6

SFINDA

t7

UPDXB(失败)

t8

wait

UPDXA(失败)

t9

wait

wait

t10

wait

wait

(两事务在t9时刻进入死锁状态)

图7.4执行PSC协议(并执行两段封锁法)时的示意图

 

时间

事务T1

事务T2

t1

*start

t2

*start

t3

XFINDA

t4

XFINDB

t5

XFINDB(失败)

t6

wait

XFINDA(失败)

t7

wait

wait

t8

wait

wait

(两事务在t7时刻进入死锁状态)

图7.5执行PXC协议时的示意图

时间

事务T1

事务T2

R_timestamp(A)

W_timestamp(A)

R_timestamp(B)

W_timestamp(B)

TS(T1)

*start*

0

0

0

0

TS(T2)

*start*

t3

read(A)

TS(T1)

t4

read(B)

TS(T2)

t5

read(B)

TS(T2)

t6

read(A)

TS(T2)

t7

write(B)

t8

*restart*

write(A)

TS(T2)

(为方便,此图中把FIND和UPD操作改成read和write操作。

这个例子在t7时刻,事务T1的写操作失败,将重新启动)

图7.6执行时标顺序协议时的示意图

7.27什么是数据库的完整性?

DBMS的完整性子系统的主要功能是什么?

答:

DB中完整性是指数据的正确性、有效性和相容性,防止错误的数据进入DB。

DBMS完整性子系统的主要功能有两点:

监督事务的执行,并测试是否违反完整性规则;若有违反现象,则采取恰当的操作。

7.28完整性规则由哪几个部分组成?

SQL中的完整性约束有哪些?

答:

完整性规则由三部分组成:

触发条件,约束条件和ELSE子句。

SQL中把完整性约束分成三大类:

域约束。

基本表约束和断言。

7.29参照完整性规则在SQL中可以用哪几种方法实现?

删除参照关系的元组时,对依赖关系有哪些影响?

修改参照关系的主键值时,对依赖关系有哪些影响?

答:

参照完整性规则,在SQL中可以用外键子句、检查子句、断言等三种方式实现。

删除参照关系的元组时,对依赖关系的影响可以采取下列三种做法之一:

RESTRICT方式、CASCADE方式和SETNULL方式。

(解释略)

修改参照关系的主键值时,对依赖关系的影响也可以采取与上述类似的三种做法之一。

(解释略)

7.30试对SQL中检查约束(CHECK子句)和断言两种完整性约束进行比较,各说明什么对象?

何时激活?

能保证数据库的一致性吗?

答:

检查子句主要用于对属性值、元组值加以限制和约束。

断言实际上是一种涉及面广的检查子句,用CREATE语句来定义。

这两种约束都是在进行插入或修改时激活,进行检查。

检查子句只在定义它的基本表中有效,而对其他基本表无约束力,因此在与检查子句有关的其他基本表进行修改时,就不能保证这个基本表中检查子句的语义了。

而断言能保证完整性约束彻底实现。

7.31设教学数据库的关系如下:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

试用多种方法定义下列完整性约束:

⑴在关系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;

7.32在教学数据库中的关系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#));

7.33什么是数据库的安全性?

有哪些级别的安全措施?

答:

DB的安全性是指保护DB,防止不合法的使用,以免数据的泄密、更新或破坏。

为了保护DB,防止恶意的滥用,可以在从低到高五个级别上设置各种安全措施:

环境级、职员级、OS级、网络级、DBS级。

(解释略)

7.34对银行的DBS应采取哪些安全措施?

分别属于哪一级?

(解释略)

7.35什么是“权限”?

用户访问数据库有哪些权限?

对数据库模式有哪些修改权限?

答:

用户(或应用程序)使用DB的方式称为权限。

用户访问DB有四种权限:

Read、Insert、Update和Delete。

用户修改DB模式有四种权限:

Index、Resource、Alteration和Drop。

7.36试解释权限的转授与回收。

答:

权限的转授与回收是指DBS允许用户把已获得的权限再转授给其它用户,也允许把已授给其它用户的权限再回收上来,但应保证转授出去的权限能收得回来。

为了便于回收,用权限图表示转让关系。

一个用户拥有权限的充分必要条件是在权限图中从根结点到该用户结点存在一条路经。

7.37SQL的视图机制有哪些优点?

答:

SQL的视图机制使系统具有三个优点:

数据安全性,逻辑独立性和操作简便性。

7.38SQL2中的用户权限有哪几类?

并作必要的解释。

答:

SQL2中用户权限有六类:

SELECT、INSERT、DELETE、UPDATE、REFERENCES和USAGE。

(解释略)

7.39安全性措施中强制存取控制是如何实现的?

答:

这个方法的基本思想是把数据分成若干个密级级别,用户也分成相应的若干个许可证级别。

密级和许可证级别都是严格有序的。

在系统运行时,规定用户只能查看比它级别低或同级的数据,用户只能修改和它同级的数据。

用这种方法来保证系统的安全性。

7.40统计数据库是如何防止用户获取单记录信息的?

答:

在统计数据系统运行时,对查询应作下列限制:

①一个查询查到的记录个数不能太

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2