數據庫設計概述
數據庫設計是指對於一個給定的應用環境,構造最優的數據庫模式,建立數據庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求,包括信息需求和處理需求。
- 信息需求:表示一個單位所需要的數據及其結構,該部分的數據庫設計是將應用系統所要用到的所有信息描述成實體、屬性及實體間的聯系,主要用來描述數據之間的聯系。
- 處理需求:表示一個單位需要經常進行的數據處理,該部分的數據庫設計是將要進行的數據處理描述為操作的優先次序、操作執行的頻率和場合,主要用來描述操作與數據之間的聯系。
- 信息需求表達了對數據庫的內容及結構的要求,是靜態要求,處理需求表達了基於數據庫的數據處理要求,是動態要求。
由於數據庫系統的復雜性及其與環境聯系的密切性,使得數據庫設計成為一個困難、復雜和費時的過程。大型數據庫設計和實施涉及多學科的綜合與交叉,是一項開發周期長、耗資巨大、風險較高的工程,因此,一個從事數據庫設計的專業人員至少應該具備以下4個方面的技術和知識:
- 數據庫的基本知識和數據庫設計技術。
- 計算機科學的基礎知識和程序設計的方法和技巧。
- 軟件工程的原理和方法。
- 應用領域的知識。
數據庫設計的任務
數據庫系統的設計主要包括數據庫的結構特性設計以及數據庫的行為特性設計。
- 設計數據庫的結構特性,是為特定應用環境構造出最優的數據模型。
- 設計數據庫的行為特性,是建立滿足各種用戶對數據庫應用需求的功能模型。
- 設計數據庫系統,首先應進行結構設計,數據庫結構設計是否合理,直接影響到系統中各個處理過程的性能和質量。另一方面,結構特性又不能與行為特性分離,靜態的結構特性的設計與動態的行為特性的設計分離,會導致數據與程序不易結合,增加數據庫設計的復雜性。
數據庫設計的原則
- 不依賴性原則:指數據庫系統對各種原始成果數據的格式和內容進行存儲和管理,對數據的存儲和管理不依賴於某個特定的軟件系統。
- 開放性原則:指系統不限定數據的存儲格式,即原則上能存儲任意格式的數據,在系統中,數據的存儲位置、存儲方法、數據格式等對系統管理者來說是透明的和開放的,原則上沒有數據黑匣子。系統管理員能夠知道數據以什么樣的格式存放在系統中的什么位置,為實現真正意義上的數據管理(特別是數據備份)提供條件。
- 可擴展性原則:隨着新數據源的出現和用戶需求的增加,今后數據庫所包含的數據種類可能會比現在多,因此要求系統具有一定的可擴充性。當增加新種類的數據時,系統只要在原來的基礎上增加一個對新數據的管理模塊和若干數據庫表后,就可實現對新數據的存儲和管理。此外,數據的可擴展性還包含數據服務的可擴展性,生產出的數據和建立的數據庫系統,不僅要能滿足用戶今天的要求,還應該考慮到用戶在未來幾年內可能提出的從數據的種類到數據服務的方式等方面的新的需求。
- 檢索和管理的高效性原則:數據庫系統的重點是對數據的管理和數據的提供,因此如何高效地實現“知道有什么數據、在什么地方、迅速提取數據並加工成用戶所要求的產品”,是進行系統設計時考慮的一個主要因素。
設計的方法
- 規范設計法:比較著名的有新奧爾良方法,它將數據庫設計分為4個階段:需求分析(分析用戶要求)、概念設計(信息分析和定義)、邏輯設計(設計實現)和物理設計(物理數據庫設計)。 其后,許多科學家對此進行了改進,認為數據庫系統設計應分6個階段進行,分別是需求分析、概念結構設計、邏輯結構設計、物理結構設計、數據庫實施和數據庫運行及維護。
- 基於E-R模型的設計方法、基於3NF(第三范式)的設計方法、基於抽象語法規范的設計方法等。
- 數據庫設計工具:經過多年努力,數據庫設計工具已經實用化和產品化。例如,Design 2000和PowerDesigner,分別是Oracle公司和Sybase公司推出的數據庫設計工具軟件,這些工具軟件可以自動或輔助設計人員完成數據庫設計過程中的很多任務,特別是大型數據庫的設計需要自動設計工具的支持。
設計的步驟
在數據庫需求分析的基礎上,按照規范化、結構化設計方法,將數據庫設計分為以下三個步驟:
- 邏輯結構設計:將系統需求分析的結果設計成數據庫的邏輯模式,即適應於某種特定DBMS所支持的邏輯數據模型,與此同時,還需為各種數據處理應用領域產生相應的邏輯子模式。這一步設計的結果是“邏輯數據庫”。
- 物理結構設計:根據特定DBMS所提供的、依賴於具體計算機結構的多種存儲結構和存取方法等,對具體的應用任務選定最合適的物理存儲結構(包括文件類型、索引結構和數據的存放次序等)、存取方法和存取路徑等。這一步設計的結果是“物理數據庫”。
- 驗證設計:在邏輯結構、物理結構設計的基礎上,收集數據並具體建立一個數據庫,運行一些典型的應用任務,來驗證數據庫設計的正確性和合理性,當發現問題時,可能需要返回到前面的步驟進行修改。一般一個大型數據庫的設計過程往往需要經過多次循環反復,因此,在做上述數據庫設計時,就應考慮到今后修改設計的可能性和方便性。