八、數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)
1.數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟
按規(guī)范設(shè)計(jì)的方法可將數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下六個(gè)階段
。1)需求分析;
。2)概念結(jié)構(gòu)設(shè)計(jì);
。3)邏輯結(jié)構(gòu)設(shè)計(jì);
。4)數(shù)據(jù)庫(kù)物理設(shè)計(jì);
。5)數(shù)據(jù)庫(kù)實(shí)施;
。6)數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)。
2.需求分析
需求收集和分析是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)的第一階段。明確地把它作為數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)的第一步是十分重要的。這一階段收集到的基礎(chǔ)數(shù)據(jù)和一組數(shù)據(jù)流圖(Data Flow Diaˉgram———DFD)是下一步設(shè)計(jì)概念結(jié)構(gòu)的基礎(chǔ)。概念結(jié)構(gòu)對(duì)整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)具有深刻影響。而要設(shè)計(jì)好概念結(jié)構(gòu),就必須在需求分析階段用系統(tǒng)的觀點(diǎn)來(lái)考慮問(wèn)題、收集和分析數(shù)據(jù)及其處理。如何分析和表達(dá)用戶(hù)需求呢?在眾多的分析方法中,結(jié)構(gòu)化分析(Structured Analysis,簡(jiǎn)稱(chēng)SA方法)是一個(gè)簡(jiǎn)單實(shí)用的方法。SA方法用自頂向下、逐層分解的方式分析系統(tǒng)。用數(shù)據(jù)流圖,數(shù)據(jù)字典描述系統(tǒng)。然后把一個(gè)處理功能的具體內(nèi)容分解為若干子功能,每個(gè)子功能繼續(xù)分解,直到把系統(tǒng)的工作過(guò)程表達(dá)清楚為止。在處理功能逐步分解的同時(shí),它們所用的數(shù)據(jù)也逐級(jí)分解。形成若干層次的數(shù)據(jù)流圖。數(shù)據(jù)流圖表達(dá)了數(shù)據(jù)和處理過(guò)程的關(guān)系。處理過(guò)程的處理邏輯常常用判定表或判定樹(shù)來(lái)描述。數(shù)據(jù)字典(Data Dictionary,簡(jiǎn)稱(chēng)DD)則是對(duì)系統(tǒng)中數(shù)據(jù)的詳盡描述,是各類(lèi)數(shù)據(jù)屬性的清單。對(duì)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)來(lái)講,數(shù)據(jù)字典是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果。數(shù)據(jù)字典是各類(lèi)數(shù)據(jù)描述的集合,它通常包括以下5個(gè)部分:
。1)數(shù)據(jù)項(xiàng),是數(shù)據(jù)最小單位。
。2)數(shù)據(jù)結(jié)構(gòu),是若干數(shù)據(jù)項(xiàng)有意義的集合。
。3)數(shù)據(jù)流,可以是數(shù)據(jù)項(xiàng),也可以是數(shù)據(jù)結(jié)構(gòu)。表示某一處理過(guò)程的輸入輸出。
。4)數(shù)據(jù)存儲(chǔ),處理過(guò)程中存取的數(shù)據(jù)。常常是手工憑證、手工文檔或計(jì)算機(jī)文件。
。5)處理過(guò)程。
3.概念結(jié)構(gòu)設(shè)計(jì)
如同軟件工程中重視需求分析與規(guī)范說(shuō)明的思想一樣,數(shù)據(jù)庫(kù)設(shè)計(jì)中同樣十分重視數(shù)據(jù)分析、抽象與概念結(jié)構(gòu)的設(shè)計(jì)。概念結(jié)構(gòu)的設(shè)計(jì),是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵之一。概念結(jié)構(gòu)獨(dú)立于數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu),獨(dú)立于支持?jǐn)?shù)據(jù)庫(kù)的DBMS,也獨(dú)立于具體計(jì)算機(jī)軟件和硬件系統(tǒng)。歸納總結(jié),其主要特點(diǎn)是:
。1)能充分地反映現(xiàn)實(shí)世界,包括實(shí)體和實(shí)體之間的聯(lián)系,能滿(mǎn)足用戶(hù)對(duì)數(shù)據(jù)處理的要求,是現(xiàn)實(shí)世界的一個(gè)真實(shí)的模型,或接近真實(shí)的模型。
(2)易于理解,從而可以和不熟悉計(jì)算機(jī)的用戶(hù)交換意見(jiàn)。用戶(hù)的積極參與是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)成功與否的關(guān)鍵。
。3)易于更動(dòng)。當(dāng)現(xiàn)實(shí)世界改變時(shí)容易修改和擴(kuò)充,特別是軟件、硬件環(huán)境變化時(shí)更應(yīng)如此。
(4)易于向關(guān)系、網(wǎng)狀或?qū)哟蔚雀鞣N數(shù)據(jù)模型轉(zhuǎn)換。概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),它比任意一種數(shù)據(jù)模型更獨(dú)立于機(jī)器,更抽象,從而更加穩(wěn)定。描述概念結(jié)構(gòu)的有力工具是E-R模型。P.P.S.Chen把用E-R模型定義的概念結(jié)構(gòu)稱(chēng)為組織模式。設(shè)計(jì)概念結(jié)構(gòu)的策略有3種:
。1)自頂向下 首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化。
(2)自底向上 首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成,得到全局概念結(jié)構(gòu)。
(3)混合策略 自頂向下和自底向上相結(jié)合的方法。用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu),F(xiàn)介紹自底向上設(shè)計(jì)概念結(jié)構(gòu)的策略。按照這種策略,概念結(jié)構(gòu)的設(shè)計(jì)可按下面步驟進(jìn)行。
。1)數(shù)據(jù)抽象與局部視圖設(shè)計(jì)
E-R模型是對(duì)現(xiàn)實(shí)世界的一種抽象。一般地講,所謂抽象是對(duì)實(shí)際的人、物、事和概念的人為處理。它抽取人們關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些特性用各種抽象的概念精確地加以描述。這些概念組成了現(xiàn)實(shí)世界的一種模型表示。有3種抽象方法形成了抽象機(jī)制,來(lái)對(duì)數(shù)據(jù)進(jìn)行組織:①分類(lèi)(Classification) 定義某一概念作為現(xiàn)實(shí)世界中一組對(duì)象的類(lèi)型。這些對(duì)象具有某些共同的特性和行為。它抽象了對(duì)象值和型之間的“is a member of”的語(yǔ)義。在E-R模型中,實(shí)體型就是這種抽象。②聚集(Aggregation) 定義某一類(lèi)型的組成成分。它抽象了對(duì)象內(nèi)部屬性類(lèi)型和整體與部分之間“is a part of”的語(yǔ)義。在E-R模型中若干屬性的聚集組成了實(shí)體型,就是這種抽象。③概括(Generalization) 定義類(lèi)型之間的一種子集聯(lián)系。它抽象了類(lèi)型之間的“is a subset of”的語(yǔ)義。概括具有一個(gè)很重要的性質(zhì):繼承性。子類(lèi)繼承超類(lèi)上定義的所有抽象性質(zhì)。當(dāng)然,子類(lèi)可以增加自己的某些特殊屬性。概念結(jié)構(gòu)設(shè)計(jì)的第一步就是利用上面介紹的抽象機(jī)制對(duì)需求分析階段收集到的數(shù)據(jù)進(jìn)行組織,形成實(shí)體、實(shí)體的屬性,標(biāo)識(shí)實(shí)體的碼,確定實(shí)體之間的聯(lián)系類(lèi)型(1∶1,1∶n,n∶m),設(shè)計(jì)成部分E-R圖。
(2)視圖的集成視圖集成就是把上一步得到的各個(gè)部分E-R圖綜合成一個(gè)總體的E-R圖。視圖集成可以有兩種方式:①多個(gè)部分E-R圖一次集成。②逐步集成。用累加的方式一次集成兩個(gè)部分E-R圖。無(wú)論哪種方式,每次集成可分兩步走。第一步是合并,解決各部分E-R圖之間的沖突問(wèn)題,生成初步E-R圖。第二步是修改和重構(gòu),消除不必要的冗余,生成基本E-R圖。
4.邏輯結(jié)構(gòu)設(shè)計(jì)
邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是把概念結(jié)構(gòu)轉(zhuǎn)換為選用的DBMS所支持的數(shù)據(jù)模型的過(guò)程。設(shè)計(jì)邏輯結(jié)構(gòu)按理應(yīng)選擇對(duì)某個(gè)概念結(jié)構(gòu)最好的數(shù)據(jù)模型,然后對(duì)支持這種數(shù)據(jù)模型的各種DBMS進(jìn)行比較,選出最合適的DBMS。但實(shí)際情況常常是已給定了某臺(tái)機(jī)器,設(shè)計(jì)人員沒(méi)有選擇DBMS的余地,F(xiàn)行的DBMS一般只支持關(guān)系、網(wǎng)狀或?qū)哟稳N模型中的某一種,對(duì)某一種數(shù)據(jù)模型,各個(gè)機(jī)器系統(tǒng)又有許多不同的限制,提供不同的環(huán)境與工具。因而我們把設(shè)計(jì)過(guò)程分三步進(jìn)行。首先把概念結(jié)構(gòu)向一般的關(guān)系模型轉(zhuǎn)換,然后向特定的DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換,最后進(jìn)行模型的優(yōu)化。
(1)E-R圖向關(guān)系數(shù)據(jù)模型的轉(zhuǎn)換下面給出把E-R圖轉(zhuǎn)換為關(guān)系模型的轉(zhuǎn)換規(guī)則。
①一個(gè)實(shí)體轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。
、谝粋(gè)聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系的屬性轉(zhuǎn)換為關(guān)系的屬性。該關(guān)系的碼則有三種情況:若聯(lián)系為1∶1,則每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。若聯(lián)系為1∶n,關(guān)系的碼為n端實(shí)體的碼。若聯(lián)系為n∶m,則關(guān)系的碼為諸實(shí)體碼的組合。具有相同碼的關(guān)系模式可合并。形成了一般的數(shù)據(jù)模型后,下一步就向特定的DBMS規(guī)定的模型轉(zhuǎn)換。設(shè)計(jì)人員必須熟知所用DBMS的功能及限制。這一步轉(zhuǎn)換是依賴(lài)于機(jī)器的,不能給出一個(gè)普遍的規(guī)則。轉(zhuǎn)化后的模型必須進(jìn)行優(yōu)化。對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化是指調(diào)整數(shù)據(jù)模型的結(jié)構(gòu),以提高數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的性能。性能有動(dòng)態(tài)性能和靜態(tài)性能兩種。靜態(tài)性能分析容易實(shí)現(xiàn)。根據(jù)應(yīng)用要求,選出合適的模型是一項(xiàng)復(fù)雜的工作。
。2)規(guī)范化理論的應(yīng)用規(guī)范化理論是數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)的指南和工具,具體地講可應(yīng)用在下面幾個(gè)具體的方面:
第一,在數(shù)據(jù)分析階段用數(shù)據(jù)依賴(lài)的概念分析和表示各數(shù)據(jù)項(xiàng)之間的關(guān)系。
第二,在設(shè)計(jì)概念結(jié)構(gòu)階段,用規(guī)范化理論為工具消除初步E-R圖中冗余的聯(lián)系。
第三,由E-R圖向數(shù)據(jù)模型轉(zhuǎn)換過(guò)程中用模式分解的概念和算法指導(dǎo)設(shè)計(jì),F(xiàn)在,不管選用的DBMS是支持哪種數(shù)據(jù)模型的,均先把概念結(jié)構(gòu)向關(guān)系模型轉(zhuǎn)換。然后,充分運(yùn)用規(guī)范化理論的成果優(yōu)化關(guān)系數(shù)據(jù)庫(kù)模式的設(shè)計(jì)。
5.數(shù)據(jù)庫(kù)的物理設(shè)計(jì)
物理設(shè)計(jì)的內(nèi)容主要包括:
。1)確定數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) 從DBMS所提供的存儲(chǔ)結(jié)構(gòu)中選取一種合適的加以實(shí)現(xiàn)。確定存儲(chǔ)結(jié)構(gòu)的主要因素是存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)三個(gè)方面。設(shè)計(jì)者常常要對(duì)這些因素進(jìn)行權(quán)衡。一般的DBMS也總是具有一定靈活性供你選擇。例如,若引入某些冗余數(shù)據(jù),則可能減少物理I/O次數(shù)提高檢索效率。相反節(jié)約存儲(chǔ)空間檢索代價(jià)就會(huì)增加。當(dāng)然應(yīng)該盡量尋找優(yōu)化方法,使這三方面的性能都較好。折衷有時(shí)是必須的。
(2)存取路徑的選擇和調(diào)整 數(shù)據(jù)庫(kù)必須支持多個(gè)用戶(hù)的多種應(yīng)用,因而必須提供對(duì)數(shù)據(jù)庫(kù)的多個(gè)存取入口,也就是對(duì)同一數(shù)據(jù)存儲(chǔ)要提供多條存取路徑。物理設(shè)計(jì)的任務(wù)應(yīng)確定建立哪些存取路徑。設(shè)計(jì)者應(yīng)該進(jìn)行定量的分析,根據(jù)計(jì)算結(jié)果確定存取路徑。
。3)確定數(shù)據(jù)存放位置 首先按數(shù)據(jù)的應(yīng)用情況劃分為不同的組,然后確定存放位置。一般的應(yīng)把數(shù)據(jù)的易變部分和穩(wěn)定部分分開(kāi),把經(jīng)常存取和不常存取的數(shù)據(jù)分開(kāi)。經(jīng)常存取或存取時(shí)間要求高的記錄應(yīng)存放在高速存儲(chǔ)器上,如硬盤(pán)。存取頻率小或存取時(shí)間要求低的放在低速存儲(chǔ)器上,如軟盤(pán)磁帶。對(duì)于同一數(shù)據(jù)文件也可根據(jù)情況進(jìn)行水平劃分或垂直劃分。
。4)確定存儲(chǔ)分配 許多DBMS提供了存儲(chǔ)分配的參數(shù)供設(shè)計(jì)者物理優(yōu)化處理用。例如溢出空間的大小和分布參數(shù),塊的長(zhǎng)度,塊因子的大小,裝填因子,緩沖區(qū)的大小和個(gè)數(shù)等等,它們都要在物理設(shè)計(jì)中確定。這些參數(shù)的大小影響存取時(shí)間和存儲(chǔ)空間的分配。物理設(shè)計(jì)過(guò)程需要對(duì)時(shí)間、空間效率、維護(hù)代價(jià)和各種用戶(hù)要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案。在實(shí)施數(shù)據(jù)庫(kù)前對(duì)這些方案進(jìn)行方案進(jìn)行細(xì)致的評(píng)價(jià),以選擇一個(gè)較優(yōu)的方案是十分必要的。
6.數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的實(shí)施和維護(hù)
對(duì)數(shù)據(jù)庫(kù)的物理設(shè)計(jì)初步評(píng)價(jià)完成后就可建立數(shù)據(jù)庫(kù)了。數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)實(shí)施對(duì)應(yīng)于軟件工程的編碼、調(diào)試階段。設(shè)計(jì)人員運(yùn)用DBMS提供的數(shù)據(jù)定義語(yǔ)言將邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果嚴(yán)格地描述出來(lái),成為DBMS可接受的源代碼。經(jīng)過(guò)調(diào)試產(chǎn)生目標(biāo)模式。然后組織數(shù)據(jù)入庫(kù)。組織數(shù)據(jù)入庫(kù)是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)實(shí)施階段最主要的工作。
希望與更多計(jì)算機(jī)等級(jí)考試的網(wǎng)友交流,請(qǐng)進(jìn)入計(jì)算機(jī)等級(jí)考試論壇
更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)等級(jí)考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |