- 數據庫系統原理及MySQL應用教程(第2版)
- 李輝等編著
- 2062字
- 2020-10-15 17:32:34
4.4 邏輯結構設計
邏輯結構設計的任務是把概念結構設計階段設計好的基本E-R圖轉換為與選用DBMS產品所支持的數據模型相符合的邏輯結構。也就是導出特定的DBMS可以處理的數據庫邏輯結構,這些模式在功能、性能、完整性和一致性方面滿足應用要求。
特定的DBMS可以支持的組織層數據模型包括關系模型、網狀模型、層次模型和面向對象模型等。對某一種數據模型,各個機器系統又有許多不同的限制,提供不同的環境與工具。設計邏輯結構時一般包括3個步驟,如圖4-17所示。

圖4-17 邏輯結構設計
1)將概念結構轉化為一般的關系、網狀、層次模型。
2)將轉換來的關系、網狀、層次模型向特定DBMS支持下的數據模型轉換。
3)對數據模型進行優化。
目前,新設計的數據庫應用系統大多都采用支持關系數據模型的DBMS,所以這里只介紹E-R圖向關系數據模型轉換的原則與方法。
4.4.1 E-R圖向關系模型的轉換
概念設計中得到的E-R圖是由實體、屬性和聯系組成的,而關系數據庫邏輯設計的結果是一組關系模式的集合。所以將E-R圖轉換為關系模型實際上就是將實體、屬性和聯系轉換成關系模式。(第2章已經闡述,此處不再展開)
4.4.2 關系模式規范化
應用規范化理論對上述產生的關系的邏輯模式進行初步優化,以減少乃至消除關系模式中存在的各種異常,改善完整性、一致性和存儲效率。規范化理論是數據庫邏輯設計的指南和工具,規范化過程可分為兩個步驟:確定范式級別和實施規范化處理。
1.確定范式級別
考查關系模式的函數依賴關系,確定范式等級。逐一分析各關系模式;考查是否存在部分函數依賴、傳遞函數依賴等,確定它們分別屬于第幾范式。
2.實施規范化處理
確定范式級別后,利用后面的規范化理論,逐一考察各個關系模式,根據應用要求,判斷它們是否滿足規范要求,可用已經介紹過的規范化方法和理論將關系模式規范化。
綜合以上數據庫的設計過程,規范化理論在數據庫設計中有如下幾方面的應用。
1)在需求分析階段,用數據依賴概念分析和表示各個數據項之間的聯系。
2)在概念結構設計階段,以規范化理論為指導,確定關系鍵,消除初步E-R圖中冗余的聯系。
3)在邏輯結構設計階段,從E-R圖向數據模型轉換過程中,用模式合并與分解方法達到規范化級別。
4.4.3 模式評價與改進
關系模式的規范化不是目的而是手段,數據庫設計的目的是最終滿足應用需求。因此,為了進一步提高數據庫應用系統的性能,還應該對規范化后產生的關系模式進行評價、改進,經過反復多次的嘗試和比較,最后得到優化的關系模式。
模式評價的目的是檢查所設計的數據庫模式是否滿足用戶的功能要求、效率要求,確定加以改進的部分。模式評價包括功能評價和性能評價。
所謂的功能評價指對照需求分析的結果,檢查規范化后的關系模式集合是否支持用戶所有的應用要求。對于目前得到的數據庫模式,由于缺乏物理結構設計所提供的數量測量標準和相應的評價手段,所以性能評價是比較困難的,只能對實際性能進行估計,包括邏輯記錄的存取數、傳送量以及物理結構設計算法的模型等。
根據模式評價的結果,對已生成的模式進行改進。如果因為系統需求分析、概念結構設計的疏漏導致某些應用不能得到支持,則應該增加新的關系模式或屬性。如果因為性能考慮而要求改進,則可采用合并或分解的方法。
(1)合并
如果有若干關系模式具有相同的主鍵,并且對這些關系模式的處理主要是查詢操作,而且經常是多關系的連接查詢,那么可對這些關系模式按照組合使用頻率進行合并。這樣便可以減少連接操作而提高查詢效率。
(2)分解
為了提高數據操作的效率和存儲空間的利用率,最常用和最重要的模式優化方法就是分解,根據應用的不同要求,可以對關系模式進行垂直分解和水平分解。
經過多次的模式評價和模式改進之后,最終的數據庫模式得以確定。邏輯結構設計階段的結果是全局邏輯數據庫結構。對于關系數據庫系統來說,就是一組符合一定規范的關系模式組成的關系數據庫模式。
數據庫系統的數據物理獨立性特點消除了由于物理存儲改變而引起的對應程序的修改。標準的DBMS例行程序應適用于所有的訪問,查詢和更新事務的優化應當在系統軟件一級上實現。這樣,邏輯數據庫確定之后,就可以開始進行應用程序設計了。
在數據庫設計的工作中,有時數據庫開發人員僅從范式等理論知識無法找到問題的“標準答案”,需要靠數據庫開發人員經驗的積累以及智慧的沉淀。設計同一個系統,不同經驗的數據庫開發人員,仁者見仁智者見智,設計結果往往不同。但不管怎樣,只要實現了相同的功能,所有的設計結果沒有對錯之分,只有合適與不合適之分。
因此,數據庫設計像一門藝術,數據庫開發人員更像一名藝術家,設計結果更像一件藝術品。數據庫開發人員要依據系統的環境(網絡環境、硬件環境、軟件環境等)選擇一種更為合適的方案。有時為了提升系統的檢索性能、節省數據的查詢時間,數據庫開發人員不得不考慮使用冗余數據,不得不浪費一些存儲空間。有時為了節省存儲空間、避免數據冗余,又不得不考慮犧牲一些時間。設計數據庫時,“時間”(效率或者性能)和“空間”(外存或內存)好比天生的一對“矛盾體”,這就要求數據庫開發人員保持良好的數據庫設計習慣,維持“時間”和“空間”之間的平衡關系。
- 軟件安全技術
- Implementing Modern DevOps
- 零基礎搭建量化投資系統:以Python為工具
- C語言程序設計(第3版)
- 名師講壇:Java微服務架構實戰(SpringBoot+SpringCloud+Docker+RabbitMQ)
- VMware虛擬化技術
- Mastering Unity 2D Game Development(Second Edition)
- Learning AWS
- Python從入門到精通(第3版)
- Android編程權威指南(第4版)
- Java RESTful Web Service實戰
- Learning TypeScript
- Mastering Responsive Web Design
- ArcGIS Blueprints
- C++游戲設計案例教程