資料庫設計
資料庫設計就是設計資料庫的結構特性,即為特定應用環境構造出最優的數據模型。由於資料庫的結構特性是靜態的,一般不會輕易變動,因此又稱為資料庫的靜態結構設計。
資料庫設計的基本流程:先將客觀世界中的事物、事物間的聯繫用 E-R圖 表示,匯總各個分 E-R圖 得到一個總的 E-R圖,在此基礎上得到 概念結構模型,最後將概念結構模型轉換為資料庫支援的 邏輯結構模型。
新奧爾良(New Orleans)方法 是設計資料庫的一種規範化的方法,它將資料庫設計分為四個階段:需求分析、概念結構設計、邏輯結構設計、物理結構設計。下面分別介紹這四個階段。
需求分析
需求分析是資料庫設計的第一步,也是最困難、應當投入最大精力的一步。需求分析要做的是了解、分析用戶對系統的需求,弄清系統要達到的目標、要實現的功能。需求分析的結果用 數據流程圖 和 數據字典表示。值得注意的是,要使一個系統具有較長的生命周期,除了要滿足用戶提出的需求外,還需要系統設計人員預測未來系統可能要支援的功能。
下方的 系統 是指整個資料庫系統(包括資料庫和資料庫應用系統)
系統需求調查的內容
- 資料庫中的資訊內容:資料庫中需要存儲哪些數據
- 數據處理內容:系統應該實現哪些功能
- 數據的安全性和完整性要求:數據的存取控制要求、約束限制
系統需求調查的步驟
- 從整體上,調查分析系統應該支援的單元有哪些
- 對每個單元單獨進行分析,明確該單元使用哪些數據、如何使用數據……
- 確定系統的邊界,即明確哪些功能由系統實現,哪些功能由其他方式如人工、其他已有系統等實現
系統需求調查的方法
- 跟班作業
- 諮詢專業人士
- 開調查會
- 請業務員填寫調查表
- 查閱賬本、檔案、文獻等文字資料
系統需求分析的方法
調查了用戶的需求之後,需要進一步分析調查結果,以更明了的方式表達用戶需求。分析、表達用戶需求的方法有很多,其中一種稱為 結構化分析方法(Structured Analysis,SA)。
結構化分析方法採用自頂向下,逐步分解的方式分析系統。它把任何一個系統都抽象為下圖的形式:
數據流程圖表達了數據和處理過程之間的關係。數據的詳細資訊用數據字典表示。
數據字典
數據字典(Data Dictionary,DD)則是對系統中數據的詳細描述,它有以下 5 個部分:
- 數據項 = {數據項名,數據項含義說明,別名,類型,長度,取值範圍,與其他數據項的邏輯關係}
- 數據結構 = {數據結構名,含義說明,組成,{數據項或數據結構}}
- 數據流 = {數據流名,說明,流出過程,流入過程,組成:{數據結構},平均流量,高峰期流量}
- 數據存儲 = {數據存儲名,說明,編號,輸入的數據流,輸出的數據流,組成:{數據結構},數據量,存取頻度,存取方式}
- 處理過程= {處理過程名,說明,輸入:{數據流},輸出:{數據流},處理:{簡要說明}}
概念結構設計
概念結構設計是將系統需求分析得到的用戶需求 抽象為資訊結構的過程。概念結構即概念模型,用 E-R圖 對其進行描述。概念結構具有的特點:是現實世界的真實模型、易於理解、易於更改、易於向數據模型轉換。
概念結構的設計步驟
- 選擇局部應用,設計 分E-R圖
- 合併 分E-R圖,得到一個總的 E-R圖
視圖的集成
視圖的集成就是把設計好的各子系統的 分E-R圖 綜合成一個系統的 總E-R圖。視圖集成可以有兩種方法:①多個 分E-R圖 一次集成 ②逐步集成,採用累加的方法一次集成兩個 分E-R圖。無論採用哪種方法集成視圖,都要分兩步進行:
- 消除不同 分E-R圖 之間的衝突問題,包括屬性衝突、命名衝突、結構衝突。
- 消除不必要的實體集冗餘和聯繫冗餘,這裡有兩種方法:①直觀分析方法消除冗餘 ②用規範化理論消除冗餘
概念結構設計完成後,便得到了一個總的E-R圖,以及上一階段需求分析中得到的數據流程圖、數據字典。E-R圖、數據流程圖、數據字典均與特定的資料庫管理系統無關、反映客觀世界情況、易於普通用戶理解。我們需要向用戶確認這三個設計結構是否準確全面。待用戶確認無誤後,方可向下一階段繼續。
從下一階段開始,所作的工作都需要結合具體的系統應用環境,若此時才發現對現實世界的理解有所偏差,再進行修改,成本便高了。因此務必確保概念結構設計和需求分析階段得到的結果與客觀世界符合。
邏輯結構設計
邏輯結構設計的任務就是把概念模型轉換成某個具體的 DBMS 所支援的數據模型。通常概念模型向邏輯模型轉換過程分3步進行:
- 概念模型 轉換為 一般的數據模型
- 一般的數據模型 轉換為 特定DBMS支援的數據模型
- 優化數據模型
因為目前主流的資料庫大都是關係型資料庫,因此本文主要討論概念模型向關係數據模型的轉換。
概念模型向關係模型的轉換
首先一個實體集(E-R圖中的矩形)對應一個關係;一個聯繫(E-R圖中的橢圓)根據不同的類型分開討論:
- 1:1 和 1:n 的聯繫:聯繫可單獨成為一個關係;也可以合併到 n 端的實體集對應的關係中,此時關係的碼不變
- n:m 的聯繫和多對多的多元聯繫(三個及以上的實體集產生的聯繫):聯繫只能單獨成為一個關係,該關係的碼是 與該聯繫相連的各實體碼的組合
物理結構設計
資料庫的物理結構:資料庫在物理設備上的存儲結構與存取方法,依賴於給定的電腦系統。
物理結構設計是對於給定的邏輯數據模型,選取一個最適合應用環境的物理結構。物理結構設計分為兩步:
- 確定資料庫的存取方法和存取結構
- 對物理結構進行評價(重點是時間和效率),若評價結構滿足原設計要求,則可以進行物理實施;否則要修改物理結構,甚至返回邏輯設計階段修改數據模型
資料庫物理結構設計的任務之一:確定建立哪些存取路徑、選擇哪些數據存取方法。關係資料庫常用的存取方法有索引方法、聚簇方法、Hash方法等。
關係模式中索引存取方法的選擇
- 如果一個(一組)屬性經常出現在查詢條件中,則考慮在這一個(一組)屬性上建立索引
- 如果一個屬性經常作為最大值和最小值等聚集函數的參數,則考慮在這個屬性上建立索引
- 如果一個(一組)屬性經常在連接操作中出現,則考慮在這一個(一組)屬性上建立索引
註:索引並不是建立的越多越好,因為系統維護索引也要付出代價。例如一個屬性經常會更新,那麼就不適合在這個屬性上建立索引。