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