下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

2017上半年数据库系统工程师考试案例分析真题(5)

作者:课课家教育     来源: http://www.kokojia.com点击数:658发布时间: 2018-05-20 12:27:36

标签: 2017上半年数据库考试案例分析真题2017上半年数据库案例分析数据库系统工程师考试真题

软考,您想通过吗?一次通过才是硬道理

       2017上半年数据库系统工程师考试已经结束了,课课家小编整理了2017上半年数据库系统工程师考试案例分析真题,以下为第五部分。

       试题五(共15分)
       阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。
       【说明】
       某抢红包软件规定发红包人可以一次抛出多个红包,由多个人来抢。要求每个抢红包的人最多只能抢到同一批次中的一个红包,且存在多个人同时抢同一红包的情况。给定的红包关系模式如下:
       Red(ID,BatchID,SenderID,Money,ReceiverID)
       其中ID唯一标识每一个红包;BatchID为发红包的批次,一个BatchID值可以对应多个ID值;SenderID为发红包人的标识;Money为红包中的钱数;ReceiverID记录抢到红包的人的标识。
       发红包人一次抛出多个红包,即向红包表中插入多条记录,每条记录表示一个红包,其ReceiverID值为空值。
       抢某个红包时,需要判定该红包记录的ReceiverID值是否为空,不为空时表示该红包己被抢走,不能再抢,为空时抢红包人将自己的标识写入到ReceiverID宇段中,即为抢到红包。
       【问题1】(9分)
       引入两个伪指令a=R(X)和W(b,X)。其中a=R(X)表示读取当前红包记录的ReceiverID字段(记为数据项X)到变量a中,W(b,X)表示将抢红包人的唯一标识b的值写入到当前红包记录的ReceiverID字段(数据项X)中,变量a为空值时才会执行W(b,X)操作。假设有多个人同时抢同一红包(即同时对同一记录进行操作),用aj=Rj(X)和Wi(bi,X)表示系统依次响应的第i个人的抢红包操作。假设当前数据项X为空值,同时有三个人抢同一红包,则
       (1)如下的调度执行序列:
       aJ=RJ(刻,a2=R2(X),Wj(bj,X),W2仇,刻,a3=R3(X)
       抢到红包的是第几人?并说明理由。
       (2)引入共享锁指令SLockj(X)、独占锁指令XLock i(X)和解锁指令ULock i(X),其中下标i表示第i个抢红包人的指令。如下的调度执行序列:
       SLockj(X),aj=Rj(X),SLock2(X),a2=R2(X),XLockj(X)......
       是否会产生死锁?并说明理由。(3)为了保证系统第一个响应的抢红包人为最终抢到红包的人,请使用上述。)中
       引入的锁指令,对上述(1)中的调度执行序列进行修改,在满足2PL协议的前提下,给出一个不产生死锁的完整的调度执行序列。
       【问题2】(6分)
       下面是用SQL实现的抢红包程序的一部分,请补全空缺处的代码CREATE PROCEDURE ScrambleRed(IN Batchl词。VARCHAR(20),
       因RecvrNo VARCHAR仰))
       --红包批号一接收红包者--是否已抢过此批红包
       if exists(SELECT*FROM Red
       WHERE BatchID=BatchNo AND ReceiverID=ReçvrNo)也m
       return-1,;
       读取此批派发红包中未领取的红包记录ID
       DECLARENonR vedRedCURSORFOR SELECTID'>
       FROMRed
       WHERE BatchID=BatchNo AND ReceiverID IS NULL;
       -打开游标
       OPEN NonRecvedRed;
       FETCH NonRecvedRed INTO NonRecvedNo;
       while not error
       一抢红包事务
       BEGIN TRANSACTION;
       H写入红包记录
       UPDATE RED STE RECDIVER ID=RecvrNo
       WHERE ID=nonRECVED AND(a)
       //执行状态判定
       If(修改的记录数)=1 THEN
       COMMIT
       (B);
       Return 1’
       Else
       ROLLBACK
       End if
       (c)
       End while
       关闭游标
       CLOSE NnoRecved RD
       Return0;
       END

       想要报考2018年软考的朋友现在就可以开始备考了,可以报名课课家软考学院,课课家软考学院含有软考各科目赠送考试:辅导教材、历年真题、考前冲剌资料、在线模拟测试题库,还有老师专属答疑指导等,帮助大家顺利通过考试。

 >>>>>>点击进入软考报名专题

 

      >>>>返回目录:2017上半年数据库系统工程师考试案例分析真题汇总

赞(21)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程