第 1 頁:模擬試題 |
第 6 頁:參考答案與解析 |
三、設計與應用題
1.(1)【解題思路】
關系的描述稱為關系模式,它可以形式化地表示為R(U,D,DOM,F)。要想使轉換生成的關系模式滿足3NF,則必須滿足關系模式中每一個非主屬性既不部分依賴于碼也不傳遞依賴于碼。根據題目中的表中的數據和業務系統的規則可知,共有四個實體存在,分別為教師、課程、教材、職稱,職稱作為實體而不是教師的屬性是因為職稱與工資掛鉤,考慮到其有進一步描述的特性,所以把職稱作為一個關系而不是教師的一個屬性,而且教師號、職稱、工資之間存在傳遞依賴,不滿足3NF。
【參考答案】
教師(教師號,教師名,上級領導教師號,職稱)
主碼:教師號;外碼:上級領導教師號、職稱
職稱(職稱,工資)
主碼:職稱;外碼:無
課程(課程號,課程名,學分,教材號,任課教師號)
主碼:課程號;外碼:教材號,任課教師號
教材(教材號,教材名,出版社)
主碼:教材號;外碼:無
(2)【解題思路】
E-R圖也稱實體一聯系圖,提供了表示實體類型、屬性和聯系的方法,用來描述現實世界的概念模型。為了簡化E-R圖的處置,現實世界的事物能作為屬性對待的,盡量作為屬性對待。實體與屬性的劃分給出如下兩條規則:①作為“屬性”,不能再具有需要描述的性質,“屬性”必須是不可分的數據項,不能包含其它屬性。②“屬性”不能與其它實體有聯系,即E-R圖中所表示的聯系是實體之間的聯系。題目中教師與課程有講授關系,課程和教材有使用關系,教師與職稱有聘用關系。
【參考答案】
2.【解題思路】
觸發器是用戶定義在關系表上的一類由事件驅動的特殊過程。一旦定義,任何用戶對表的增、刪、改操作均由服務器自動激活相應的觸發器,在DBMS核心層進行集中的完整性控制。觸發器類似于約束,但比約束更加靈活,可以實施比FOREIGN KEY約束、CHECK約束更為復雜的檢查和操作,具有更精細和強大的數據控制能力。
觸發器的創建格式:
CREATE TRIGGER[schema_name.]trigger_name
ON{tablelview}
{FORlAFFERIINSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS{Sql_statement}
[;]
對應于本題中,觸發事件為在銷售表中插入前四列,條件為無條件執行,觸發體動作為計算本次利潤并插入表中。
【參考答案】
CREATE TRIGGER calcu_product
AFTER INSERT ON銷售表
FOR EACH ROW
AS BEGIN
DECLARE@PurchasePrise float/*對應商品的進價的參數*/
SELECT@PurchasePrise=進貨價格FROM商品表WHERE商品號=new.商品號
UPDATE銷售表SET本次利潤=new.銷售數量*(new.銷售價格-@PurchasePrise)WHERE商
品號=new.商品號AND銷售時間=New.銷售時間
/*因為是行級觸發器,所以可以使用更新后的新值,用new*/
END
3.(1)【解題思路】
本題中查詢語句的功能是得到12系全體學生在2010年1月1日后的選課情況的匯總表。在每個數據表的定義時都必須嚴格定義表中的完整性約束條件,包括主鍵的設置,否則之后會出現主鍵有相同值的情況,破壞了數據的完整性。
【參考答案】
建表時沒有設置主鍵,也沒有說明外鍵,但不會影響此查詢語句的執行效率。
(2)【解題思路】
“選課”表的“選課時問”列上建立了索引,從而能夠提高執行效率。經常出現在Where子句中的字段,特別是大表的字段,應該建立索引。索引的作用就類似于書的目錄,即會按照章節的順序排列。因此如果在一本數百頁的書里面查找某個章節位置的時候,就可以只掃描書的目錄。掃描的范圍縮了n倍,查詢的效率自然就會提高。另外,在SQL Server內存夠用的情況下,索引會被放到內存中,在內存中查找自然又會提高效率,所以必須合理利用索引。
【參考答案】
“選課”表的“選課時問”可以建立索引,從而提高了查詢效率,而“學生”表的“所在系號”建立索引不會提高查詢效率。索引的意義就是將記錄按目標關鍵字順序排列,這樣查找某個目標關鍵字的對應值的位置就縮小了查找范圍。“選課時間”的重復率低,所以可以作為索引,而學生“所在系號”的重復率太高,則不會提高查詢效率。
相關推薦:
2015年全國計算機等級考試無紙化考試系統操作指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |