- Java開發之道
- 張振坤 李鐘尉 陳丹丹等編著
- 1850字
- 2018-12-27 19:53:51
細節3 先決條件——分析和設計數據庫
數據庫在整個軟件開發過程中扮演著重要的角色,是用來存儲數據的地方,可以說數據庫設計得好壞將直接影響程序的開發速度和優劣,因此分析和設計數據庫就顯得尤為重要。在分析和設計數據庫時,首先需要對用戶的需求進行分析,設計一個結構合理,能夠滿足用戶需求的數據庫。
在根據用戶的需求對數據庫進行分析時需要注意以下兩點:
(1)在需求分析階段一個重要而困難的任務是收集將來應用所涉及的數據。
若設計人員僅僅按當前應用來設計數據庫,新數據的加入不僅會影響數據庫的概念結構,而且還將影響邏輯結構和物理結構,因此設計人員應充分考慮到可能的擴充和改變,使設計易于更改。
(2)必須強調用戶的參與,這是數據庫應用系統設計的特點。
數據庫應用系統和廣泛的用戶有著密切的聯系,其設計和建立又可能對更多人的工作環境產生重要影響。因而,設計人員應該和用戶充分合作進行合理設計,并對設計工作的最后結果承擔共同的責任。
說明
需求分析階段是數據庫設計的重要階段,需求分析最終決定著數據庫設計的好壞,從而也直接關系到所開發的程序的效率和質量,所以在需求分析階段,一定要與用戶進行溝通,并考慮到可能的擴充和改變,這樣才能真正設計出一個優秀的數據庫,為以后程序開發的效率提供保證。
數據庫設計又分為概念設計、邏輯設計和物理設計,下面分別進行講解。
1.數據庫概念設計
數據庫概念設計是分析數據間的關系,并建立一個抽象的數據模型,數據庫概念設計可以使用E-R圖來表示實體、屬性和聯系。
示例:
假設有一個部門實體,部門實體有部門編號和部門名稱兩個屬性,則部門實體的E-R圖如圖2.1所示。

圖2.1 部門實體E-R圖
說明
本示例只為部門實體的E-R 圖添加了兩個屬性——部門編號和部門名稱,并沒有為部門實體添加其他屬性,目的是為了說明如何建立實體的E-R圖。
2.數據庫邏輯設計
數據庫邏輯設計就是將數據庫概念設計階段的E-R 圖轉換為關系數據庫管理系統中的關系模式。數據庫概念設計階段的實例和聯系都可以表示為關系,每個關系對應一個二維表。
示例:
將圖2.1所示的部門實體的E-R圖轉換為關系模式,即將部門實體的E-R圖轉換為名為“部門”的關系,如下所示。
部門(部門編號,部門名稱)
1001 Java部 1002 設計部 ...... ......
說明
本示例中的“部門”就是關系名,其中,“部門編號”和“部門名稱”是“部門”這個關系的兩個屬性,該關系對應圖2.1所示的部門實體的E-R圖,當然,在“部門”這個關系中,也可以為每個屬性指定具體的值,“部門編號”屬性可以是1001、1002,等等,“部門名稱”屬性可以是Java部、設計部,等等。
將示例中的關系轉換為對應的二維表,如表2.1所示,該二維表的名稱為部門。
表2.1 “部門”二維表

說明
在表2.1所示的“部門”表中,表的名稱“部門”與關系中的關系名“部門”是對應的,表中的字段“部門編號”和“部門名稱”是與關系中的屬性“部門編號”和“部門名稱”相對應的,這樣就實現了將E-R圖轉換為對應的關系和二維表。
3.數據庫物理設計
數據庫物理設計是指對數據庫內部的物理結構進行調整,目的是為了提高數據訪問的速度,因此為了提高數據處理的速度,必須要了解數據庫物理設計的內容,下面是數據庫物理設計應該掌握的內容。
(1)確定數據的存儲結構
可以通過存取時間、存儲空間和維護代碼3個方面來確定數據的存儲結構,并要用最優的方法使這3個方面性能都達到最佳的效果。
(2)存取路徑的選擇和調整
由于每個用戶對數據庫的應用不同,因此必須要為同一個數據庫提供多個存取路徑,這也是數據庫物理設計所要完成的任務。
(3)確定數據的存儲位置
在使用數據庫時,還要根據不同數據的使用頻率來確定數據的存儲位置,對于使用頻率較高和速度要求較快的數據應存儲到硬盤上。當然,現在計算機的硬件配置都比較高,硬盤的容量也比較大,因此對于所要處理的數據都可以將其存儲到硬盤上。
(4)要確定數據存儲的分布
在數據庫物理設計階段還要確定塊的長度、裝載因子、緩沖區的大小和個數,等等,這些因素對數據的存取時間和空間都會產生影響,因此必須合理設置這些參數。例如,對于單個記錄的查找,如果輸入塊大,數據查找的概率就高,但是由于輸入塊大,因此數據傳輸的時間就會比較長,所以在設計時必須要權衡利弊。
編程準則:數據庫設計在軟件開發中至關重要
數據庫是程序中用于存儲數據的地方,數據庫設計得好壞對程序的開發至關重要。因此在進行程序開發之前,必須要設計好數據庫,對于一個設計成功的數據庫,對提高程序的開發進度和質量都是非常有幫助的,所以在進行程序開發之前,必須要在設計數據庫上多花些時間,這樣才能開發出好的軟件產品。
- C++面向對象程序設計(第三版)
- Java面向對象思想與程序設計
- Java完全自學教程
- Python神經網絡項目實戰
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優化計算
- 新編Premiere Pro CC從入門到精通
- 精通API架構:設計、運維與演進
- C# 8.0核心技術指南(原書第8版)
- Creating Mobile Apps with jQuery Mobile(Second Edition)
- JavaScript應用開發實踐指南
- Go語言底層原理剖析
- Hadoop大數據分析技術
- Learning Android Application Testing
- Spring Data JPA從入門到精通
- C語言編程魔法書:基于C11標準