软题库 移动APP 扫码下载APP 随时随地移动学习 培训课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称 2010年上半年数据库系统工程师考试下午真题试题(案例分析)
考试中心《2010年上半年数据库系统工程师考试下午真题试题(案例分析)》在线考试
试卷年份2010年上半年
试题题型【分析简答题】
试题内容

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。各售票网点使用相同的售票程序。假设售票程序中用到的伪指令如下表1-1所示:

假设某售票网点一次售出a张航班A 的机票,则售票程序的伪指令序列为:R(A, x);W(A,x-a)。根据上述业务及规则,完成下列问题:
【问题1】(5 分)
若两个售票网点同时销售航班A的机票,在数据库服务器端可能出现如下的调度:
A:R1(A, x),R2(A, x),W1(A, x–1),W2(A, x–2);
B:R1(A, x),R2(A, x),W2(A, x–2),W1(A, x–1);
C:R1(A, x),W1(A, x–1),R2(A, x),W2(A, x–2);
其中Ri(A, x),Wi(A, x)分别表示第i个销售网点的读写操作,其余类同。
假设当前航班 A 剩余 10 张机票,分析上述三个调度各自执行完后的剩余票数,并指出错误的调度及产生错误的原因。
【问题2】(6 分)
(1)判定事务并发执行正确性的准则是什么?如何保证并发事务正确地执行?
(2)引入相应的加解锁指令,重写售票程序的伪指令序列,以保证正确的并发调度。 
【问题3】(4 分)
下面是用E-SQL实现的机票销售程序的一部分,请补全空缺处的代码。
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
EXEC SQL SELECT balance INTO :x FROM tickets WHERE flight = ’A’ ;
printf("航班A 当前剩余机票数为:%d\n请输入购票数:", x );  
scanf("%d", &a);
x = x – a ;
if (x<0)  
EXEC SQL ROLLBACK WORK;  
printf("票数不够,购票失败!");
else{
EXEC SQL UPDATE tickets SET   (a)  ;
if (SQLCA.sqlcode <> SUCCESS)  
EXEC SQL ROLLBACK WORK;
else
(b)   ;  
}


相关试题

推荐文章
合作网站内容