數(shù)據(jù)庫實用教程ppt課件
《數(shù)據(jù)庫實用教程ppt課件》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)庫實用教程ppt課件(70頁珍藏版)》請在裝配圖網(wǎng)上搜索。
7.5 邏輯(結(jié)構(gòu))設(shè)計 概念設(shè)計的結(jié)果是得到一個與DBMS無關(guān)的概念模式。而邏輯設(shè)計的目的是把概念設(shè) 計階段設(shè)計好的全局ER模式轉(zhuǎn)換成與選用的具體機器上的DBMS所支援的數(shù)據(jù)模型相符合的的邏輯結(jié)構(gòu)(包括數(shù)據(jù)庫模式和外模式)。這些模式在功能上、完整性和一致性約束及數(shù)據(jù)庫的可擴充性等方面均應(yīng)滿足用戶的各種要求。對于邏輯設(shè)計而言,應(yīng)首先選擇DBMS,但往往數(shù)據(jù)庫設(shè)計人員沒有挑選的余地,都是在指定的DBMS上進行邏輯結(jié)構(gòu)的設(shè)計。,1,7.5.1 邏輯設(shè)計環(huán)境 邏輯設(shè)計的輸入輸出環(huán)境如圖7.22所示,2,在邏輯設(shè)計階段主要輸入下列信息: (1)獨立于DBMS的概念模式。這是概念設(shè)計階段產(chǎn)生的所有局部和全局概念模式。 (2)處理需求。需求分析階段產(chǎn)生的業(yè)務(wù)活動分析結(jié)果。這里包括數(shù)據(jù)的規(guī)模和應(yīng)用頻率,用戶或用戶集團的需求。 (3)約束條件。即完整性、一致性、安全性要求及響應(yīng)時間要求等等。 (4)DBMS特性。即特定的DBMS所支持的模式、子模式和程序語法的形式規(guī)則。,3,在邏輯設(shè)計階段主要輸出如下的信息: (1)DBMS可處理的模式。一個能用特定 DBMS實現(xiàn)的數(shù)據(jù)庫結(jié)構(gòu)的說明,但是不包括記錄的聚合、塊的大小等物理參數(shù)的說明,但要對某些訪問路徑參數(shù)(如順序、指針檢索的類型)加以說明。 (2)子模式。與單個用戶觀點和完整性約束一致的DBMS所支持的數(shù)據(jù)結(jié)構(gòu)。 (3)應(yīng)用程序設(shè)計指南。根據(jù)設(shè)計的數(shù)據(jù)庫結(jié)構(gòu)為應(yīng)用程序員提供訪問路徑選擇。 (4)物理設(shè)計指南。完全文檔化的模式和子模式應(yīng)包括容量、使用頻率、軟硬件等信息。這些信息將要在物理設(shè)計階段使用,4,7.5.2 邏輯設(shè)計的步驟 邏輯設(shè)計主要是把概念模式轉(zhuǎn)換成DBMS能處理的模式。轉(zhuǎn)換過程中要對模式進行評 價和性能測試,以便獲得較好的模式設(shè)計。邏輯設(shè)計的主要步驟如圖7.23所示。 1.初始模式的形成; 這一步是形成初始的 DBMS模式。 根據(jù)概念模式以及DBMS的記錄類型特點,將ER模式的實體類型或聯(lián)系類型轉(zhuǎn)換成記錄類型,在比較復(fù)雜的情況下,實體可能分裂或合并成新的記錄類型。,5,6,2.子模式設(shè)計 子模式是模式的邏輯子集。子模式是應(yīng)用程序和數(shù)據(jù)庫系統(tǒng)的接口,它能允許應(yīng)用程序有效地訪問數(shù)據(jù)庫中的數(shù)據(jù),而不破壞數(shù)據(jù)庫的安全性。 3.應(yīng)用程序設(shè)計梗概 在設(shè)計完整的應(yīng)用程序之前,先設(shè)計出應(yīng)用程序的草圖,對每個應(yīng)用程序應(yīng)設(shè)計出數(shù)據(jù)存取功能的梗概,提供程序上的邏輯接口。,7,4.模式評價 這一步的工作就是對數(shù)據(jù)庫模式進行評價。評價數(shù)據(jù)庫結(jié)構(gòu)的方法通常有定量分析和性能測量等方法。 定量分析有兩個參數(shù):處理頻率和數(shù)據(jù)容量。處理頻率是在數(shù)據(jù)庫運行期間應(yīng)用程序的使用次數(shù);數(shù)據(jù)容量是數(shù)據(jù)庫中記錄的個數(shù)。數(shù)據(jù)庫增長過程的具體表現(xiàn)就是這兩個參 數(shù)值的增加。 性能測量是指邏輯記錄的訪問數(shù)目、一個應(yīng)用程序傳輸?shù)目傋止?jié)數(shù)。數(shù)據(jù)庫的總字節(jié) 數(shù),這些參數(shù)應(yīng)該盡可能預(yù)先知道,它能預(yù)測物理數(shù)據(jù)庫的性能。,8,5.修正模式 修正模式的目的是為了使模式適應(yīng)信息的不同表示。此時,可利用DBMS的性能,如索引或散列功能,但數(shù)據(jù)庫的信息內(nèi)容不能修改。如果信息內(nèi)容不修改,模式就不能進一步求精,那么就要停止模式設(shè)計,返回到概念設(shè)計或需求分析階段,重新設(shè)計。,9,7.5.3 ER模型向關(guān)系模型的轉(zhuǎn)換 1. ER模型轉(zhuǎn)換為關(guān)系模型的一般規(guī)則 ER模型中的主要成分是實體類型和聯(lián)系類型,轉(zhuǎn)換規(guī)則就是如何把實體類型、聯(lián)系類型轉(zhuǎn)換成關(guān)系模式。 (1)實體類型的轉(zhuǎn)換:將每個實體類型轉(zhuǎn)換成一個關(guān)系模式,實體的屬性即為關(guān)系模式的屬性,實體標識符即為關(guān)系模式的鍵。,10,(2)聯(lián)系類型的轉(zhuǎn)換,根據(jù)不同的情況做不同的處理: ①若實體間的聯(lián)系是1:1的,可以在兩個實體類型轉(zhuǎn)換成的兩個關(guān)系模式中的任意一個關(guān)系模式的屬性中加人另一個關(guān)系模式的鍵和聯(lián)系類型的屬性。,11,[例7·9] 某大學(xué)管理中的實體“院長”與“學(xué)院’之間存在著1:1的聯(lián)系,其ER圖如7·24所示。在將其轉(zhuǎn)化為關(guān)系模型時,“院長’與“學(xué)院”各為一個模式。如果用戶經(jīng)常要在查詢學(xué)院信息時查詢其院長信息,那么可在學(xué)院模式中加人院長名和任職年月,其關(guān)系模式設(shè)計如下(加下劃線者為主鍵,加波浪線者為外鍵): 學(xué)院關(guān)系模式(學(xué)院編號,學(xué)院名,地址,電話,院長名,任職年月) 院長關(guān)系模式(院長名,年齡,性別,職稱),12,13,②若實體間的聯(lián)系是1:N的,則在N端實體類型轉(zhuǎn)換成的關(guān)系模式中加入1端實體類 型轉(zhuǎn)換成的關(guān)系模式的鍵和聯(lián)系類型的屬性。 [例7·10]某大學(xué)管理中的實體“系”與“教師”之間存在著1:N的聯(lián)系,其ER圖如7·25所示。轉(zhuǎn)換成的關(guān)系模式如下: 系關(guān)系模式(系編號,系名,電話,系主任) 教師關(guān)系模式(教師編號,姓名,年齡,性別,職稱,系編號,聘用年月),14,③弱實體:若實體間的聯(lián)系是1:N的,而且在N端實體類型為弱實體,轉(zhuǎn)換成的關(guān)系模式中將1端實體類型(父表)的鍵作為外鍵放在N端的弱實體(子表)中。弱實體的主鍵由父表的主鍵與弱實體本身的候選鍵組成。也可以為弱實體建立新的獨立的標識符 ID。 [例7·11]某大學(xué)管理中的實體“學(xué)生”與弱實體“社會關(guān)系”之間存在著1:N的聯(lián)系,其ER圖如7·26所示。轉(zhuǎn)換成的關(guān)系模式如下: 學(xué)生關(guān)系模式(學(xué)生編號,姓名,年齡,性別,家庭地址,所在系,班號) 社會關(guān)系模式(學(xué)生編號,稱呼,姓名,年齡,政治面貌,工作單位),15,16,若實體間的聯(lián)系是M:N的,則將聯(lián)系類型也轉(zhuǎn)換成關(guān)系模式,其屬性為兩端實體類型的鍵加上聯(lián)系類型的屬性,而鍵為兩端實體鍵的組合。 [例7.12]某大學(xué)管理中的實體“學(xué)生”與“課程”之間存在著M:N的聯(lián)系,其ER圖如7.27所示。轉(zhuǎn)換成的關(guān)系模式如下: 學(xué)生關(guān)系模式(學(xué)生編號,姓名,年齡,性別,家庭地址,所在系,班號) 課程關(guān)系模式(課程編號,課程名,課程性質(zhì),學(xué)分數(shù),先行課,開課學(xué)期,開課系編號) 選修關(guān)系模式(學(xué)生編號,課程編號,成績),17,18,2.超類和子類的轉(zhuǎn)換規(guī)則 將超類和子類各轉(zhuǎn)換成一個關(guān)系模式,在子類轉(zhuǎn)換成的關(guān)系模式(子表)中加入超類轉(zhuǎn)換成關(guān)系模式(父表)的鍵,從而實現(xiàn)父表與子表的聯(lián)系。由于父表與子表的主鍵相同,所子表的主鍵也是外鍵。 [例 7.13]某大學(xué)數(shù)據(jù)庫中的實體“教師”(超類)的成員實體也可以分為教授、副教授,講師和助教四個子實體集合(子類)如圖7.28所示。,19,轉(zhuǎn)換成的關(guān)系模式如下: 教師關(guān)系模式(教師編號,姓名,年齡,性別) 教授關(guān)系模式(教師編號,是否博導(dǎo)) 副教授關(guān)系模式(教師編號,是否碩導(dǎo)) 講師關(guān)系模式(教師編號,學(xué)歷,是否班導(dǎo)師) 助教關(guān)系模式(教師編號,導(dǎo)師姓名),20,7.5.4 關(guān)系數(shù)據(jù)庫的邏輯設(shè)計 由于關(guān)系模型的固有優(yōu)點,邏輯設(shè)計可以運用關(guān)系數(shù)據(jù)庫模式設(shè)計理論使設(shè)計過程形式化地進行,并且結(jié)果可以驗證。關(guān)系數(shù)據(jù)庫的邏輯設(shè)計的過程如圖 7·29所示。,21,從圖7.29可以看出,概念設(shè)計的結(jié)果直接影響到邏輯設(shè)計過程的復(fù)雜性和效率。在概念設(shè)計階段已經(jīng)把關(guān)系規(guī)范化的某些思想用作構(gòu)造實體類型和聯(lián)系類型的標準,在邏輯設(shè)計階段,仍然要使用關(guān)系規(guī)范化理論來設(shè)計模式和評價模式。關(guān)系數(shù)據(jù)庫的邏輯設(shè)計的結(jié)果是一組關(guān)系模式的定義。 1.導(dǎo)出初始關(guān)系模式 邏輯設(shè)計的第一步是把概念設(shè)計的結(jié)果(即全局ER模式)轉(zhuǎn)換成初始關(guān)系模式。,22,2.規(guī)范化處理 規(guī)范化的目的是減少乃至消除關(guān)系模式中存在的各種異常,改善完整性、一致性和存儲效率。規(guī)范化過程分為兩個步驟: (1) 確定規(guī)范級別 規(guī)范級別取決于兩個因素,一是歸結(jié)出來的數(shù)據(jù)依賴的種類,二是實際應(yīng)用的需要。在這里,我們主要從數(shù)據(jù)依賴的種類出發(fā),來討論規(guī)范級別問題。 首先考察數(shù)據(jù)依賴集合。在僅有函數(shù)依賴時,3NF或BCNF是適宜的標準.,23,如還包括多值依賴時,應(yīng)達到4NF。由于多值依賴語義的復(fù)雜性、非直觀性,一般使用得并不多。 在現(xiàn)實環(huán)境中,大量作用的還是函數(shù)依賴。 (2)實施規(guī)范化處理 確定規(guī)范級別之后,利用第5章的算法,逐一考察關(guān)系模式,判斷它們是否滿足規(guī)范要求。若不符合上下步所確定的規(guī)范級別,則利用相應(yīng)的規(guī)范算法將關(guān)系模式規(guī)范化。 在規(guī)范化綜合或分解過程中,要特別注意保持依賴和無損聯(lián)接要求。,24,綜合以上數(shù)據(jù)庫的設(shè)計過程,規(guī)范化理論在數(shù)據(jù)庫設(shè)計中有如下幾方面的應(yīng)用: (1) 在需求分析階段,用數(shù)據(jù)依賴概念分析和表示各個數(shù)據(jù)項之間的聯(lián)系。 (2) 在概念結(jié)構(gòu)設(shè)計階段,以規(guī)范化理論為指導(dǎo),確定關(guān)系鍵,消除初步E-R圖中冗余的聯(lián)系。 (3) 在邏輯結(jié)構(gòu)設(shè)計階段,從E-R圖向數(shù)據(jù)模型轉(zhuǎn)換過程中,用模式合并與分解方法達到規(guī)范化級別。,25,(3) 模式評價 關(guān)系模式的規(guī)范化不是目的而是手段,數(shù)據(jù)庫設(shè)計的目的是最終滿足應(yīng)用需求。因此,為了進一步提高數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能,還應(yīng)該對規(guī)范化后產(chǎn)生的關(guān)系模式進行評價、改進,經(jīng)過反復(fù)多次的嘗試和比較,最后得到優(yōu)化的關(guān)系模式。 模式評價的目的是檢查所設(shè)計的數(shù)據(jù)庫模式是否滿足用戶的功能要求、效率,確定加以改進的部分。模式評價包括功能評價和性能評價。,26,(A) 功能評價 功能評價指對照需求分析的結(jié)果,檢查規(guī)范化后的關(guān)系模式集合是否支持用戶所有的應(yīng)用要求。關(guān)系模式必須包括用戶可能訪問的所有屬性。在涉及多個關(guān)系模式的應(yīng)用中,應(yīng)確保聯(lián)接后不丟失信息。如果發(fā)現(xiàn)有的應(yīng)用不被支持,或不完全被支持,則應(yīng)該改進關(guān)系模式。發(fā)生這種問題的原因可能是在邏輯設(shè)計階段,也可能是在需求分析或概念設(shè)計階段。是哪個階段的問題就返回到哪個階段去,因此有可能對前兩個階段再進行評審,解決存在的問題。,27,在功能評價的過程中,可能會發(fā)現(xiàn)冗余的關(guān)系模式或?qū)傩?,這時應(yīng)對它們加以區(qū)分,搞清楚它們是為未來發(fā)展預(yù)留的,還是某種錯誤造成的,比如名字混淆。如果屬于錯誤處置,進行改正即可,而如果這種冗余來源于前兩個設(shè)計階段,則也要返回重新進行評審。 (B) 性能評價 對于目前得到的數(shù)據(jù)庫模式,由于缺乏物理設(shè)計所提供的數(shù)量測量標準和相應(yīng)的評價手段,所以性能評價是比較困難的,只能對實際性能進行估計,包括邏輯記錄的存取數(shù)、傳送量以及物理設(shè)計算法的模型等。,28,美國密執(zhí)安大學(xué)的T.Teorey和J.Fry于1980年提出的邏輯記錄訪問(Logical Record Access,LRA)方法是一種常用的模式性能評價方法。LRA方法對網(wǎng)狀模型和層次模型較為實用,對于關(guān)系模型的查詢也能起一定的估算作用。 有關(guān)LRA方法本書不詳細介紹,讀 者可以參考有關(guān)書籍。,29,(4) 模式改進 根據(jù)模式評價的結(jié)果,對已生成的模式進行改進。 如果因為需求分析、概念設(shè)計的疏漏導(dǎo)致某些應(yīng)用不能得到支持,則應(yīng)該增加新的關(guān)系模式或?qū)傩浴?如果因為性能考慮而要求改進,則可采用合并或分解的方法。 (A) 合并 如果有若干個關(guān)系模式具有相同的主鍵,并且對這些關(guān)系模式的處理主要是查詢操作,而且經(jīng)常是多關(guān)系的查詢,那么可對這些關(guān)系模式按照組合使用頻率進行合并。 這樣便可以減少聯(lián)接操作而提高查詢效率。,30,(B) 分解 為了提高數(shù)據(jù)操作的效率和存儲空間的利用率,最常用和最重要的模式優(yōu)化方法就是分解,根據(jù)應(yīng)用的不同要求,可以對關(guān)系模式進行垂直分解和水平分解。 水平分解是把關(guān)系的元組分為若干子集合,定義每個子集合為一個子關(guān)系。 對于經(jīng)常進行大量數(shù)據(jù)的分類條件查詢的關(guān)系,可進行水平分解,這樣可以減少應(yīng)用系統(tǒng)每次查詢需要訪問的記錄數(shù),從而提高了查詢性能。,31,例如,有學(xué)生關(guān)系(學(xué)號,姓名,類別……),其中類別包括大專生、本科生和研究生。如果多數(shù)查詢一次只涉及其中的一類學(xué)生,就應(yīng)該把整個學(xué)生關(guān)系水平分割為大專生、本科生和研究生三個關(guān)系。 垂直分解是把關(guān)系模式的屬性分解為若干子集合,形成若干子關(guān)系模式。垂直分解的原則是把經(jīng)常一起使用的屬性分解出來,形成一個子關(guān)系模式。 例如,有教師關(guān)系(教師號,姓名,性別,年齡,職稱,工資,崗位津貼,住址,電話),如果經(jīng)常查詢的僅是前六項,而后三項很少使用,則可以將教師關(guān)系進行垂直分割,得到兩個教師關(guān)系:,32,教師關(guān)系1(教師號,姓名,性別,年齡,職稱,工資) 教師關(guān)系2(教師號,崗位津貼,住址,電話) 這樣,便減少了查詢的數(shù)據(jù)傳遞量,提高了查詢速度。 垂直分解可以提高某些事務(wù)的效率,但也有可能使另一些事務(wù)不得不執(zhí)行連接操作,從而降低了效率。因此是否要進行垂直分解要看分解后的所有事務(wù)的總效率是否得到了提高。垂直分解要保證分解后的關(guān)系具有無損連接性和函數(shù)依賴保持性。相關(guān)的分解算法已經(jīng)在第4章進行了詳細介紹。,33,經(jīng)過多次的模式評價和模式改進之后,最終的數(shù)據(jù)庫模式得以確定。邏輯設(shè)計階段的結(jié)果是全局邏輯數(shù)據(jù)庫結(jié)構(gòu)。對于關(guān)系數(shù)據(jù)庫系統(tǒng)來說,就是一組符合一定規(guī)范的關(guān)系模式組成的關(guān)系數(shù)據(jù)庫模型。 數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)物理獨立性特點消除了由于物理存儲改變而引起的對應(yīng)程序的修改。標準的DBMS例行程序應(yīng)適用于所有的訪問,查詢和更新事務(wù)的優(yōu)化應(yīng)當在系統(tǒng)軟件一級上實現(xiàn)。這樣,邏輯數(shù)據(jù)庫確定之后,就可以開始進行應(yīng)用程序設(shè)計了。,34,[例7.15] 學(xué)員王洪林為浙江省黃驊紙制品公司設(shè)計的“庫存銷售信息管技系統(tǒng)”對倉庫、車間、產(chǎn)品、客戶、銷售部的信息進行了有效的管理,其ER圖如圖7.30所示。,35,這個ER圖有5個實體類型,其屬性如下: 車間:車間號,車間名,主任名。 產(chǎn)品:產(chǎn)品號,產(chǎn)品名,單價。 倉位:倉位號,地址,主任名。 客戶:客戶號,客戶名,聯(lián)系人,電話,地址,稅號,賬號。 銷售員:銷售員號,姓名,性別,學(xué)歷,業(yè)績。,36,這個ER圖有4個聯(lián)系類型,其中3個是M:N:P, 1個是M:N,屬性如下: 入庫:入庫單號,入庫量,入庫日期,經(jīng)手人。 存儲:核對日期,核對員,存儲量。 出庫:出庫單號,出庫量,出庫日期,經(jīng)手人。 定單:定單號,數(shù)量,折扣,總價,定單日期。 試把這個ER圖轉(zhuǎn)換成關(guān)系模型,并指出每個表的主鍵和外鍵。,37,[解]根據(jù)ER模型轉(zhuǎn)換成關(guān)系模型的規(guī)則,可把上述ER圖轉(zhuǎn)換成9個關(guān)系模式,具體如下: 車間(車間號,車間名,主任名) 產(chǎn)品(產(chǎn)品號,產(chǎn)品名,單價) 倉位(倉位號,地址,主任名) 客戶(客戶號,客戶名,聯(lián)系人,電話,地址,稅號,賬號),38,銷售員(銷售員號,姓名,性別,學(xué)歷,業(yè)績) 入庫(入庫單號,入庫量,入庫日期,經(jīng)手人,車間號,倉位號,產(chǎn)品號) 存儲(倉位號,產(chǎn)品號,核對日期,核對員,存儲量) 出庫(出庫單號,出庫量,出庫日期,經(jīng)手人,客戶號,產(chǎn)品號,倉位號) 定單(定單號,數(shù)量,折扣,總價,定單日期,產(chǎn)品號,客戶號,銷售員號),39,7.6 數(shù)據(jù)庫物理設(shè)計 數(shù)據(jù)庫最終要存儲在物理設(shè)備上。對于給定的邏輯數(shù)據(jù)模型,選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,稱為數(shù)據(jù)庫物理設(shè)計。數(shù)據(jù)庫的物理結(jié)構(gòu)主要指數(shù)據(jù)庫的存儲記錄格式、存儲記錄安排和存取方法。顯然,數(shù)據(jù)庫的物理設(shè)計是完全依賴于給定的硬件環(huán)境和數(shù)據(jù)庫產(chǎn)品的。 在關(guān)系模型系統(tǒng)中,物理設(shè)計比較簡單一些,因為文件形式是單記錄類型文件,僅包含索引機制、空間大小、塊的大小等內(nèi)容。,40,數(shù)據(jù)庫的物理設(shè)計可分為兩步: (1) 確定物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲結(jié)構(gòu); (2)評價物理結(jié)構(gòu),評價的重點是時間和空間效率。 7.6.1 確定物理結(jié)構(gòu) 設(shè)計人員必須深入了解給定的DBMS的功能,DBMS提供的環(huán)境和工具、硬件環(huán)境,特別是存儲設(shè)備的特征。另一方面也要了解應(yīng)用環(huán)境的具體要求,如各種應(yīng)用的數(shù)據(jù)量、處理頻率和響應(yīng)時間等。只有“知己知彼”才能設(shè)計出較好的物理結(jié)構(gòu)。,41,1.存儲記錄結(jié)構(gòu)的設(shè)計 在物理結(jié)構(gòu)中,數(shù)據(jù)的基本存取單位是存儲記錄。有了邏輯記錄結(jié)構(gòu)以后,就可以設(shè)計存儲記錄結(jié)構(gòu),一個存儲記錄可以和一個或多個邏輯記錄相對應(yīng)。存儲記錄結(jié)構(gòu)包括記錄的組成、數(shù)據(jù)項的類型和長度,以及邏輯記錄到存儲記錄的映射。某一類型的所有存儲記錄的集合稱為“文件”,文件的存儲記錄可以是定長的,也可以是變長的。 文件組織或文件結(jié)構(gòu)是組成文件的存儲記錄的表示法。文件結(jié)構(gòu)應(yīng)該表示文件格式、邏輯次序、物理次序、訪問路徑、物理設(shè)備的分配。物理數(shù)據(jù)庫就是指數(shù)據(jù)庫中實際存儲記錄的格式、邏輯次序和物理次序、訪問路徑、物理設(shè)備的分配。 決定存儲結(jié)構(gòu)的主要因素包括存取時間、存儲空間和維護代價三個方面。設(shè)計時應(yīng)當根據(jù)實際情況對這三個方面進行綜合權(quán)衡。一般DBMS也提供一定的靈活性可供選擇,包括聚簇和索引。,42,(1) 聚簇(Cluster) 聚簇就是為了提高查詢速度,把在一個(或一組)屬性上具有相同值的元組集中地存放在一個物理塊中。如果存放不下,可以存放在相鄰的物理塊中。其中,這個(或這組)屬性稱為聚簇碼。 為什么要使用聚簇呢?聚簇有兩個作用: ①使用聚簇以后,聚簇碼相同的元組集中在一起了,因而聚簇值不必在每個元組中重復(fù)存儲,只要在一組中存儲一次即可,因此可以節(jié)省存儲空間。,43,②聚簇功能可以大大提高按聚簇碼進行查詢的效率。例如,假設(shè)要查詢學(xué)生關(guān)系中計算機系的學(xué)生名單,設(shè)計算機系有300名學(xué)生。在極端情況下,這些學(xué)生的記錄會分布在300個不同的物理塊中,這時如果要查詢計算機系的學(xué)生,就需要做300次的I/O操作,這將影響系統(tǒng)查詢的性能。如果按照系別建立聚簇,使同一個系的學(xué)生記錄集中存放,則每做一次I/O操作,就可以獲得多個滿足查詢條件和記錄,從而顯著地減少了訪問磁盤的次數(shù)。,44,(2) 索引 存儲記錄是屬性值的集合,主關(guān)系鍵可以惟一確定一個記錄,而其他屬性的一個具體值不能惟一確定是哪個記錄。在主關(guān)系鍵上應(yīng)該建立惟一索引,這樣不但可以提高查詢速度,還能避免關(guān)系鍵重復(fù)值的錄入,確保了數(shù)據(jù)的完整性。 在數(shù)據(jù)庫中,用戶訪問的最小單位是屬性。如果對某些非主屬性的檢索很頻繁,可以考慮建立這些屬性的索引文件。索引文件對存儲記錄重新進行內(nèi)部鏈接,從邏輯上改變了記錄的存儲位置,從而改變了訪問數(shù)據(jù)的入口點。關(guān)系中數(shù)據(jù)越多索引的優(yōu)越性也就越明顯。,45,建立多個索引文件可以縮短存取時間,但是增加了索引文件所占用的存儲空間以及維護的開銷。因此,應(yīng)該根據(jù)實際需要綜合考慮。 2.訪問方法的設(shè)計 訪問方法是為存儲在物理設(shè)備(通常指輔存)上的數(shù)據(jù)提供存儲和檢索能力的方法。一個訪問方法包括存儲結(jié)構(gòu)和檢索機構(gòu)兩個部分。存儲結(jié)構(gòu)限定了可能訪問的路徑和存儲記錄;檢索機構(gòu)定義了每個應(yīng)用的訪問路徑,但不涉及存儲結(jié)構(gòu)的設(shè)計和設(shè)備分配。,46,存儲記錄是屬性的集合,屬性是數(shù)據(jù)項類型,可用作主鍵或輔助鍵。主鍵惟一地確定了一個記錄。輔助鍵是用作記錄索引的屬性,可能并不惟一確定某一個記錄。 訪問路徑的設(shè)計分成主訪問路徑與輔訪問路徑的設(shè)計。主訪問路徑與初始記錄的裝入有關(guān),通常是用主鍵來檢索的。首先利用這種方法設(shè)計各個文件,使其能最有效地處理主要的應(yīng)用。一個物理數(shù)據(jù)庫很可能有幾套主訪問路徑。輔訪問路徑是通過輔助鍵的索引對存儲記錄重新進行內(nèi)部鏈接,從而改變訪問數(shù)據(jù)的入口點。用輔助索引可以縮短訪問時間,但增加了輔存空間和索引維護的開銷。設(shè)計者應(yīng)根據(jù)具體情況作出權(quán)衡。,47,3.數(shù)據(jù)存放位置的設(shè)計 為了提高系統(tǒng)性能,應(yīng)該根據(jù)應(yīng)用情況將數(shù)據(jù)的易變部分、穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低部分分開存放。 例如,目前許多計算機都有多個磁盤,因此可以將表和索引分別存放在不同的磁盤上,在查詢時,由于兩個磁盤驅(qū)動器并行工作,可以提高物理讀寫的速度。 在多用戶環(huán)境下,可能將日志文件和數(shù)據(jù)庫對象(表、索引等)放在不同的磁盤上,以加快存取速度。另外,數(shù)據(jù)庫的數(shù)據(jù)備份、日志文件備份等,只在數(shù)據(jù)庫發(fā)生故障進行恢復(fù)時才使用,而且數(shù)據(jù)量很大,可以存放在磁帶上,以改進整個系統(tǒng)的性能。,48,4.系統(tǒng)配置的設(shè)計 DBMS產(chǎn)品一般都提供了一些系統(tǒng)配置變量、存儲分配參數(shù),供設(shè)計人員和DBA對數(shù)據(jù)庫進行物理優(yōu)化。系統(tǒng)為這些變量設(shè)定了初始值,但是這些值不一定適合每一種應(yīng)用環(huán)境,在物理設(shè)計階段,要根據(jù)實際情況重新對這些變量賦值,以滿足新的要求。 系統(tǒng)配置變量和參數(shù)很多,例如,同時使用數(shù)據(jù)庫的用戶數(shù)、同時打開的數(shù)據(jù)庫對象數(shù)、內(nèi)存分配參數(shù)、緩沖區(qū)分配參數(shù)(使用的緩沖區(qū)長度、個數(shù))、存儲分配參數(shù)、數(shù)據(jù)庫的大小、時間片的大小、鎖的數(shù)目等,這些參數(shù)值影響存取時間和存儲空間的分配,在物理設(shè)計時要根據(jù)應(yīng)用環(huán)境確定這些參數(shù)值,以使系統(tǒng)的性能達到最優(yōu)。,49,7.6.2 評價物理結(jié)構(gòu) 和前面幾個設(shè)計階段一樣,在確定了數(shù)據(jù)庫的物理結(jié)構(gòu)之后,要進行評價,重點是時間和空間的效率。 如果評價結(jié)果滿足設(shè)計要求,則可進行數(shù)據(jù)庫實施。 實際上,往往需要經(jīng)過反復(fù)測試才能優(yōu)化物理設(shè)計。,50,7.7 數(shù)據(jù)庫實施 數(shù)據(jù)庫實施是指根據(jù)邏輯設(shè)計和物理設(shè)計的結(jié)果,在計算機上建立起實際的數(shù)據(jù)庫結(jié)構(gòu)、裝入數(shù)據(jù)、進行測試和試運行的過程。 數(shù)據(jù)庫實施主要包括以下工作: 建立實際數(shù)據(jù)庫結(jié)構(gòu); 裝入數(shù)據(jù); 應(yīng)用程序編碼與調(diào)試; 數(shù)據(jù)庫試運行; 整理文檔。,51,7.7.1 建立實際數(shù)據(jù)庫結(jié)構(gòu) DBMS提供的數(shù)據(jù)定義語言(DDL)可以定義數(shù)據(jù)庫結(jié)構(gòu)??墒褂玫?章所講的SQL定義語句中的CREATE TABLE語句定義所需的基本表,使用CREATE VIEW語句定義視圖。 7.7.2 裝入數(shù)據(jù) 裝入數(shù)據(jù)又稱為數(shù)據(jù)庫加載(Loading),是數(shù)據(jù)庫實施階段的主要工作。在數(shù)據(jù)庫結(jié)構(gòu)建立好之后,就可以向數(shù)據(jù)庫中加載數(shù)據(jù)了。,52,由于數(shù)據(jù)庫的數(shù)據(jù)量一般都很大,它們分散于一個企業(yè)(或組織)中各個部門的數(shù)據(jù)文件、報表或多種形式的單據(jù)中,它們存在著大量的重復(fù),并且其格式和結(jié)構(gòu)一般都不符合數(shù)據(jù)庫的要求,必須把這些數(shù)據(jù)收集起來加以整理,去掉冗余并轉(zhuǎn)換成數(shù)據(jù)庫所規(guī)定的格式,這樣處理之后才能裝入數(shù)據(jù)庫。因此,需要耗費大量的人力、物力,是一種非常單調(diào)乏味而又意義重大的工作。,53,由于應(yīng)用環(huán)境和數(shù)據(jù)來源的差異,所以不可能存在普遍通用的轉(zhuǎn)換規(guī)則,現(xiàn)有的DBMS并不提供通用的數(shù)據(jù)轉(zhuǎn)換軟件來完成這一工作。 對于一般的小型系統(tǒng),裝入數(shù)據(jù)量較少,可以采用人工方法來完成。 首先將需要裝入的數(shù)據(jù)從各個部門的數(shù)據(jù)文件中篩選出來,轉(zhuǎn)換成符合數(shù)據(jù)庫要求的數(shù)據(jù)格式, 然后輸入到計算機中, 最后進行數(shù)據(jù)校驗,檢查輸入的數(shù)據(jù)是否有誤。,54,但是,人工方法不僅效率低,而且容易產(chǎn)生差錯。對于數(shù)據(jù)量較大的系統(tǒng),應(yīng)該由計算機來完成這一工作。通常是設(shè)計一個數(shù)據(jù)輸入子系統(tǒng),其主要功能是從大量的原始數(shù)據(jù)文件中篩選、分類、綜合和轉(zhuǎn)換數(shù)據(jù)庫所需的數(shù)據(jù),把它們加工成數(shù)據(jù)庫所要求的結(jié)構(gòu)形式,最后裝入數(shù)據(jù)庫中,同時還要采用多種檢驗技術(shù)檢查輸入數(shù)據(jù)的正確性。 為了保證裝入數(shù)據(jù)庫中數(shù)據(jù)的正確無誤,必須高度重視數(shù)據(jù)的校驗工作。在輸入子系統(tǒng)的設(shè)計中應(yīng)該考慮多種數(shù)據(jù)檢驗技術(shù),在數(shù)據(jù)轉(zhuǎn)換過程中應(yīng)使用不同的方法進行多次檢驗,確認正確后方可入庫。,55,如果在數(shù)據(jù)庫設(shè)計時,原來的數(shù)據(jù)庫系統(tǒng)仍在使用,則數(shù)據(jù)的轉(zhuǎn)換工作是將原來老系統(tǒng)中的數(shù)據(jù)轉(zhuǎn)換成新系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)。同時還要轉(zhuǎn)換原來的應(yīng)用程序,使之能在新系統(tǒng)下有效地運行。 數(shù)據(jù)的轉(zhuǎn)換、分類和綜合常常需要多次才能完成,因而輸入子系統(tǒng)的設(shè)計和實施是很復(fù)雜的,需要編寫許多應(yīng)用程序,由于這一工作需要耗費較多的時間,為了保證數(shù)據(jù)能夠及時入庫,應(yīng)該在數(shù)據(jù)庫物理設(shè)計的同時編制數(shù)據(jù)輸入子系統(tǒng),而不能等物理設(shè)計完成后才開始。,56,7.7.3 應(yīng)用程序編碼與調(diào)試 數(shù)據(jù)庫應(yīng)用程序的設(shè)計屬于一般的程序設(shè)計范疇,但數(shù)據(jù)庫應(yīng)用程序有自己的一些特點。例如,大量使用屏幕顯示控制語句、形式多樣的輸出報表、重視數(shù)據(jù)的有效性和完整性檢查、有靈活的交互功能。 為了加快應(yīng)用系統(tǒng)的開發(fā)速度,一般選擇第四代語言開發(fā)環(huán)境,利用自動生成技術(shù)和軟件復(fù)用技術(shù),在程序設(shè)計編寫中往往采用工具(CASE)軟件來幫助編寫程序和文檔,如目前普遍使用的PowerBuilder、Delphi以及由北京航空航天大學(xué)研制的863/CMIS支持的數(shù)據(jù)庫開發(fā)工具OpenTools等。,57,數(shù)據(jù)庫結(jié)構(gòu)建立好之后,就可以開始編制與調(diào)試數(shù)據(jù)庫的應(yīng)用程序,這時由于數(shù)據(jù)入庫尚未完成,調(diào)試程序時可以先使用模擬數(shù)據(jù)。 7.7.4 數(shù)據(jù)庫試運行 應(yīng)用程序編寫完成,并有了一小部分數(shù)據(jù)裝入后,應(yīng)該按照系統(tǒng)支持的各種應(yīng)用分別試驗應(yīng)用程序在數(shù)據(jù)庫上的操作情況,這就是數(shù)據(jù)庫的試運行階段,或者稱為聯(lián)合調(diào)試階段。在這一階段要完成兩方面的工作。,58,(1) 功能測試。實際運行應(yīng)用程序,測試它們能否完成各種預(yù)定的功能。 (2) 性能測試。測量系統(tǒng)的性能指標,分析系統(tǒng)是否符合設(shè)計目標。 系統(tǒng)的試運行對于系統(tǒng)設(shè)計的性能檢驗和評價是很重要的,因為有些參數(shù)的最佳值只有在試運行后才能找到。如果測試的結(jié)果不符合設(shè)計目標,則應(yīng)返回到設(shè)計階段,重新修改設(shè)計和編寫程序,有時甚至需要返回到邏輯設(shè)計階段,調(diào)整邏輯結(jié)構(gòu)。,59,重新設(shè)計物理結(jié)構(gòu)甚至邏輯結(jié)構(gòu),會導(dǎo)致數(shù)據(jù)重新入庫。由于數(shù)據(jù)裝入的工作量很大,所以可分期分批的組織數(shù)據(jù)裝入,先輸入小批量數(shù)據(jù)做調(diào)試用,待試運行基本合格后,再大批量輸入數(shù)據(jù),逐步增加數(shù)據(jù)量,逐步完成運行評價。 數(shù)據(jù)庫的實施和調(diào)試不是幾天就能完成的,需要有一定的時間。在此期間由于系統(tǒng)還不穩(wěn)定,隨時可能發(fā)生硬件或軟件故障,加之數(shù)據(jù)庫剛剛建立,操作人員對系統(tǒng)還不熟悉,對其規(guī)律,60,缺乏了解,容易發(fā)生操作錯誤,這些故障和錯誤很可能破壞數(shù)據(jù)庫中的數(shù)據(jù),這種破壞很可能在數(shù)據(jù)庫中引起連鎖反應(yīng),破壞整個數(shù)據(jù)庫。 因此必須做好數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)工作,要求設(shè)計人員熟悉DBMS的轉(zhuǎn)儲和恢復(fù)功能,并根據(jù)調(diào)試方式和特點首先加以實施,盡量減少對數(shù)據(jù)庫的破壞,并簡化故障恢復(fù)。,61,7.7.5 整理文檔 在程序的編碼調(diào)試和試運行中,應(yīng)該將發(fā)現(xiàn)的問題和解決方法記錄下來,將它們整理存檔作為資料,供以后正式運行和改進時參考。 全部的調(diào)試工作完成之后,應(yīng)該編寫應(yīng)用系統(tǒng)的技術(shù)說明書和使用說明書,在正式運行時隨系統(tǒng)一起交給用戶。 完整的文件資料是應(yīng)用系統(tǒng)的重要組成部分,但這一點常被忽視。必須強調(diào)這一工作的重要性,引起用戶與設(shè)計人員的充分注意。,62,7.8 數(shù)據(jù)庫運行和維護 數(shù)據(jù)庫試運行結(jié)果符合設(shè)計目標后,數(shù)據(jù)庫就投入正式運行,進入運行和維護階段。數(shù)據(jù)庫系統(tǒng)投入正式運行,標志著數(shù)據(jù)庫應(yīng)用開發(fā)工作的基本結(jié)束,但并不意味著設(shè)計過程己經(jīng)結(jié)束。 由于應(yīng)用環(huán)境不斷發(fā)生變化,用戶的需求和處理方法不斷發(fā)展,數(shù)據(jù)庫在運行過程中的存儲結(jié)構(gòu)也會不斷變化,從而必須修改和擴充相應(yīng)的應(yīng)用程序。,63,數(shù)據(jù)庫運行和維護階段的主要任務(wù)包括以下三項內(nèi)容: (1) 維護數(shù)據(jù)庫的安全性與完整性; (2) 監(jiān)測并改善數(shù)據(jù)庫性能; (3) 重新組織和構(gòu)造數(shù)據(jù)庫。 7.8.1 維護數(shù)據(jù)庫的安全性與完整性 按照設(shè)計階段提供的安全規(guī)范和故障恢復(fù)規(guī)范,DBA要經(jīng)常檢查系統(tǒng)的安全是否受到侵犯,根據(jù)用戶的實際需要授予用戶不同的操作權(quán)限。,64,數(shù)據(jù)庫在運行過程中,由于應(yīng)用環(huán)境發(fā)生變化,對安全性的要求可能發(fā)生變化,DBA要根據(jù)實際情況及時調(diào)整相應(yīng)的授權(quán)和密碼,以保證數(shù)據(jù)庫的安全性。 同樣數(shù)據(jù)庫的完整性約束條件也可能會隨應(yīng)用環(huán)境的改變而改變,這時DBA也要對其進行調(diào)整,以滿足用戶的要求。 另外,為了確保系統(tǒng)在發(fā)生故障時,能夠及時地進行恢復(fù),DBA要針對不同的應(yīng)用要求定制不同的轉(zhuǎn)儲計劃,定期對數(shù)據(jù)庫和日志文件進行備份,以使數(shù)據(jù)庫在發(fā)生故障后恢復(fù)到某種一致性狀態(tài),保證數(shù)據(jù)庫的完整性。,65,7.8.2 監(jiān)測并改善數(shù)據(jù)庫性能 目前許多DBMS產(chǎn)品都提供了監(jiān)測系統(tǒng)性能參數(shù)的工具,DBA可以利用系統(tǒng)提供的這些工具,經(jīng)常對數(shù)據(jù)庫的存儲空間狀況及響應(yīng)時間進行分析評價; 結(jié)合用戶的反應(yīng)情況確定改進措施;及時改正運行中發(fā)現(xiàn)的錯誤; 按用戶的要求對數(shù)據(jù)庫的現(xiàn)有功能進行適當?shù)臄U充。 但要注意在增加新功能時應(yīng)保證原有功能和性能不受損害。,66,7.8.3 重新組織和構(gòu)造數(shù)據(jù)庫 數(shù)據(jù)庫建立后,除了數(shù)據(jù)本身是動態(tài)變化以外,隨著應(yīng)用環(huán)境的變化,數(shù)據(jù)庫本身也必須變化以適應(yīng)應(yīng)用要求。 數(shù)據(jù)庫運行一段時間后,由于記錄的不斷增加、刪除和修改,會改變數(shù)據(jù)庫的物理存儲結(jié)構(gòu),使數(shù)據(jù)庫的物理特性受到破壞,從而降低數(shù)據(jù)庫存儲空間的利用率和數(shù)據(jù)的存取效率,使數(shù)據(jù)庫的性能下降。因此,需要對數(shù)據(jù)庫進行重新組織,即重新安排數(shù)據(jù)的存儲位置,回收垃圾,減少指針鏈,改進數(shù)據(jù)庫的響應(yīng)時間和空間利用率,提高系統(tǒng)性能。這與操作系統(tǒng)對“磁盤碎片”的處理的概念相類似。,67,數(shù)據(jù)庫的重組只是使數(shù)據(jù)庫的物理存儲結(jié)構(gòu)發(fā)生變化,而數(shù)據(jù)庫的邏輯結(jié)構(gòu)不變,所以根據(jù)數(shù)據(jù)庫的三級模式,可以知道數(shù)據(jù)庫重組對系統(tǒng)功能沒有影響,只是為了提高系統(tǒng)的性能。 數(shù)據(jù)庫應(yīng)用環(huán)境的變化可能導(dǎo)致數(shù)據(jù)庫的邏輯結(jié)構(gòu)發(fā)生變化,比如要增加新的實體,增加某些實體的屬性,這樣實體之間的聯(lián)系發(fā)生了變化,這樣使原有的數(shù)據(jù)庫設(shè)計不能滿足新的要求,必須對原來的數(shù)據(jù)庫重新構(gòu)造,適當調(diào)整數(shù)據(jù)庫的模式和內(nèi)模式,比如要增加新的數(shù)據(jù)項,增加或刪除索引,修改完整性約束條件等。,68,DBMS一般都提供了重新組織和構(gòu)造數(shù)據(jù)庫的應(yīng)用程序,以幫助DBA完成數(shù)據(jù)庫的重組和重構(gòu)工作。 只要數(shù)據(jù)庫系統(tǒng)在運行,就需要不斷地進行修改、調(diào)整和維護。一旦應(yīng)用變化太大,數(shù)據(jù)庫重新組織也無濟于事,這就表明數(shù)據(jù)庫應(yīng)用系統(tǒng)的生命周期結(jié)束,應(yīng)該建立新系統(tǒng),重新設(shè)計數(shù)據(jù)庫。從頭開始數(shù)據(jù)庫設(shè)計工作,標志著一個新的數(shù)據(jù)庫應(yīng)用系統(tǒng)生命周期的開始。,69,小 結(jié) 本章主要討論數(shù)據(jù)庫設(shè)計的方法和步驟,列舉了許多實例,詳細介紹了數(shù)據(jù)庫設(shè)計中規(guī)劃、需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計及運行與維護各階段的目標、方法和應(yīng)注意的事項。其中重點是概念結(jié)構(gòu)的設(shè)計和邏輯結(jié)構(gòu)的設(shè)計,這也是數(shù)據(jù)庫設(shè)計過程中最重要的兩個環(huán)節(jié)。 學(xué)習(xí)這一章,要努力掌握書中討論的基本方法,還要能在實際工作中運用這些思想,設(shè)計出符合應(yīng)用需求的數(shù)據(jù)庫應(yīng)用系統(tǒng)。,70,- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
200 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫 實用教程 ppt 課件
鏈接地址:http://appdesigncorp.com/p-845039.html