第 1 頁:模擬試題 |
第 4 頁:應用題 |
第 5 頁:設計與應用題 |
第 6 頁:參考答案與解析 |
三、設計與應用題
1.【解題思路】
ER模型和關系模式相互轉換的一般規則如下:
(1)將每一個實體類型轉換成一個關系模式,實體的屬性為關系模式的屬性。
f21對干一元聯系,按各種情處理,如下表格所示。
二元關系 | ER圖 | 轉換成的關系 | 聯系的處理 | 主鍵 | 外鍵 |
1:1 | 1->1 | (2個關系) 模式A 模式B |
(有兩種) 處理方式(1): 把模式B的主鍵, 聯系的屬性加入模式A 處理方式(2): 把模式A的主鍵, 聯系的屬性加入模式B |
(略) | (依據聯系的處理方式) 方式(1): 模式B的主鍵為模式A外鍵 方式(2): 表A的主鍵為表B的外鍵 |
1:N | 1->n | (2個關系) 模式A 模式B |
把模式A的主鍵,聯 系的屬性加入模式B |
(略) | 模式A的主鍵為模式B的外鍵 |
M:N | m->n | (3個關系) 模式A 模式B 模式A-B |
聯系類型轉換 成關系模式A-B; 模式A-B的屬性: (a)聯系的屬性 (b)兩端實體類型的主鍵 |
兩端實體類型的 主鍵一起構成模 式A-B主鍵 |
兩端實體類型的主 鍵分別為模式A-B的外鍵 |
此題為關系模式轉換為實體類型,因此采用實體→關系的逆向思維解題。從模式R1和R2可知,R1和R2為一對一關系,根據這兩個模式的拆分可以確定三個實體,此處將這三個實體分別命名為A、B和C。其中A、B和C分別一一對應,且a和c分別是B和C的外鍵。從模式R1和R4可知,R1和R4為多對一關系,由此確定實體D。從模式R3和R4可知,R3和R4為多對一關系,由此可以確定出實體E。
【參考答案】
a、c為A的候選碼,可任選其一做主碼。可通過以下ER圖來表示:
2.【解題思路】
用戶定義的多語句表值函數的命令格式為:
CREATE FUNCTION[schema_name.]function name
([{@parameter_name[AS][type_schema_name.]parameter_data_type
[=default]}
[….n]
]
)
RETURNS@return_variable TABLE
[WITH[[,]…n]]
[AS]
BEGIN
function_body
RETURN
END
[;]
::=
({
J}
[][,…n]
)
題目要求返回指定類別下的每種商品在2012年的銷售總利潤,并且將結果按照銷售總利潤的降序輸出。采用復合SQL語句的格式,先查出指定類別的所有商品號:SELECT商品號FROM商品表WHERE類別=@lb,其中@lb為函數的傳人參數,然后在銷售表中用GROUP BY對商品號進行分組,并采用SUM計算每個分組的總和。
【參考答案】
第一空:RETURNS
第一空:table
第三空:SELECT a.商品號,SUM(銷售數量*(銷售單價一進貨單價))AS總利潤FROM銷售表a JOIN商品表b ON a.商品號=b.商品號WHERE a.商品號IN(SELECT商品號FROM商品表WHERE類別=@lb)GROUP BY a.商品號0RDER BY總利潤DESC
第四空:RETURN@ProfitTable
3.【解題思路】
數據庫性能優化的基本原則就是通過盡可能少的磁盤訪問獲得所需要的數據。SQL SERVER性能優化一般從數據庫設計、應用程序編碼、硬件優化、數據庫索引、SQL語句、事務處理幾個方面人手考慮問題。
(1)分析階段:在系統分析階段往往有太多需要關注的地方,系統各種功能性、可用性、可靠性、安全性需求吸引了我們大部分的注意力,但必須注意的是,性能往往是很重要的非功能性需求,必須根據系統的特點確定其實時性需求、響應時間的需求、硬件的配置等。最好能有各種需求量化的指標。
(2)設計階段:例如數據庫邏輯設計規范化;合理的冗余;主鍵的設計;外鍵的設計;字段的設計;數據庫物理存儲和環境的設計;數據庫的物理存儲、操作系統環境及網絡環境的設計,皆使得我們的系統在將來能適應較多用戶的并發操作和較大的數據處理量。這里需要注意文件組的作用,適用文件組可以有效的把I/O操作分散到不同的物理硬盤,提高并發能力。
(3)系統設計:整個系統的設計,特別是系統結構的設計對性能具有很大的影響。對于一般的OLTP系統,可以選擇C/S結構、三層的C/S結構等,不同的系統結構其性能的關鍵也有所不同。系統設計階段應歸納某些業務邏輯在數據庫編程階段實現,數據庫編程包括數據庫存儲過程、觸發器和函數。用數據庫編程實現業務邏輯的好處是減少網絡流量并能更充分利用數據庫的預編譯和緩存功能;索引設計階段可以根據功能和性能的需求進行初步的索引設計,這里需要根據預計的數據量和查詢來設計索引,可能與將來實際使用時有所區別。
(4)編碼階段:編碼階段首先需要所有程序員具備優化意識,也就是在實現功能的同時具備考慮優化性能的思想。數據庫是能進行集合運算的工具,所謂集合運算實際是批量運算,即是盡量減少在客戶端進行大數據量的循環操作,而用SQL語句或者存儲過程代替。這個階段主要是注意在SQL語句等方面的優化,如:盡量少做重復的工作,用SELECT后跟需要的字段代替SELECT*語句,注意事務和鎖,注意I臨時表和表變量的用法,慎用游標和觸發器,盡量使用索引等。
(5)硬件優化:RAID(獨立磁盤冗余陣列)是由多個磁盤驅動器(一個陣列)組成的磁盤系統。通過將磁盤陣列當作一個磁盤來對待,基于硬件的RAID允許用戶管理多個磁盤。使用基于硬件的RAID與基于操作系統的RAID相比較可知,基于硬件的RAID能夠提供更佳的性能,如果使用基于操作系統的RAID,那么它將占據其他系統需求的CPU周期,通過使用基于硬件的RAID,用戶在不關閉系統的情況下能夠替換發生故障的驅動器。利用數據庫分區技術,可均勻地把數據分布在系統的磁盤中,平衡I/0訪問,避免I/0瓶頸等。
(6)事務處理調優:數據庫的日常運行過程中,可能面臨多個用戶同時對數據庫的并發操作而帶來的數據不一致的問題,如:丟失更新、臟讀和不可重復讀等。并發控制的主要方法是封鎖,鎖的含義即是在一段時間內禁止用戶做某些操作以避免產生數據不一致。對于事務性能的調優,要考慮到事務使用的鎖的個數(在所有其他條件相同的情況下,使用的鎖個數越少,性能越好)、鎖的類型(讀鎖對性能更有利)以及事務持有鎖的時間長短(持有時間越短,性能越好)等情形。
【參考答案】
根據SQL Server 2008數據庫的特性以及題目中的條件,綜合給出以下的調優方案。
(1)表結構優化:重新優化數據庫設計結構,規范數據庫邏輯設計;設計主鍵和外鍵;設計合適大小的字段。
(2)硬件優化:購買一塊同樣大小的硬盤,將硬盤做成RAID5,用以提高數據庫讀寫速度;增加服務器CPU個數;擴大服務器的內存。
(3)索引優化:采用對經常作為條件查詢的列設計索引,在查詢中經常用到的列上建立非聚簇索引,在頻繁進行范圍查詢、排序、分組的列上建立聚簇索引,對于有頻繁進行刪除、插入操作的表不要建立過多的索引。
(4)采用視圖:合理使用視圖和分區視圖,在需要更新和刪除操作不多、查詢操作頻繁的表上建立索引視圖。
(5)SQL語句優化:選擇運算應盡可能先做,并在對同一個表進行多個選擇運算時,選擇影響較大的語句放在前面,較弱的選擇條件寫在后面,這樣就可以先根據較嚴格的條件得出數據較少的信息,再在這些信息中根據后面較弱的條件得到滿足條件的信息。應避免使用相關子查詢,把子查詢轉換成聯結來實現。字段提取按照“需多少,提多少’’的原則,避免“SELECT*”,“SELECT*”需要數據庫返回相應表的所有列信息,這對于一個列較多的表無疑是一項費時的操作,采用存儲過程,使用存儲過程提高數據處理速度。
相關推薦:
2015年全國計算機等級考試無紙化考試系統操作指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |