數(shù)據(jù)庫設(shè)計(jì)的過程:需求分析階段;概念結(jié)構(gòu)設(shè)計(jì)階段亮蛔;邏輯結(jié)構(gòu)設(shè)計(jì)階段究流;數(shù)據(jù)庫物理設(shè)計(jì)階段动遭;數(shù)據(jù)庫實(shí)施階段厘惦;數(shù)據(jù)庫運(yùn)行和維護(hù)階段宵蕉。設(shè)計(jì)一個(gè)完善的數(shù)據(jù)庫應(yīng)用系統(tǒng)往往是上述六個(gè)階段的不斷反復(fù)。
需求分析的任務(wù)别智。通過詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象薄榛,充分了解原系統(tǒng)工作概況,明確用戶各種需求挪钓;在此基礎(chǔ)上確定新系統(tǒng)的功能碌上,必須充分考慮今后可能的擴(kuò)充和改變浦徊,不能僅僅按當(dāng)前應(yīng)用需求來設(shè)計(jì)數(shù)據(jù)庫盔性。
需求分析的重點(diǎn)是調(diào)查冕香、收集與分析用戶在數(shù)據(jù)管理中的信息要求、處理要求突那、安全性與完整性要求愕难。信息要求猫缭,用戶需要從數(shù)據(jù)庫獲得信息的內(nèi)容與性質(zhì)壹店;由用戶的信息要求可以導(dǎo)出數(shù)據(jù)要求茫打,即在數(shù)據(jù)庫中需要存儲(chǔ)哪些數(shù)據(jù)老赤。
確定用戶最終需求的難點(diǎn):用戶缺少計(jì)算機(jī)知識(shí)抬旺,需求往往不斷變化开财;設(shè)計(jì)人員缺少用戶的專業(yè)知識(shí),不易理解用戶的真正需求碾褂;新的硬件历葛、軟件技術(shù)的出現(xiàn)會(huì)使用戶需求發(fā)生變化恤溶。
需求分析:調(diào)查組織機(jī)構(gòu)總體情況,熟悉業(yè)務(wù)活動(dòng)鸠天,明確用戶需求稠集,確定系統(tǒng)邊界剥纷。
數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合筷畦;是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果刺洒;在數(shù)據(jù)庫設(shè)計(jì)中占有很重要的地位逆航。數(shù)據(jù)字典的內(nèi)容:數(shù)據(jù)項(xiàng);數(shù)據(jù)結(jié)構(gòu)拇惋;數(shù)據(jù)流撑帖;數(shù)據(jù)存儲(chǔ)胡嘿;處理過程钳踊。
數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位。數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系缴罗,一個(gè)數(shù)據(jù)結(jié)構(gòu)可由若干個(gè)數(shù)據(jù)項(xiàng)組成面氓,也可由若干個(gè)數(shù)據(jù)結(jié)構(gòu)組成侧但,或混合組成。數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂狡ㄒ?shù)據(jù)存儲(chǔ)是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方酿箭,也是數(shù)據(jù)流的來源和去向之一缭嫡。處理過程的具體處理邏輯一般用判定表或判定數(shù)來描述妇蛀,數(shù)據(jù)字典中只需要描述處理過程的說明性信息笤成。
概念結(jié)構(gòu)設(shè)計(jì)炕泳,將需求分析得到的用戶應(yīng)用需求抽象為信息結(jié)構(gòu)即概念模型的過程就是概念結(jié)構(gòu)設(shè)計(jì)培遵。概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),它比數(shù)據(jù)模型更獨(dú)立于機(jī)器嗡呼、更抽象晤锥,從而更加穩(wěn)定矾瘾。概念結(jié)構(gòu)設(shè)計(jì)是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵箭启。描述概念模型的工具:E-R圖傅寡。
設(shè)計(jì)概念結(jié)構(gòu)的四類方法:自頂向下荐操,首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化宅倒;自底向上拐迁,首先定義各局部應(yīng)用的概念結(jié)構(gòu)线召,然后集成起來多矮,得到全局概念結(jié)構(gòu)塔逃;逐步擴(kuò)張患雏,首先定義最重要的核心概念機(jī)構(gòu),然后向外擴(kuò)充丙挽,以滾雪球方式逐步生成其他概念結(jié)構(gòu)颜阐,直至總體概念結(jié)構(gòu)凳怨;混合策略,將自頂向下和自底向上組合紫新,用自頂向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架芒率,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)偶芍。
自底向上設(shè)計(jì)概念結(jié)構(gòu)的步驟:第一步匪蟀,抽象數(shù)據(jù)并設(shè)計(jì)局部視圖宰僧;第二步撒桨,集成局部視圖凤类,得到全局概念結(jié)構(gòu)。
數(shù)據(jù)抽象佃延。三種常用抽象:分類履肃,抽象了對(duì)象值和型之間的“is member of”的語義尺棋;聚集绵跷,抽象了對(duì)象內(nèi)部類型和成分之間“is part of”的語義碾局;概括净当,抽象了類型之間的“is subset of”的語義蕴潦。
設(shè)計(jì)分E-R圖的步驟:選擇局部應(yīng)用潭苞;逐一設(shè)計(jì)分E-R圖萄传。設(shè)計(jì)分E-R圖時(shí),首先需要根據(jù)系統(tǒng)的具體情況振诬,在多層的數(shù)據(jù)流圖中選擇一個(gè)適當(dāng)層次的數(shù)據(jù)流圖赶么,讓這組圖中每一部分對(duì)應(yīng)一個(gè)局部應(yīng)用辫呻,然后以這一層次的數(shù)據(jù)流圖為出發(fā)點(diǎn),設(shè)計(jì)分E-R圖祟昭。
逐一設(shè)計(jì)分E-R圖篡悟。標(biāo)定局部應(yīng)用中的實(shí)體搬葬、屬性急凰、碼猜年,實(shí)體間的聯(lián)系码倦。實(shí)體:現(xiàn)實(shí)世界中一組具有某些共同特性和行為的對(duì)象就可以抽象為一個(gè)實(shí)體。屬性:對(duì)象類型的組成成分可以抽象為實(shí)體的屬性勿璃。實(shí)體與屬性是相對(duì)而言的补疑。一般原則:屬性不能再具有需要描述的性質(zhì)莲组,即屬性必須是不可分的數(shù)據(jù)項(xiàng)锹杈,不能再由另一些屬性組成;屬性不能與其他實(shí)體具有聯(lián)系邪码,聯(lián)系只發(fā)生在實(shí)體之間闭专。
視圖集成的兩種方式:一次集成影钉,一次集成多個(gè)分E-R圖平委,通常用于局部視圖比較簡(jiǎn)單時(shí)杖小;逐步積累式予权,首先集成兩個(gè)局部視圖扫腺,以后每次講一個(gè)新的局部視圖集成進(jìn)來。
集成E-R圖的步驟攒至。合并迫吐,消除沖突志膀;修改與重構(gòu),消除不必要的冗余烫止。冗余的數(shù)據(jù)是指可由基本數(shù)據(jù)導(dǎo)出的數(shù)據(jù)馆蠕,冗余的聯(lián)系是指可由其他聯(lián)系導(dǎo)出的聯(lián)系惊奇。冗余數(shù)據(jù)和冗余聯(lián)系容易破壞數(shù)據(jù)庫的完整性赊时,給數(shù)據(jù)庫維護(hù)增加困難。消除不必要的冗余后的初步E-R圖稱為基本E-R圖。
消除冗余的方法竭缝。分析方法抬纸,以數(shù)據(jù)字典和數(shù)據(jù)流圖為依據(jù)湿故,根據(jù)數(shù)據(jù)字典中關(guān)于數(shù)據(jù)項(xiàng)之間邏輯關(guān)系的說明來消除冗余膜蛔。如果是為了提高效率皂股,人為的保留了一些冗余數(shù)據(jù)呜呐,則應(yīng)把數(shù)據(jù)字典中數(shù)據(jù)關(guān)聯(lián)的說明作為完整性約束條件。函數(shù)依賴的概念提供了消除冗余聯(lián)系的形式化工具洋机。
為了能夠用某一DBMS實(shí)現(xiàn)用戶需求绷旗,還必須將概念結(jié)構(gòu)進(jìn)一步轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)模型,這正是數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)所要完成的任務(wù)颠通。步驟:將概念結(jié)構(gòu)轉(zhuǎn)化為一般的關(guān)系顿锰、網(wǎng)狀硼控、層次模型胳赌;將轉(zhuǎn)化來的的關(guān)系疑苫、網(wǎng)狀捍掺、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換;對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化曲横。
E-R圖向關(guān)系模型轉(zhuǎn)換禾嫉。將實(shí)體蚊丐、實(shí)體的屬性和實(shí)體之間的聯(lián)系轉(zhuǎn)化為關(guān)系模式。一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式尊惰,關(guān)系的屬性:實(shí)體型的屬性弄屡;關(guān)系的碼:實(shí)體型的碼鞋诗。
一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式削彬,關(guān)系的屬性:與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性;關(guān)系的碼:各實(shí)體碼的組合壶笼。
一個(gè)1:n的聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式覆劈,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式:關(guān)系的屬性炮障,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性胁赢;關(guān)系的碼白筹,n端實(shí)體的碼徒河。與n端對(duì)應(yīng)的關(guān)系模式合并:關(guān)系的屬性,在n端關(guān)系中加入1端關(guān)系的碼和聯(lián)系本身的屬性;關(guān)系的碼:不變棒厘。第二種方法可以減少系統(tǒng)中的關(guān)系個(gè)數(shù)下隧,一般情況下更傾向于采用這種方法淆院。
一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式土辩,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式:關(guān)系的屬性各墨,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性贬堵;關(guān)系的候選碼,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼叉跛。與某一端對(duì)應(yīng)的關(guān)系模式合并:合并后關(guān)系的屬性筷厘,加入對(duì)應(yīng)關(guān)系的碼和聯(lián)系本身的屬性伟桅;合并后關(guān)系的碼楣铁,不變。
三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式赫冬。關(guān)系的屬性劲厌,與該多元聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性听隐;關(guān)系的碼,各實(shí)體碼的組合风范。
同一實(shí)體集的實(shí)體間的聯(lián)系硼婿,即自聯(lián)系寇漫,也可按上述1:1州胳,1:n钦勘,m:n三種情況分別處理彻采。
具有相同碼的關(guān)系模式可合并。目的岭粤,減少系統(tǒng)中的關(guān)系個(gè)數(shù)剃浇。合并方法虎囚,將其中一個(gè)關(guān)系模式的全部屬性加入到另一個(gè)關(guān)系模式中淘讥,然后去掉其中的同義屬性,并適當(dāng)調(diào)整屬性的次序窒朋。
優(yōu)化數(shù)據(jù)模型的方法:確定數(shù)據(jù)依賴侥猩;對(duì)于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理欺劳,消除冗余的聯(lián)系杰标;按照數(shù)據(jù)依賴的理論對(duì)關(guān)系模式逐一進(jìn)行分析,考查是否存在部分函數(shù)依賴媒区、傳遞函數(shù)依賴袜漩、多值依賴等宙攻,確定各關(guān)系模式分別屬于第幾范式;按照需求分析得到的各種應(yīng)用對(duì)數(shù)據(jù)處理的要去递惋,分析對(duì)于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否要對(duì)它們進(jìn)行合并或分解睛廊;按照需求分析階段得到的各種應(yīng)用對(duì)數(shù)據(jù)處理的要求超全,對(duì)關(guān)系模式進(jìn)行必要的分解或合并,以提高數(shù)據(jù)操作的效率和存儲(chǔ)空間的利用率疏遏。
設(shè)計(jì)用戶子模式時(shí)更應(yīng)該注重考慮用戶的習(xí)慣與方便挂疆。包括三個(gè)方面:使用更符合用戶習(xí)慣的別名改览;針對(duì)不同級(jí)別的用戶定義不同的外模式,以滿足系統(tǒng)對(duì)安全性的要求缤言;簡(jiǎn)化用戶對(duì)系統(tǒng)的使用宝当。
為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計(jì)胆萧。
數(shù)據(jù)庫物理設(shè)計(jì)的步驟:確定數(shù)據(jù)庫的物理結(jié)構(gòu)庆揩;對(duì)物理結(jié)構(gòu)進(jìn)行評(píng)價(jià),評(píng)價(jià)的重點(diǎn)是時(shí)間和空間效率跌穗;如果評(píng)價(jià)結(jié)果滿足設(shè)計(jì)要求則可進(jìn)入到物理實(shí)施階段订晌,否則,重新設(shè)計(jì)或修改物理結(jié)構(gòu)蚌吸。
選擇物理數(shù)據(jù)庫設(shè)計(jì)所需參數(shù)羹唠。數(shù)據(jù)庫查詢事物:查詢的關(guān)系缝彬;查詢條件所涉及的屬性;連接條件所涉及的屬性;查詢的投影屬性互纯。數(shù)據(jù)更新事務(wù):被更新的關(guān)系辣往;每個(gè)關(guān)系上的更新操作條件所涉及的屬性;修改操作要改變的屬性值十偶。每個(gè)事務(wù)在各關(guān)系上運(yùn)行的頻率和性能要求狮崩。
關(guān)系模式存取方法選擇。數(shù)據(jù)庫系統(tǒng)是多用戶共享的系統(tǒng),對(duì)同一個(gè)關(guān)系建立多條存取路徑才能滿足多用戶的多種應(yīng)用要求恬试。DBMS常用存取方法:索引方法,主要是針對(duì)B+數(shù)索引方法越锈;聚簇方法;HASH方法。
確定數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)蜓洪。確定數(shù)據(jù)庫物理結(jié)構(gòu)的內(nèi)容:確定數(shù)據(jù)的存放位置和存儲(chǔ)結(jié)構(gòu);確定系統(tǒng)配置恐仑。
確定數(shù)據(jù)的存放位置鉴逞。影響數(shù)據(jù)存放位置和存儲(chǔ)結(jié)構(gòu)的因素:硬件環(huán)境壳猜;應(yīng)許需求。基本原則:根據(jù)應(yīng)用情況將 易變部分與穩(wěn)定部分倾鲫;存取頻率較高部分與存取頻率較低部分 分開存放磕道,以提高系統(tǒng)性能。
確定系統(tǒng)配置。DBMS產(chǎn)品一般都提供了一些存儲(chǔ)分配參數(shù):同時(shí)使用數(shù)據(jù)庫的用戶數(shù)啡彬;同時(shí)打卡的數(shù)據(jù)庫對(duì)象數(shù)往踢;使用的緩沖區(qū)長(zhǎng)度瘦癌、個(gè)數(shù)斤寇;時(shí)間片大心选杯道;數(shù)據(jù)庫大小;裝填因子;鎖的數(shù)目报账;等等芽隆。系統(tǒng)為這些變量賦予了合理的缺省值,但不一定適合每一種應(yīng)用環(huán)境脓恕,需要根據(jù)應(yīng)用環(huán)境確定參數(shù)值。物理設(shè)計(jì)時(shí)對(duì)系統(tǒng)配置變量的調(diào)整只是初步的,在系統(tǒng)運(yùn)行時(shí)還要根據(jù)系統(tǒng)實(shí)際運(yùn)行情況做進(jìn)一步調(diào)整超凳。
評(píng)價(jià)物理結(jié)構(gòu)擎析。評(píng)價(jià)內(nèi)容,對(duì)數(shù)據(jù)庫物理設(shè)計(jì)過程產(chǎn)生的多種方案進(jìn)行細(xì)致評(píng)價(jià)迷雪,從中選擇較優(yōu)的方案作為數(shù)據(jù)庫的物理結(jié)構(gòu)扰柠。評(píng)價(jià)方法:定量估算各種方案踱承,存儲(chǔ)空間采桃,存取時(shí)間,維護(hù)代價(jià);對(duì)估算結(jié)果進(jìn)行權(quán)衡臼节、比較垢夹,選擇出一個(gè)較優(yōu)的合理的物理結(jié)構(gòu);如果結(jié)構(gòu)不符合用戶需求监署,需要修改涉及簇捍。
定義數(shù)據(jù)庫結(jié)構(gòu)搞隐。確定了數(shù)據(jù)庫的邏輯結(jié)構(gòu)與物理結(jié)構(gòu)之后,可以用所選用的DBMS提供的數(shù)據(jù)定義語言DDL辉巡,來嚴(yán)格描述數(shù)據(jù)庫結(jié)構(gòu)。
數(shù)據(jù)裝載。數(shù)據(jù)庫結(jié)構(gòu)建立好后衣厘,就可以向數(shù)據(jù)庫中裝載數(shù)據(jù)了伦吠。組織數(shù)據(jù)入庫是數(shù)據(jù)庫實(shí)施階段最主要的工作荷愕。數(shù)據(jù)裝載方法:人工方法,計(jì)算機(jī)輔助數(shù)據(jù)入庫恢共。
人工方法,適用于小型系統(tǒng)罪治。步驟:篩選數(shù)據(jù);轉(zhuǎn)換數(shù)據(jù)格式喇完;輸入數(shù)據(jù)坏逢;校驗(yàn)數(shù)據(jù)事秀。計(jì)算機(jī)輔助數(shù)據(jù)入庫,適用于中大型系統(tǒng)涛贯。步驟:篩選數(shù)據(jù);輸入數(shù)據(jù)茁影;校驗(yàn)數(shù)據(jù);轉(zhuǎn)換數(shù)據(jù)仍侥;綜合數(shù)據(jù)砸紊。
編制與調(diào)試應(yīng)用程序。數(shù)據(jù)庫應(yīng)用程序的設(shè)計(jì)應(yīng)該與數(shù)據(jù)設(shè)計(jì)并行進(jìn)行否淤。
數(shù)據(jù)庫試運(yùn)行啰扛。數(shù)據(jù)庫試運(yùn)行稱為聯(lián)合調(diào)試续徽,主要工作包括:功能測(cè)試,實(shí)際運(yùn)行應(yīng)用程序概页,執(zhí)行對(duì)數(shù)據(jù)庫的各種操作籽御,測(cè)試各種功能;性能測(cè)試惰匙,測(cè)量系統(tǒng)的性能指標(biāo)技掏,分析是否符合設(shè)計(jì)目標(biāo)。
數(shù)據(jù)庫性能指標(biāo)的測(cè)量项鬼。實(shí)際測(cè)量系統(tǒng)的各種性能指標(biāo)哑梳,如果結(jié)果不符合設(shè)計(jì)目標(biāo),需要返回物理設(shè)計(jì)階段绘盟,調(diào)整物理結(jié)構(gòu)鸠真,修改參數(shù);有時(shí)甚至需要返回邏輯設(shè)計(jì)階段龄毡,調(diào)整邏輯結(jié)構(gòu)吠卷。
數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù)。在數(shù)據(jù)庫試運(yùn)行階段沦零,系統(tǒng)還不穩(wěn)定祭隔,硬、軟件故障隨時(shí)可能發(fā)生路操;操作人員對(duì)新系統(tǒng)不熟悉疾渴,誤操作不可避免;必須做好數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù)工作屯仗,盡量減少對(duì)數(shù)據(jù)庫的破壞搞坝。
數(shù)據(jù)庫運(yùn)行與維護(hù)。數(shù)據(jù)庫試運(yùn)行結(jié)果符合設(shè)計(jì)目標(biāo)后祭钉,就可以真正投入運(yùn)行了瞄沙。對(duì)數(shù)據(jù)庫設(shè)計(jì)進(jìn)行評(píng)價(jià)己沛、調(diào)整慌核、修改等維護(hù)工作是一個(gè)長(zhǎng)期任務(wù),也是設(shè)計(jì)工作的繼續(xù)和提高:應(yīng)用環(huán)境在不斷變化申尼;數(shù)據(jù)庫運(yùn)行過程中物理存儲(chǔ)會(huì)不斷變化垮卓。
數(shù)據(jù)庫運(yùn)行階段,對(duì)數(shù)據(jù)庫經(jīng)常性的維護(hù)工作主要由DBA完成师幕,包括:數(shù)據(jù)的轉(zhuǎn)儲(chǔ)和恢復(fù)粟按;數(shù)據(jù)庫的完整性诬滩、安全性控制;數(shù)據(jù)庫性能的監(jiān)督灭将、分析和改進(jìn)疼鸟;數(shù)據(jù)庫的重組織和重構(gòu)造。數(shù)據(jù)庫運(yùn)行一段時(shí)間后庙曙,由于記錄的不斷增空镜、刪、改捌朴,會(huì)使數(shù)據(jù)庫物理存儲(chǔ)變化吴攒,降低存儲(chǔ)空間利用率和存取效率,需要重組織砂蔽;數(shù)據(jù)庫應(yīng)用環(huán)境發(fā)生變化洼怔,會(huì)導(dǎo)致實(shí)體及實(shí)體間的聯(lián)系發(fā)生變化,使原有的數(shù)據(jù)庫設(shè)計(jì)不能很好地滿足新的需求左驾,通過 增加新的應(yīng)用或新的實(shí)體镣隶,取消某些已有應(yīng)用,改變某些已有應(yīng)用 來進(jìn)行數(shù)據(jù)庫的重構(gòu)造什荣。