用数据库求显示部门,全国姓名数据库,岗位,实际工资

数据库课后答案&二&
&&&&&&&&&&
数据库课后答案
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
--《王珊.萨师煊》第四版
第4章 数据库安全性
1 .什么是数据库的安全性?
答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
.数据库安全性和计算机系统的安全性有什么关系?
答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
系统安全保护措施是否有效是数据库系统的主要指标之一。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的,
.试述可信计算机系统评测标准的情况,试述TDI
/ TCSEC 标准的基本内容。
答:各个国家在计算机安全技术方面都建立了一套可信标准。目前各国引用或制定的一系列安全标准中,最重要的是美国国防部(DoD
)正式颁布的《 DoD 可信计算机系统评估标准》
(伽sted Co 哪uter system Evaluation criteria ,简称TcsEc
,又称桔皮书)。(TDI / TCSEC 标准是将TcsEc
扩展到数据库管理系统,即《
可信计算机系统评估标准关于可信数据库系统的解释》
(Tmsted Database Interpretation 简称TDI ,
又称紫皮书)。在TDI
中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
TDI 与TcsEc
一样,从安全策略、责任、保证和文档四个方面来描述安全性级别划分的指标。每个方面又细分为若干项。
4 .试述TcsEC ( TDI
)将系统安全级别划分为4 组7
个等级的基本内容。
答:根据计算机系统对安全性各项指标的支持情况,TCSEC
( TDI )将系统划分为四组(division ) 7
个等级,依次是D 、C ( CI , CZ )、B ( BI , BZ , B3
)、A ( AI )
,按系统可靠或可信程度逐渐增高。
这些安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护包含较低级别的所有保护要求,同时提供更多或更完善的保护能力。各个等级的基本内容为:
级是最低级别。一切不符合更高标准的系统,统统归于D
级只提供了非常初级的自主安全保护。能够实现对用户和数据的分离,进行自主存取控制(DAC
) ,保护或限制用户权限的传播。
级实际是安全产品的最低档次,提供受控的存取保护,即将Cl
进一步细化,以个人身份注册负责,并实施审计和资源隔离。
级标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存取控制(MAC
)以及审计等安全机制。
级结构化保护。建立形式化的安全策略模型并对系统内的所有主体和客体实施DAC
B3 级安全域。该级的TCB
必须满足访问监控器的要求,审计跟踪能力更强,并提供系统恢复过程。
Al 级验证设计,即提供B3
级保护的同时给出系统的形式化设计说明和验证以确信各安全保护真正实现。
.试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有:
)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如CZ
级中的自主存取控制( DAC ) , Bl
级中的强制存取控制(MAC )。
)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA
可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
.什么是数据库中的自主存取控制方法和强制存取控制方法?
自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如:
GRANT SELECT , INSERT ON Student&
WITH GRANT& OPTION ;
就将Student 表的SELECT 和INSERT
权限授予了用户王平,后面的“WITH GRANT OPTION
”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。
REVOKE INSERT ON Student FROM 王平CASCADE ;
就将Student 表的INSERT
权限从用户王平处收回,选项CASCADE
表示,如果用户王平将Student 的INSERT
权限又转授给了其他用户,那么这些权限也将从其他用户处收回。
8.请用SQL的GRANT
和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
( a )用户王明对两个表有SELECT
SELECT ON 职工,部门
( b )用户李勇对两个表有INSERT 和DELETE
INSERT,DELETE ON 职工,部门
( c ) 每个职工只对自己的记录有SELECT
SELECT ON 职工
USER()=NAME
( d )用户刘星对职工表有SELECT
权力,对工资字段具有更新权力。
SELECT,UPDATE(工资) ON 职工
)用户张新具有修改这两个表的结构的权力。
ALTER TABLE ON 职工,部门
)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力。
ALL PRIVILIGES ON 职工,部门
GRANT OPTION;
)用户杨兰具有从每个部门职工中SELECT
最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
&&& CREATE
VIEW 部门工资 AS
部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM 职工,部门
WHERE 职工.部门号=部门.部门号
GROUP BY 职工.部门号
SELECT ON 部门工资
9 .把习题8
中(1)---(7)的每一种情况,撤销各用户所授予的权力
(1) REVOKE SELECT ON 职工,部门 FROM
(2) REVOKE INSERT , DELETE ON 职工,部门 FROM
(3) REOVKE SELECT ON 职工
WHEN USER ( ) =NAME
FROM ALI ;
(4) REVOKE SELECT , UPDATE ON 职工
FROM 刘星;
(5) REVOKE ALTER TABLE ON 职工,部门
FROM 张新;
(6) REVOKE ALL PRIVILIGES ON 职工,部门
FROM 周平;
(7) REVOKE SELECT ON 部门工资
FROM 杨兰;
DROP VIEW 部门工资;
为什么强制存取控制提供了更高级别的数据库安全性?
答:强制存取控制(MAC
)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
11 .理解并解释MAC
机制中主体、客体、敏感度标记的含义。
主体是系统中的活动实体,既包括DBMS
所管理的实际用户,也包括代表用户的各进程。
客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。对于主体和
客体,DBMS
为它们每个实例(值)指派一个敏感度标记(Label
敏感度标记被分成若干级别,例如绝密(Top
Secret )、机密(Secret )· 可信( Confidential
)、公开(PubliC
)等。主体的敏感度标记称为许可证级别(ClearanCe
玫vel ) ,客体的敏感度标记称为密级(Classification
Level )。
.什么是数据库的审计功能,为什么要提供审计功能?
答:审计功能是指DBMS
的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。利用数据库的审计功能,DBA
可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
.统计数据库中存在何种特殊的安全性问题?
答:统计数据库允许用户查询聚集类型的信息,如合计、平均值、最大值、最小值等,不允许查询单个记录信息。但是,人们可以从合法的查询中推导出不合法的信息,即可能存在隐蔽的信息通道,这是统计数据库要研究和解决的特殊的安全性问题。
第5章 数据库完整性
1什么是数据库的完整性?
数据库的完整性是指数据的正确性和相容性。
.数据库的完整性概念与数据库的安全性概念有什么区别和联系?
数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(
Garba : e In Garba : e out
)所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
.什么是数据库的完整性约束条件?可分为哪几类?
完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。静态列级约束是对一个列的取值域的说明,包括以下几个方面:
)对数据类型的约束,包括数据的类型、长度、单位、精度等;
( 2 )对数据格式的约束; ( 3
)对取值范围或取值集合的约束; ( 4
)对空值的约束; ( 5
)其他约束。静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有: ( l
)实体完整性约束; ( 2 )参照完整性约束; ( 3
)函数依赖约束。
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:
( l )修改列定义时的约束; ( 2
)修改列值时的约束。动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
的完整性控制机制应具有哪些功能?
的完整性控制机制应具有三个方面的功能: ( l
)定义功能,即提供定义完整性约束条件的机制;
)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;(
)违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
&5 . RDBMS
在实现参照完整性时需要考虑哪些方面?
在实现参照完整性时需要考虑以下几个方面: ( l
)外码是否可以接受空值。 ( 2 )册 l
除被参照关系的元组时的考虑,这时系统可能采取的作法有三种:
l )级联删除( CASCADES ) ; 2 )受限删除( RESTRICTED )
; 3 )置空值删除( NULLIFIES )。 ( 3
)在参照关系中插入元组时的问题,这时系统可能采取的作法有:
l )受限插入; 2 )递归插入。 ( 4
)修改关系中主码的问题。一般是不能用 UPDATE
语句修改关系主码的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。如果允许修改主码,首先要保证主码的惟一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。
.假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码。用
语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过
CREATE TABLE DEPT
(Deptno NUMBER(2),
Deptname VARCHAR(10),
Manager VARCHAR(10),
PhoneNumber Char(12)
CONSTRAINT PK_SC RIMARY KEY(Deptno));
CREATE TABLE EMP
&&& (Empno
NUMBER(4),
Ename VARCHAR(10),
Age NUMBER(2),
CONSTRAINT C1 CHECK ( Aage&=60),
Job VARCHAR(9),
Sal NUMBER(7,2),
Deptno NUMBER(2),
CONSTRAINT FK_DEPTNO
FOREIGN KEY(Deptno)
REFFERENCES DEPT(Deptno));
.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?
对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。
第6章 关系数据库理论
1 .理解并给出下列术语的定义:
函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All
一key )、1 NF 、ZNF 、3NF 、BcNF 、多值依赖、4NF
定义1:设R(U)是属性集U上的关系模式。X,Y是属性集U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X&Y。(即只要X上的属性值相等,Y上的值一定相等。)
术语和记号:
X&Y,但Y不是X的子集,则称X&Y是非平凡的函数依赖。若不特别声明,总是讨论非平凡的函数依赖。
X&Y,但Y是X的子集,则称X&Y是平凡的函数依赖。
若X&Y,则X叫做决定因素(Determinant)。
若X&Y,Y&X,则记作X&&Y。
若Y不函数依赖于X,则记作X &
定义2:在R(U)中,如果
X&Y,并且对于X的任何一个真子集X’,都有X’
& Y,则称Y对X完全函数依赖
&&&&若X&Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
定义3:若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)。
定义4:若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式R∈2NF
。(即1NF消除了非主属性对码的部分函数依赖则成为2NF)。
定义5:关系模式R&U,F&
中若不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集)使得X&Y,Y
Z成立,则称R&U,F&∈3NF。
定义6:关系模式R&U,F&∈1NF
。若X&Y且Y不是X的子集时,X必含有码,则R&U,F&∈BCNF。
定义7:关系模式R&U,F&∈1NF,如果对于R的每个非平凡多值依赖X&&Y(Y不是X的子集,Z=U-X-Y不为空),X都含有码,则称R&U,F&∈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)
的最小函数依赖集如下:Sno&Sname,Sno&Sbirth,Sno&Class,Class&Dept,DEPT&Rno
传递依赖如下:
由于Sno&Dept,而Dept&Sno
,Dept&Rno(宿舍区)
所以Sno与Rno之间存在着传递函数依赖。
由于Class&Dept,Dept &
Class,Dept&Rno
所以Class与Rno之间存在着传递函数依赖。
由于Sno&Class,Class&Sno,Class&Dept
所以Sno与Dept之间存在着传递函数依赖。
B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:
Class&Pname,Class&Cnum,Class&Cyear,Pname&Dept.
由于Class&Pname,Pname&Class,Pname&Dept
所以C1ass与Dept之间存在着传递函数依赖。
&C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:
Dept&Dno,Dno&Dept,Dno&Office,Dno&Dnum
根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。
&D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:
Mname&Myear,Mname&Maddr,Mname&Mnum
该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
A、学生S候选码:Sno;外部码:Dept、Class;无全码
B、班级C候选码:Class;外部码:Dept;无全码
C、系D候选码:Dept或Dno;无外部码;无全码
D、学会M候选码:Mname;无外部码;无全码
3 .试由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 林协明,Z ,通过传递律可知翔一Z 。
( 3 )已知zcy ,根据自反律知、吟z ,又因为x 一Y
,所以由传递律可得x 一Z 。
5 .试举出3 个多值依赖的实例。
(1)关系模式MSC ( M , S , C )中,M
表示专业,S 表示学生,C
表示该专业的必修课。假设每个专业有多个学生,有一组必修课。设同专业内所有学生选修的必修课相同,实例关系如下。按照语义对于M
的每一个值M i , 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
表示病人。假设每个病房住有多个病人,有多个责任医务人员负责医治和护理该病房的所有病人。
12.下面的结论哪些是正确的?
哪些是错误的?
对于错误的请给一个反例说明之。
(1)任何一个二目关系是属于3NF。
答:正确。因为关系模式中只有两个属性,所以无传递。
(2)任何一个二目关系是属于BCNF.
答:正确。按BCNF的定义,若X&Y,且Y不是X的子集时,每个决定因素都包含码,对于二目关系决定因素必然包含码。详细证明如下:(任何二元关系模式必定是BCNF)。
证明:设R为一个二目关系R(A1,A2),则属性A1和A2之间可能存在以下几种依赖关系:
A、A1&A2,但A2&A1,则关系R的码为A1,决定因素都包含码,所以,R是BCNF。
B、A1&A2,A2&A1,则关系R的码为A2,所以决定因素都包含码,R是BCNF。
包含码。R是BCNF。C、R的码为(A1,A2)(即A1
&A2,A2 &A1),决定因素都
(3)任何一个二目关系是属于4NF.
答:正确。因为只有两个属性,所以无非平凡的多值依赖。
第11章 并发控制
在数据库中为什么要并发控制?
答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。
.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?
答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。
( l )丢失修改(lost update ) 两个事务 Tl
和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)
Tl 提交的结果,导致 Tl 的修改被丢失。 ( 2
)不可重复读( Non 一 Repeatable Read )
不可重复读是指事务 Tl
读取数据后,事务几执行更新操作,使 Tl
无法再现前一次读取结果。( 3 )读“脏”数据(
Dirty Read ) 读“脏’夕数据是指事务 Tl
修改某一数据,并将其写回磁盘,事务几读取同一数据后,
Tl 由于某种原因被撤销,这时 Tl
已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。
.什么是封锁?基本的封锁类型有几种?试述它们的含义。
答:封锁就是事务 T
在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务
T 就对该数据对象有了一定的控制,在事务 T
释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。
基本的封锁类型有两种:排它锁( Exclusive Locks
,简称 x 锁)和共享锁 ( Share Locks,简称 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 做任何修改。
.如何用封锁机制保证数据的一致性?
在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务
Tl 在对 A 进行修改之前先对 A 执行 xock ( A ) ,即对
A 加 x 锁。这样,当几请求对 A 加 x
锁时就被拒绝,几只能等待 Tl 释放 A
上的锁后才能获得对 A 的 x 锁,这时它读到的 A 是
Tl 更新后的值,再按此新的 A
值进行运算。这样就不会丢失 Tl 的更新。
按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读“脏’夕数据等数据不一致性。
5 .什么是活锁?什么是死锁?
如果事务 Tl 封锁了数据 R ,事务几又请求封锁
R ,于是几等待。几也请求封锁 R ,当 Tl 释放了 R
上的封锁之后系统首先批准了几的请求,几仍然等待。然后几又请求封锁
R ,当几释放了 R
上的封锁之后系统又批准了几的请求 … …
几有可能永远等待,这就是活锁的情形。活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。如果事务
Tl 封锁了数据 Rl ,几封锁了数据凡,然后 Tl
又请求封锁几,因几已封锁了几,于是 Tl
等待几释放几上的锁。接着几又申请封锁 Rl ,因 Tl
已封锁了 Rl ,几也只能等待 Tl 释放 Rl
上的锁。这样就出现了 Tl 在等待几,而几又在等待
T }的局面, T
}和几两个事务永远不能结束,形成死锁。
.试述活锁的产生原因和解决方法。
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。
.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
答:数据库系统一般采用允许死锁发生, DBMS
检测到死锁后加以解除的方法。 DBMS
中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。
并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。
.什么样的并发调度是正确的调度?
答:可串行化( Serializable
)的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
9 .设 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
。因为串行执行次序有 Tl T2T3、 Tl T3T2、T2T1T3、T2T3Tl
、T3T1T2、T3T2 Tl 。对应的执行结果是 16 、 8 · 4 · 2
· 4 · 2 。
)请给出一个可串行化的调度,并给出执行结果
最后结果 A 为 16 ,是可串行化的调度。
)请给出一个非串行化的调度,并给出执行结果。
最后结果 A 为 0 ,为非串行化的调度。
( 4 )若这 3
个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。
( 5 )若这 3
个事务都遵守两段锁协议,请给出一个产生死锁的调度。
11.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。
证明:首先以两个并发事务 Tl
和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
&( l )事务 Tl
写某个数据对象 A ,T2读或写 A ;
( 2 )事务 Tl 读或写某个数据对象 A
,T2写 A 。
下面称 A 为潜在冲突对象。
设 Tl 和T2访问的潜在冲突的公共对象为{A1,A2
}。不失一般性,假设这组潜在冲突对象中 X =(A 1
, A2 , … , Ai }均符合情况 1 。 Y ={A i + 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
)对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。证毕。
.举例说明,对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 姓名数据库 的文章

 

随机推荐