版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
8.1數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程8.2實(shí)體聯(lián)系法(ER方法)8.3邏輯記錄存取法(LRA方法)習(xí)題八一個(gè)軟件系統(tǒng)必定包括兩方面的問(wèn)題:“數(shù)據(jù)”以及對(duì)數(shù)據(jù)進(jìn)行的“加工”。這兩個(gè)問(wèn)題貫串整個(gè)開(kāi)發(fā)過(guò)程(圖8.1):在需求分析階段既要分析用戶的“數(shù)據(jù)要求”(系統(tǒng)中需維持哪些數(shù)據(jù)、數(shù)據(jù)之間有什么聯(lián)系、數(shù)據(jù)本身有什么性質(zhì)等)SL要分析用戶的“加工要求”(對(duì)數(shù)據(jù)作什么加工、每個(gè)加工的邏輯要求等);在設(shè)計(jì)階段要設(shè)計(jì)數(shù)據(jù)的結(jié)構(gòu)也要設(shè)計(jì)程序模塊的結(jié)構(gòu);在編程階段也要考慮數(shù)據(jù)和算法等。當(dāng)然這兩方面不是相互獨(dú)立的,其間有著密切的聯(lián)系。8.1數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程第三章介紹的sA方法在分析和描述“數(shù)據(jù)要求”方面是不夠的,第四章介紹的SD方法只考慮程序模塊結(jié)構(gòu)的設(shè)計(jì),而不考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),所以在開(kāi)發(fā)實(shí)際系統(tǒng)時(shí),僅用SA、SD方法是不夠的,還需結(jié)合一些數(shù)據(jù)庫(kù)和數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。70年代以來(lái),數(shù)據(jù)庫(kù)技術(shù)已被廣泛接受,許多大型數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)都組織成數(shù)據(jù)庫(kù)的形式,所以本章專門討論為用戶建立數(shù)據(jù)庫(kù)的方法,作為對(duì)第三、四章的補(bǔ)充。圖8.1圖8.2下面的介紹假定讀者已具備數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)知識(shí)(如參考文獻(xiàn)[1])。
某個(gè)用戶的數(shù)據(jù)庫(kù)系統(tǒng)(如銀行的數(shù)據(jù)處理系統(tǒng))由模式、子模式、應(yīng)用程序、數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)等幾部分組成(圖8.2),其中模式、子模式、應(yīng)用程序等必須根
據(jù)用戶的具體要求進(jìn)行分析和設(shè)計(jì),這項(xiàng)工作稱為“數(shù)據(jù)庫(kù)設(shè)計(jì)”,它的核心問(wèn)題是如何建立一個(gè)數(shù)據(jù)模式,使其滿足下面幾個(gè)條件:
(1)符合用戶的要求,即能正確地反映用戶的現(xiàn)實(shí)環(huán)境,它應(yīng)包含用戶需處理的所有“數(shù)據(jù)”,并能支持用戶需進(jìn)行的所有“加工”。
(2)能被某個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)管理系統(tǒng)所接受。
(3)具有較高的質(zhì)量,如易于維護(hù)、易于理解、效率較高等。用“軟件生命期”的觀點(diǎn)來(lái)看待數(shù)據(jù)庫(kù)設(shè)計(jì)的全過(guò)程,則可相應(yīng)地把它分成4個(gè)階段:
(1)分析用戶要求。
(2)建立概念性數(shù)據(jù)模型。
(3)邏輯設(shè)計(jì)。
(4)物理設(shè)計(jì)。
前面兩個(gè)階段是面向“問(wèn)題”的,后面兩個(gè)階段是面向“解答”的;前兩個(gè)階段對(duì)應(yīng)于軟件生命期中的分析階段,后兩個(gè)階段對(duì)應(yīng)于設(shè)計(jì)階段。第(1)階段是收集和分析用戶的要求。用戶要求包括數(shù)據(jù)要求、加工要求和種種限制條件等。
第(2)階段是用一個(gè)“概念性數(shù)據(jù)模型”將用戶的數(shù)據(jù)要求明確地表達(dá)出來(lái),這一步與軟件生命期中建立“系統(tǒng)說(shuō)明書(shū)”相對(duì)應(yīng)。
概念性數(shù)據(jù)模型是一種面向問(wèn)題的數(shù)據(jù)模型,它描寫了從用戶角度看到的數(shù)據(jù)庫(kù),也反映了用戶的現(xiàn)實(shí)環(huán)境,但與數(shù)據(jù)庫(kù)將怎么實(shí)現(xiàn)無(wú)關(guān)。概念性數(shù)據(jù)模型在用戶和設(shè)計(jì)人員
之間起到了橋梁作用,一方面它是明確地表達(dá)用戶要求的一個(gè)模型,另一方面這個(gè)模型是設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)。建立概念性數(shù)據(jù)模型是數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中的一個(gè)關(guān)鍵,70年代后期陸續(xù)出現(xiàn)了一些適合作概念性數(shù)據(jù)模型的所謂第二代數(shù)據(jù)模型,其中ER模型就是一個(gè)典型的代表,它們”比第一代數(shù)據(jù)模型(如網(wǎng)型、層次型、關(guān)系型等)更高級(jí),語(yǔ)義表達(dá)能力更強(qiáng)。
第(3)、(4)階段考慮數(shù)據(jù)庫(kù)將怎樣實(shí)現(xiàn)。第(3)階段邏輯設(shè)計(jì)是設(shè)計(jì)數(shù)據(jù)的結(jié)構(gòu),它可以同軟件生命期中設(shè)計(jì)階段的“總體設(shè)計(jì)”相對(duì)應(yīng)。在這一階段,我們首先要根據(jù)用戶要求的特點(diǎn)選購(gòu)合適的數(shù)據(jù)庫(kù)管理系統(tǒng)(D.BMS),然后根據(jù)概念性數(shù)據(jù)模型以及選購(gòu)的數(shù)據(jù)庫(kù)管理系統(tǒng)的具體特點(diǎn)設(shè)計(jì)出這個(gè)管理系統(tǒng)能夠接受的數(shù)據(jù)模式。本章將著重討論數(shù)據(jù)庫(kù)管理系統(tǒng)是DBTG,型的情況。第(4)階段進(jìn)一步設(shè)計(jì)數(shù)據(jù)模式的一些物理細(xì)節(jié),如文件的基本結(jié)構(gòu)、存取方式、索引的建立等。這一階段可同軟件生命期中設(shè)計(jì)階段的“詳細(xì)設(shè)計(jì)”相對(duì)應(yīng)。這階段考慮的主要問(wèn)題是如何使數(shù)據(jù)庫(kù)系統(tǒng)具有較高的效率,所采用的技術(shù)與選購(gòu)的數(shù)據(jù)庫(kù)管理系統(tǒng)的具體特點(diǎn)密切有關(guān)。
為一個(gè)大型的數(shù)據(jù)處理系統(tǒng)建立數(shù)據(jù)庫(kù)是相當(dāng)艱巨的任務(wù),用戶環(huán)境中包含的數(shù)據(jù)項(xiàng)相當(dāng)多,數(shù)據(jù)之間又有復(fù)雜的關(guān)系,設(shè)計(jì)人員不僅要理解用戶的要求,還要了解數(shù)據(jù)庫(kù)管理系統(tǒng)的一些特點(diǎn),所以這一工作必須有一定的方法來(lái)指導(dǎo),70年代以來(lái),隨著數(shù)據(jù)庫(kù)技術(shù)和軟件工程技術(shù)的發(fā)展,出現(xiàn)了不少設(shè)計(jì)數(shù)據(jù)庫(kù)的方法和工具,其中具有代表性的有:
ER.方法、.LRA方法和DBDA.系統(tǒng)等,本章8.2介紹ER方法,8.3介紹LRA方法。8.2.1基本思想
ER方法由P.Chen提出,它適用于設(shè)計(jì)數(shù)據(jù)庫(kù)的第(1)、(2)、(3)階段。
為一個(gè)企業(yè)(如銀行或工廠)設(shè)計(jì)數(shù)據(jù)庫(kù)的本質(zhì)是將企業(yè)中的有關(guān)數(shù)據(jù)組織成一種具體的形式,這種形式必須同所使用的數(shù)據(jù)庫(kù)管理系統(tǒng)的數(shù)據(jù)模式相符。目前常用的數(shù)據(jù)庫(kù)管理系統(tǒng)有關(guān)系型、網(wǎng)型和層次型三大類。8.2實(shí)體聯(lián)系法(ER方法)早期的數(shù)據(jù)庫(kù)設(shè)計(jì)方法是直接將企業(yè)中的數(shù)據(jù)設(shè)計(jì)成關(guān)系型、網(wǎng)型、層次型的用戶模式(圖8.3(a)),這樣得到的用戶模式并不純粹是現(xiàn)實(shí)世界的描述,而是混入了許多其他的因素,因?yàn)椋?/p>
●設(shè)計(jì)人員受到具體某個(gè)DBMS表達(dá)能力的限制,例如有的DBMS很難直接表示多對(duì)多的聯(lián)系;
●設(shè)計(jì)人員必須考慮存貯結(jié)構(gòu)、存取方式等具體問(wèn)題;
●為了使系統(tǒng)具有較高的效率,用戶模式并不直接與現(xiàn)實(shí)相對(duì)應(yīng),例如現(xiàn)實(shí)中“職員”這個(gè)對(duì)象在用戶模式中,可能是用兩個(gè)記錄類型表示的。
所以早期的設(shè)計(jì)方法存在以下兩個(gè)問(wèn)題:
●用戶模式難以理解和修改;
●設(shè)計(jì)人員必須同時(shí)考慮許多問(wèn)題,如用戶環(huán)境、DBMS的表達(dá)能力、存貯結(jié)構(gòu)、效率等,這就使得數(shù)據(jù)庫(kù)設(shè)計(jì)工作難以進(jìn)行。圖8.3
圖8.4(b)表示職員和項(xiàng)目之間存在兩類聯(lián)系,“負(fù)責(zé)”是一個(gè)一對(duì)多的聯(lián)系,即每個(gè)項(xiàng)目只由一個(gè)職員負(fù)責(zé),而每個(gè)職員可以負(fù)責(zé)幾個(gè)項(xiàng)目;“參加”是多對(duì)多的聯(lián)系,即每個(gè)職員可以參加多個(gè)項(xiàng)目,每個(gè)項(xiàng)目可以有多個(gè)職員參加。
圖8.4(c)表示同一實(shí)體類型“零件”中存在著一種聯(lián)系——“裝配”,這個(gè)聯(lián)系是多對(duì)多的。
聯(lián)系也可能存在于三個(gè)以上的實(shí)體之間,圖8.4(應(yīng))中的“供應(yīng)”是存在于商店、設(shè)備、項(xiàng)目三個(gè)實(shí)體類型之間的聯(lián)系。圖8.4
3.屬性
實(shí)體或聯(lián)系的性質(zhì)就是屬性,例如職員有工號(hào)、姓名、職稱、子女名等屬性。屬性具有值,ER圖中可以用圓表示值類型,用實(shí)體與值類型間的連線表示屬性(圖8.5(a))。有的屬性可能是多值的,如圖8.5(a)中子女名就是多值的屬性,因?yàn)橐粋€(gè)職員可能有多個(gè)子女。ER圖中在表示屬性的連線邊上注出N表示多值屬性,圖8.5(a)說(shuō)明工號(hào)、姓名、職稱是
職員的單值屬性,而子女名是職員的多值屬性。我們可以用某些屬性來(lái)標(biāo)識(shí)一個(gè)實(shí)體,例如每個(gè)職員的工號(hào)是各不相同的,所以就可用工號(hào)這個(gè)屬性來(lái)唯一地標(biāo)識(shí)職員。同樣,我們可把屬性學(xué)號(hào)作為實(shí)體學(xué)生的標(biāo)識(shí)碼。
聯(lián)系也可能有屬性,例如學(xué)生修某門課程所取得的成績(jī),成績(jī)既不是學(xué)生的屬性,也不是課程的屬性,因?yàn)樗蕾囉谀硞€(gè)特定的學(xué)生又依賴于某門特定的課程,所以它是學(xué)生與課程之間的聯(lián)系“修”的屬性(圖8.5(b))。
又如某個(gè)職員每周有幾天參加某個(gè)項(xiàng)目的工作是聯(lián)系“參加”的屬性,而不是職員的屬性,也不是項(xiàng)目的屬性(圖8.5(c))。圖8.5
“聯(lián)系的屬性”這個(gè)概念對(duì)理解數(shù)據(jù)的語(yǔ)義是非常重要的。
聯(lián)系可用有關(guān)實(shí)體的標(biāo)識(shí)碼來(lái)標(biāo)識(shí),例如學(xué)生的標(biāo)識(shí)碼是學(xué)號(hào),課程的標(biāo)識(shí)碼是課程號(hào),這兩個(gè)實(shí)體間的聯(lián)系“修”就可用學(xué)號(hào)和課程號(hào)兩個(gè)屬性來(lái)標(biāo)識(shí)。
由于人們通常就是用實(shí)體、聯(lián)系和屬性這三個(gè)概念來(lái)理解現(xiàn)實(shí)問(wèn)題的,所以ER模型非常接近人的思維方式。又因?yàn)镋R模型采用簡(jiǎn)單的圖形來(lái)表達(dá)人們對(duì)現(xiàn)實(shí)的理解,所以
不熟悉計(jì)算機(jī)技術(shù)的用戶都能夠接受它,ER模型目前已成為一種使用較廣的概念性數(shù)據(jù)模型。8.2.3從ER模型導(dǎo)出數(shù)據(jù)模式
參照下面幾條基本規(guī)則,可以從描述用戶要求的ER圖導(dǎo)出DBTG數(shù)據(jù)庫(kù)管理系統(tǒng)上的數(shù)據(jù)模式。
1)兩侖實(shí)體類型之間一對(duì)多的聯(lián)系:圖8.6(a)轉(zhuǎn)換成圖8.6(b),這里,ER圖中的實(shí)體類型“部門"和“職員"轉(zhuǎn)換成DBTG數(shù)據(jù)結(jié)構(gòu)圖中的記錄類型,而聯(lián)系“從屬,,轉(zhuǎn)換成DBTG’中的系。同樣圖8.6(c)轉(zhuǎn)換成圖8.6(z)。.
2)兩個(gè)實(shí)體類型之間多對(duì)多的聯(lián)系:圖8.7(a)轉(zhuǎn)換成圖8.7(b),這里,ER圖中的實(shí)體類型“職員”和“項(xiàng)目”轉(zhuǎn)換成DBTG中的記錄類型,聯(lián)系“參加”不是轉(zhuǎn)換成系,而是轉(zhuǎn)換成一個(gè)記錄類型,這種記錄類型不是實(shí)體記錄類型(如前面的職員、項(xiàng)目等)而是聯(lián)系記錄類型。同樣圖8.7(c)轉(zhuǎn)換成圖8.7(d)。圖8.6圖8.7
3)K(K≥3)個(gè)實(shí)體類型之間的聯(lián)系:圖8.4(d)轉(zhuǎn)換成圖8.8,這里可不必考慮聯(lián)系的類型。
4)一個(gè)實(shí)體類型上的聯(lián)系:圖8.9(a)轉(zhuǎn)換成圖8.9(b)。
應(yīng)注意的是:上述轉(zhuǎn)換規(guī)則是通常所使用的,但并不是唯一的規(guī)則,從同一ER圖可以導(dǎo)出幾種不同的DBTG模式。
從ER圖也很容易導(dǎo)出關(guān)系型數(shù)據(jù)模式:只須將ER圖中的每一個(gè)實(shí)體和聯(lián)系都轉(zhuǎn)換成關(guān)系型模式中的一個(gè)關(guān)系就可以了。.圖8.8圖8.98.2.4步驟
用ER方法設(shè)計(jì)數(shù)據(jù)庫(kù)的基本步驟是:
(1)確定實(shí)體類型。
(2)確定聯(lián)系類型。
(3)畫(huà)ER圖。
(4)確定屬性。
(5)從ER圖導(dǎo)出數(shù)據(jù)結(jié)構(gòu)圖。
(6)設(shè)計(jì)記錄格式。下面以一個(gè)工廠管理系統(tǒng)的數(shù)據(jù)庫(kù)為例,說(shuō)明這。一過(guò)程。
1.確定實(shí)體類型
通過(guò)調(diào)查了解到該工廠中需要管理的實(shí)體類型有零件、商店、項(xiàng)目、職員、部門、倉(cāng)庫(kù)等等。
2.確定聯(lián)系類型
在這個(gè)系統(tǒng)中,以下這些聯(lián)系是同管理有關(guān)的:
·部門和職員之間有個(gè)聯(lián)系“從屬”,它是一對(duì)多的;
·項(xiàng)目和職員之間有個(gè)聯(lián)系“負(fù)責(zé)”,它是一對(duì)多的;
·項(xiàng)目和職員之間還有個(gè)聯(lián)系“參加”,它是多對(duì)多的;
·項(xiàng)目、商店和零件之間有個(gè)三元聯(lián)系“供應(yīng)”,它是多對(duì)多的;
·零件和商店之間有個(gè)聯(lián)系“將供應(yīng)”,它是多對(duì)多的;
·零件和倉(cāng)庫(kù)之間有個(gè)聯(lián)系“存貯”,它是多對(duì)多的;
·零件這個(gè)實(shí)體類型上有個(gè)聯(lián)系“裝配”,它是多對(duì)多的。
3.畫(huà)ER圖
對(duì)于比較復(fù)雜的例子,ER.圖可以采用簡(jiǎn)化的形式,即用方框表示實(shí)體,用方框之間的直線段表示聯(lián)系,屬性則不在圖中畫(huà)出而另用文字(或表格)作出說(shuō)明。
本例中用這種簡(jiǎn)化的表達(dá)方式將前兩步確定的實(shí)體和聯(lián)系畫(huà)出則得圖8.10(a)。
4.確定屬性
經(jīng)調(diào)查了解到:部門有部門號(hào)、今年預(yù)算、去年預(yù)算等3個(gè)屬性;職員有工號(hào)、姓名、職稱、工齡4個(gè)屬性;項(xiàng)目有編號(hào)、項(xiàng)目名、預(yù)算3個(gè)屬性;……。又了解到:聯(lián)系“供應(yīng)”有供應(yīng)號(hào)、地點(diǎn)、數(shù)量等屬性;“存貯”有數(shù)量這個(gè)屬性;“從屬”有“進(jìn)入本部門日期”、“參加”有“每周工作幾天”等屬性。上述實(shí)體和聯(lián)系的屬性可用表8.1的表格說(shuō)明,表格中還應(yīng)指出每個(gè)屬性的值類型,為簡(jiǎn)單起見(jiàn),表8.1中省略了這一部分。
至此為止,我們獲得了描述工廠管理這一用戶環(huán)境的概念性數(shù)據(jù)模型。
5.從ER圖導(dǎo)出DBTG數(shù)據(jù)結(jié)構(gòu)
參照8.2.3的4條基本規(guī)則,從圖8.10(a)的ER圖導(dǎo)出圖8.10(6)的數(shù)據(jù)結(jié)構(gòu)圖。
6.設(shè)計(jì)記錄格式
設(shè)計(jì)記錄格式時(shí)可以參考以下幾條原則:
1)將一個(gè)實(shí)體的所有屬性放在同一記錄類型中,例如部門的所有屬性(部門號(hào)、今年預(yù)算、去年預(yù)算)都處理成部門這個(gè)記錄類型中的數(shù)據(jù)項(xiàng)(圖8.11)。
2)如果聯(lián)系是一對(duì)多的,則聯(lián)系的屬性處理成系的成員記錄類型中的數(shù)據(jù)項(xiàng),如部門和職員間的聯(lián)系“從屬”是一對(duì)多的,所以“從屬”的屬性“進(jìn)入本部門日期”處理成職
員記錄類型中的數(shù)據(jù)項(xiàng)(圖8.11)。圖8.10圖8.11
3)如果某個(gè)聯(lián)系轉(zhuǎn)換成一個(gè)聯(lián)系記錄類型,則聯(lián)系的屬性處理成這個(gè)記錄類型中的數(shù)據(jù)項(xiàng),如職員和項(xiàng)目之間的聯(lián)系“參加”轉(zhuǎn)換成一個(gè)記錄類型,所以“參加”的屬性“每周工作幾天”處理成記錄類型“參加”中的數(shù)據(jù)項(xiàng)(圖8.11)。
這樣,我們就確定了數(shù)據(jù)結(jié)構(gòu)圖中有哪些記錄類型和系類型,也確定了每個(gè)記錄類型中有哪些數(shù)據(jù)項(xiàng),DBTG型數(shù)據(jù)模式的邏輯設(shè)計(jì)就完成了。對(duì)于大型復(fù)雜的系統(tǒng),直接獲得整個(gè)系統(tǒng)的ER模型可
能會(huì)困難,此時(shí)ER方法可按以下三步進(jìn)行(圖8.12):
1)為每個(gè)應(yīng)用建立一個(gè)局部ER模型,即將每個(gè)應(yīng)用所
需的數(shù)據(jù)畫(huà)成一張局部ER圖。
2)將局部ER模型綜合成一個(gè)整體ER模型,此時(shí)必須注意發(fā)現(xiàn)各個(gè)局部模型之間的不一致性,如命名沖突等,還應(yīng)去除冗余的信息。
3)從整體ER.模型導(dǎo)出DBTG的數(shù)據(jù)結(jié)構(gòu)圖。
假定前面討論的工作管理系統(tǒng)有3個(gè)應(yīng)用,第1個(gè)應(yīng)用關(guān)心的是部門、職員、項(xiàng)目等對(duì)象,以及其間的“從屬”、“參加”等聯(lián)系。第2個(gè)應(yīng)用關(guān)心的是倉(cāng)庫(kù)、零件及其間的聯(lián)系“存貯”、“裝配”等。第3個(gè)應(yīng)用關(guān)心的是商店、項(xiàng)目和零件等對(duì)象及其間的聯(lián)系“供應(yīng)”。我們可以按照上述3步為這個(gè)系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫(kù):先為每個(gè)應(yīng)用分別建立局部ER模型(圖8.13(a)、(b)、(c)),然后將3個(gè)局部ER模型綜合成整體ER模型(圖8.10(a),假定這3個(gè)局部模型之間沒(méi)有不一致性),最后從整體ER模型導(dǎo)出DBTG,型數(shù)據(jù)結(jié)構(gòu)圖(圖8.10(b))。[小結(jié)]
實(shí)際使用中已經(jīng)證明了ER方法是非常有效的,它的優(yōu)點(diǎn)是:
(1)將數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程分為兩步(圖8.3(b)),相對(duì)地說(shuō),每一步都比較簡(jiǎn)單更易于進(jìn)行了。由于第一步得到的企業(yè)模式純粹是現(xiàn)實(shí)世界的反映,而與DBMS的特點(diǎn)無(wú)關(guān),所以它比用戶模式更易理解、更易維護(hù)、也更穩(wěn)定。
(2)ER模型是很自然又很簡(jiǎn)單的圖形表示,所以容易被人們接受(包括用戶和軟件人員),它可以作為企業(yè)管理人員和軟件人員之間有效的交流工具。圖8.12圖8.13建立了數(shù)據(jù)模式之后,如果發(fā)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)的性能尚不能滿足用戶的要求,則需要對(duì)數(shù)據(jù)模式進(jìn)行優(yōu)化,即適當(dāng)?shù)匦薷?、調(diào)整數(shù)據(jù)模式的結(jié)構(gòu),使數(shù)據(jù)庫(kù)系統(tǒng)的效率得以提高。
對(duì)數(shù)據(jù)模式進(jìn)行優(yōu)化,需要解決下面兩個(gè)問(wèn)題:
(1)如何衡量數(shù)據(jù)庫(kù)系統(tǒng)的效率,需要有具體的評(píng)價(jià)標(biāo)準(zhǔn)。
(2)如何對(duì)數(shù)據(jù)模式進(jìn)行修改,以獲得一些候選方案。8.3邏輯記錄存取法(LRA方法)8.3.1數(shù)據(jù)庫(kù)系統(tǒng)性能的評(píng)價(jià)標(biāo)準(zhǔn)
LRA(LogicalRecord.Access)方法由美國(guó)密執(zhí)安大學(xué)的T.Teorey和J.Fry提出,它適用于對(duì)DBTG型或?qū)哟涡蛿?shù)據(jù)模式進(jìn)行比較和評(píng)價(jià)。
LRA方法提出以LRA、TV和SS這三個(gè)數(shù)量作為比較數(shù)據(jù)庫(kù)系統(tǒng)性能的標(biāo)準(zhǔn),下面分別討論這三個(gè)量。
1.LRA(I,ogicallRecordAccess)
它是指單位時(shí)間內(nèi)所需存取的邏輯記錄個(gè)數(shù)。
第i個(gè)應(yīng)用每執(zhí)行一次所需存取的邏輯記錄個(gè)數(shù)是:
這里L(fēng)RAij是第i個(gè)應(yīng)用每執(zhí)行一次所需存取的第j個(gè)記錄類型的邏輯記錄個(gè)數(shù),N是數(shù)據(jù)庫(kù)中的記錄類型數(shù)。所以單位時(shí)間內(nèi)所有應(yīng)用需存取的邏輯記錄總數(shù)是:
這里FREQi是第i個(gè)應(yīng)用的執(zhí)行頻率,即單位時(shí)間內(nèi)這個(gè)應(yīng)用要執(zhí)行幾次,似是應(yīng)用的個(gè)數(shù)。
2.TV(TransportVolume)
是指單位時(shí)間內(nèi)所需存取的數(shù)據(jù)量(字節(jié)數(shù))。.
第i個(gè)應(yīng)用每執(zhí)行一次所需存取的數(shù)據(jù)量是:這里RECSIZE歹是第歹個(gè)記錄類型的長(zhǎng)度(字節(jié)數(shù))。所以單位時(shí)間內(nèi)所有應(yīng)用需存取的數(shù)據(jù)量總數(shù)是:
3.SS(StorageSpace)它是指數(shù)據(jù)庫(kù)所占的存貯空間,包括兩部分:一部分是數(shù)據(jù)所占的空間,另一部分是指針?biāo)嫉目臻g。數(shù)據(jù)所占的空間是’這里NREC歹是第歹個(gè)記錄類型的記錄個(gè)數(shù)。指針?biāo)嫉目臻g是:這里NRTRj是第j個(gè)記錄類型包含的指針數(shù),PTRSIZE是指針的長(zhǎng)度(字節(jié)數(shù))。由于數(shù)據(jù)的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)存在著差別,LRA、TV與SS這三個(gè)量并不能精確地估計(jì)數(shù)據(jù)庫(kù)系統(tǒng)的物理性能,它們只能用來(lái)比較幾個(gè)模式的相對(duì)性能(如果這幾個(gè)模式的存取方式是相似的),LRA、TV和SS的值越小,則可認(rèn)為這個(gè)模式的性能越好。8.3.2計(jì)算表格
LRA方法就是用表8.2的表格計(jì)算一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的LRA、TV和SS。其計(jì)算過(guò)程如下:
(1)在應(yīng)用和頻率這兩列,分別填入每個(gè)應(yīng)用的名稱和執(zhí)行頻率。
(2)根據(jù)每個(gè)應(yīng)用的具體操作,估算出它每次需存取多少個(gè)邏輯記錄,將結(jié)果填入LRAij并將總個(gè)數(shù)填入第4列。
(3)將總個(gè)數(shù)乘以該應(yīng)用的執(zhí)行頻率則得出單位時(shí)間內(nèi)每個(gè)應(yīng)用需存取的邏輯記錄總個(gè)數(shù),將結(jié)果填)LRAi。
(4)按LRA巧及記錄的長(zhǎng)度算出TVi。
(5)將LRAi這一列相加則得LRA,將TVi這一列相加則得TV,SS可按8.3.1中的公式直接算出。在計(jì)算過(guò)程中往往可以發(fā)現(xiàn)有些應(yīng)用的LRAi或TVi明顯地比其他應(yīng)用大得多,我們稱這些應(yīng)用為“主應(yīng)用”。找到主應(yīng)用就是找到了主要矛盾,只要能減少主應(yīng)用的LRAi和
TVi,整個(gè)系統(tǒng)的LRA和TV就會(huì)大大減少,所以對(duì)模式的修改圍繞著與主應(yīng)用有關(guān)的一些數(shù)據(jù)結(jié)構(gòu)來(lái)進(jìn)行將是最有效的。8.3.3步驟
運(yùn)用LRA方法的過(guò)程是反復(fù)執(zhí)行下面2步:
(1)對(duì)某個(gè)數(shù)據(jù)模式和一組應(yīng)用,用8.3.2的計(jì)算表格計(jì)算出LRA、TV和SS等三項(xiàng)指標(biāo),并找出主應(yīng)用。
(2)以減少主應(yīng)用的LRA.i或TVi為目標(biāo),對(duì)數(shù)據(jù)模式的某些部分作適當(dāng)修改,得到數(shù)據(jù)模式的另一個(gè)候選方案。
使用LRA方法帶有較大的試探性,一般要經(jīng)過(guò)多次修改、計(jì)算,并對(duì)各種可能的候選方案作反復(fù)比較后,才能獲得性能較好的數(shù)據(jù)模式。
8.3.5將給出使用LRlA方法的實(shí)例。8.3.4數(shù)據(jù)模式的改進(jìn)
為了使數(shù)據(jù)庫(kù)系統(tǒng)具有更好的性能,需要對(duì)數(shù)據(jù)模式作適當(dāng)?shù)男薷?。本?jié)以DBTG型數(shù)據(jù)模式為例,討論幾種常用的手段。
1.垂直分割
圖8.14(a)中,職員記錄為工號(hào)、姓名、職稱、住址、電話、工資等數(shù)據(jù)項(xiàng),如果經(jīng)常需要存取的只是工號(hào)、姓名和職稱等3項(xiàng),而住址、電話等用得很少,此時(shí)可將這個(gè)記錄
類型垂直分割成兩個(gè)記錄類型(圖8.14(b)),這就減少應(yīng)用程序存取的數(shù)據(jù)量。
2.水平分割
圖8.15(a)的學(xué)生記錄類型中包括有本科生和研究生兩類,如果有的應(yīng)用只關(guān)心本科生而不關(guān)心研究生,有的應(yīng)用只關(guān)心研究生而不關(guān)心本科生,此時(shí)可將學(xué)生這個(gè)記錄類型
水平分割成本科生和研究生兩個(gè)記錄類型(圖8.15(b)),這也將減少應(yīng)用程序存取的記錄個(gè)數(shù)。圖8.14圖8.15圖8.16
3.將重復(fù)組擴(kuò)充成系
圖8.16(a)的職員記錄中有一個(gè)重復(fù)組(子女名和子女年齡),如果將它改成圖8.16(b)的結(jié)構(gòu),即將重復(fù)組擴(kuò)充成系,則可減少某些應(yīng)用程序存取的數(shù)據(jù)量。
4.將系壓縮成重復(fù)組
如果將圖8.16(b)的結(jié)構(gòu)改為圖8.16(a)的結(jié)構(gòu),即將系壓縮成重復(fù)組,則可減少某些應(yīng)用程序存取的記錄個(gè)數(shù)。圖8.17
5.建立新的系
圖8.17(a)中,如果有些應(yīng)用是根據(jù)職稱來(lái)查找職員,此時(shí)建立一個(gè)新的系(圖8.17(b)),則可減少這些應(yīng)用程序存取的記錄個(gè)數(shù)。
應(yīng)該注意的是,一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)要支持多個(gè)應(yīng)用,對(duì)數(shù)據(jù)模式作了某些修改后,某個(gè)應(yīng)用的存取記錄個(gè)數(shù)或數(shù)據(jù)量可能減少了,但其他應(yīng)用的這些指標(biāo)則可能增加,一般說(shuō)來(lái),我們應(yīng)優(yōu)先考慮主應(yīng)用及一些要求快速響應(yīng)的應(yīng)用(如在線的應(yīng)用);此外,LRA、TV、SS等指標(biāo)也可能是相互沖突的,如為了減少LRA,TV卻可能要增加一些,或者SS要增加一些,所以設(shè)計(jì)人員必須根據(jù)具體情況,全面地作出權(quán)衡和決策。8.3.5實(shí)例——生產(chǎn)管理系統(tǒng)
某公司要建立一個(gè)對(duì)其下屬工廠進(jìn)行管理的系統(tǒng),該公司有50個(gè)下屬工廠,分布在40個(gè)地區(qū),職工人數(shù)共100000人。每個(gè)工廠有許多個(gè)工作站,工作站總數(shù)為500個(gè)。日常生產(chǎn)中有20種不同類型的工種。每個(gè)職工一天內(nèi)可在不同的工作站完成幾件不同類型的工作。另外,有5個(gè)社會(huì)團(tuán)體,每個(gè)工人都參加其中的一個(gè)團(tuán)體。管理系統(tǒng)要支持以下這些應(yīng)用:
T1:新職工進(jìn)入工廠時(shí),向系統(tǒng)輸入姓名、住址、出生年月、工廠名、團(tuán)體名、工號(hào)和當(dāng)天的日期。
T2:職工離職時(shí),向系統(tǒng)輸入姓名、工號(hào)、當(dāng)天日期、系統(tǒng)將離職人員的記錄存到另一個(gè)專門的文件中去。
T3:職工每完成一件工作,向系統(tǒng)輸入工號(hào)、工作站號(hào)、工種類型、日期和小時(shí)數(shù)。
T4:工資調(diào)整時(shí),修改職工的記錄。
R1:每季度為每個(gè)團(tuán)體產(chǎn)生一份報(bào)告,列出本季度該團(tuán)體的成員數(shù)、總的工作時(shí)數(shù)和總收入,還要為每個(gè)團(tuán)體提供一張清單,列出成員姓名、住址、工作天數(shù)、本季的平均月薪。
R2:每年為每個(gè)地區(qū)產(chǎn)生一份報(bào)告,列出居住在該地區(qū)的職工姓名、總收入。
R3:每月為每個(gè)地區(qū)產(chǎn)生一份報(bào)告,列出在該地區(qū)的工廠名、本月進(jìn)入的新職工數(shù),離職人數(shù),以及本月最后一天的職工數(shù)。
R4:每月給公司經(jīng)理一份各工廠的情況報(bào)告,列出工廠名、總工作時(shí)數(shù)、總工資收入,以及每個(gè)工廠每一種工種的工作時(shí)數(shù)、工種描述。
R5:每天給公司經(jīng)理一份報(bào)告,列出職工姓名、每一工種的工作時(shí)數(shù)、每一工作站的工作時(shí)數(shù)。
R6:為每個(gè)職工產(chǎn)生月工資單,列出姓名、住址和工資。
R7:人事部門需進(jìn)行在線查詢:某一職工(給出姓名)今年的工作天數(shù)、收入和工作時(shí)數(shù)。
我們可以先用ER方法設(shè)計(jì)出初始的數(shù)據(jù)模式。初始模式經(jīng)過(guò)以下3步獲得:
1)為每個(gè)應(yīng)用建立局部ER模式,共得11個(gè)局部模式,圖8.18(a)和(b)分別是應(yīng)用T2和R5的局部模型。圖8.18
2)將11個(gè)局部ER模型綜合成整體ER模型(圖8.18(c))。
3)從圖8.18(c)導(dǎo)出DBTG。型數(shù)據(jù)模式(圖8.18(d))。表8.3是其中每個(gè)記錄類型包含的數(shù)據(jù)項(xiàng)及其長(zhǎng)度。
下面我們用LRA方法對(duì)圖8.18(d)的數(shù)據(jù)模式進(jìn)行優(yōu)化。
先用表8.2的計(jì)算表格計(jì)算數(shù)據(jù)模式圖8.18(d)的LRA、TV和SS等三項(xiàng)指標(biāo),結(jié)果列在表8.4。這里我們假定每個(gè)記錄類型的存放方式都是CALC型,每個(gè)系用一個(gè)向前指
針實(shí)現(xiàn),每個(gè)指針占4個(gè)字節(jié),并以“天”作為單位時(shí)間。從表8.4看出,T3和R5的LRAi和TVi最大,所以它們可看作是主應(yīng)用。另外,因?yàn)镽7是在線的查詢,需要快速響應(yīng),所以也需引起注意,其他應(yīng)用則處于次要的地位。數(shù)據(jù)存貯空間=11.63×106字節(jié)指針空間=4.01l×106字節(jié)總空間=15.64×l06字節(jié)注:每年工作240天
數(shù)據(jù)存貯空間=l2.43×l06字節(jié)指針空間=3.2l×l06字節(jié)總空間=l5.64×l06字節(jié)
為了降低T3、R5和R7的LRAi和TVi可以對(duì)圖8.18(d)的數(shù)據(jù)模式作下列改進(jìn):
1)記錄“工作站”的字長(zhǎng)僅
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)境污染治理技術(shù)與工程合同
- 2024年特許連鎖合同:美容護(hù)膚品牌連鎖經(jīng)營(yíng)
- 船舶英語(yǔ)課程設(shè)計(jì)
- 液壓課程設(shè)計(jì)集成塊
- 統(tǒng)計(jì)表微課程設(shè)計(jì)
- 箱蓋機(jī)械制造課程設(shè)計(jì)
- 文科課程設(shè)計(jì)個(gè)人日志
- 背景圖高級(jí)課程設(shè)計(jì)
- 物體旋轉(zhuǎn)課程設(shè)計(jì)思路
- 體育行業(yè)市場(chǎng)拓展總結(jié)
- 人教版六年級(jí)上冊(cè)道德與法治知識(shí)點(diǎn)
- 期貨從業(yè)資格(期貨基礎(chǔ)知識(shí))歷年真題試卷匯編27
- 人工智能學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 北師大版(2019)必修第二冊(cè)Unit 5 Humans and nature Lesson 3 Race to the pole教學(xué)設(shè)計(jì)
- 《毛概》23版學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2024CSCO胰腺癌診療指南解讀
- 窗簾采購(gòu)?fù)稑?biāo)方案(技術(shù)方案)
- 電力安全工作規(guī)程考試試題(答案)
- 2024-2030年串番茄行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資研究報(bào)告
- 城市燃?xì)夤芫W(wǎng)改造合同
- 2024-2025學(xué)年廣東省東莞市高三思想政治上冊(cè)期末試卷及答案
評(píng)論
0/150
提交評(píng)論