第六章 數據庫設計
學習重點:
- 數據庫設計的基本步驟疼邀;
- 數據庫設計各階段的具體設計內容誓焦;
- 數據庫設計各階段的設計描述;
- 數據庫設計各階段的設計方法诺祸;
學習難點:
- E-R圖的設計携悯;
- 數據模型的優(yōu)化;
- 設計理論與實際應用的結合序臂;
6.1 數據庫設計概述
數據庫設計是指對于一個給定的應用環(huán)境蚌卤,構造最優(yōu)的數據庫模式,建立數據庫及其應用系統(tǒng)奥秆,使之能夠有效的存儲數據,滿足用戶的應用需求咸灿。
6.1.1 數據庫和信息系統(tǒng)
數據庫是信息系統(tǒng)的核心和基礎构订。
6.1.2 數據庫設計的特點
數據庫建設是硬件、軟件和干件的結合(技術與管理的界面稱之為“干件”)避矢。
數據庫設計應該與應用系統(tǒng)設計相結合
結構和行為分離設計悼瘾。
6.1.3 數據庫設計方法簡述
手工試湊法和規(guī)范設計法
手工試湊法:設計質量與設計人員的經驗和水平直接相關。難以保證工程質量审胸。
規(guī)范設計法:手工設計方法亥宿,過程迭代和逐步求精。
6.1.4 數據庫設計的基本步驟
6.1.4.1 需求分析階段
準確了解與分析用戶需求砂沛。
用戶需求的收集和分析烫扼,結果得到數據字典描述的數據需求和數據流圖描述的處理需求。
6.1.4.2 概念結構設計階段
概念結構設計是整個數據庫設計的關鍵碍庵,通過對用戶需求進行綜合映企、歸納與抽象悟狱,形成一個獨立于具體DBMS的概念模型,可以用E-R圖表示堰氓。
6.1.4.3 邏輯結構設計階段
將概念結構轉換為某個DBMS所支持的數據模型挤渐,并進行優(yōu)化。
6.1.4.4 數據庫物理設計階段
為邏輯數據模型選取一個最適合應用環(huán)境的物理結構双絮。
6.1.4.5 數據庫實施階段
運用DBMS提供的數據語言(例如SQL)及其宿主語言(例如C)浴麻,根據邏輯設計和物理設計的結果:
建立數據庫,組織數據入庫囤攀,編制白胀、調試應用程序,進行試運行抚岗。
6.1.4.6 數據庫運行和維護階段
6.2 需求分析
需求分析就是分析用戶的需要與要求或杠,需求分析是設計數據庫的起點,要做到準確地反映用戶的實際要求宣蔚。
6.2.1 需求分析的任務
通過調查向抢,充分了解原系統(tǒng)工作概況,明確用戶的各種需求胚委。
6.2.2 需求分析的方法
調查清楚用戶的實際需求并進行初步分析挟鸠,與用戶達成共識,進一步分析與表達用戶需求亩冬。
進一步分析與表達用戶需求
常使用自頂向下的結構化分析方法(Structured Analysis艘希,簡稱SA方法),從最上層的系統(tǒng)機構入手硅急,采用逐層分解的方法分析系統(tǒng)覆享,并用數據流圖(DFD)和數據字典(DD)描述系統(tǒng)。
6.2.3 數據字典
數據流圖表達了數據和處理過程的關系营袜。系統(tǒng)中的數據則借助數據字典(Data Dictionary)來描述撒顿。
數據字典的內容包括有:數據項、數據結構荚板、數據流凤壁、數據存儲、處理過程跪另。
數據項
數據項描述={數據項名拧抖,數據項含義說明,別名免绿,數據類型唧席,長度,取值范圍,取值含義袱吆,與其他數據項的邏輯關系}厌衙。
數據結構
數據結構描述={數據結構名,含義說明绞绒,組成:{數據項或數據結構}}婶希。
數據流
數據流描述={數據流名慕匠,說明舞竿,數據流來源虹钮,數據流去向辐烂,組成:{數據結構},平均流量枚冗,高峰期流量}围俘。
數據存儲
數據存儲描述={數據存儲名羹呵,說明壁晒,編號瓷们,流入的數據流,流出的數據流秒咐,組成:{數據結構}谬晕,數據量,存取方式}
處理過程
處理過程描述={處理過程名携取,說明攒钳,輸入:{數據流},輸出:{數據流}雷滋,處理:{簡要說明}}不撑。
6.3 概念結構設計
6.3.1 概念設計
需求分析階段描述用戶應用需求是現實世界的具體需求,將需求分析得到的用戶需求抽象為信息結構即概念模型的過程就是概念結構設計晤斩。
6.3.2 概念結構設計的方法與步驟
設計概念結構的四類方法:
自頂向下
首先定義全局概念結構的框架焕檬,然后逐步細化
自底向上
首先定義各局部應用的概念結構,然后將它們集成起來尸昧,得到全局概念結構揩页。
逐步擴張
首先定義最重要的核心概念結構,然后向外擴充烹俗,以滾雪球的方式逐步生成其他概念結構,直至總體概念結構萍程。
混合策略
將自頂向下和自底向上相結合幢妄,用自頂向下策略設計一個全局概念結構的框架,以它為骨架集成油自底向上策略中設計的各局部概念結構茫负。
6.3.3 數據抽象與局部視圖設計
概念結構式對現實世界的一種抽象蕉鸳,三種常用的抽象分別是:分類、聚集、概括潮尝。
分類
它抽象了對象值與型之間的“is member of ”的語義榕吼,在E-R模型中,實體型就是這種抽象勉失。
聚集
它抽象了對象內部類型和成分之間的“is part of”的語義羹蚣,在E-R模型中若干屬性的聚集組成了實體型,就是這種抽象乱凿。
概括
它抽象了類型之間的“is subset of”的語義顽素,概括有一個很重要的性質:繼承性。子類繼承超類上定義的所有抽象徒蟆。
局部視圖設計
選擇局部應用
一般以中層數據流圖作為設計分E-R圖的依據胁出。
逐一設計分E-R圖
6.3.4 視圖的集成
各個局部視圖即分E-R圖建立好后,還需要對它們進行合并段审,集成為一個整體的數據概念結構即總E-R圖全蝶。
視圖集成的兩種方式:一次集成、逐步積累式寺枉。
在合并過程中需要解決各類沖突抑淫。
6.4 邏輯結構設計
邏輯結構設計的任務是:概念結構式各種數據模型的共同急促,為了能夠用某一DBMS實現用戶需求型凳,還必須將概念結構進一步轉化成相應的數據模型丈冬,這正是數據庫邏輯結構設計所要完成的任務。
邏輯結構設計的步驟:
將概念結構轉化為一般的關系甘畅、網狀埂蕊、層次模型;將轉換來的關系疏唾、網狀蓄氧、層次模型向特定DBMS支持下的數據模型轉換;最后對數據模型進行優(yōu)化槐脏。
6.4.1 E-R圖向關系模型的轉換
E-R圖由實體喉童、實體的屬性和實體之間的聯系三個要素組成,關系模型的邏輯結構式一組關系模式的集合顿天,將E-R圖轉換為關系模型:將實體堂氯、實體的屬性和實體間的聯系轉換稱關系模式。
轉換原則:
- 一個實體型轉換為一個獨立關系模式牌废;
- 一個1:1聯系可以轉換為一個獨立關系模式咽白,也可以與任意一端對應的關系模式合并;
- 一個1:n聯系可以轉換為一個獨立關系模式鸟缕,也可以與n端對應的關系模式合并晶框;
- 一個m:n聯系轉換為一個獨立關系模式排抬;
- 三個或三個以上實體間的一個多元聯系可以轉換為一個關系模式;
- 具有相同碼的關系模式可合并授段;
6.4.2 數據模型的優(yōu)化
由于數據庫邏輯設計的結果不是唯一的蹲蒲。得到初步數據模型后,還應該適當的進行修改侵贵、調整數據模型的結構届搁,以進一步提高數據庫應用系統(tǒng)的性能,這就是數據模型的優(yōu)化模燥,而關系數據模型的優(yōu)化通常以規(guī)范化理論為指導咖祭。
6.4.3 設計用戶子模式
使用更符合用戶習慣的別名
針對不同級別的用戶定義不同的外模式,以滿足系統(tǒng)對安全性的要求
簡化用戶對系統(tǒng)的使用
6.5 數據庫的物理設計
數據庫在物理設備上的存儲結構與存取方式稱為數據庫的物理結構蔫骂,它依賴于給定的計算機系統(tǒng)么翰。為一個給定的邏輯數據模型選取一個最合適應用環(huán)境的物理結構的過程,就是數據庫的物理設計辽旋。
6.5.1 數據庫的物理設計的內容和方法
設計物理存儲結構的準備工作:充分了解應用環(huán)境浩嫌,詳細分析要運行的事物,以獲得選擇物理數據庫設計所需參數补胚;充分了解所用RDBMS的內部特征码耐,特別是系統(tǒng)提供的存取方法和存儲結構。
6.5.2 關系模式存取方法選擇
數據庫系統(tǒng)是多用戶東i昂的系統(tǒng)溶其,對同一個關系要建立多條存取路徑才能滿足多用戶的多種應用要求骚腥,物理設計的第一個任務就是確定要選擇那些存取方式,即建立哪些存取路徑瓶逃。
常用的存取方式:索引方法(目前最主要的是B+書索引方法)束铭、聚簇(Cluster)索引、HASH方法厢绝。
索引方法適用于:當一個(組)屬性經常作為查詢條件契沫、聚集函數、連接條件時昔汉。
聚簇索引適用于:經常在一起進行連接操作的關系懈万,一個關系的一組屬性常用于想等條件的比較、一個關系的一組屬性上的值重復率很高靶病。
HASH方法適用于:連接條件或相等比較條件中会通,關系大小可預知且不變,DBMS支持動態(tài)HASH存取方式娄周。
6.5.3 確定數據庫的存儲結構
確定數據存放的位置和存儲結構:關系渴语、索引、聚簇昆咽、日志、備份。
確定系統(tǒng)配置:同時使用數據庫的用戶數掷酗、同時打開的數據庫對象書调违、使用的緩沖區(qū)長度和個數、時間片大小泻轰、數據庫的大小技肩、裝填因子、鎖的數目...
6.5.4 評價物理結構
對數據庫物理設計過程中產生的多種方案進行細致的評價浮声,從中選擇一個較優(yōu)的方案作為數據庫的物理結構虚婿。
6.6 數據庫的實施和維護
6.6.1 數據的載入和應用程序的調試
數據載入
在數據庫結構建立好后,就可以向數據庫中裝在數據了泳挥,組織數據入庫是數據庫實施階段最主要的工作然痊。裝載的方法主要有:人工方法和計算機輔助數據入庫。
應用程序的調試
數據庫應用陳鼓的設計應該與數據設計并行進行屉符。
6.6.2 數據庫的試運行
應用程序調試完畢后剧浸,并且有一部分數據入庫后,就可以開始數據庫的試運行矗钟。
6.6.3 數據庫的運行和維護
在數據庫試運行結果復合設計目標后唆香,數據庫就可以真正投入運行了,數據庫投入運行標志著開發(fā)任務的基本完成和維護工作的開始吨艇。