6.2-6.6数据库原理期末复习习题

2NF

非主键属性全部依赖于主键,所以至少是2NF,但是由于非主键属性间存在相互依赖,所以必然不是3NF

2NF可以允许非主键属性间相互依赖

3NF 

候选键为BDEF

显然A->C,C->A不是BCNF也不是3NF,因为左侧不是超键,右侧也不是候选键一部分

B->AC,D->AC也不是

原函数依赖集即最小函数依赖集,构建出4个表,由于没有候选键,所以再添个候选键的新表

接着删依据子集包含删表,删掉一个AC表,
所以最后剩下4个表,分别为{AC}{ABC}{ACD}{BDEF}

两阶段锁

对于调度Q,T3要对A上X锁,但是T4为了保证可重复读,上了S锁,所以T3要等待T4解锁A的S锁,但是T4因为T3上了B的X锁,也要上T3的S锁,就会等待T3的B锁的解锁,所以造成了死锁

对于P,由于是对A,B都先上了锁,所以T4无法对A上锁,必须先等T3开锁A才能继续执行

如果T10撤销,那么会引发级联回滚,因为T11,T12读了T10写的数据

若T5撤销不会级联回滚

应当要避免级联回滚,就是一个事务的回滚导致其它事务也回滚

之所以不会级联回滚是因为T6,T7要读的时候,T5还没有开锁,那么T6,T7必须等T5开锁才行,而T5开锁后紧接着就是回滚了

而调度Q不行就是因为它T10开锁后,紧接着的不是回滚,而是其它事务的读操作

第一阶段T2要对A上X锁,对B上X锁

T1要对B上X锁,对C上S锁

T3要对B上S锁,对C上X锁

由调度优先图,可以明确这个是可以冲突串行化的

但是冲突串行化并不一定就能二阶段

T2里A的锁无所谓,一开始先上AB的X锁,读完B后就开B的X锁,接着T1上B的X锁,C的S锁,T1写完B后开B的X锁,进入缩减阶段,接着T3对B上S锁,T1读完C后开C的S锁,T3再上C的X锁,所以是可以二阶段封锁协议的

多粒度锁

时间戳排序协议

基于日志的恢复

T0回滚了,那么就对T0的操作都是UNDO(T0)

T1没提交也没回滚,所以也是UNDO(T1)

T1,T2需要重做

SQL

B

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值