资源描述
第四章习题
习 题
1.什么是数据库的安全性?
答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
2.数据库的安全性和计算机系统的安全性有什么关系?
答:安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。
5.试述实现数据库安全性控制的常用方法和技术。
答:(1)用户标识和鉴别:该方法是由系统提供一定的方式让用户标识自己的名字和身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才能提供系统的使用权。
(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如C2级中的自主存取控制(DAC),B1级中的强制存取控制(MAC)。
(3)视图机制:为不同的用户定义不同的视图,把数据对象限制在一定的范围内,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(4)审计:建立审计日志,把用户对数据库的所有操作自动记录在审计日志中。DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
6. 什么是数据库中的自主存取控制方法和强制存取控制方法?
答:自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。
7. SQL语言中提供了哪些数据控制(自主存取控制)的语句?请试举几例说明它们的使用方法。
答:SQL中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如:
GRANT select,insert on student to 王平 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权力
答:GRANT SELECT ON 职工,部门 TO 王明
撤消:REVOKE SELECT ON 职工,部门 FROM 王明
(b) 用户李勇对两个表有INSERT和DELETE权力
答:GRANT INSERT,DELETE ON 职工,部门 TO 李勇
撤消:REVOKE INSERT,DELETE ON 职工,部门 FROM 李勇
(c) *每个职工只对自己的记录有SELECT权力
答:
方法1:
create view myself as select * from 职工 where 职工号=$mynumber;
grant select on myself to $myname;
*方法2:grant select on 职工 when user()=NAME TO ALL
注意:这里假定系统的GRANT语句支持when子句和user()的使用,用户将自己的名字作为ID。不同系统的扩展语句可能是不同的。
(d) 用户刘星对职工表有SELECT权力,对工资字段具有更新权力
答:GRANT SELECT, UPDATE(工资) ON 职工 TO 刘星
(e) 用户张新具有修改这两个表的结构的权力。
答:GRANT ALTER TABLE ON 职工,部门 TO 张新
(f) 用户周平具有对两个表所有权力(读、插、改、删数据),并具有给其他用户授权的权力
答:GRANT ALL PRIVIEGES ON 职工,部门 TO 周平 WITH GRANT OPTION
(g) *用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资
答: 1.先建立一个视图
CREATE VIEW 部门工资 AS SELECT 部门.名称,max(工资),min(工资),
avg(工资) FROM 职工,部门 WHERE 职工.部门号=部门.部门号
GROUP BY 职工.部门号;
2 再对这个视图定义杨兰的存取权限
GRANT SELECT ON 部门工资 to 杨兰
10.为什么强制存取控制提供了更高级别的数据库安全性?
答: 强制存取控制(MAC)是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
11.理解并解释MAC机制中主体、客体、敏感度标记的含义。
答:主体:是系统中的活动实体,包括DBMS所管理的实际用户,代表用户的各进程。
客体:是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。
敏感度:对于主体和客体,DBMS为它们每个实体(值)指派一个敏感度标记(Label)。
敏感度标记被分成若干级别,例如绝密、机密、可信、公开等。
主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。
12.举例说明MAC机制如何确定主体能否存取客体。
答:假设要对关系变量S进行MAC控制,为简化起见,假设要控制存取的数据单元是元组,则每个元组标以密级,如下表所示:(4=绝密,3=机密,2=秘密)
S#
SNAME
STATUS
CITY
CLASS
S1
东方红
20
天津
2
S2
丰泰盛
10
北京
3
S3
为民
24
南昌
4
假设用户U1和U2的许可证级别为3和2,则根据规则U1能查得元组S1和S2,可修改元组S2;
而U2只能查得元组S1,只能修改元组S1.
13.什么是数据库的审计功能,为什么要提供审计功能?
答: 审计功能是指DBMS的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在.利用数据库的审计功能, DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
14.统计数据库中存在何种特殊的安全性问题?
统计数据库允许用户查询聚集类型的信息,如合计、平均、最大值、最小值等,不允许查询单个记录信息。但是,人们可以从合法的查询中推导出不合法的信息,即可能存在隐蔽的信息通道,这是统计数据库要研究和解决的特殊的安全性问题。
例如:某个用户A想知道另一用户B的工资数额,可以通过下列两个合法查询获取:
用户A和其字N个程序员的工资总额是多少?X
用户B和其他N个程序员的工资总额是多少?Y
自己的工资是Z
用户B工资=Y-(X-Z)
第五章习题
习 题
1. 什么是数据库的完整性?
答:数据库的完整性是指数据的正确性和相容性。
2. 数据库完整性概念与数据库的安全性概念有什么区别和联系?
答:数据库完整性和安全性是两个不同的概念,但有一定的联系。
(1) 数据库完整性是为了防止数据库中存在不合语义的数据,防止错误信息的输入和输出所造成的无效操作和错误结果。完整性措施的防范对象是不合语义的数据。
安全性是保护数据库防止恶意的破坏和非法的存取。安全性措施的防范对象是非法用户的非法操作。
3. DBMS的完整性控制机制应具有哪些功能?
答:1)定义功能,即提供定义完整性约束条件的机制;
2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;
3)违约反应,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
6.假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中部门号为主码;
部门(部门号,名称,经理名,电话),其中部门号为主码。
用SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义;
定义每个模式的主码;定义参照完整性;定义职工年龄不得超过60岁。
答:
CREATE TABLE DEPT
(Deptno NUMBER(2),
Deptname VARCHAR(18),
Manager VARCHAR(8),
PhoneNumber Char(12),
CONSTRAINT PK_SC PRIMARY KEY(Deptno)); *定义部门号为主码
CREATE TABLE EMP
(Empno NUMBER(4),
Ename VARCHAR(8),
Age NUMBER(2),
CONSTRAINT C1 CHECK (Age<=60),
Job VARCHAR(10),
Sal NUMBER(7,2),
Deptno NUMBER(2),
CONSTRAINT FK_DEPTNO *约束名为FK_DEPTNO
FOREIGN KEY(Deptno) *定义Deptno为外码
REFERENCES DEPT(Deptno); *相应于哪个表的主码
7.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时。一般是如何分别进行处理的?
答:对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方法进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。
第六章习题
1。属于BCNF的关系模式________。
已消除了插入、删除异常
已消除了插入、删除异常、数据冗余
仍然存在插入、删除异常
在函数依赖范畴内,已消除了插入和删除的异常
2.设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称________。
Y函数依赖于X
Y对X完全函数依赖
X为U的候选码
R属于2NF
3.在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X' →Y,则________。
Y函数依赖于X
Y对X完全函数依赖
X为U的候选码
R属于2NF
4.包含在_______中的属性,叫做主属性。
主码
候选码
外码
全码
5.多值依赖的毛病在于________。
插入异常
删除异常
数据冗余太大
插入异常、删除异常、数据冗余太大
6.1NF________规范为2NF。
消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除非平凡且非函数依赖的多值依赖
7.2NF________规范为3NF。
消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除非平凡且非函数依赖的多值依赖
8.3NF________规范为BCNF。
消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除非平凡且非函数依赖的多值依赖
9.3NF________规范为4NF。
消除非主属性对码的部分函数依赖
消除非主属性对码的传递函数依赖
消除主属性对码的部分和传递函数依赖
消除非平凡且非函数依赖的多值依赖
10.下面的结论正确的是______。
任何一个二目关系是属于3NF的。
任何一个二目关系是属于BCNF的。
任何一个二目关系是属于4NF的。
当且仅当函数依赖A→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接
11.下面的结论不正确的是______。
若R.A→R.B, R.B→R.C 则R.A→R.C
若R.A→R.B, R.A→R.C 则R.A→R.(B,C)
若R.B→R.A, R.C→R.A 则R.(B,C)→R.A
若R.(B,C)→R.A 则R.B→R.A, R.C→R.A
P196 习题2 建立一个关于系、学生、班级、学会等信息的数据库。
描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。
描述班级的属性有:班号、专业名、系名、人数、入校年份。
描述系的属性有:系名,系号,系办公室地点、人数。
描述学会的属性有:学会名、成立年份、地点、人数
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一个宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。请给出关系模式,指出每个关系模式是否存在传递函数依赖,是否存在部分函数依赖,属于第几范式。
答:根据题意,有以下4个关系模式:
1. 学生(学号,姓名,出生年月,系名,班号,宿舍区)
存在传递函数依赖,不存在部分函数依赖,所以学生Î2NF
2. 班级(班号,专业名,系名,人数,入校年份)
存在传递函数依赖,不存在部分函数依赖,所以班级Î2NF ’
3. 系(系名,系号,系办公室地点、人数)
系号 系名,系号 系办公室地点,系号 系人数
不存在传递函数依赖,不存在部分函数依赖,所以学生Î3NF
4.学会(学会名,成立年份,地点,人数)
不存在传递函数依赖,不存在部分函数依赖,所以学会ÎBCNF
因为学生关系和学会关系是多对多的关系,所以还有一个联系模式
5.加入学会(学会名,学号,姓名,入会年份)
有,(学会名,学号) 入会年份,(学会名,学号) P 姓名
所以,加入学会Î1NF
将加入学会分解为:
加入学会1(学会名,学号,入会年份),加入学会2(学号,姓名)
函数依赖:
学生:学号 姓名,学号 出生年月,班号 系名,
系名 宿舍区
班级:班号 专业名,班号 班级人数,专业名 系名,
班号 入校年份,(专业名,入校年份) 班号
因为每个专业每年只招一个班
系:系号 系名,系名 系号,系号 码系办公地点,系号 系人数
学会:学会名 成立年份,学会名 地点,学会名 学会人数
加入学会:(学会名,学号) 入会年份,(学会名,学号) P 姓名
左部是多属性的(专业名,入校年份) 班号是完全函数依赖,
(学会名,学号) 入会年份是完全函数依赖
(学会名,学号) 姓名是部分函数依赖。
P197习题4:
证明:设Yxz=Yxz’对于每一组(x,z,z’)都成立,现证其能推出定义5.9的条件:
设s,t是关系r中的两个元组,s[X]=t[X],由新定义的条件可知对于每一个z值,都对应相同的一组y值。这样一来,对相同的x值,交换的x值,交换y值后所得的元组仍然属于关系r,即定义5.9的条件成立。
如果定义5.9的条件成立,则对相同的x值,交换y值后所得的元组仍然属于关系r,由于任意性及其对称性,可知每个z值对应相同的一组y值,所以Yxz=Yxz’对于每一组(x,z,z’)都成立。
综上可知,新定义和定义5.9的条件是等从的,所以新定义和定义5.9是等价的。
第七章习题
6.数据字典的内容和作用是什么?
答:数据字典是系统中各类数据描述的集合。数据字典的通常包括:数据项、数据结构、数据流、数据存储、处理过程五个部分。
其中数据项是数据的最小组成单位,若干个数据项可以组成一个数据结构。数据字典通过对数据项和数据结构的定义来描述数据流和数据存储的逻辑内容,
数据字典的作用:数据字典是关于数据库中数据的描述,在需求分析阶段建立,是下一步进行概念设计的基础,并在数据库设计过程中不断修改、充实、完善。
8.什么叫数据抽象?试举例说明。
答:数据抽象是对实际的人、物、事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。
如“分类”这种抽象是:定义某一类概念作为现实世界中一组对象的类型。它抽象了对象值和型之间的“is member of ”的语义。在E-R模型中,实体型就是这种抽象。如实体型学生,张三,李四,王二等是学生中的一员,具有学生们共同的特性和行为。
10.什么是E-R图?构成E-R图的基本要求是什么?
答:E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
构成E-R图的基本要素是实体型、属性和联系,其表示方法为:
实体型:矩形+实体名
属性:椭圆形,无向边与实体连接
联系:菱形+联系名,无向边与实体连接,边上标注联系类型(1:1,1:n,m:n)
15. 试把第一章习题12和习题13中的E-R图转换为关系模型。
习题12:各实体的属性为:
系:系号,系名
班级:班级号,班级名
教研室:教研室编号,教研室名
学生:学号,姓名,学历
课程:课程号,课程名
教员:职工号,姓名,职称
各联系的属性为:
选修课:成绩
其关系模型为:
系(系编号,系名,学校名)
班级(班级号,班级名,系号)
教研室(教研室编号,教研室名,系编号)
学生(学号,姓名,学历,班级号,导师职工号)
课程(课程号,课程名)
教员(职工号,姓名,职称,教研室编号)
选课(学号,课程号,成绩)
习题13的E-R图
产品
m
组成 使用使用权
零件
n
n
储存
m m
仓库
制造
材料
1
n 存放
n
对应的关系模型为:
产品(产品号,产品名)
零件(零件号,零件名)
材料(材料号,材料名,类别,仓库号,存放量)
仓库(仓库号,仓库名)
产品组成(产品号,零件号,使用零件量)
零件储存(零件号,仓库号,存储量)
材料制造(零件号,材料号,使用材料量)
17.试用规范化理论中有关范式的概念分析习题15中你设计的关系模型中各个关系模式的码,它们属于第几范式?会产生什么更新异常?
答:习题15中设计的两个关系数据库的各个关系模式的码都用下划线注明,这些关系模式都只有一个码,且都是唯一决定的因素,所以都属于BCNF。不会产生更新异常现象。
18.规范化理论对数据库设计有什么指导意义?
答:规范化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用以指导关系数据模型的优化,用来预测模式可能出现的问题,为设计人员提供了自动产生各种模式的算法工具,使数据库设计工作有了严格的理论基础。
21.数据输入在实施阶段的重要性是什么?如何保证输入数据的正确性?
答:数据库是用来对数据进行存储、管理与应用的,因此在实施阶段必须将原有系统中的历史数据输入到数据库。数据量一般都很大,而且数据来源于部门中的各个不同的单位。数据的组织方式、结构和格式都与新设计的数据库系统有相当的差距,组织数据录入就要将各类源数据从各个局部应用中抽取出来,分类转换,最后综合成符合新设计的数据库结构的形式,输入数据库。因此这样的数据转换、组织入库的工作是相当费力费时的工作。特别是原系统是手工数据处理系统时,各类数据分散在各种不同的原始表格、凭证、单据之中,数据输入工作量更大。
保证输入数据正确性的方法:为提高数据输入工作的效率和质量,应该针对具体的应用环境设计一个数据录入子系统,由计算机来完成数据入库的任务。在源数据入库之前要采用多种方法对它们进行检验,以防止不正确的数据入库。
22.什么是数据库的再组织和重构造? 为什么要进行数据库的再组织和重构造?
答:数据库的重组织是指:按原设计要求重新安排存储位置,回收垃圾,减少指针链,提高系统性能。
数据库的重构造是指:部分修改数据库的模式和内模式。即修改原设计的逻辑和物理结构。
数据库运行一段时间后,由于记录的不断增、删、改,会使数据库的物理存储变坏,从而降低数据库存储空间的利用率和数据的存取效率,使数据库的性能下降。这时DBA就要对数据库进行重组织,或部分重组织(只对频繁增、删的表进行重组织)。DBMS一般都提供了供重组织数据库使用的实用程序
当数据库应用环境发生变化,会导致实体及实体间的联系也发生相应的变化,使原有的数据库设计不能很好地满足新的需求,从而不得不适当调整数据库的模式和内模式。这就是数据库的重构造。
第十一章习题
5.如何用封锁机制保证数据的一致性?
DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作。按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、读“脏“数据不可重复读等数据不一致性。
6.什么是封锁协议?
在运用封锁技术对数据加锁时,要约定一些规则。例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。这些约定或者规则称为封锁协议。对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议。
7. 不同封锁协议与系统一致性级别的关系是什么?
不同的封锁协议对应不同的一致性级别。
一级封锁协议可防止丢失修改,并保证事务T是可恢复的。但不能保证可重复读和不读“脏”数据(因为读数不加锁)。
二级封锁协议可防止丢失更新、可进一步防止不读“脏”数据。但不能保证可重复读。
三级封锁协议可防止丢失更新、可进一步防止不读“脏”数据和进一步防止了不可重复读。
12.什么样的并发调度是正确的调度?
可串行化的调度是正确的调度。
可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度策略为可串行化的调度。
13:设T,T2,T3是如下的三个事务:
T1:A=A+2, T2:A=A*2, T3:A=A**2, 初值A=0
(1) 若这三个事务允许并发执行,则有多少种可能的正确结果?
答:至少有4种可能的正确结果,分别为A=16,A=8,A=4,A=2
有6种串行调度:
A.按T1→T2→T3次序执行,结果A=16
B.按T1→T3→T2次序执行,结果A=8
C.按T2→T3→T1次序执行,结果A=2
D.按T2→T1→T3次序执行,结果A=4
E.按T3→T2→T1次序执行,结果A=2
F.按T3→T1→T2次序执行,结果A=4
至少有8种可串行化调度:
AA 结果A=16与A串行调度结果相同 BB 结果A=8与B串行调结果相同
是可串行化调度 是可串行化调度
T1
T2
T3
T1
T2
T3
Slock A
读A=0
Unlock A
Xlock A
A=A+1
写回A(=2)
Unlock A
Slock A
等待
等待
等待
读A=4
Unlock A
Xlock A
A=A*2
写回A(=8)
Unlock A
Slock A
等待
等待
等待
读A=8
Unlock A
Xlock A
A=A**2
写回A(=16)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
A=A+1
写回A(=2)
Unlock A
Slock A
等待
等待
等待
读A=4
Unlock A
Xlock A
A=A*2
写回A(=8)
Unlock A
Slock A
等待
等待
等待
读A=2
Unlock A
Xlock A
A=A**2
写回A(=4)
Unlock A
CC:同理 按T2→T3→T1 交叉执行结果A=2, 与C串行结果相同,是正确的调度
DD:同理 按T2→T1→T3 交叉执行结果A=4, 与D串行结果相同,是正确的调度
EE:同理 按T3→T2→T1 交叉执行结果A=2, 与E串行结果相同,是正确的调度
FF:同理 按T3→T1→T2 交叉执行结果A=4, 与F串行结果相同,是正确的调度
AAA:结果A=0 与A、B、C、D、E、F的结果都不相同,所以是错误的调度 BBB:结果A=0
T1
T2
T3
T1
T2
T3
Slock A
读A=0
Unlock A
Xlock A
A=A+1
写回A(=2)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
等待
等待
等待
A=A*2
写回A(=0)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
等待
等待
等待
等待
等待
A=A**2
写回A(=0)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
A=A+1
写回A(=2)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
等待
等待
等待
等待
等待
等待
A=A*2
写回A(=0)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
等待
等待
等待
等待
A=A**2
写回A(=0)
Unlock A
CCC:结果A=2 与C的结果相同,是正确的调度,是可串行化调度
DDD:结果A=0 与C的结果相同,是错误的调度
EEE:结果A=2 与C的结果相同,是正确的调度
FFF:结果A=0 与C的结果相同,是错误的调度,是可串行化调度
(2) 给出一个可串行化调度,并给出执行结果
答:
T1
T2
T3
Slock A
读A=0
Unlock A
Xlock A
A=A+1
写回A(=2)
Slock A
等待
等待
等待
读A=4
Unlock A
Xlock A
A=A*2
写回A(=8)
Unlock A
Slock A
等待
等待
读A=2
Unlock A
Xlock A
A=A**2
写回A(=4)
Unlock A
执行结果A=8
(3) 给出一个非串行化调度,并给出执行结果
答:
T1
T2
T3
Slock A
读A=0
Unlock A
Xlock A
A=A+1
写回A(=2)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
等待
等待
A=A*2
写回A(=0)
Unlock A
Slock A
读A=0
Unlock A
Xlock A
A=A**2
写回A(=0)
Unlock A
(4) 若这三个事务都遵守两段锁协议,给出一个不产生死锁的可串行化调度
答:
T1
T2
T3
Slock A
读A=0
Xlock A
A=A+1
写回A(=2)
Unlock A
Xlock A
等待
等待
等待
等待
等待
读A=2
A=A*2
写回A(=4)
Unlock A
Xlock A
等待
等待
等待
等待
等待
等待
等待
读A=4
A=A**2
写回A(=16)
Unlock A
(5) 若这三个事务都遵守两段锁协议,给出一个产生死锁的调度
答:
T1
T2
T3
Slock A
读A=0
Xlock A
等待
等待
Sock A
读A=4
Xlock A
等待
等待
Slock A
读A=2
Xlock A
等待
习题15 试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。
证明:以两个并发事务T1和T2为例,存在多个并发事务的情形可以类推。
根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
(1) 事务T1写某个数据对象A,T2读或写A;
(2) 事务T1读或写某个数据对象A,T2写A。
下面称A为潜在冲突对象。
设T1和T2访问的潜在冲突的公共对象为{A1,A2,。。。,An}
不失一般性,假设这组潜在冲突对象中X={ A1,A2,。。。,Ai }均符合情况(1)。
Y={ Ai+1,。。。,An } 符合情况(2)。
"x∈X,T1需要Xlock x ①
T2需要Slock x或Xlock x ②
1) 如果操作①先执行,则T1获得锁,T2等待
由于遵守两段锁协议,T1在成功获得X和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。
这时如果$w∈X或Y,T2已获得w的锁,则出现死锁;
否则,T1在对X,Y中对象全部处理完毕后,T2才能执行。
这相当于按T1,T2的顺序串行执行,根据可串行化定义,T1和T2的调度是可串行化的。
2)操作②先执行的情况与1)对称
因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。
证毕。
16.举例说明,对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。
答:
T1
T2
Slock B
读 B=2
Y=B
Unlock B
Xlock A
A=Y+1
写回 A=3
unlock A
Slock A
等待
等待
等待
slock A
读 A=3
x=A
unlock A
Xlock B
B=X+1
写回 B=4
unlock B
17.为什么要引进意向锁?意向锁的含义是什么?
答:引进意向锁是为了提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。
引进意向锁的原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁一一显式封锁和隐式封锁。因此系统在对某个数据对象加锁时,不仅要检查该数据对象上有无显式封锁与之冲突;还要检查其所有上级结点,看本事务的显式封锁是否与该数据对象上的隐式封锁(即由于上级结点已加的封锁造成的)冲突;还要检查其所有下级结点,看上面的显式封锁是否与本事务的隐式封锁(将加到下级结点的封锁)冲突。显然这样的检查方法效率很低。为此引进一种意向锁。
意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须先对它的上层结点加意向锁。
引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。
16
展开阅读全文