前言
數(shù)據(jù)庫技術(shù)是計(jì)算機(jī)科學(xué)技術(shù)中發(fā)展最快,應(yīng)用最廣的技術(shù)之一,它是專門研究如何科學(xué)的組織和存儲(chǔ)數(shù)據(jù),如何高效地獲取和處理數(shù)據(jù)的技術(shù)。它已成為各行各業(yè)存儲(chǔ)數(shù)據(jù)、管理信息、共享資源和決策支持的最先進(jìn),最常用的技術(shù)。
當(dāng)前互聯(lián)網(wǎng)+與大數(shù)據(jù),一切都建立在數(shù)據(jù)庫之上,以數(shù)據(jù)說話,首先需要聚集數(shù)據(jù)、分析數(shù)據(jù)和管理數(shù)據(jù),數(shù)據(jù)庫技術(shù)已成為各種計(jì)算機(jī)系統(tǒng)的核心技術(shù)。數(shù)據(jù)庫相關(guān)知識(shí)也已成為每個(gè)人必須掌握的知識(shí)。
一、關(guān)系數(shù)據(jù)庫規(guī)范理論
1.1 什么是“好” 的關(guān)系模式?
某學(xué)校要建立一個(gè)數(shù)據(jù)庫以描述學(xué)生選修課程的情況。由現(xiàn)實(shí)世界的已知事實(shí)可以得到如下對應(yīng)關(guān)系:每一名學(xué)生可以選修多門課程,每一門課程可以被多名學(xué)生所選修;每一名學(xué)生選修一門課程都會(huì)有一個(gè)成績。
針對上述情況可能設(shè)計(jì)出以下兩種關(guān)系模式
- 只產(chǎn)生一個(gè)關(guān)系模式
學(xué)生選課關(guān)系模式(學(xué)號(hào),姓名,性別,年齡,系別,課程號(hào),課程名,教師名,學(xué)分,成績)
- 產(chǎn)生三個(gè)關(guān)系模式
學(xué)生關(guān)系模式(學(xué)號(hào),姓名,性別,年齡,系別)
課程關(guān)系模式(課程號(hào),課程名,教師名,學(xué)分)
選課關(guān)系模式(學(xué)號(hào),課程號(hào),成績)
比較分析這兩種關(guān)系模式,發(fā)現(xiàn)第一種設(shè)計(jì)方法可能帶來如下問題:
- 數(shù)據(jù)冗余
- 更新異常(Update Anomalies)
- 插入異常(Insertion Anomalies)
- 刪除異常(Deletion Anomalies)
出現(xiàn)的原因: 由存在于模式中的某些數(shù)據(jù)依賴引起的。我們可以用規(guī)范化理論改造關(guān)系模式來消除其中不合適的數(shù)據(jù)依賴
1.2 數(shù)據(jù)依賴
數(shù)據(jù)依賴是一個(gè)關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系,這種約束關(guān)系是通過屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間的相互關(guān)系。數(shù)據(jù)依賴有多種類型,常用的數(shù)據(jù)依賴有函數(shù)依賴和多值依賴,其中函數(shù)依賴是最重要也是最基本的一種數(shù)據(jù)依賴
1.2.1 函數(shù)依賴
函數(shù)依賴普遍地存在于現(xiàn)實(shí)生活中,它反映屬性或?qū)傩越M合之間相互依存、相互制約的關(guān)系
什么是函數(shù)依賴?
設(shè)R(U)是屬性集U上的關(guān)系模式,X與Y是U的子集,r是R(U)的任意一個(gè)可能的關(guān)系(即一個(gè)二維表)。如果對于r中的任意兩個(gè)元組(即兩個(gè)記錄,或兩行數(shù)據(jù))t和s,由t[X]=s[X]導(dǎo)致t[Y]=s[Y],則稱X函數(shù)決定Y,或稱Y函數(shù)依賴于X,記作X→Y。
函數(shù)依賴的相關(guān)術(shù)語和記號(hào)如下:
- 若X→Y,則稱X為決定因素。
- 若X→Y,Y→X,則記作X←→Y。
也就是說只要在X上取值相等,則在Y上的取值一定是相等的
1.2.2 函數(shù)依賴的分類
關(guān)系數(shù)據(jù)庫中函數(shù)依賴主要有以下幾類:
平凡函數(shù)依賴和非平凡函數(shù)依賴
完全函數(shù)依賴和部分函數(shù)依賴
傳遞函數(shù)依賴
1.2.2.1 平凡函數(shù)依賴和非平凡函數(shù)依賴
設(shè)R(U)是屬性集U上的關(guān)系模式,若對于任何X、Y∈U,有X→Y且Y?X,則稱X→Y是非平凡的函數(shù)依賴。反之,如果Y包含于X,則稱X→Y是平凡的函數(shù)依賴。
例如
在學(xué)生關(guān)系模式(學(xué)號(hào),姓名,年齡,性別,所在系別)中,學(xué)號(hào)→性別,(學(xué)號(hào),姓名)→年齡,均為非平凡函數(shù)依賴。(學(xué)號(hào),姓名)→姓名,為平凡函數(shù)依賴。
1.2.2.2 完全函數(shù)依賴和部分函數(shù)依賴
設(shè)R(U)是屬性集U上的關(guān)系模式,如果X→Y,并且對于X的任何一個(gè)真子集X′,都不存在X′→Y,則稱X→Y是一個(gè)完全函數(shù)依賴,即Y完全函數(shù)依賴于X,用F表示。
如果存在X′→Y成立,則稱X→Y是一個(gè)部分函數(shù)依賴,即Y部分函數(shù)依賴于X,用P表示。
例如
在學(xué)生關(guān)系模式(學(xué)號(hào),姓名,年齡,性別,所在系別)中:
(學(xué)號(hào),姓名)→年齡,為部分函數(shù)依賴。因?yàn)椋▽W(xué)號(hào),姓名)屬性組合中存在真子集學(xué)號(hào),使得“學(xué)號(hào)→年齡”也成立,所以它是部分函數(shù)依賴。
學(xué)號(hào)→年齡,為完全函數(shù)依賴。
簡答理解就是說 屬性組 X 的所有屬性一起(即完全)才能決定屬性 Y,去掉任何一個(gè)屬性都不行。相反的,部分函數(shù)依賴就是說 屬性組 X 中的 部分屬性就可以決定 Y ,用不著全部。
1.2.2.3 傳遞函數(shù)依賴
設(shè)R(U)是屬性集U上的關(guān)系模式,如果X→Y,Y→Z,Y?X,Z?X,Z?Y并且不存在Y→X,則稱X→Z是一個(gè)傳遞函數(shù)依賴,即Z傳遞函數(shù)依賴于X。
例如
在職工關(guān)系模式(職工編號(hào),姓名,所在車間,車間主任)中,職工編號(hào)→所在車間,所在車間→車間主任,并且不存在所在車間→職工編號(hào),則車間主任傳遞函數(shù)依賴于職工編號(hào)。
注意上述定義中的條件不存在Y→X。如果不加上這一限制,當(dāng)X→Y時(shí)允許Y→X,則X←→Y。而在X←→Y的條件下,Y→Z就等于X→Z。這樣X就直接函數(shù)決定Z,而不是通過Y傳遞決定Z了,即非傳遞函數(shù)依賴。
1.3 碼
1.3.1 候選碼
設(shè)K為R(U) 中的屬性或?qū)傩越M合。若K完全依賴于U,則K稱為R的一個(gè)候選碼(CandidateKey)
對于關(guān)系 R(U) 中的屬性(組)K,如果 U 完全函數(shù)依賴于 K,即 K 中的所有屬性一起才能決定 U,則稱 K 為 R(U) 的候選鍵
1.3.2 主碼
若關(guān)系模式R有多個(gè)候選碼,則選定其中的一個(gè)做為主碼(Primary key)。
1.3.3 主屬性與非主屬性
包含在任何一個(gè)候選碼中的屬性 ,稱為主屬性 (Prime attribute)
不包含在任何碼中的屬性稱為非主屬性(Nonprime attribute)或非碼屬性(Non-key attribute)
例如
- S(Sno, Sdept, Sage),單個(gè)屬性Sno是碼
- SC(Sno, Cno, Grade)中,(Sno, Cno)是碼
1.4 范式
在關(guān)系數(shù)據(jù)庫中,關(guān)系模式設(shè)計(jì)的好壞取決于它的函數(shù)依賴是否滿足特定的要求。滿足特定要求的模式稱為范式,滿足不同程度要求的為不同范式。
一般地,關(guān)系模式R為第幾范式就可以寫成R∈xNF。對于各種范式之間的聯(lián)系有5NF? 4NF?BCNF ?3NF?2NF?1NF成立。
通過關(guān)系模式分解,可以將一個(gè)低一級范式的關(guān)系模式轉(zhuǎn)換為若干個(gè)高一級范式的關(guān)系模式的集合,這種過程就叫規(guī)范化
1.4.1 第一范式
如果關(guān)系模式R中的每一個(gè)屬性都是不可分解的,則稱R屬于第一范 式,記作R∈1NF。
例如
設(shè)關(guān)系模式R(系別名稱,高級職稱人數(shù))表示某學(xué)校系別的基本信息,假設(shè)系別信息狀況如表
可以看出,“高級職稱人數(shù)”屬性是可以分解的,所以R不滿足1NF。解決問題的辦法是:將“高級職稱人數(shù)”屬性拆開,形成關(guān)系模式R1(系別名稱、教授人數(shù)、副教授人數(shù))。
顯然,此時(shí)關(guān)系模式R1中的每一個(gè)屬性列都是不可再分的,所以R1∈1NF
1.4.2 第二范式
如果關(guān)系模式R∈1NF,且每一個(gè)非主屬性都完全函數(shù)依賴于候選碼,則稱R屬于第二范式,記作R∈2NF。
例如
設(shè)關(guān)系模式R(倉庫號(hào),設(shè)備號(hào),數(shù)量,地點(diǎn))表示倉庫設(shè)備的存儲(chǔ)情況。候選碼是(倉庫號(hào),設(shè)備號(hào))屬性組合,由于關(guān)系模式R中的每一個(gè)屬性都不可再分,所以R∈1NF。因?yàn)榉侵鲗傩浴皵?shù)量”完全函數(shù)依賴于候選碼。非主屬性“地點(diǎn)”部分函數(shù)依賴于候選碼。即有(倉庫號(hào),設(shè)備號(hào))→地點(diǎn),倉庫號(hào)→地點(diǎn),所以R不滿足2NF。
關(guān)系模式R中存在異常,比如某一個(gè)倉庫只有一種設(shè)備,當(dāng)這種設(shè)備被移走后,在刪除此設(shè)備信息的同時(shí)將這個(gè)倉庫的信息也刪除了。
解決問題的辦法是:用投影分解把關(guān)系模式R分解為兩個(gè)關(guān)系模式。將部分函數(shù)依賴關(guān)系的決定方屬性和非主屬性從關(guān)系模式中提出,單獨(dú)構(gòu)成一個(gè)關(guān)系模式;將余下屬性加上碼(仍要保留部分函數(shù)依賴的決定方屬性)構(gòu)成另一關(guān)系模式。
按照上述方法分解,將關(guān)系模式R分解為R1(倉庫號(hào),設(shè)備號(hào),數(shù)量)和R2(倉庫號(hào),地點(diǎn))兩個(gè)關(guān)系模式。此時(shí),R1和R2均屬于第二范式
1.4.3 第三范式
如果關(guān)系模式R∈2NF,且每一個(gè)非主屬性都不傳遞函數(shù)依賴于候選碼,則稱R屬于第三范式,記作R∈3NF。
例如
設(shè)關(guān)系模式R(倉庫號(hào),倉庫面積,所在城市,所在?。┍硎静煌瑐}庫在各省市分布情況。候選碼是倉庫號(hào),由于關(guān)系模式R中的每一個(gè)屬性都不可再分,所以R∈1NF。又因?yàn)镽中每一個(gè)非主屬性都完全函數(shù)依賴于候選碼,所以R∈2NF。又因?yàn)楹瘮?shù)依賴有倉庫號(hào)→所在城市,所在城市→所在省,所以倉庫號(hào)→所在省,R中存在傳遞函數(shù)依賴,所以R不滿足3NF。
關(guān)系模式R中存在異常,比如要在遼寧省大連市設(shè)立一個(gè)倉庫,此時(shí)想先存入有關(guān)所在城市的信息,但由于沒有倉庫號(hào),主碼為空,則插入是失敗的。
解決問題的辦法是:用投影分解把關(guān)系模式R分解為兩個(gè)關(guān)系模式,將傳遞函數(shù)依賴的屬性分解出來,消除傳遞函數(shù)依賴。
按照上述方法分解,將關(guān)系模式R分解為R1(倉庫號(hào),倉庫面積,所在城市)和R2(所在城市,所在?。﹥蓚€(gè)關(guān)系模式。此時(shí),R1和R2均屬于第三范式。
1.4.3 BCNF(修正的第三范式)
如果關(guān)系模式R∈3NF,且沒有一個(gè)屬性部分函數(shù)依賴或傳遞函數(shù)依賴于候選碼,則稱R屬于修正的第三范式,記作R∈BCNF。
規(guī)范化的基本思想是,逐步消除數(shù)據(jù)依賴中不合理的部分,使每一個(gè)關(guān)系模式更趨于完美。但并不是范式越高越好,范式越高,模式分解的越多,我們在進(jìn)行數(shù)據(jù)查詢的時(shí)候往往要進(jìn)行許多張表的連接,系統(tǒng)開銷較大,查詢效率較低。所以,在進(jìn)行關(guān)系模式規(guī)范化的過程中,關(guān)系模式一般分解到3NF就認(rèn)為是比較好的了。
在銀行管理系統(tǒng)的數(shù)據(jù)庫中,有一關(guān)系模式為R(BNO,SSNO,BNAME,ADDRESS,CITY,SNAME,SEX,AGE,ACCOUNT),其中屬性分別表示銀行編號(hào),身份證號(hào),銀行名稱,銀行所在地點(diǎn),銀行所在城市,顧客姓名,性別,年齡,賬戶號(hào)。我們寫出該關(guān)系模式的主碼,并對其進(jìn)行規(guī)范化,以達(dá)到3NF
該關(guān)系模式R的主碼為(BNO,SSNO)。由于關(guān)系模式R中的每個(gè)分量都是不可再分的數(shù)據(jù)項(xiàng),所以R滿足1NF。關(guān)系模式R中存在以下函數(shù)依賴:
(BNO,SSNO)→BNAME, BNO→BNAME,
(BNO,SSNO)→ADDRESS, BNO→ADDRESS,
(BNO,SSNO)→CITY, ADDRESS→CITY,
(BNO,SSNO)→ACCOUNT, BNO→CITY,
(BNO,SSNO)→SNAME, SSNO→SNAME,
(BNO,SSNO)→SEX, SSNO→SEX,
(BNO,SSNO)→AGE, SSNO→AGE,
-
首先,關(guān)系模式R滿足1NF,但存在部分函數(shù)依賴,所以,R不滿足2NF,將其分解為:
R1(BNO,SSNO,ACCOUNT)∈2NF;
R2(BNO,BNAME,ADDRESS,CITY)∈2NF;
R3(SSNO,SNAME,SEX,AGE)∈2NF; -
其次,關(guān)系模式R1、R3均已滿足第三范式,但關(guān)系模式R2存在傳遞函數(shù)依賴,R2不滿足第三范式,將R2分解為:
R4(BNO,BNAME,ADDRESS)∈3NF;
R5(ADDRESS,CITY)∈3NF; -
最后,R1、R3、R4、R5滿足第三范式,總結(jié)為:
R1(BNO,SSNO,ACCOUNT);
R3(SSNO,SNAME,SEX,AGE);
R4(BNO,BNAME,ADDRESS);
R5(ADDRESS,CITY)。
二、數(shù)據(jù)庫設(shè)計(jì)概述
2.1 數(shù)據(jù)庫設(shè)計(jì)的方法
早期數(shù)據(jù)庫設(shè)計(jì)主要采用手工與經(jīng)驗(yàn)相結(jié)合的方法。設(shè)計(jì)的質(zhì)量往往與設(shè)計(jì)人員的經(jīng)驗(yàn)與水平有直接的關(guān)系,設(shè)計(jì)質(zhì)量難以保證。人們通過運(yùn)用軟件工程的思想和方法,提出了各種數(shù)據(jù)庫設(shè)計(jì)方法,以及各種設(shè)計(jì)準(zhǔn)則和規(guī)程,這些都屬于規(guī)范設(shè)計(jì)方法。
例如
- 關(guān)系模式的設(shè)計(jì)方法
- 新奧爾良(New Orleans)方法
- 基于E-R模型的數(shù)據(jù)庫設(shè)計(jì)方法
- 3NF(第三范式)的設(shè)計(jì)方法
- 基于抽象語法規(guī)范的設(shè)計(jì)方法
- 計(jì)算機(jī)輔助數(shù)據(jù)庫設(shè)計(jì)方法
2.2 數(shù)據(jù)庫設(shè)計(jì)的步驟
從數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)和開發(fā)的全過程來考慮,一般將數(shù)據(jù)庫設(shè)計(jì)的步驟分為七個(gè)階段:
- 系統(tǒng)規(guī)劃階段
- 需求分析階段
- 概念結(jié)構(gòu)設(shè)計(jì)階段
- 邏輯結(jié)構(gòu)設(shè)計(jì)階段
- 物理結(jié)構(gòu)設(shè)計(jì)階段
- 實(shí)施階段
- 運(yùn)行和維護(hù)階段
三、系統(tǒng)規(guī)劃階段
3.1 系統(tǒng)規(guī)劃的任務(wù)
系統(tǒng)規(guī)劃階段的主要任務(wù)就是進(jìn)行系統(tǒng)的必要性和可行性分析。包括明確應(yīng)用系統(tǒng)的基本功能,劃分?jǐn)?shù)據(jù)庫支持的范圍;規(guī)劃人力資源調(diào)配;擬定設(shè)備配置方案;選擇合適的操作系統(tǒng)、DBMS和其他軟件;設(shè)備配置方案要在使用要求、系統(tǒng)性能、購置成本和維護(hù)代價(jià)各方面綜合權(quán)衡;對系統(tǒng)的開發(fā)、運(yùn)行、維護(hù)的成本作出估算;預(yù)測系統(tǒng)效益的期望值;擬定開發(fā)進(jìn)度計(jì)劃,還要對現(xiàn)行工作模式如何向新系統(tǒng)過渡作出具體安排。
3.2 系統(tǒng)規(guī)劃的成果
規(guī)劃階段的工作成果是寫出詳盡的可行性分析報(bào)告和數(shù)據(jù)庫應(yīng)用系統(tǒng)規(guī)劃書。內(nèi)容應(yīng)包括:系統(tǒng)的定位及其功能、數(shù)據(jù)資源及數(shù)據(jù)處理能力、人力資源調(diào)配、設(shè)備配置方案、開發(fā)成本估算、開發(fā)進(jìn)度計(jì)劃等。
可行性分析報(bào)告和數(shù)據(jù)庫應(yīng)用系統(tǒng)規(guī)劃書經(jīng)審定立項(xiàng)后,成為后續(xù)開發(fā)工作的總綱
四、需求分析階段
4.1 需求分析的任務(wù)
需求分析是整個(gè)數(shù)據(jù)庫設(shè)計(jì)過程中最重要的步驟之一,是后續(xù)各階段的基礎(chǔ)。需求分析的主要任務(wù)是通過詳細(xì)調(diào)查所要處理的對象,包括某個(gè)組織、某個(gè)部門、某個(gè)企業(yè)的業(yè)務(wù)管理等,充分了解原手工或原計(jì)算機(jī)系統(tǒng)的工作狀況以及工作流程,明確用戶的各種需求,生成業(yè)務(wù)流程圖和數(shù)據(jù)流圖,然后在此基礎(chǔ)上確定新系統(tǒng)的功能,并撰寫系統(tǒng)說明書。新系統(tǒng)不能只按當(dāng)前應(yīng)用需求來設(shè)計(jì)數(shù)據(jù)庫,必須充分考慮今后可能的擴(kuò)充和改變。
4.2 需求分析的步驟
調(diào)查、收集和分析用戶要求的具體步驟如下:
1.調(diào)查組織機(jī)構(gòu)情況
調(diào)查這個(gè)組織由哪些部門組成,各部門擔(dān)當(dāng)?shù)穆氊?zé)是什么。
2.調(diào)查各部門的業(yè)務(wù)活動(dòng)情況
調(diào)查各部門所需輸入和使用的數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到哪個(gè)部門,輸出結(jié)果的格式等。
3.協(xié)助用戶明確對新系統(tǒng)的各種要求
進(jìn)一步明確用戶對數(shù)據(jù)管理中的信息要求、處理要求、安全性與完整性要求。
4.確定新系統(tǒng)的邊界
確定哪些功能由計(jì)算機(jī)完成或?qū)頊?zhǔn)備讓計(jì)算機(jī)完成,哪些功能由人工完成。由計(jì)算機(jī)完成的功能就是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。
4.3 需求分析的調(diào)查方法
根據(jù)不同的問題和條件,調(diào)查方法也可以不同。常用的調(diào)查方法有以下幾種。
1.跟班作業(yè)
通過親身參加業(yè)務(wù)工作來了解業(yè)務(wù)活動(dòng)的情況,這種方法可以比較準(zhǔn)確地了解用戶的需求,但比較耗費(fèi)時(shí)間。
2.開調(diào)查會(huì)
通過與用戶座談的方式來了解業(yè)務(wù)活動(dòng)情況及用戶需求。
3.請專人介紹
通過邀請熟悉業(yè)務(wù)的專業(yè)人士來了解業(yè)務(wù)活動(dòng)情況。
4.詢問
對調(diào)查中的某些問題,可以找專人詢問。
5.設(shè)計(jì)調(diào)查表請用戶填寫
如果調(diào)查表設(shè)計(jì)合理,這種方法易于用戶接受并且會(huì)很有效。
6.查閱記錄
查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄,包括原始的單據(jù)、報(bào)表等。
當(dāng)需求分析完成后,最終產(chǎn)生階段性的成果:系統(tǒng)需求說明書,包括數(shù)據(jù)流圖、數(shù)據(jù)字典、數(shù)據(jù)表格、系統(tǒng)功能結(jié)構(gòu)圖和必要的說明。
4.4 數(shù)據(jù)流圖
數(shù)據(jù)流圖(Data Flow Diagram, 簡記為DFD) 是用圖形方式來表達(dá)系統(tǒng)的邏輯功能,以及數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程。任何一個(gè)系統(tǒng)都可以抽象為數(shù)據(jù)流圖形式。
數(shù)據(jù)流圖的基本符號(hào)
→:箭頭,表示數(shù)據(jù)流;
□ :方框,表示數(shù)據(jù)的源點(diǎn)或終點(diǎn);
○ :圓或橢圓,表示加工或處理;
=:雙杠,表示數(shù)據(jù)存儲(chǔ)。
(1)數(shù)據(jù)流: 是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,因此由一組成分固定的數(shù)據(jù)組成。例如訂票單由旅客姓名、年齡、單位、身份證號(hào)、日期、目的地等數(shù)據(jù)項(xiàng)組成。由于數(shù)據(jù)流是流動(dòng)中的數(shù)據(jù),所以必須有流向,除了與數(shù)據(jù)存儲(chǔ)之間的數(shù)據(jù)流不用命名外,數(shù)據(jù)流應(yīng)該用名詞或名詞短語命名。
(2)數(shù)據(jù)源點(diǎn)或終點(diǎn): 代表系統(tǒng)之外的實(shí)體,可以是人、物或其他軟件系統(tǒng)。
(3)對數(shù)據(jù)的加工(處理): 是對數(shù)據(jù)進(jìn)行處理的單元,它接收一定的數(shù)據(jù)輸入,對其進(jìn)行處理,并產(chǎn)生輸出。
(4)數(shù)據(jù)存儲(chǔ): 表示信息的靜態(tài)存儲(chǔ),可以代表文件、文件的一部分、數(shù)據(jù)庫的元素等。
在畫數(shù)據(jù)流圖時(shí)須注意的原則
(1)一個(gè)加工的輸出數(shù)據(jù)流不應(yīng)與輸入數(shù)據(jù)流同名,即使它們的組成成分相同。
(2)保持?jǐn)?shù)據(jù)守恒,即一個(gè)加工的所有輸出數(shù)據(jù)流中的數(shù)據(jù)必須能從該加工的輸入數(shù)據(jù)流中直接獲得。
(3)每個(gè)加工必須既有輸入數(shù)據(jù)流,又有輸出數(shù)據(jù)流。
(4)所有的數(shù)據(jù)流必須以一個(gè)加工開始,或以一個(gè)加工結(jié)束。
數(shù)據(jù)流圖的實(shí)例
這是一個(gè)飛機(jī)機(jī)票預(yù)訂系統(tǒng)的數(shù)據(jù)流圖,它反映的功能是:旅行社把預(yù)訂機(jī)票的旅客信息 (姓名、年齡、性別、身份證號(hào)碼、旅行時(shí)間、目的地等)輸入機(jī)票預(yù)訂系統(tǒng)。系統(tǒng)為旅客安排航班,打印出取票通知單(附有應(yīng)交的賬款)。旅客在飛機(jī)起飛的前一天憑取票通知單交款取票,系統(tǒng)檢驗(yàn)無誤,輸出機(jī)票給旅客。
4.5 數(shù)據(jù)字典
數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合,是對數(shù)據(jù)流圖中包含的所有元素的定義的集合。
數(shù)據(jù)存放于物理數(shù)據(jù)庫中,由數(shù)據(jù)庫管理系統(tǒng)進(jìn)行管理。數(shù)據(jù)字典有助于對這些數(shù)據(jù)進(jìn)一步管理和控制,為設(shè)計(jì)人員和數(shù)據(jù)庫管理員在數(shù)據(jù)庫設(shè)計(jì)、實(shí)現(xiàn)和運(yùn)行階段控制有關(guān)數(shù)據(jù)提供一定的依據(jù)。
數(shù)據(jù)字典通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過程五個(gè)部分。
(1)數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小組成單位,是不可再分的數(shù)據(jù)單位。包括項(xiàng)名、含義說明、別名、數(shù)據(jù)類型、長度、取值范圍、與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系等。
(2)數(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)組成,或由若干個(gè)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)混合組成。包括數(shù)據(jù)結(jié)構(gòu)名、說明、組成等。
(3)數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂?。包括?shù)據(jù)流名、說明、數(shù)據(jù)流來源、數(shù)據(jù)流去向、組成、平均流量、高峰期流量等。
(4)數(shù)據(jù)存儲(chǔ)說明數(shù)據(jù)流中需要存儲(chǔ)的數(shù)據(jù),包括數(shù)據(jù)存儲(chǔ)名、說明、流入數(shù)據(jù)流、流出數(shù)據(jù)流、組成、數(shù)據(jù)量、存取頻度、存取方式等。
(5)處理過程的具體處理邏輯通常用判定表或判定樹來描述。包括處理過程名、說明、輸入數(shù)據(jù)流、輸出數(shù)據(jù)流、處理簡要說明等。
五、概念結(jié)構(gòu)設(shè)計(jì)
5.1 概念結(jié)構(gòu)設(shè)計(jì)方法
概念結(jié)構(gòu)的設(shè)計(jì)方法通常有以下四種。
自頂向下: 先定義全局概念結(jié)構(gòu)E-R模型的框架,再逐步細(xì)化。
自底向上: 先定義各局部應(yīng)用的概念結(jié)構(gòu)E-R模型,然后將它們集成,得到全局概念結(jié)構(gòu)E-R模型。
逐步擴(kuò)張: 先定義最重要的核心概念E-R模型,然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu)E-R模型,直至總體概念結(jié)構(gòu)。
混合策略: 該方法采用自頂向下和自底向上相結(jié)合的方法,先自頂向下定義全局框架,再以它為骨架集成自底向上方法中設(shè)計(jì)的各個(gè)局部概念結(jié)構(gòu)。
5.2 E-R設(shè)計(jì)方法的介紹
描述概念模型的有力工具是E-R模型。有關(guān)E-R模型的基本概念已經(jīng)在第一章介紹過了,下面將用E-R模型來描述概念結(jié)構(gòu)。
E-R方法是“實(shí)體—聯(lián)系方法”(Entity-Relationship Approach)的簡稱。它是描述現(xiàn)實(shí)世界概念結(jié)構(gòu)模型的有效方法。用E-R方法建立的概念結(jié)構(gòu)模型稱為E-R模型,或稱為E-R圖。
E-R圖的三要素是實(shí)體、屬性和聯(lián)系
(1)實(shí)體: 用矩形框表示,框內(nèi)標(biāo)注實(shí)體名稱。
(2)屬性: 用橢圓形框表示,框內(nèi)標(biāo)注屬性名稱。
(3)聯(lián)系: 用菱形框表示,框內(nèi)標(biāo)注實(shí)體之間的關(guān)系。有1:1,1:n和m:n三種聯(lián)系類型。例如系主任領(lǐng)導(dǎo)系,學(xué)生選修課程,教師講授課程,工人生產(chǎn)產(chǎn)品,這里“領(lǐng)導(dǎo)”、“選修”、“講授”、“生產(chǎn)”表示實(shí)體之間的聯(lián)系,可以作為聯(lián)系名稱。聯(lián)系用菱形框表示,框內(nèi)標(biāo)注聯(lián)系名稱。
E-R圖的表示
在E-R圖的描述中,用矩形表示實(shí)體,用橢圓表示屬性,用菱形表示聯(lián)系。在各框圖內(nèi)標(biāo)注它們的名稱,它們之間用無向線連接,表示聯(lián)系時(shí)需在線上標(biāo)明屬于哪種類型的聯(lián)系。
5.3 局部概念結(jié)構(gòu)設(shè)計(jì)
概念結(jié)構(gòu)設(shè)計(jì)首先要根據(jù)需求分析得到的結(jié)果(數(shù)據(jù)流圖、數(shù)據(jù)字典等)對現(xiàn)實(shí)世界進(jìn)行抽象,設(shè)計(jì)各個(gè)局部E-R模型。在系統(tǒng)需求分析階段,最后得到了多層數(shù)據(jù)流圖、數(shù)據(jù)字典和系統(tǒng)分析報(bào)告。建立局部E-R模型,就是根據(jù)系統(tǒng)的具體情況,在多層的數(shù)據(jù)流圖中選擇一個(gè)適當(dāng)層次的數(shù)據(jù)流圖,作為設(shè)計(jì)局部E-R圖的出發(fā)點(diǎn),讓這組圖中每一部分對應(yīng)一個(gè)局部應(yīng)用。在前面選好的某一層次的數(shù)據(jù)流圖中,每個(gè)局部應(yīng)用都對應(yīng)了一組數(shù)據(jù)流圖,局部應(yīng)用所涉及的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)字典中?,F(xiàn)在就是要將這些數(shù)據(jù)從數(shù)據(jù)字典中抽取出來,參照數(shù)據(jù)流圖,確定每個(gè)局部應(yīng)用包含哪些實(shí)體,這些實(shí)體又包含哪些屬性,以及實(shí)體之間的聯(lián)系及其聯(lián)系類型。
以工廠管理為例,描述局部E-R圖的設(shè)計(jì)。從技術(shù)科獲知,每種產(chǎn)品由多種零件組成,每種零件可用在不同的產(chǎn)品上,每種產(chǎn)品由一定數(shù)量的零件組成。從供應(yīng)科獲知,每種零件使用多種材料制成,每種材料也可應(yīng)用在不同的零件上,每種零件在使用材料上有一個(gè)使用量;每個(gè)倉庫可以存放多種材料,每種材料只能放在一個(gè)倉庫里,每個(gè)倉庫存放材料有一個(gè)庫存量。
根據(jù)E-R圖的建立過程:
第一步:確定實(shí)體類型
產(chǎn)品、零件、材料和倉庫四個(gè)實(shí)體類型。
第二步:確定聯(lián)系類型
產(chǎn)品和零件之間是m:n組成的聯(lián)系,零件和材料之間是m:n使用的 聯(lián)系,倉庫和材料之間是1:m存放的聯(lián)系。
第三步:確定實(shí)體類型和聯(lián)系類型的屬性。
在技術(shù)科中,產(chǎn)品實(shí)體的屬性有:產(chǎn)品號(hào)、產(chǎn)品名、性能參數(shù)等。
在技術(shù)科中,零件實(shí)體的屬性有:零件號(hào)、零件名、價(jià)格等。
在供應(yīng)科中,零件實(shí)體的屬性有:零件號(hào)、規(guī)格等。
在供應(yīng)科中,材料實(shí)體的屬性有:材料號(hào)、價(jià)格等。
在供應(yīng)科中,倉庫實(shí)體的屬性有:倉庫號(hào)、倉庫名、地址等。
產(chǎn)品和零件之間m:n組成的聯(lián)系屬性是零件數(shù),零件和材料之間m:n使用的聯(lián)系屬性是使用量,倉庫和材料之間1:m存放的聯(lián)系屬性是庫存量。
第四步,根據(jù)實(shí)體類型和聯(lián)系類型畫出局部E-R圖
第五步,用下劃線標(biāo)注出實(shí)體的碼。
5.4 全局概念結(jié)構(gòu)設(shè)計(jì)
全局概念結(jié)構(gòu)設(shè)計(jì)的實(shí)質(zhì)是把局部概念結(jié)構(gòu)設(shè)計(jì)中所有的局部概念模型統(tǒng)一起來,形成一個(gè)完整的系統(tǒng)模型。
全局E-R模型的建立過程如下:
1.合并
將局部概念模型整理合并成全局概念模型。
(1)先找出具有相同實(shí)體的兩個(gè)E-R圖。
(2)以該相同實(shí)體為基準(zhǔn)進(jìn)行合并。
(3)如果還有相同實(shí)體的E-R圖,再次合并。
(4)這樣一直下去,直到所有的具有相同實(shí)體的局部E-R圖都被合并,從而得到全局的E-R圖。
2.消除沖突
解決各種局部E-R圖之間的沖突問題,生成初步E-R圖。
(1)屬性沖突
屬性值的類型、取值范圍及取值單位不一致造成的沖突。如:生日和年齡,厘米和米,學(xué)生編號(hào)的方式等。
(2)結(jié)構(gòu)沖突
如在某局部E-R圖中系主任是屬性,而在另一個(gè)局部E-R圖中系主任是實(shí)體等。
(3)命名(實(shí)體、屬性、聯(lián)系)沖突
同名異義:教室和宿舍均稱為房間;
異名同義:如教材和課本。
將技術(shù)科和供應(yīng)科的兩個(gè)局部E-R圖合并成全局E-R圖
一個(gè)好的全局E-R模型除了能準(zhǔn)確、全面地反映用戶功能外,還應(yīng)滿足下列條件:實(shí)體類型的個(gè)數(shù)盡可能少、實(shí)體類型所含屬性的個(gè)數(shù)盡可能少、實(shí)體間聯(lián)系的冗余最小。模型優(yōu)化的目的是消除不必要的冗余,使其保持最小冗余度。
優(yōu)化全局E-R模型的幾個(gè)原則:
(1)實(shí)體類型的合并
(2)冗余屬性的消除,如生日和年齡。
(3)冗余聯(lián)系的消除
將下列所示的兩個(gè)局部E-R圖合并成一個(gè)全局E-R圖,并進(jìn)行優(yōu)化。
局部E-R模型設(shè)計(jì)完成之后,根據(jù)全局E-R模型的建立步驟,將上述兩個(gè)局部E-R模型合并成全局E-R模型
上例中對全局E-R模型進(jìn)行優(yōu)化,消除冗余,得到優(yōu)化后的概念模型
如一個(gè)圖書借閱信息管理系統(tǒng)有如下信息:
每一個(gè)借書人可以借閱多本圖書,每一本圖書可以被多個(gè)借書人借閱;借書人每借閱一本圖書都有一個(gè)借書日期和還書日期;每一個(gè)出版社可以出版多本圖書,每一本圖書只能在一個(gè)出版社出版。其中:
借書人的屬性有:借書證號(hào)、姓名、單位、電話;
圖書的屬性有:圖書編號(hào)、書名、位置;
出版社的屬性有:出版社名、地址、郵編、電話。
我們根據(jù)需求畫出E-R圖,并在E-R圖中注明實(shí)體的屬性、聯(lián)系的類型以及實(shí)體的碼。
六、邏輯結(jié)構(gòu)設(shè)計(jì)
6.1 邏輯結(jié)構(gòu)設(shè)計(jì)的步驟
數(shù)據(jù)庫邏輯結(jié)構(gòu)的設(shè)計(jì)過程
6.2 E-R圖向關(guān)系模型的轉(zhuǎn)換原則
關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合,而E-R圖則是由實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系三個(gè)要素組成的。所以將E-R圖轉(zhuǎn)換為關(guān)系模型實(shí)際上就是要將實(shí)體、實(shí)體的屬性和實(shí)體之間的聯(lián)系轉(zhuǎn)化為相應(yīng)的關(guān)系模式,下面具體介紹轉(zhuǎn)換的規(guī)則。
(1)一個(gè)實(shí)體類型轉(zhuǎn)換為一個(gè)關(guān)系模式: 實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。
學(xué)生實(shí)體和課程實(shí)體分別轉(zhuǎn)換成如下兩個(gè)關(guān)系模式:
學(xué)生關(guān)系模式(學(xué)號(hào),姓名,年齡,性別),學(xué)號(hào)為關(guān)系模式的主碼。
課程關(guān)系模式(課程號(hào),課程名,學(xué)分),課程號(hào)為關(guān)系模式的主碼。
(2)一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式: 與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性。而關(guān)系的碼為各實(shí)體碼的組合。
將上述E-R模型轉(zhuǎn)換為相應(yīng)的關(guān)系模式,先將學(xué)生和課程兩個(gè)實(shí)體轉(zhuǎn)換為關(guān)系模式,再將這兩個(gè)實(shí)體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,如下:
學(xué)生關(guān)系模式(學(xué)號(hào),姓名,年齡,性別),學(xué)號(hào)為關(guān)系模式的主碼。
課程關(guān)系模式(課程號(hào),課程名,學(xué)分),課程號(hào)為關(guān)系模式的主碼。
選課關(guān)系模式(學(xué)號(hào),課程號(hào),成績),學(xué)號(hào)和課程號(hào)的組合碼為關(guān)系模式的主碼。
(3)一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對應(yīng)的關(guān)系模式合并: 如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,而該關(guān)系的碼為n端實(shí)體的碼。如果與n端對應(yīng)的關(guān)系模式合并,則只需要將聯(lián)系本身的屬性和1端實(shí)體的碼加入到n端對應(yīng)的關(guān)系模式中即可。
將上述E-R模型轉(zhuǎn)換為相應(yīng)的關(guān)系模式,先將班導(dǎo)師和學(xué)生兩個(gè)實(shí)體轉(zhuǎn)換為關(guān)系模式,再將這兩個(gè)實(shí)體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,如下:
方法一:產(chǎn)生獨(dú)立的關(guān)系模式
學(xué)生關(guān)系模式(學(xué)號(hào),姓名,年齡,性別),學(xué)號(hào)為關(guān)系模式的主碼。
班導(dǎo)師關(guān)系模式(職工號(hào),姓名,性別,電話),職工號(hào)為關(guān)系模式的主碼。
指導(dǎo)關(guān)系模式(學(xué)號(hào),職工號(hào)),學(xué)號(hào)為關(guān)系模式的主碼。
方法二:與n端對應(yīng)的關(guān)系模式合并
學(xué)生關(guān)系模式(學(xué)號(hào),姓名,年齡,性別,職工號(hào)),學(xué)號(hào)為關(guān)系模式的主碼。
班導(dǎo)師關(guān)系模式(職工號(hào),姓名,性別,電話),職工號(hào)為關(guān)系模式的主碼。
(4)一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對應(yīng)的關(guān)系模式合并: 如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,每個(gè)實(shí)體的碼均是該關(guān)系的候選碼。如果與某一端對應(yīng)的關(guān)系模式合并,則需要在該關(guān)系模式的屬性中加入另一個(gè)關(guān)系模式的碼和聯(lián)系本身的屬性。
將上述E-R模型轉(zhuǎn)換為相應(yīng)的關(guān)系模式,先將班級和班長兩個(gè)實(shí)體轉(zhuǎn)換為關(guān)系模式,再將這兩個(gè)實(shí)體間的聯(lián)系轉(zhuǎn)換為關(guān)系模式,如下:
方法一:產(chǎn)生獨(dú)立的關(guān)系模式
班級關(guān)系模式(班級號(hào),人數(shù)),班級號(hào)為關(guān)系模式的主碼。
班長關(guān)系模式(學(xué)號(hào),姓名,性別,年齡),學(xué)號(hào)為關(guān)系模式的主碼。
任職關(guān)系模式(班級號(hào),學(xué)號(hào)),班級號(hào)為關(guān)系模式的主碼,也可以選學(xué)號(hào)作為關(guān)系模式的主碼。
方法二:與任意一端對應(yīng)的關(guān)系模式合并
班級關(guān)系模式(班級號(hào),人數(shù)),班級號(hào)為關(guān)系模式的主碼。
班長關(guān)系模式(學(xué)號(hào),姓名,性別,年齡,班級號(hào)),學(xué)號(hào)為關(guān)系模式的主碼。
或者
班級關(guān)系模式(班級號(hào),人數(shù),學(xué)號(hào)),班級號(hào)為關(guān)系模式的主碼。
班長關(guān)系模式(學(xué)號(hào),姓名,性別,年齡),學(xué)號(hào)為關(guān)系模式的主碼。
(5)三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式: 與該多元聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性。而關(guān)系的碼為各實(shí)體碼的組合。
(6)同一實(shí)體集的實(shí)體間的聯(lián)系,即自聯(lián)系,也可按上述1:1、1:n和m:n三種情況分別處理。
(7)具有相同碼的關(guān)系模式可合并
例如
每個(gè)工廠生產(chǎn)多種產(chǎn)品,且每種產(chǎn)品可以在多個(gè)工廠中生產(chǎn),每個(gè)工廠按照固定的計(jì)劃數(shù)量生產(chǎn)產(chǎn)品;每個(gè)工廠聘用多名職工,且每個(gè)職工只能在一個(gè)工廠工作,工廠聘用職工有聘用期和工資。工廠的屬性有工廠編號(hào)、廠名、地址,產(chǎn)品的屬性有產(chǎn)品編號(hào)、產(chǎn)品名、規(guī)格,職工的屬性有職工號(hào)、姓名。
(1)根據(jù)需求畫出E-R圖,并在E-R圖中注明實(shí)體的屬性、聯(lián)系的類型以及實(shí)體的碼。
(2)將E-R圖轉(zhuǎn)換成關(guān)系模式,并用下畫線標(biāo)出每個(gè)關(guān)系模式的主碼。
工廠(工廠編號(hào) ,廠名,地址)
產(chǎn)品(產(chǎn)品編號(hào) ,產(chǎn)品名,規(guī)格)
職工(職工號(hào) ,姓名,工廠編號(hào),工資,聘用期)
生產(chǎn)(工廠編號(hào) ,產(chǎn)品編號(hào) ,計(jì)劃數(shù)量)=
6.3 數(shù)據(jù)模型的優(yōu)化
數(shù)據(jù)模型的優(yōu)化方法為:
(1)確定數(shù)據(jù)依賴。
(2)對于各個(gè)關(guān)系模式之間的數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余的聯(lián)系。
(3)按照數(shù)據(jù)依賴的理論對關(guān)系模式逐一進(jìn)行分析,考查是否存在部分函數(shù)依賴、傳遞函數(shù)依賴、多值依賴等,確定各關(guān)系模式分別屬于第幾范式。
(4)按照需求分析階段得到的各種應(yīng)用對數(shù)據(jù)處理的要求,分析對于這樣的應(yīng)用環(huán)境這些模式是否合適,確定是否要對它們進(jìn)行合并或分解。
(5)對關(guān)系模式進(jìn)行必要的分解。
七、物理結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)庫物理設(shè)計(jì)階段的任務(wù)是根據(jù)具體計(jì)算機(jī)系統(tǒng)(DBMS和硬件等)的特點(diǎn),為給定的數(shù)據(jù)庫模型確定合理的存儲(chǔ)結(jié)構(gòu)和存取方法。所謂的“合理”主要有兩個(gè)含義:一個(gè)是要使設(shè)計(jì)出的物理數(shù)據(jù)庫占用較少的存儲(chǔ)空間,另一個(gè)對數(shù)據(jù)庫的操作具有盡可能高的速度。
數(shù)據(jù)庫的物理設(shè)計(jì)通常分為兩步:
首先,確定數(shù)據(jù)庫的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲(chǔ)結(jié)構(gòu)。
其次,對物理結(jié)構(gòu)進(jìn)行評價(jià),評價(jià)的內(nèi)容是系統(tǒng)的時(shí)間和空間效率。
7.1 確定物理結(jié)構(gòu)
1.確定數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
確定數(shù)據(jù)庫存儲(chǔ)結(jié)構(gòu)時(shí)要綜合考慮存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)三方面的因素。這三個(gè)方面常常是相互矛盾的,例如消除一切冗余數(shù)據(jù)雖然能夠節(jié)約存儲(chǔ)空間,但往往會(huì)導(dǎo)致檢索代價(jià)的增加,因此必須進(jìn)行權(quán)衡,選擇一個(gè)折中方案。
2.設(shè)計(jì)數(shù)據(jù)的存取路徑
在關(guān)系數(shù)據(jù)庫中,選擇存取路徑主要是指確定如何建立索引。例如,應(yīng)把哪些域作為次碼建立次索引,建立單碼索引還是組合索引,建立多少個(gè)為合適,是否建立聚集索引等。
3.確定數(shù)據(jù)的存放位置
為了提高系統(tǒng)性能,數(shù)據(jù)應(yīng)該根據(jù)應(yīng)用情況將易變部分與穩(wěn)定部分、經(jīng)常存取部分和存取頻率較低部分分開存放。
4.確定系統(tǒng)配置
DBMS產(chǎn)品一般都提供了一些存儲(chǔ)分配參數(shù),供設(shè)計(jì)人員和DBA對數(shù)據(jù)庫進(jìn)行物理優(yōu)化。初始情況下,系統(tǒng)都為這些變量賦予了合理的缺省值。但是這些值不一定適合每一種應(yīng)用環(huán)境,在進(jìn)行物理設(shè)計(jì)時(shí),需要重新對這些變量賦值以改善系統(tǒng)的性能。
7.2 評價(jià)物理結(jié)構(gòu)
數(shù)據(jù)庫物理設(shè)計(jì)過程中需要對時(shí)間效率、空間效率、維護(hù)代價(jià)和各 種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫設(shè)計(jì)人員必須對這些方案進(jìn)行細(xì)致的評價(jià),從中選擇一個(gè)較優(yōu)的方案作為數(shù)據(jù)庫的物理結(jié)構(gòu)。
評價(jià)物理數(shù)據(jù)庫的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的存儲(chǔ)空間、存取時(shí)間和維護(hù)代價(jià)入手,對估算結(jié)果進(jìn)行權(quán)衡、比較,選擇出一個(gè)較優(yōu)的合理的物理結(jié)構(gòu)。如果該結(jié)構(gòu)不符合用戶需求,則需要修改設(shè)計(jì)。
八、數(shù)據(jù)庫的實(shí)施
數(shù)據(jù)庫的實(shí)施主要包括以下工作:用數(shù)據(jù)定義語言(DDL)定義數(shù)據(jù)庫結(jié)構(gòu),組織數(shù)據(jù)入庫,編制與調(diào)試應(yīng)用程序,數(shù)據(jù)庫試運(yùn)行四個(gè)部分。
1.定義數(shù)據(jù)庫結(jié)構(gòu)
2.?dāng)?shù)據(jù)裝載
3.編制與調(diào)試應(yīng)用程序
4.?dāng)?shù)據(jù)庫試運(yùn)行**
九、數(shù)據(jù)庫的運(yùn)行和維護(hù)
在數(shù)據(jù)庫運(yùn)行階段,對數(shù)據(jù)庫經(jīng)常性的維護(hù)工作主要是由DBA完成的,包括:
1.?dāng)?shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù)
2.?dāng)?shù)據(jù)庫的安全性、完整性控制
3.?dāng)?shù)據(jù)庫性能的監(jiān)督、分析和改進(jìn)文章來源:http://www.zghlxwxcb.cn/news/detail-411585.html
4.?dāng)?shù)據(jù)庫的重組織和重構(gòu)造文章來源地址http://www.zghlxwxcb.cn/news/detail-411585.html
到了這里,關(guān)于【數(shù)據(jù)庫原理 ? 四】數(shù)據(jù)庫設(shè)計(jì)和規(guī)范化理論的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!