题目详情

某连锁酒店提供网上预订房间业务,流程如下:

(1)客户查询指定日期内所有类别的空余房间数,系统显示空房表(日期,房间类别,数量)中的信息;

(2)客户输入预订的起始日期和结束日期、房间类别和数量,并提交;

(3)系统将用户提交的信息写入预订表(身份证号,起始日期,结束日期,房间类别,数量),并修改空房表的相关数据。

针对上述业务流程,回答下列问題。

【问题1】(3分)

如果两个用户同时查询相同日期和房间类别的空房数量,得到的空房数量为1,并且这两个用户又同时要求预订,可能会产生什么结果,请用100字以内文字简要叙述。

【问题2】(8分)

引入如下伪指令:将预订过程作为一个事务,将查询和修改空房表的操作分别记为R(A)和W(A,x),插入预订表的操作记为W(B,a),其中x代表空余房间数,a代表预订房间数。则事务的伪指令序列为:x = R(A),W(A,x-a),W(B,a)。

在并发操作的情况下,若客户1、客户2同时预订相同类别的房间时,可能出现的执行序列为:x1=R(A), x2 = R(A), W(A, x1-a1), W(B1,a1), W(A, x2-a2), W(B2,a2)。

(1)此时会出现什么问题,请用100字以内文字简要叙述。

(2)为了解决上述问题,引入共享锁指令SLock(X)和独占锁指令XLock(X)对数据 X进行加锁,解锁指令Unlock(X)对数据X进行解锁,请补充上述执行序列,使其满足 2PL协议,使其不产生死锁且持有锁的时间最短。

【问题3】(4分)

下面是实现预订业务的程序,请补全空玦处的代码。其中主变量:Cid,:Bdate, :Edate,

:Rtype, :Num 分别代表身份证号,起始日期,结束日期,房间类别和订房数量。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

UPDATE 空房表

SET数量=数量 - :Num

WHERE__(a)__;

if error then { ROLLBACK; return -1;}

INSERT INTO 预订表 VALUES (:Cid, :Bdate,:Edate,:Rtype,:Num);

if error then { ROLLBACK; return -2 ; }

__(b)__; .

正确答案及解析

正确答案
解析

【问题1】(3分)

同时预订时,可能会产生一个客户订不到或者把同一房订给两个客户

【问题2】(8分)

出现问题:丢失修改,客户1预订a1数量房间后,对空房数量的修改被T2的修改覆盖,造成数据不一致。(4分)

XLOCK(A),x1=R(A),W(A,x1-a1),XLOCK(B),UNLOCK(A),W(B1,a1),UNLOCK(B), XLOCK(A), x2=R(A),W(A,x2-a2),XLOCK(B),UNLOCK(A),W(B2,a2),UNLOCK(B)(4分)

【问题3】(4分)

(a)房间类别=:Rtype AND 日期 BETWEEN :Bdate AND :Edate(2分)

(b)COMMIT;Return 0;(2分)

包含此试题的试卷

你可能感兴趣的试题

单选题

设16位浮点数,其中阶符1位、阶码值6位、数符1位、尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是( )。

中级嵌入式系统设计师,章节练习,软件水平考试《中级嵌入式系统设计师》

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案
单选题

平均故障间隔时间MTBF用以表示系统平均无故障可正常运行的时间,下列与MTBF有关的叙述不正确的是______。

中级嵌入式系统设计师,章节练习,软件水平考试《中级嵌入式系统设计师》

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案
问答题

初级网络管理员,专项练习,软件水平考试《网络管理员》模拟题

初级网络管理员,专项练习,软件水平考试《网络管理员》模拟题

查看答案
单选题

中级软件设计师,模拟试题,2022年软件水平考试《中级软件设计师》模拟题

  • A.A
  • B.B
  • C.C
  • D.D
查看答案
单选题

中级软件设计师,模拟试题,2022年软件水平考试《中级软件设计师》模拟题

  • A.R
  • B.S
  • C.RS
  • D.R,S
查看答案

相关题库更多 +