A.界面簡潔清新,運用了心理學原理
B.最佳航班、其他航班分開顯示,運用了心理學著名的“選擇悖論”
C.在價格和時間上都沒有優勢的航班,但卻在最佳航班區域內顯示,運用了心理學中“對比效應”
D.讓用戶先選價格,候選時間,運用了心理學的“決策順序”原理
第5題
閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某航空售票系統負責所有本地起飛航班的機票銷售,并設有多個機票銷售網點。各售票網點使用相同的售票程序。假設售票程序中用到的偽指令如下表5-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) ;
}
第6題
閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
飛機票售票系統,可以同時為多個顧客提供售票服務。一次售票交易主要由查詢(R)和購買(W)兩個操作組成,而這兩個操作之間的間隔可能需要幾分鐘。 現有兩位顧客同時到達一號和二號售票窗口購買機票,一號窗口的查詢和購買操作用R1和W1表示,二號窗口的查詢和購買操作用R2和W2表示。
【 問題1】(5分)
根據問題描述,依照下面給出的處理序列,給出可能出現的所有序列。
(1)R1 ---------- W1 --------- R2 ---------- W2
【 問題2】(6分)
現假設航班 MU2211 只剩一張 2007 年 2 月 25 日的機票,并有兩位顧客同時到達一號和二號售票窗口購買該票,請問在進行系統設計時,若不做必要的處理會產生什么問題?要避免該問題發生,應采用何種技術?
【問題3】(4分)
給出采取措施后可能出現的處理序列。
第9題
【問題1】 請將如下創建購票關系的SQL語句的空缺部分補充完整, 要求指定關系的主鍵、外鍵,以及購票金額大于零的約束。 CREATE TABLE 購票( 購票單號 CHAR(15)__(a)__, 身份證號CHAR(18), 航班編號CHAR (6), 搭乘日期DATE, 購票金額FLOAT__(b)__, __(c)__, __(d)__, ); 【問題2】 (1)身份證號為210000196006189999的客戶購買了 2013年2月18 日 CA5302航班的機票,購票單號由系統自動生成。下面的SQL語句將上述購票信息加入系統中,請將空缺部分補充完整。 INSERT INTO 購票(購票單號,身份證號,航班編號,搭乘日期,購票金額) SELECT ‘201303105555’,‘210000196006189999’,‘CA5302’,‘2013/2/18’,__(e)__ FROM 航班,折扣,旅客 WHERE__(f)__ AND 航班.航班編號=‘CA5302’ AND AND ‘2013/2/18’ BETWEEN 折扣.開始日期 AND 折扣.結束日期 AND 旅客.身份證號=‘210000196006189999’; (2)需要用觸發器來實現VIP折扣的修改,調用函數vip_value()來實現。請將如下SQL語句的空缺部分補充完整。 CREATE TRIGGER VIP_TRG AFTER__(g)__ON__(h)__ REFERENCING new row AS nrow FOR EACH row BEGIN UPDATE 旅客 SET__(i)__ WHERE__(j)__; END 【問題3】 請將如下SQL語句的空缺部分補充完整。 (1)查詢搭乘日期在2012年1月1日至2012年12月31日之間,且合計購票金額大于等于10000元的所有旅客的身份證號、姓名和購票金額總和,并按購票金額總和降序輸出。 SELECT 旅客.身份證號,姓名,SUM(購票金額) FROM旅客,購票 WHERE__(k)__ GROUP BY__(l)__ ORDER BY__(m)__; (2)經過中轉的航班與相同始發地和目的地的直達航班相比,會享受更低的折扣。查詢從廣州到北京,經過一次中轉的所有航班對,輸出廣州到中轉地的航班編號、中轉地和中轉地到北京的航班編號。 SELECT __(n)__ FROM 航班 航班1,航班 航班2 WHERE__(o)__;
為了保護您的賬號安全,請在“上學吧”公眾號進行驗證,點擊“官網服務”-“賬號驗證”后輸入驗證碼“”完成驗證,驗證成功后方可繼續查看答案!