2017年計算機三級《網絡技術》設計與應用試題及答案2
三、設計與應用題(共30分)
1.現(xiàn)有論文和作者兩個實體,論文實體的屬性包括題目、期刊名稱、年份、期刊號;作者實體的屬性包括姓名、單位、地址;一篇論文可以有多個作者,且每一位作者寫過多篇論文,在每一篇論文中有作者的順序號。請完成以下操作:(10分) (1)畫出E-R圖。 (2)將E-R圖轉換成關系模式,并指出每個關系模式的主鍵(加下劃線)和外鍵(加波浪線)。 2.設有圖書管理數(shù)據(jù)庫,包含三張表: 圖書明細表(圖書編號,圖書類別,圖書名稱,作者,出版社,出版日期,定價); 讀者表(借書證號,姓名,系別,*日期); 借出信息表(借出編號,借書證號,圖書編號,借書日期); 完成下列操作:(10分) 定義一個多語句表值函數(shù),用于查詢學生借書情況,只需提供參數(shù):借書證號,就可以通過調用函數(shù)返回此學生的借書情況,若有借書籍,則返回所借書籍的編號、書籍名稱、定價和借書日期;若沒有在借書籍,則返回記錄為空。設函數(shù)名為:f_BorrowBook(@jszh char(20))。 3.某采購中心采購了一套商品批發(fā)查詢管理系統(tǒng),此系統(tǒng)采用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng),該系統(tǒng)需要經常處理以上的數(shù)據(jù)查詢。同時該系統(tǒng)提供了第三方人員開發(fā)的SQL接口,第三方人員可以根據(jù)自己的需要開發(fā)自己的應用程序來訪問數(shù)據(jù)庫中的相關數(shù)據(jù)。(10分) (1)系統(tǒng)在使用的過程中,業(yè)務人員反應系統(tǒng)操作速度很慢。經過工程師檢查測試后,數(shù)據(jù)庫系統(tǒng)本身及網絡傳輸過程中存在著一些問題,請給出針對數(shù)據(jù)庫系統(tǒng)本身及網絡傳輸過程中可能的一些調優(yōu)方案。 (2)工程師在完成數(shù)據(jù)庫系統(tǒng)本身和網絡問題的優(yōu)化后,發(fā)現(xiàn)第三方開發(fā)人員的SQL查詢語句存在很多沒有優(yōu)化的問題,請從第三方開發(fā)人員角度給出一些優(yōu)化方案。 三、設計與應用題
1.【解題思路】
(1)ER圖的設計原則
在設計ER圖時,首先應根據(jù)需求分析,確認實體、屬性和聯(lián)系這三種ER圖的基本要素。需要強調的三條設計原則如下:
①相對原則
建模的過程實際上是對對象抽象的過程。實體、屬性和聯(lián)系是對同一個對象抽象過程的不同解釋和理解。在同一情況下不同的人,或同一人在不同的情況下,對事物抽象的結果可能是不同的。在ER圖的整個設計過程中,實體、屬性和聯(lián)系不是一成不變,而是可能會被不斷的調整和優(yōu)化。
②一致原則
同一對象在同一個管理系統(tǒng)中的不同子系統(tǒng)抽象的結果要求保持一致。
③簡單原則
為簡化ER圖,現(xiàn)實世界中的事物能作屬性對待時,應盡量作為屬性處理。屬性與實體和聯(lián)系之間,并無一定界限。當屬性滿足如下兩個條件時,就不能作實體或關系對待:不再具有需要進一步描述的性質,因為屬性在含義上是不可再分的數(shù)據(jù)項;屬性不能再與其它實體具有聯(lián)系,即ER圖中的聯(lián)系只能是實體之間的聯(lián)系。
(2)ER圖的組成元素是實體、屬性和聯(lián)系
①實體
把客觀存在并且可以相互區(qū)別的事物稱為實體。實體可以是實際事物,也可以是抽象事件。如一個職工、一場比賽等。
②屬性
描述實體的特性稱為屬性。如職工的職工號,姓名,性別,出生日期,職稱等。
③聯(lián)系
聯(lián)系是實體間有意義的相互作用,即實體問存在的關聯(lián)。
在ER圖中,分別用矩形框表示實體,橢圓表示屬性,菱形框表示聯(lián)系。
(3)聯(lián)系的類型
實體之間的聯(lián)系分為三種類型:一對一(1:1)、一對多(1:n)和多對多(n:m)。
題目給出了兩個實體論文和作者,并且指明了論文實體的屬性包括題目、期刊名稱、年份、期刊號,作者實體的屬性包括姓名、單位、地址。實體問的關系包括:一篇論文可以有多個作者,且每一位作者寫過多篇論文,在每一篇論文中有作者的順序號,可以知道論文和作者是多對多的關系。同時可知論文題目和期刊號的聯(lián)合是論文關系模式的主鍵,姓名是作者關系模式的主鍵,而需要作者姓名和論文題目才能確定發(fā)表的關系模式。
【參考答案】
(1)

(2)關系模式:
論文(題目,期刊名稱,年份,期刊號)
作者(姓名,單位,地址)
發(fā)表(姓名,題目,順序號)
2.【解題思路】
SQL Server 2008多語句表值函數(shù)的格式為:
CREATE FUNCTION[schema_name.]function_name
([{@parameter_name[As][type_schema_name.]parameter data_type
[=default]}
[….n]
]
)
RETURNS@return_variable TABLE
[AS]
BEGIN
function_body
RETURN
END
[;]
::=
({I}
[table_constraint][,...n])
采用三表聯(lián)合查詢,通過傳入的借書證號查出借出信息表中的圖書編號,然后查出圖書明細表的信息。
【參考答案】
CREATE FUNCTION BorrowBook(@jszh char(20))
RETURNS@jsqkb TABLE(書籍編號char(20),書籍名稱char(50),定價float,借書日期datetime)
AS
BEGIN
INSERT@jsqkb
SELECT圖書明細表.圖書編號,圖書名稱,定價,借出信息表.借書日期FROM借出信息表,圖書明細表
WHERE借出信息表.圖書編號=圖書明細表.圖書編號AND借出信息表.借書證號=@jszh
RETURN
END
3.【解題思路】
從數(shù)據(jù)庫本身和網絡傳輸?shù)慕嵌瘸霭l(fā),數(shù)據(jù)庫性能低下的因素一般有:I/O吞吐量小,形成了瓶頸效應;沒有創(chuàng)建計算列導致查詢不優(yōu)化;SQL Server數(shù)據(jù)庫內存不足;網絡速度慢;查詢出的數(shù)據(jù)量過大(可以采用多次查詢或其他的方法降低數(shù)據(jù)量)以及鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷)。
從SQL查詢語句角度來考慮優(yōu)化響應時間,應該從查詢條件、臨時表、游標、返回數(shù)據(jù)量、大事務操作等方面進行調優(yōu)。
【參考答案】
(1)①把數(shù)據(jù)、日志、索引放到不同的I/O設備上,增加讀取速度,數(shù)據(jù)量(尺寸)越大,提高I/O越重要。
②縱向、橫向分割表,減少表的尺寸。
③升級硬件,擴大服務器的內存,Windows 2000和SQL Server 2000能支持4-8G的內存。配置虛擬內存,虛擬內存大小應基于計算機上并發(fā)運行的服務進行配置。增加服務器CPU個數(shù)。
④分布式分區(qū)視圖可用于實現(xiàn)數(shù)據(jù)庫服務器聯(lián)合體。聯(lián)合體是一組分開管理的服務器,但它們相互協(xié)作分擔系統(tǒng)的處理負荷。這種通過分區(qū)數(shù)據(jù)形成數(shù)據(jù)庫服務器聯(lián)合體的機制能夠擴大一組服務器,以支持大型的多層Web站點的處理需要。
⑤重建索引:DBCC REINDEX,DBCC INDEXDEFRAG;收縮數(shù)據(jù)和日志:DBCC SHRINKDB,DBCCSHRINKFILE。設置自動收縮日志,對于大的數(shù)據(jù)庫不要設置數(shù)據(jù)庫自動增長,它會降低服務器的性能。
⑥優(yōu)化鎖結構。
(2)①對查詢進行優(yōu)化,盡量避免全表掃描,首先應考慮在where及order by涉及的列上建立索引。
②應盡量避免在where子句中使用!=或< >操作符,否則引擎將放棄使用索引而進行全表掃描。
③任何地方都不要使用select*from進行全表掃描,用具體的字段列代替“*”,不要返回冗余字段。
④避免頻繁創(chuàng)建和刪除臨時表,以減少系統(tǒng)表資源的消耗。
⑤盡量避免使用游標,因為游標的效率較差,如果游標操作的數(shù)據(jù)超過1萬行,那么就應該考慮改寫。
⑥盡量避免大事務操作,提高系統(tǒng)并發(fā)能力。