2013上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題及答案解析下午卷(二)

數(shù)據(jù)庫(kù)系統(tǒng)工程師 責(zé)任編輯:茶泡了飯 2015-12-30

添加老師微信

備考咨詢

加我微信

摘要:2013上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題及答案解析下午卷 試題二 閱讀以下說(shuō)明,根據(jù)要求回答下列問(wèn)題。 [說(shuō)明] 某航空公司要開(kāi)發(fā)一個(gè)訂票信息處理系統(tǒng),該系統(tǒng)的部分關(guān)系模式如下:

>>>>>>>>>>點(diǎn)擊進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)工程師考試網(wǎng)絡(luò)課堂

>>>>>>>>>>點(diǎn)擊進(jìn)入數(shù)據(jù)庫(kù)系統(tǒng)工程師歷年真題題庫(kù)

>>>>>>>>>>點(diǎn)擊進(jìn)入數(shù)據(jù)庫(kù)工程師考試大綱教材


2013上半年數(shù)據(jù)庫(kù)系統(tǒng)工程師考試真題及答案解析

下午卷


      試題二
閱讀以下說(shuō)明,根據(jù)要求回答下列問(wèn)題。
[說(shuō)明]
某航空公司要開(kāi)發(fā)一個(gè)訂票信息處理系統(tǒng),該系統(tǒng)的部分關(guān)系模式如下:
  航班(航班編號(hào),航空公司,起飛地,起飛時(shí)間,目的地,到達(dá)時(shí)間,票價(jià))
      折扣(航班編號(hào),開(kāi)始日期,結(jié)束日期,折扣)
旅客(身份證號(hào),姓名,性別,出生日期,電話,VIP折扣)
購(gòu)票(購(gòu)票單號(hào),身份證號(hào),航班編號(hào),搭乘日期,購(gòu)票金額)
有關(guān)關(guān)系模式的屬性及相關(guān)說(shuō)明如下:
  4、航班表中的起飛時(shí)間和到達(dá)時(shí)間不包含日期,同一航班不會(huì)在一天出現(xiàn)兩次及兩次以上;
      5、各航空公司會(huì)根據(jù)旅客出行淡旺季適時(shí)調(diào)整機(jī)票的折扣,旅客購(gòu)買(mǎi)機(jī)票的購(gòu)票金額計(jì)算公式為:票價(jià)×折扣×VIP折扣,其中旅客的VIP折扣與該旅客已購(gòu)買(mǎi)過(guò)的機(jī)票的購(gòu)票金額總和相關(guān),在旅客每次購(gòu)票后被修改。VIP折扣值的計(jì)算由函數(shù)float vip_value(char[18]身份證號(hào))完成。
根據(jù)以上描述,回答下列問(wèn)題。
      4、請(qǐng)將如下創(chuàng)建購(gòu)票關(guān)系的SQL語(yǔ)句的空缺部分補(bǔ)充完整,要求指定關(guān)系的主鍵、外鍵,以及購(gòu)票金額大于零的約束。
      CREATE TABLE 購(gòu)票(
      購(gòu)票單號(hào) CHAR(15) ______,
      身份證號(hào) CHAR(18),
      航班編號(hào) CHAR(6),
搭乘日期 DATE,
      購(gòu)票金額 FLOAT ______, ______, ______, );
      5、(1)身份證號(hào)為210000196006189999的客戶購(gòu)買(mǎi)了2013年2月18日CA5302航班的機(jī)票,購(gòu)票單號(hào)由系統(tǒng)自動(dòng)生成。下面的SQL語(yǔ)句將上述購(gòu)票信息加入系統(tǒng)中,請(qǐng)將空缺部分補(bǔ)充完整。
  INSERT INTO 購(gòu)票(購(gòu)票單號(hào),身份證號(hào),航班編號(hào),搭乘日期,購(gòu)票金額)
  SELECT '201303105555','210000196006189999','CA5302','2013/2/18',
  ______
  FROM 航班,折扣,旅客
WHERE ______ AND 航班.航班編號(hào)='CA5302' AND
AND '2013/2/18' BETWEEN 折扣.開(kāi)始日期 AND 折扣.結(jié)束日期
      AND 旅客.身份證號(hào)='210000196006189999';
      (2)需要用觸發(fā)器來(lái)實(shí)現(xiàn)VIP折扣的修改,調(diào)用函數(shù)vip_value()來(lái)實(shí)現(xiàn)。請(qǐng)將如下SQL語(yǔ)句的空缺部分補(bǔ)充完整。
      CREATE TRIGGER VIP_TRG AFTER ______ ON ______
RE FERENCING new  row AS  nrow
FOR EACH row
BEGIN
UPDATE 旅客
SET ______
WHERE ______;
      END
6、請(qǐng)將如下SQL語(yǔ)句的空缺部分補(bǔ)充完整。
(1)查詢搭乘日期在2012年1月1日至2012年12月31日之間,且合計(jì)購(gòu)票金額大于等于10000元的所有旅客的身份證號(hào)、姓名和購(gòu)票金額總和,并按購(gòu)票金額總和降序輸出。
      SELECT 旅客.身份證號(hào),姓名,SUM(購(gòu)票金額)
      FROM 旅客,購(gòu)票
      WHERE ______
GROUP BY ______;
      ORDER BY ______;
  (2)經(jīng)過(guò)中轉(zhuǎn)的航班與相同始發(fā)地和目的地的直達(dá)航班相比,會(huì)享受更低的折扣。查詢從廣州到北京,經(jīng)過(guò)一次中轉(zhuǎn)的所有航班對(duì),輸出廣州到中轉(zhuǎn)地的航班編號(hào)、中轉(zhuǎn)地、中轉(zhuǎn)地到北京的航班編號(hào)。
      SELECT ______
      FROM 航班航班1,航班 航班2
      WHERE ______;
 



  參考答案及解析
      4、PRIMARY KEY(或NOT NULL UNIQUE)
      CHECK(購(gòu)票金額>0)
      FOREIGN KEY (身份證號(hào)) REFERENCES 旅客(身份證號(hào))
      FOREIGN KEY (航班編號(hào)) REFERENCES 航班(航班編號(hào))

  在創(chuàng)建“購(gòu)票”關(guān)系模式的SQL語(yǔ)句時(shí),由于屬性“購(gòu)票單號(hào)”為“購(gòu)票”關(guān)系模式的主鍵,即不能為空且標(biāo)識(shí)一條數(shù)據(jù)記錄,因此空缺處需要填入“PRIMARY KEY(或NOT NULL UNIQUE,或NOT NULL PRIMARY KEY)”對(duì)該屬性進(jìn)行主鍵約束。
      結(jié)合題干給出的關(guān)鍵信息“購(gòu)票金額大于零”可知,空缺處應(yīng)填入“CHECK(購(gòu)票金額>0)”對(duì)屬性“購(gòu)票金額”進(jìn)行約束。
由于屬性“身份證號(hào)”、“航班編號(hào)”是“購(gòu)票”關(guān)系模式的外鍵,因此空缺處需要使用FOREIGN KEY對(duì)這兩個(gè)屬性進(jìn)行外鍵約束,即應(yīng)填入“FOREIGN KEY(身份證號(hào))REFERENCES旅客(身份證號(hào))”、“FOREIGN KEY(航班編號(hào))REFERENCES航班(航班編號(hào))”。
      5、票價(jià)*折扣*VIP折扣
航班.航班編號(hào)=折扣.航班編號(hào)
INSERT
  購(gòu)票
VIP折扣=vip_value(nrow.身份證號(hào))
      旅客.身份證號(hào)=nrow.身份證號(hào)

      (1)基于題干給出的關(guān)鍵信息“旅客購(gòu)買(mǎi)機(jī)票的購(gòu)票金額計(jì)算公式為:票價(jià)×折扣×VIP折扣”可知,(空缺處對(duì)應(yīng)填入INSERT INTO語(yǔ)句中“購(gòu)票金額”的計(jì)算公式,即“票價(jià)*折扣*VIP折扣”。
      結(jié)合題干給出的“其中旅客的VIP折扣與該旅客已購(gòu)買(mǎi)過(guò)的機(jī)票的購(gòu)票金額總和相關(guān),在旅客每次購(gòu)票后被修改”等關(guān)鍵信息可知,該SELECT查詢語(yǔ)句中將涉及到“航班”、“折扣”兩個(gè)關(guān)系模式,因此空缺處應(yīng)對(duì)這二者進(jìn)行關(guān)聯(lián),即應(yīng)填入“航班.航班編號(hào)=折扣.航班編號(hào)”。
      (2)使用T-SQL語(yǔ)句來(lái)創(chuàng)建觸發(fā)器的基本語(yǔ)句如下。
create trigger trigger_name on {table_name | view_name}  {for | After | Instead of}
      [insert,update,delete] as sql_statement
  在“購(gòu)票”關(guān)系模式中插入一條數(shù)據(jù)記錄時(shí),觸發(fā)器應(yīng)能夠自動(dòng)執(zhí)行,因此需要?jiǎng)?chuàng)建基于INSERT類型的觸發(fā)器,即空缺處應(yīng)依次填入“INSERT”、“購(gòu)票”。
根據(jù)題干給出的“VIP折扣值的計(jì)算由函數(shù)float vip_value(char[18]身份證號(hào))完成”等關(guān)鍵信息可知,空缺處應(yīng)填入的觸發(fā)器執(zhí)行動(dòng)作是“VIP折扣=vip_value(nrow.身份證號(hào))”。
      空缺處應(yīng)添加表的連接條件——“旅客.身份證號(hào)=nrow.身份證號(hào)”。
      6、旅客.身份證號(hào)=購(gòu)票.身份證號(hào) AND
搭乘日期 BETWEEN '2012/1/1' AND '2012/12/31'
      旅客.身份證號(hào),姓名 HAVING SUM(購(gòu)票金額)>=10000
      SUM(購(gòu)票金額) DESC
航班1.航班編號(hào),
航班1.目的地,
航班2.航班編號(hào)
      航班1.起飛地='廣州' AND 航班2.目的地='北京' AND
      航班1.目的地=航班2.起飛地;

(1)查詢搭乘日期在2012年1月1日至2012年12月31日之間,且合計(jì)購(gòu)票金額大于等于10000元的所有旅客的身份證號(hào)、姓名和購(gòu)票金額總和,并按購(gòu)票金額總和降序輸出。
SELECT 旅客.身份證號(hào),姓名,SUM(購(gòu)票金額)
FROM 旅客,購(gòu)票
      WHERE 旅客.身份證號(hào)=購(gòu)票.身份證號(hào) AND
  搭乘日期 BETWEEN '2012/1/1' AND '2012/12/31'
      GROUP BY 旅客.身份證號(hào),姓名 HAVING SUM(購(gòu)票金額)>=10000;
      ORDER BY SUM(購(gòu)票金額) DESC;
      (2)經(jīng)過(guò)中轉(zhuǎn)的航班與相同始發(fā)地和目的地的直達(dá)航班相比,會(huì)享受更低的折扣。查詢從廣州到北京,經(jīng)過(guò)一次中轉(zhuǎn)的所有航班對(duì),輸出廣州到中轉(zhuǎn)地的航班編號(hào)、中轉(zhuǎn)地、中轉(zhuǎn)地到北京的航班編號(hào)。
      SELECT 航班1.航班編號(hào),航班1.目的地,航班2.航班編號(hào)
      FROM 航班航班1,航班航班2
      WHERE 航班1.起飛地='廣州' AND 航班2.目的地='北京' AND
    航班1.目的地=航班2.起飛地



>>>>>>>>>>點(diǎn)擊繼續(xù)答題

>>>>>>>>>>點(diǎn)擊返回目錄


相關(guān)鏈接:

數(shù)據(jù)庫(kù)系統(tǒng)工程師考試知識(shí)點(diǎn)分析與真題詳解(第4版)
數(shù)據(jù)庫(kù)系統(tǒng)工程師考試歷年試題分析與解答(第4版)
數(shù)據(jù)庫(kù)系統(tǒng)工程師考試下午知識(shí)點(diǎn)精講與考前必練
      數(shù)據(jù)庫(kù)系統(tǒng)工程師考試考前串講






更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢?cè)诰€老師!