三、設計與應用題
(1)設有某簡化的網(wǎng)上購物系統(tǒng),其ER圖如下:
該系統(tǒng)數(shù)據(jù)之間存在下列約束:
、. 一個客戶(編號唯一)可以擁有多個訂單,每個訂單僅屬于一個客戶;
、. 一個訂單(編號唯一)可以包含多個訂購細目,每個訂購細目只屬于一個訂單;
Ⅲ. 一種商品可以出現(xiàn)在多個訂購細目中,一個訂購細目只包含一種商品;
、. 一個商品類別可以包含多種商品,一種商品只屬于一個商品類別。
、 請根據(jù)以上約束,標出ER圖中各實體集之間聯(lián)系的基數(shù)。(2分)
、 請將ER圖轉(zhuǎn)換成符合3NF的關系模式,并給出各關系模式的主碼和外碼。(4分)
、 請修改所設計的關系模式使之支持下列功能(僅列出發(fā)生修改的關系模式)。(4分)
、. 使客戶能方便了解每個訂購細目的處理狀態(tài)和到貨時間;
、. 使客戶能方便查詢商品供應商的編號、名稱、所在城市、聯(lián)系電話和信譽。(限定一個供應商可以供應多種商品,一種商品只選自一個供應商)
(2)某學校的學籍管理系統(tǒng)實現(xiàn)了對學生學籍信息的管理,其中學生表結構為:學生表(學號, 姓名, 性別, 系號, 是否有學籍),此表中除學號列有唯一索引外,其它列均無索引。
、僭O學籍管理系統(tǒng)中經(jīng)常執(zhí)行如下形式的操作:
SELECT*FROM學生表
WHERE姓名='張三' AND 系號='10' AND 是否有學籍='有'
系統(tǒng)運行中發(fā)現(xiàn)這類操作的效率比較低,系統(tǒng)工程師建議:由于查詢條件中使用了“系號”、“姓名”和“是否有學籍”三列,建議在這三個列上分別建立索引,以提高查詢效率。
請問其建議建立的三個索引是否都能提高查詢效率?請簡要說明原因。
、谠O學生表中有下列數(shù)據(jù):
并且已經(jīng)在學生表的姓名列上建立了一個非聚集索引(按姓名拼音升序排序)。請給出查找碼“姓名”對應的稠密索引示意圖。(4分)
(3)在SQL Server 2000中,設有教師表(教師號, 姓一名, 所在部門號, 職稱)和部門表(部門號, 部門名, 高級職稱人數(shù))。請編寫滿足下列要求的后觸發(fā)型觸發(fā)器(設觸發(fā)器名字為tri_zc)。(10分)
每當在教師表中插入一名具有高級職稱(“教授”或“副教授”)的教師時,或者將非高級職稱教師的職稱更改為高級職稱時,均修改部門表中相應部門的高級職稱人數(shù)。(假設一次操作只插入或更改一名教師的職稱)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |