常州工学院数据库2022-2023第二学期期末答案

 

 

 

 

 

1.

不能够成功执行,因为关系R的主码为AB,故而关系重属性AB不可以完全相同,关系中已经存在了A1,B1,故而不能够将相同的A,B字段值放入关系中

2.

update 职工 set 所在部门号 is null

where 所在部门号 in( select 部门号 from 部门 where 名称='开发部')

delete from 部门

where 名称='开发部';

3.

T2 修改一个数据,T1 随后读取这个数据。如果 T2 撤销了这次修改,那么 T1 读取的数据是脏数据。

该并发调度存在读脏数据的问题

4.关系模式重属性,ABE为LR类属性,CD为L类,CD+={CD}, ACD+{ABCDE}=U+, BCD+={ABCDE}, CDE+={ABCDE},故而关系的候选码为ACD,BCD,CDE

5.根据图中所示,T1,T2,T3事务在系统故障发生之前完成,故而需要重做,事务T4在故障发生时还未完成,故而该事务需要撤销处理

 

 

二、

1.

科室(科室编号,科室名)主键为科室编号

医生(医生编号,姓名,性别,年龄,职称,科室编号)主键为医生编号,外键为科室编号

护士(护士编号,姓名,性别,年龄,科室编号)主键为护士编号,外键为科室编号

病房(病房号,床位数,科室编号)主键为病房号,外键为科室编号

病人(病历号,姓名,性别,护士编号,医生编号,病房号,病例记录)主键为病例号,外键为护士编号,医生编号,病房号

三、

1.

1)π Pno, Pname (σ dept = '开发部' (member ⨝ PM))

2)π Pno, Pname ((π Mno (σ Mname = '王虹' (member)))- π Mno (σ Mname = '王虹' (PM))) ⨝ project))

3)CREATE TABLE member (

Mno INT PRIMARY KEY,

Mname VARCHAR(20),

gender CHAR(2),

Mage INT,

dept VARCHAR(30)

);

4) SELECT Pname

FROM project

GROUP BY Pno

HAVING COUNT(*) > 10;

5)SELECT PM.Mno, member.Mname

FROM PM

JOIN member ON PM.Mno = member.Mno

JOIN project ON PM.Pno = project.Pno

WHERE project.Pname = '项目AA';

(6)

SELECT project.Pno, project.Pname

FROM project

JOIN member ON PM.Mno = member.Mno

JOIN project ON PM.Pno = project.Pno

WHERE member.Mname = '王虹';

2.

1)根据关系的描述,销售模式的F={顾客编号->顾客名,商品编号->商品名,(年月日,顾客编号,商品编号)->数量,(年月日,商品编号)->定价}

根据函数依赖关系,关系模式R的候选码年月日,顾客编号,商品编号

2)关系模式属于1nf,关系中存在非主属性顾客名以及商品名,定价这些属性部分函数依赖候选码

3)关系模式拆分:

R1(顾客编号,顾客名)

R2(商品编号,商品名)

R3(年月日,顾客编号,商品编号,数量)

R4(年月日,商品编号,定价)

拆分后的关系属于3nf,关系R1的候选码为顾客编号,R2的候选码为商品编号,R3的候选码为年月日,顾客编号,商品编号,R4的候选码为年月日,商品编号

3.

(1) 可能的正确执行结果:

T1: B = A + 10, T2: A = B + 5

初始值:A = 0, B = 0

T1执行:B = 0 + 10 = 10

T2执行:A = 10 + 5 = 15

最终值:A = 15, B = 10

T2: A = B + 5, T1: B = A + 10

初始值:A = 0, B = 0

T2执行:A = 0 + 5 = 5

T1执行:B = 5 + 10 = 15

最终值:A = 5, B = 15

(2) 使两个事务遵守两段锁协议且不发生死锁的调度序列:

假设事务T1先开始,T2后开始,且T1先提交,T2后提交。

T1: B = A + 10, T2: A = B + 5

初始值:A = 0, B = 0

T1执行:获取A的共享锁,A = 0,获取B的排他锁,B = 0 + 10 = 10

T2执行:等待A的共享锁释放,获取A的共享锁,A = 10,获取B的排他锁,B = 10 + 5 = 15

T1提交:释放A和B的锁

T2提交:释放A和B的锁

最终值:A = 10, B = 15

在这个调度序列中,T1和T2遵守了两段锁协议,即在执行过程中先获取锁再释放锁,并且没有发生死锁。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值