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