·31· 单位号电话办公地点设备处1拥有性别年龄m工人姓名 (c)
1管理m设备设备号名称规格工人编号规格设备价格m装配规格价格(d)
图7-28 各局部E-R图
答:分析:
设备号设备名零件数量零件号零件名 n零件① 工人实体可以与职工实体合并,将工人的属性合并到职工实体中,并在职工实体中增加“身份”属性,来
标识是工人还是其他职工。
② 设备处可合并到部门实体中,因设备处也是一个部门。可在实现时增加约束:只有设备处才能管理设备。 ③ 合并后的设备实体属性是图(c)和(d)中设备属性的并集。
合并后的结果:
31
·32· 职务性别年龄职工m属于联系电话办公地点1部门1管理设备号设备名规格价格
关系模式(主码用下划线标识)
部门(部门号,部门名,联系电话,办公地点)
职工编号姓名身份地址部门号部门名电话厂商号厂商m生产nm装配n零件厂商名生产日期零件号零件名规格m设备零件数量价格 职工(职工编号,姓名,身份,职务,性别,年龄,所属部门号),所属部门号为引用部门的外码 设备(设备号,设备名,规格,价格,被管部门号),被管部门号为引用部门的外码 零件(零件号,零件名,规格,价格) 厂商(厂商号,厂商名,地址,电话)
装配(设备号,零件号,零件数量),设备号为引用设备的外码,零件号为引用零件的外码 生产(厂商号,零件号,生产日期)或 生产(厂商号,零件号,生产日期)
32
第8章 事务与并发控制 一. 选择题
1. 如果事务T获得了数据项A上的排他锁,则其他事务对A D
A.只能读不能写
B.只能写不能读
C.可以写也可以读
D.不能读也不能写
·33· 2. 设事务T1和T2执行如图8-15所示的并发操作,这种并发操作存在的问题是 B
时间 ① ② 事务T1 读A=100,B=10 读A=100 A=A*2=200 写回A=200 ③ ④ 计算A+B 读A=100,B=10 验证A+B 图8-15 并发操作
A.丢失修改 C.读脏数据
B.不能重复读 D.产生幽灵数据
C
事务T2 3. 下列关于数据库死锁的说法,正确的是
A.死锁是数据库中不可判断的一种现象
B.在数据库中防止死锁的方法是禁止多个用户同时操作数据库 C.只有允许并发操作时,才有可能出现死锁 D.当两个或多个用户竞争相同资源时就会产生死锁 4. 下列不属于事务特征的是
A.完整性 C.隔离性
A B.一致性 D.原子性
A
5. 若事务T对数据项D已加了S锁,则其他事务对数据项D
A.可以加S锁,但不能加X锁 B.可以加X锁,但不能加S锁 C.可以加S锁,也可以加X锁 D.不能加任何锁
6. 在数据库管理系统的三级封锁协议中,二级封锁协议的加锁要求是 C
A.对读数据不加锁,对写数据在事务开始时加X锁,事务完成后释放X锁 B.读数据时加S锁,读完即释放S锁;写数据时加X锁,写完即释放X锁
C.读数据时加S锁,读完即释放S锁;对写数据是在事务开始时加X锁,事务完成后释放X锁 D.在事务开始时即对要读、写的数据加锁,等事务结束后再释放全部锁 7. 在数据库管理系统的三级封锁协议中,一级封锁协议能够解决的问题是
A.丢失修改 C.读脏数据
B.不可重复读 D.死锁
A
8. 若系统中存在4个等待事务T0、T1、T2和T3,其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数
33
·34· 据项A2,T2正等待被T3锁住的数据项A3, B
A.活锁 C.封锁
B.死锁 D.正常
T3正等待被T0锁住的数据项A0。则此时系统所处的状态是
9. 事务一旦提交,其对数据库中数据的修改就是永久的,以后的操作或故障不会对事务的操作结果产生任何影响。
这个特性是事务的 A.原子性 C. 隔离性
D
B.一致性
D.持久性
10. 在多个事务并发执行时,如果事务T1对数据项A的修改覆盖了事务T2对数据项A的修改,这种现象称为
A
A.丢失修改 C.不可重复读
B.读脏数据 D.数据不一致
11. 在多个事务并发执行时,如果并发控制措施不好,则可能会造成事务T1读了事务T2的“脏”数据。这里的“脏”
数据是指
D
B.T1回滚后的数据 D.T2回滚后的数据
B
A.T1回滚前的数据 C.T2回滚前的数据
12. 在判断死锁的事务等待图中,如果等待图中出现了环路,则说明系统
A.存在活锁 C.事务执行成功
二. 填空题
B.存在死锁 D.事务执行失败
1.为防止并发操作的事务产生相互干情况,数据库管理系统采用加锁机制来避免这种情况。锁的类型包括______和______。 共享锁(或S锁)
排他锁(或X锁)
2.一个事务可通过执行______语句来取消其已完成的数据修改操作。 ROLLBACK 3.事务应对要读取的数据加______锁,对要修改的数据加______锁。
共享(或S) 排他(或X)
4.要求事务在读数据项之前必须先对数据项加S锁,直到事务结束才释放该锁的封锁协议是______级封锁协议。 三 5.假设有两个事务T1和T2,它们要读入同一数据并进行修改,如果T2提交的结果覆盖了T1提交的结果,导致T1修改的结果无效。这种现象称为______。 丢失修改 6.在数据库环境下,进行并发控制的主要方式是_____。 加锁
7.如果总是将事务为两个阶段,一个是加锁期,一个是解锁期,在加锁期不允许解锁,在解锁期不允许加锁,则将
该规定称为_____。 两段锁协议
8.如果并发执行的所有事务都遵守两段锁协议,则这些事务的任何并发调度一定是_____。 可串行化的 9.一个事务只要执行了_____语句,其对数据库的操作就是永久的。 COMMIT
10.在单CPU系统中,如果存在多个事务,则这些事务只能交叉地使用CPU,将这种并发方式称为_____。 交叉并
发 三. 简答题
5.设有如下三个事务:
T1:B = A + 1; T2:B = B * 2; T3:A = B + 1
(1)设A的初值为2,B的初值为1,如果这三个事务并发的执行,则可能的正确的执行结果有哪些?
T1?T2?T3:A=7, B=6
34
T1?T3?T2:A=4, B=8 T2?T1?T3:A=4, B=3 T2?T3?T1:A=3, B=4 T3?T1?T2:A=2, B=6 T3?T2?T1:A=2, B=3
(2)给出一种遵守两段锁协议的并发调度策略。
6.设有如图8-16所示的两个事务的调度过程,根据此图完成下列各题。 ·35· (1)写出事务T1和T2包含的操作。 T1:A = B+20
T2:B =A +30
(2)事务T1、T2开始之前B的初值是多少? B = 100
(3)设A的初值为20,则这两个事务所有可能的正确执行结果有哪些? T1?T2:A = 120,B = 150 T2?T1:A = 70,B = 50
(4)该调度方式是否遵守两段锁协议? 是
35
图8-16 事务调度图