數據庫設計:針對具體的應用場景,使用現有的DBMS構建適合的數據庫模式,創建數據庫及其應用系統,使之能有效地收集、存儲、操做和管理數據,知足實際業務中各種用戶的應用需求、信息需求和處理需求,這個過程稱之爲數據庫設計。數據庫
1. 設計概述安全
1.1 數據庫設計的兩個階段(生命週期)數據庫設計
1.1.1 數據庫分析和設計階段(需求分析、概念設計、邏輯設計、物理設計)函數
1.1.2 數據庫實現和操做階段(數據庫的實現、操做和監督、修改和調整)工具
1.2 數據庫設計的兩個目標性能
1.2.1 知足應用功能需求(知足用戶應用中的增、刪、查、改)優化
1.2.2 良好的數據庫性能(數據庫具備高效的存取和對空間的節省,並具備良好的數據共享性、完整性、一致性及安全保密性)spa
1.3 數據庫設計的兩大內容設計
1.3.1 數據庫結構設計(模式及子模式的設計[靜態]:概念結構設計、邏輯結構設計、物理結構設計)3d
1.3.2 數據庫行爲設計(肯定用戶的行爲和動做[動態])
1.4 數據庫設計的三種方法
1.4.1 直觀設計法(利用經驗和技巧設計,沒法保證質量,已被淘汰)
1.4.2 規範設計法
(1) 新奧爾良設計方法(分階段)
把設計分爲四個階段(需求分析、概念結構設計、邏輯結構設計、物理結構設計),注重結構設計,而不考慮行爲設計。
(2) 基於E-R模型的設計方法
在需求分析的基礎上用 E-R圖 構造反映實體之間聯繫的企業模式,而後將此模式轉換爲概念模式。
(3) 基於第三範式的設計方法(結構化)
在需求分析的基礎上肯定數據庫的模式、屬性與屬性間的依賴關係,而後組織在一個關係模式中,再分析模式中不符合第三範式的關係,進行模式分解。
1.4.3 計算機輔助設計法(以人機交互的方式模擬規範化設計的方法,以此加速設計的過程)
1.5 數據庫設計的過程
2. 基本步驟(需求分析、概念設計、邏輯設計、物理設計、數據庫實施、數據庫的運行和維護)
2.1 需求分析(肯定數據庫範圍、應用過程分析、收集與分析數據、編寫需求分析報告)
目的:瞭解與分析用戶的信息與應用處理的要求,並將結果按必定格式整理而造成需求分析報告。
做用:該分析報告是後續概念設計、邏輯設計、物理設計、數據庫創建與維護的依據。
2.1.1 肯定數據庫範圍
(1) 首先考慮支持用戶工做所必須的應用要求
(2) 肯定數據庫應支持的應用功能,充分知足用戶的應用功能要求
(3) 儘量考慮未來的應用需求,以提升數據庫的應變能力
(4) 避免應用過程當中對數據庫作太多或太大的修改,從而提升數據庫的生命週期
2.1.2 應用過程分析(可藉助數據流程圖等工具)
(1) 肯定要用到的數據
(2) 數據的使用順序
(3) 數據該做如何處理及處理的策略
(4) 處理的結果
2.1.3 收集與分析數據
目的:瞭解並分析數據的組成格式及操做特徵,每一個數據元素的語義及關係等。
能夠下三個方面展開:
(1) 靜態結構(不施加應用操做時數據的原始情況)
I. 數據分類表(數據的整體描述)
II. 數據元素表(數據項及屬性)
(2) 動態結構(施加應用操做時數據的情況)——概念設計和物理設計的重要依據
I. 任務分類表(對數據流程的分析)
II. 數據操做特徵表(描述任務與數據之間的關係)
(3) 數據約束(使用數據時的特殊要求)
I. 數據的安全保密性,其主要是針對各類不一樣類數據,誰擁有操做(增刪查改)權限
II. 數據的完整性,其主要是指數據正確性的約束範圍和驗證準則,以及一致性保護的要求
III. 響應時間,其主要是指某些特定應用要求的數據存取時間限制
IV. 數據恢復,其主要是指轉儲及恢復的時機與範圍等要求
2.1.4 編寫需求分析報告
做用:應用需求的業務人員和數據庫設計人員的「共同語言」,能準確地表達應用需求,可讀性強,且無二義性,能爲數據庫的後續階段設計提供全面、準確和詳細的資料。
一般包含如下內容:
(1) 數據庫的應用功能目標
(2) 標明不一樣用戶的視圖範圍
(3) 應用處理過程需求說明
I. 數據流程圖
II. 任務分類表
III. 數據操做特徵表
IV. 操做過程說明書(根據以上三類內容,標明各任務的主要邏輯執行步驟)
(4) 數據字典(包括數據分類表、數據元素表和各種原始資料)
做用:存儲和檢索各類數據(元數據)描述。
(5) 數據量(根據數據分類表的靜態數據量和操做特徵表的動態數據量統計得出)
(6) 數據約束
2.2 概念結構設計
目的:在需求分析報告的基礎上按照特定的方法設計知足應用需求的用戶信息結構(概念模型),可徹底不顧及具體的硬件和軟件的限制,它是一個符合用戶要求的趨於理想化的信息結構。
(1) 實體分析法(自頂向下:E-R模型)
(2) 屬性綜合法(自底向上)
步驟:屬性分類、實體構成、聯繫的肯定
2.3 邏輯結構設計
目的:將概念模型轉換爲等價的、併爲特定DBMS所支持的數據模型(層次、網狀、關係)的結構。
(1)需準備如下信息
I. 獨立於特定DBMS的概念模型
II. 有關響應時間、安全保密性、數據完整性及恢復方面的要求說明,包括保持數據一致性的規則說明
III. 數據量及使用頻率
IV. 特定DBMS特性,包括DBMS支持的數據模型及數據定義語言的說明
(2)需產出如下信息
I. 特定DBMS支持的概念模型(即模式)
II. 一個或多個外部視圖(即子模式)
III. 物理設計說明(存入數據庫的數據量、使用頻率和響應時間要求)
IV. 程序設計說明(在需求分析的基礎上,根據已完成的邏輯模型(模式),編制各程序名、執行邏輯步、存取數據的名、順序和操做特徵(增刪查改)的說明)
(3)設計步驟
I. 應用程序設計說明:爲可實際運行的應用程序設計提供依據與指導,並做爲設計評價的基礎。
II. 設計評價:分析並檢驗模式及子模式的正確性與合理性,經過程序設計指南中提交的程序執行邏輯步驟進行模擬,考覈模式及子模式是否知足應用需求,並進一步估計數據容量及存取效率,爲物理設計提供參考信息。
2.4 物理設計
目的:根據指定的邏輯結構,研究並構造物理結構的過程,具體包括肯定數據庫在存儲設備上的存儲結構及存取方法,可能還包括創建索引和彙集,以及物理塊大小、緩衝區個數和大小、數據壓縮的選擇等。
2.5 數據庫實施
(1) 加載數據
(2) 應用程序設計(隨着數據庫結構設計逐步進行,這樣才能具備較高的穩定性和實用性)
(3) 數據庫試運行
2.6 數據庫運行和維護
難點:數據庫重組與重構
重組:當空間利用率和存取效率降低時,利用DBMS提供的設施調整數據的存儲位置,從而回收「碎片」,使有關聯的數據儘量靠近存放,達到提升空間利用率和數據存取效率的目的。
重構:修改部分邏輯結構或物理結構(設計階段未考慮周到)。
3. 關係數據庫設計方法
3.1 關係數據庫設計過程與各級模式
3.2 概念結構的設計方法
步驟:創建局部信息結構→合成全局信息結構並優化(用E-R圖做描述工具)
組成三要素:實體、實體的屬性以及實體間的聯繫
3.2.1 E-R圖的表示方法
實體型之間的聯繫類型:1:1、1:N、M:N
(1) 兩個實體型之間的聯繫
(2) 兩個以上的實體型之間的聯繫
(3) 單個實體型內的聯繫
3.2.2 局部信息結構設計
目的:根據需求分析報告中標明的用戶視圖範圍創建知足應用需求的信息結構。
步驟:肯定局部範圍、選擇實體、選擇實體關鍵字、肯定實體間的聯繫、肯定實體的屬性。
(1) 肯定局部範圍(需求分析報告中的用戶視圖範圍(子模式範圍))
(2) 選擇實體(依據數據分類表選擇實體;難點:區分實體與屬性)
(3) 選擇實體關鍵字(惟一標識實體)
(4) 肯定實體間的聯繫(實體間能匹配)
(5) 肯定實體的屬性(屬性分爲標識屬性和說明屬性)
3.2.3 全局信息結構設計
目的:將全部局部信息結構合併爲一個全面且準確的全局信息結構,避免或消除不一樣局部信息結構因合併致使的數據不一致,並儘量加強數據共享性,控制數據的冗餘。
衝突:屬性衝突、命名衝突和結構衝突。
(1) 屬性衝突:屬性域(類型、取值範圍、取值集合);屬性取值單位。
(2) 命名衝突:同名異義;異名同義。
(3) 結構衝突:同一對象在不一樣的局部E-R圖表明不一樣性質(實體、屬性);同一實體在不一樣E-R圖中屬性個數或類型不一致;實體間的聯繫在不一樣的E-R圖中的類型不一致。
優化步驟:相關實體類型合併、消除沒必要要的冗餘屬性、消除沒必要要的冗餘聯繫。
3.3 邏輯結構的設計方法
目的:把概念設計階段的E-R圖轉換爲RDBMS支持的數據模型。
步驟:將E-R圖轉換爲關係模型、對關係模型進行優化、設計面向用戶的外模式。
3.3.1 E-R圖向關係模型轉換
目的:將實體、實體的屬性以及實體間的聯繫轉換爲關係模型。
轉換原則:
(1) 一個實體型可轉換爲一個關係模式
(2) 一個[1:1]實體聯繫能夠轉換爲一個獨立的關係模式,也能夠任意一端的關係模式合併
(3) 一個[1:N]實體聯繫能夠轉換爲一個獨立的關係模式,也能夠任意N端的關係模式合併
(4) 一個[M:N]實體聯繫能夠轉換爲一個關係模式
(5) 三個或三個以上實體間的多元聯繫能夠轉換爲一個關係模式
(6) 具備相同碼的關係模式能夠合併
3.3.2 數據模型的優化
目的:根據應用須要修改、調整數據模型的結構,以關係規範化理論爲指導。
(1) 肯定屬性間的函數依賴關係
(2) 對各關係模式間的數據依賴進行極小化處理,消除冗餘的聯繫
(3) 判斷各關係模式的範式,根據實際需求選擇合適的範式
(4) 根據需求分析階段的數據處理要求,分析這些模式是否適合應用環境,肯定是否進行模式分解或合併
(5) 對關係模式進行必要的分解,以提升數據操做的效率及空間的利用率
3.3.3 設計用戶子模式
目的:根據局部應用需求,利用視圖(View)設計更符合局部用戶須要的外模式。
(1) 可根據用戶習慣從新定義屬性的別名
(2) 可對不一樣級別的用戶定義不一樣的視圖,保證系統的安全性
(3) 可對常用的複雜查詢定義爲視圖,簡化用戶操做
3.4 物理結構設計方法
目的:經過對關係創建索引和彙集來實現與應用相關數據的邏輯鏈接和物理彙集,以改善對數據庫的存取效率。
3.4.1 創建索引
注意:創建索引的對象應是插入、修改和刪除操做較少的,但使用頻率(查詢)較高的。
(1) 靜態索引(預先創建,適合多用戶且使用週期長)
(2) 動態索引(臨時創建,適合單獨用戶或臨時需求)
3.4.2 創建彙集
說明:彙集時將數據集中存放的物理存儲技術,藉以提升I/O的數據命中率而改善存取速率。
注意:使用頻率高、數據量大的數據才創建彙集,且修改操做應較少。