一、數(shù)據(jù)庫(kù)設(shè)計(jì)簡(jiǎn)介
按照規(guī)范設(shè)計(jì),將數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程分為六個(gè)階段: A、系統(tǒng)需求分析階段 B、概念結(jié)構(gòu)設(shè)計(jì)階段 C、邏輯結(jié)構(gòu)設(shè)計(jì)階段 D、物理結(jié)構(gòu)設(shè)計(jì)階段 E、數(shù)據(jù)庫(kù)實(shí)施階段 F、數(shù)據(jù)庫(kù)運(yùn)行與維護(hù)階段 需求分析和概念結(jié)構(gòu)設(shè)計(jì)獨(dú)立于任何數(shù)據(jù)庫(kù)管理系統(tǒng)。
二、系統(tǒng)需求分析
1、需求分析的任務(wù)
需求分析的任務(wù):對(duì)現(xiàn)實(shí)世界要處理的對(duì)象進(jìn)行詳細(xì)的調(diào)查,通過(guò)對(duì)原系統(tǒng)的了解,收集支持新系統(tǒng)的基礎(chǔ)數(shù)據(jù)并對(duì)其進(jìn)行處理,在此基礎(chǔ)上確定新系統(tǒng)的功能。 A、調(diào)查分析用戶活動(dòng) B、收集和分析需求數(shù)據(jù),確定系統(tǒng)邊界信息需求,處理需求,安全性和完整性需求 C、編寫系統(tǒng)分析報(bào)告
2、需求分析的方法
需求分析有兩種方法:自頂向下、自底向上 A、自頂向下 自頂向下方法從最上層的系統(tǒng)組織機(jī)構(gòu)入手,采用逐層分解的方式分析系統(tǒng)。 用數(shù)據(jù)流圖和數(shù)據(jù)字典描述系統(tǒng) 數(shù)據(jù)流圖:描述輸入數(shù)據(jù)到輸出數(shù)據(jù)的變換過(guò)程 數(shù)據(jù)流:由一組固定成分的數(shù)據(jù)組成,代表數(shù)據(jù)的流動(dòng)方向 處理:描述了輸入數(shù)據(jù)到輸出數(shù)據(jù)的變換 文件:用于存儲(chǔ)數(shù)據(jù) 源或宿:存在于系統(tǒng)之外的人員或組織,表示系統(tǒng)輸入數(shù)據(jù)的來(lái)源和輸出數(shù)據(jù)的去向 B、自底向上
3、實(shí)例
教學(xué)管理系統(tǒng) 基本需求: 某學(xué)校設(shè)計(jì)學(xué)校教學(xué)管理系統(tǒng),學(xué)生實(shí)體包括學(xué)號(hào)、姓名、性別、生日、民族、籍貫、簡(jiǎn)歷、入學(xué)日期,每名學(xué)生選擇一個(gè)主修專業(yè),專業(yè)包括專業(yè)編號(hào)、名稱、類別,一個(gè)專業(yè)屬于一個(gè)學(xué)院,一個(gè)學(xué)院可以有多個(gè)專業(yè)。學(xué)院信息要存儲(chǔ)學(xué)院號(hào)、學(xué)院名、院長(zhǎng)。教學(xué)管理要管理課程表、學(xué)生成績(jī)表。課程包括課程號(hào)、課程名、學(xué)分,每門課程由一個(gè)學(xué)院開設(shè)。學(xué)生選修的每門課程獲得一個(gè)成績(jī)。
三、概念結(jié)構(gòu)設(shè)計(jì)
1、概念結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)介
概念結(jié)構(gòu)設(shè)計(jì)的目標(biāo)是設(shè)計(jì)數(shù)據(jù)庫(kù)的E-R模型圖,確認(rèn)需求信息的正確和完整。具體來(lái)說(shuō)就是從需求分析中找到實(shí)體,確認(rèn)實(shí)體的屬性、確認(rèn)實(shí)體的關(guān)系,畫出ER圖。
2、概念結(jié)構(gòu)設(shè)計(jì)的步驟

 第一步,數(shù)據(jù)抽象與局部E-R模型設(shè)計(jì) A、數(shù)據(jù)抽象 在多層數(shù)據(jù)流中選擇一個(gè)適當(dāng)層次作為設(shè)計(jì)E-R圖的出發(fā)點(diǎn)。 確定每個(gè)局部應(yīng)用包含哪些實(shí)體,實(shí)體包含哪些屬性,實(shí)體之間的聯(lián)系 劃分實(shí)體和屬性的方法 分類:將一組具有某些共同特性和行為的對(duì)象抽象為一個(gè)實(shí)體。 聚合:將對(duì)象類型的組成成分抽象為屬性。 B、局部E-R模型設(shè)計(jì) 局部E-R模型設(shè)計(jì)的原則是屬性必須是不可分的數(shù)據(jù)項(xiàng),不能再由放棄其他屬性組成;屬性不能與其他實(shí)體具有聯(lián)系,聯(lián)系只能發(fā)生在實(shí)體之間。 為簡(jiǎn)化E-R圖,凡是能作為屬性對(duì)待的,盡量作為屬性。 第二步,全局E-R模型設(shè)計(jì) 集成各局部E-R模型,形成全局模型。視圖集成的方法有兩種: A、多元集成法:一次性將多個(gè)局部E-R圖合并為一個(gè)全局E-R圖。 B、二元集成法:首先集成兩個(gè)重要的局部E-R圖,然后用累加的方法逐步將一個(gè)新的E-R圖集成進(jìn)來(lái)。 合并: 合并局部E-R圖,消除沖突,初步生成E-R圖。合并的關(guān)鍵是合理消除各局部E-R圖的沖突。 沖突分類如下:
 優(yōu)化: 消除初步E-R圖中不必要的冗余,生成基本的E-R圖。 冗余數(shù)據(jù):可由基本的數(shù)據(jù)導(dǎo)出的數(shù)據(jù)。 冗余聯(lián)系:可由基本的聯(lián)系導(dǎo)出的聯(lián)系。

3、實(shí)例
教學(xué)管理系統(tǒng)的E-R圖 實(shí)體:學(xué)生、專業(yè)、學(xué)院、課程 實(shí)體表要記錄的屬性: 學(xué)生(學(xué)號(hào)、姓名、性別、生日、籍貫、民族、簡(jiǎn)歷、入學(xué)日期)
 專業(yè)(專業(yè)號(hào)、專業(yè)名稱、類別) 學(xué)院(學(xué)院號(hào)、學(xué)院名稱、院長(zhǎng)) 課程(課程號(hào)、課程名稱、學(xué)分)
 教學(xué)管理ER圖:

四、邏輯結(jié)構(gòu)設(shè)計(jì)
1、邏輯結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)介
邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)是將概念結(jié)構(gòu)設(shè)計(jì)階段完成的實(shí)體模型轉(zhuǎn)換成特定的DBMS所支持的數(shù)據(jù)模型的過(guò)程。邏輯結(jié)構(gòu)設(shè)計(jì)的目的是將E-R圖中的實(shí)體、屬性和聯(lián)系轉(zhuǎn)換成為關(guān)系模式。

2、初始關(guān)系模型設(shè)計(jì)
(1)實(shí)體間關(guān)系轉(zhuǎn)換遵循的原則: 一個(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)系的屬性。 聯(lián)系關(guān)系的鍵有三種情況: 如果聯(lián)系為1:1,則每個(gè)實(shí)體的鍵都是關(guān)系的候選鍵 如果聯(lián)系為1:n,zen端實(shí)體的見識(shí)關(guān)系的鍵 如果聯(lián)系為n:m,則各實(shí)體的鍵的組合是關(guān)系的鍵 特殊情況:多元聯(lián)系 多元聯(lián)系在轉(zhuǎn)換為關(guān)系模式時(shí),與該多元聯(lián)系相連的各實(shí)體的主鍵及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,轉(zhuǎn)換后所得到的的關(guān)系的主鍵為各實(shí)體鍵的組合 (2)實(shí)體間關(guān)系的轉(zhuǎn)換規(guī)則: A、一個(gè)1:1關(guān)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端所對(duì)應(yīng)的關(guān)系模式合并。
 原實(shí)體對(duì)應(yīng)關(guān)系模式分別為: 班級(jí)(班號(hào),專業(yè),人數(shù)) 班長(zhǎng)(學(xué)號(hào),姓名,專長(zhǎng)) 將關(guān)系“管理”合并到實(shí)體“班級(jí)”對(duì)應(yīng)的模式后為: 班級(jí)(班號(hào),專業(yè),人數(shù),班長(zhǎng)學(xué)號(hào)) 班長(zhǎng)(學(xué)號(hào),姓名,專長(zhǎng)) 關(guān)系“管理”也可以合并到實(shí)體“班長(zhǎng)”對(duì)應(yīng)的模式,將關(guān)系“管理”合并到實(shí)體“班級(jí)”對(duì)應(yīng)的模式后為: 班級(jí)(班號(hào),專業(yè),人數(shù)) 班長(zhǎng)(學(xué)號(hào),姓名,專長(zhǎng),班號(hào)) B、一個(gè)1:n關(guān)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端所對(duì)應(yīng)的關(guān)系模式合并。
 實(shí)體對(duì)應(yīng)的關(guān)系模式 系(系號(hào),系名,系主任,電話) 教師(教師號(hào),姓名,專業(yè),職稱,性別,年齡) 關(guān)系對(duì)應(yīng)的關(guān)系模式 管理(教師號(hào),系號(hào)) 合并到實(shí)體“教師”后(只能合并到“多”的一端的關(guān)系模型): 教師(教師號(hào),姓名,專業(yè),職稱,性別,年齡,系號(hào)) C、一個(gè)m:n關(guān)系轉(zhuǎn)換為一個(gè)關(guān)系模式。轉(zhuǎn)換的方法為:與該關(guān)系相連的各實(shí)體的碼以及關(guān)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,新關(guān)系的碼為兩個(gè)相連實(shí)體碼的組合。 關(guān)系只能轉(zhuǎn)換為獨(dú)立模式,模式的屬性由關(guān)系本身的屬性及兩個(gè)實(shí)體的鍵構(gòu)成;主鍵由兩端實(shí)體的鍵組合而成。
 課程(課程號(hào),課程名,學(xué)時(shí),類別) 實(shí)體表 學(xué)生(學(xué)號(hào),姓名,性別,專業(yè),出生日期,照片) 實(shí)體表 選修(學(xué)號(hào),課程號(hào),分?jǐn)?shù)) 關(guān)系表 D、三個(gè)或三個(gè)以上實(shí)體間的多元關(guān)系轉(zhuǎn)換為一個(gè)關(guān)系模式。 關(guān)系的屬性:與該多元關(guān)系相連的各實(shí)體的碼以及關(guān)系本身的屬性 關(guān)系的碼:各實(shí)體碼的組合 “講授”關(guān)系是一個(gè)三元關(guān)系,可以轉(zhuǎn)換為如下關(guān)系模式,其中課程號(hào)、職工號(hào)和書號(hào)為關(guān)系的組合碼: 講授(課程號(hào),職工號(hào),書號(hào))
3、關(guān)系模式規(guī)范化
應(yīng)用數(shù)據(jù)庫(kù)設(shè)計(jì)的范式理論對(duì)初始關(guān)系模型進(jìn)行優(yōu)化。數(shù)據(jù)庫(kù)設(shè)計(jì)的三大范式如下: 第一范式 每一個(gè)分類必須是一個(gè)不可分的數(shù)據(jù)項(xiàng)。屬性不可再分,確保每列的原子性。 第二范式 要求每個(gè)表只描述一件事情,每條記錄有唯一標(biāo)識(shí)列。 第三范式 數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息。 關(guān)系模式的規(guī)范化過(guò)程如下: A、確定范式級(jí)別 考察關(guān)系模式的函數(shù)依賴關(guān)系,確定范式等級(jí)。 B、實(shí)施規(guī)范化處理 利用規(guī)范化方法和理論將關(guān)系模式規(guī)范化。 C、模式改進(jìn) 合并: 將用于關(guān)聯(lián)查詢的具有相同主鍵的各表合并可提高查詢效率 分解: 水平分解,將關(guān)系的元組分為若干子集,提高查詢效率;垂直分解,把關(guān)系中經(jīng)常一起使用的屬性分解出來(lái),形成一個(gè)子關(guān)系,提高執(zhí)行效率。分解時(shí)要保持無(wú)損連接和函數(shù)依賴。
4、實(shí)例
教學(xué)管理系統(tǒng) 由ER模型轉(zhuǎn)化為的關(guān)系模型: 學(xué)生(學(xué)號(hào)、姓名、性別、生日、籍貫、民族、入學(xué)日期、專業(yè)號(hào))實(shí)體表 專業(yè)(專業(yè)號(hào)、專業(yè)名稱、類別、學(xué)院號(hào))實(shí)體表 學(xué)院(學(xué)院號(hào)、學(xué)院名稱、院長(zhǎng))實(shí)體表 課程(課程號(hào)、課程名稱、學(xué)分、學(xué)院號(hào))實(shí)體表 成績(jī)表(學(xué)號(hào)、課程號(hào)、成績(jī))關(guān)系表 在轉(zhuǎn)換為關(guān)系模型時(shí),一對(duì)多的聯(lián)系都在相應(yīng)的多方實(shí)體的關(guān)系中增加一個(gè)外鍵。 需求的增加: 如果教學(xué)管理系統(tǒng)還要管理教師教學(xué)安排,教師包括編號(hào)、姓名、年齡、職稱,一個(gè)教師只能屬于一個(gè)學(xué)院,一名教師可以上若干門課程,一門課程可以有多名老師來(lái)上,每個(gè)教師所上的每門課都有一個(gè)課堂號(hào)和課時(shí)數(shù)。 教師實(shí)體的ER圖:
 教學(xué)管理系統(tǒng)ER圖:
 關(guān)系表 多對(duì)多 成績(jī)表 (學(xué)號(hào),課程號(hào),成績(jī),時(shí)間,地點(diǎn))
五、物理結(jié)構(gòu)設(shè)計(jì)
1、物理結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)介
物理結(jié)構(gòu)設(shè)計(jì):對(duì)于給定的邏輯數(shù)據(jù)模型,選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)。數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)設(shè)計(jì)分為兩步: A、確定物理結(jié)構(gòu):存取方法和存儲(chǔ)結(jié)構(gòu) B、評(píng)價(jià)物理結(jié)構(gòu):評(píng)價(jià)重點(diǎn)是時(shí)間和空間效率 根據(jù)具體的數(shù)據(jù)庫(kù)管理系統(tǒng)所提供的多種存儲(chǔ)結(jié)構(gòu)和存取方法等依賴于具體計(jì)算機(jī)結(jié)構(gòu)的各項(xiàng)物理設(shè)計(jì)措施,對(duì)具體的應(yīng)用任務(wù)選定最合適的物理存儲(chǔ)結(jié)構(gòu)(數(shù)據(jù)類型 索引 主鍵)。
2、確定物理結(jié)構(gòu)
(1)存儲(chǔ)結(jié)構(gòu)的設(shè)計(jì) 物理結(jié)構(gòu)中,數(shù)據(jù)的基本存取單位是存儲(chǔ)記錄。 某一類型的所有存儲(chǔ)記錄的集合稱為文件。 確定數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)時(shí)要綜合考慮存取時(shí)間、存儲(chǔ)空間利用率和維護(hù)代價(jià)三方面的因素。例如消除一切冗余數(shù)據(jù)雖然能夠節(jié)約存儲(chǔ)空間,但往往會(huì)導(dǎo)致檢索代價(jià)的增加,因此必須進(jìn)行權(quán)衡,選擇一個(gè)折中方案。 (2)數(shù)據(jù)存取路徑的設(shè)計(jì) 在關(guān)系數(shù)據(jù)庫(kù)中,選擇存取路徑主要是指確定如何建立索引。例如,應(yīng)把哪些域作為次碼建立次索引,建立單碼索引還是組合索引,建立多少個(gè)為合適,是否建立聚集索引等。 (3)數(shù)據(jù)存放位置的設(shè)計(jì) 為了提高性能,可將數(shù)據(jù)的易變部分、穩(wěn)定部分、經(jīng)常存取部分和存儲(chǔ)頻率較低部分分開存放。 (4)系統(tǒng)配置的設(shè)計(jì) DBMS產(chǎn)品一般都提供了一些存儲(chǔ)分配參數(shù),供設(shè)計(jì)人員和DBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行物理優(yōu)化。初始情況下,系統(tǒng)都為這些變量賦予了合理的缺省值,但是這些值不一定適合每一種應(yīng)用環(huán)境,在進(jìn)行物理設(shè)計(jì)時(shí),需要重新對(duì)這些變量賦值以改善系統(tǒng)的性能。
3、評(píng)價(jià)物理結(jié)構(gòu)
物理結(jié)構(gòu)設(shè)計(jì)過(guò)程中需要對(duì)時(shí)間效率、空間效率、維護(hù)代價(jià)和各種用戶要求進(jìn)行權(quán)衡,其結(jié)果可以產(chǎn)生多種方案,數(shù)據(jù)庫(kù)設(shè)計(jì)人員必須對(duì)方案進(jìn)行細(xì)致的評(píng)價(jià),從中選擇一個(gè)較優(yōu)的方案作為數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。 評(píng)價(jià)物理數(shù)據(jù)庫(kù)的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的存儲(chǔ)空間、存取時(shí)間和維護(hù)代價(jià)入手,對(duì)估算結(jié)果進(jìn)行權(quán)衡、比較,選擇出一個(gè)較優(yōu)的合理的物理結(jié)構(gòu)。
4、實(shí)例
教學(xué)管理系統(tǒng) 表1-1 學(xué)院
 表1-2 專業(yè)
 表1-3 學(xué)生
 表1-4 課程
 表1-5 成績(jī)單

六、數(shù)據(jù)庫(kù)實(shí)施
1、數(shù)據(jù)庫(kù)實(shí)施的過(guò)程
數(shù)據(jù)庫(kù)實(shí)施:指根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果,在計(jì)算機(jī)上建立起實(shí)際的數(shù)據(jù)庫(kù)結(jié)構(gòu)、裝入數(shù)據(jù)、進(jìn)行測(cè)試和試運(yùn)行的過(guò)程。

2、實(shí)例
學(xué)生表:
 課程表:
 專業(yè)表:
 學(xué)院表:
 成績(jī)表:

七、數(shù)據(jù)庫(kù)運(yùn)行與維護(hù)
數(shù)據(jù)庫(kù)運(yùn)行與維護(hù)的主要任務(wù)包括: A、維護(hù)數(shù)據(jù)庫(kù)的安全性與完整性 B、監(jiān)測(cè)并改善數(shù)據(jù)庫(kù)性能 C、重新組織和構(gòu)造數(shù)據(jù)庫(kù) 只有數(shù)據(jù)庫(kù)系統(tǒng)在運(yùn)行,就需要不斷地進(jìn)行修改、調(diào)整和維護(hù)。
|