当前位置:首页 → 计算机类 → 软件水平考试 → 中级数据库系统工程师->某图书馆的图书借还业务使用如下关系模式:书目(ISBN,书名
某图书馆的图书借还业务使用如下关系模式:书目(ISBN,书名,出版社,在库数量)图书(书号,ISBN,当前位置)其中在库数量为当前书目可借出的图书的数量,每本图书入库后都会有当前位置,借出后当前位置字段改为空值。每一条书目信息对应多本相同的图书,每一本图书只能对应一条书目。借还书业务的基本流程如下描述:
(1)读者根据书名查询书目,当前书目的在库数量大于0时可借阅。
(2)读者借出一本图书时,进行出库操作:根据该图书的书号将该图书的当前位置字段值改为空值,并根据其ISBN号将对应书目的在库数量减1。
(3)读者归还一本图书时,进行入库操作:系统根据当前书架的空余位置自动生成该本书的存放位置,并根据该图书的书号将其当前位置字段值改为生成的存放位置,然后将对应书目的在库数量加1。
(4)借还书时,逐一扫描每本图书的书号并进行出、入库操作。
【问题1】引入两个伪指令:a=R(X)表示将在库数量X值读入到变量a中;W(a,X)表示将变量a的值写入到在库数量X中。入库操作用下标i表示,出库操作用下标o表示。将出库和入库操作分别定义为两个事务,针对并发序列:ao=Ro(X),aI=RI(X),ao=ao-1,Wo(ao,X),aI=aI+1,WI(aI,X)。其中变量aI和ao分别代表入库事务和出库事务中的局部变量。
(1)假设当前X的值为3,则执行完上述并发序列的伪指令后,X的值是多少?简述产生这一错误的原因(100字以内)。
(2)为了解决上述问题,引入独占锁指令XLock(X)对数据X进行加锁,解锁指令Unlock(X)两对数据X进行解锁。入库操作用下标I表示,如XLockI(X);出库操作用下标o表示,如Unlocko(X)。请根据上述的并发序列,给出一种可能的执行序列,使其满足2PL协议。
【问题2】下面是用SQL实现的出入库业务程序的一部分,请补全空缺处的代码。CREATE PROCEDURE IOstack(IN BookNo VARCHAR(20), IN Amount INT){ //输入合法性验证 if not (Amount=1 or Amount=-1) return-1; //修改图书表当前位置 UPDATE图书SET当前位置=GetPos(BookN,Amount)//系统生成 WHERE ____(a)_____;if error then { ROLLBACK; return -2;}//修改在库数量UPDATE 书目 SET 在库数量=____(b)______ WHERE EXISTS(SELECT * FROM 图书WHERE 书号=BookNo AND ____(c)____ );if error then ( ROLLBACK; return-3;} ____(d)______;return 0;}
【问题1】本题考查事务并发控制知识的应用和事务程序的编写技能。
(1)根据问题中给出的并发序列:"ao=Ro(X),aI=RI(X),ao=ao-1,Wo(ao,X),aI=aI+1,WI(aI,X)"及指令的说明,该序列为一个入库事务和一个出库事务的余发调度。
X的当前值为3,执行完"ao=Ro(X),aI=RI(X)"后,变量ao和aI的值均为3;执行完"ao=ao-1,Wo(ao,X)"后,X的值被改为2;执行完"aI=aI+1,WI(aI,X)"后,X的值被改为4,即并发序列执行完后X的值。
这两个事务分别是同一书目下两本书的出库和入库操作。根据事务并发正确性的判定,其正确的必要条件是与某一次串行的结果相同。在X当前值为3的情况下,出库一本书和入库一本书,两个事务两种串行方式下,其结果都为3。
因而题目给出的并发序列的执行结果是错误的。错误原因在于出库事务的指令"Wo(ao,X)"写入X的值后,被入库事务的指令加"WI(aI,X)"所覆盖,即丢失修改错误,出库事务的修改丢失了。
(2)根据2PL协议的规定,在修改数据前需对该数据加独占锁,前提是在该数据上没有其他事务所加的锁,否则只能等待其他事务释放锁后再加锁。
题目要求只加独占锁,因此出库事务的第一条语句"ao=Ro(X)"前应有加锁语句"XLocko(X)";入库事务第一条指令"aI=RI(X)"之前应有加锁语句"XLockI(X)",但此时X上己有出库事务上的锁,故入库事务加锁被拒绝,只能等待,到出库事务释放锁之后才能加上锁,入库事务的后续指令才能得以执行。
【问题2】本问题将出入库两项操作使用同一程序完成,通过形参Amount的值(1表示入库,-1表示出库)进行区别。空缺U)处应根据形参BookNo值确定要修改的图书记录。空缺(b)处为新的在库数量值,将形参Amount的值累加到在库数量上即可。空缺(c)处要通过当前图书记录确定要修改的书目记录。空缺(d)处应为提交指令。
( )is the process of transforming information so it is unintelligible to anyone but the intended recipient.
As each application module is completed,it undergoes( )to ensure that it operates correctly and reliably.
( )algorithm specifies the way to arrange data in a particular order.
After analyzing the source code,( )generates machine instructions that will carry out the meaning of the program at a later time.
( )can help organizations to better understand the information contained within the data and will also help identify the data that is most important to the business and future business decisions.
浏览器开启无痕浏览模式后,( )依然会被保存下来。
下列协议中,不属于TCP/IP协议簇的是( )。
下列传输介质中,带宽最宽、抗干扰能力最强的是( )。
数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要( )个独立的参数。
某书的页码为1,2,3,...,共用数字900个(一个多位数页码包含多个数字),据此可以推断,该书最大的页码为( )。