文章详情

短信预约数据库系统工程师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

敲键小勇士

敲键小勇士

2024-04-18 04:36

关注

       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上半年数据库系统工程师考试案例分析真题汇总

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     428人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     199人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     159人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     239人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     62人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-考试认证-考试信息-考试时间
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯