摘要:很多考生關注數(shù)據(jù)庫系統(tǒng)工程師下午考試,小編為大家整理了2018上半年數(shù)據(jù)庫系統(tǒng)工程師下午真題,以下為第三部分。
● 試題五(共15分)
閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內(nèi)。
【說明】
某超市銷售系統(tǒng)的部分關系模式如下
商品表: Commodity(Ccode, Cname, price,qty),其中屬性含義分別為:商品編號、商品名稱、價格、庫存量,有專門的事務保證庫存量足夠大,銷售時無需檢測。
銷售表: Sale(Sno,Ccode, amount, Stime),其中屬性含義分別為:銷售編號,商品編號、數(shù)量、時間。
其銷售業(yè)務規(guī)則如下:順客在超市挑選好商品后,帶商品到結算處結算付款,結算處有多名結算員使用多臺機器進行結算。結算員負責掃顧客購買商品的條碼和數(shù)量,由系統(tǒng)后臺結算程序計算出順客購買商品的總金額,修改商品表的商品庫存量,并將銷售信息寫入銷售表。
請根據(jù)上述描述,回答以下問題。
【問題1】(3分)
假設有兩個顧客同時購買同一條碼的商品,結算事務修改該商品的庫存量(記為數(shù)據(jù)項X)部部分的調(diào)度如圖5-1所示。
如果購買前X的初值為10,則上述調(diào)度執(zhí)行完成后,X的值是多少?屬于哪一類不一致性?
【問題2】(6分)
引入獨占鎖指令 Clock()和解鎖指令 Unlock(),對【問題1】中的調(diào)度進行重寫,要求滿足兩段鎖協(xié)議,且事務T1、T2首條指令的相對請求時間與【問題1】中的相同。
【問題3】(6分)
下面是用SQL實現(xiàn)的結算程序,請補全空缺處的代碼。
要求在保證銷售信息不丟失的前提下,達到最大的系統(tǒng)并發(fā)度。
CREATE PROCEDURE buy(IN: CommNo VARCHAR(20), IN: AmountBuy INT)
BEGIN
//輸入合法性驗證
if(: AmountBuy<1) return-1;
SET TRANSACTION ISOL ATION LEVEL (a) ;
BEGIN TRANSACTION;
//插入銷售記錄
INSERT INTO Sale
VALUES(getGUID(),: CommNo, AmountBuy, getDATETIME());
//函數(shù) getGUID():獲取值
//函數(shù) getDATETIME():獲取當前系統(tǒng)日期時間
if error ∥error是由DBMS提供的上一句SQL的執(zhí)行狀態(tài)
BEGN
ROLLBACK; return-2;
END
//修改庫存數(shù)量
UPDATE Commodity
SET qty= (b)
WHERE Ccode=: CommNo;
if error
BEGIN
ROLLBACK; return-3;
END
(c)
END
軟考備考資料免費領取
去領取