熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

數據庫完整性設計

2013-11-13 16:17:33  來源: Oracle 

  在充分了解數據庫完整性各種控制機制的基礎上確定要通過數據庫完整性約束實現的業務規則然後依據整個系統的體系結構和性能要求合理選擇各個業務規則的實現方式最後進行測試解決約束沖突和性能瓶頸這是數據庫完整性設計的一個完整流程
  
  
  隨著計算機技術的發展和普及數據庫系統的應用越來越廣泛數據庫在計算機系統中的地位日益凸顯出來一個好的數據庫應用系統需要一個好的數據庫設計而數據庫完整性設計作為數據庫設計的一個重要組成部分直接影響到數據庫系統能否真實地反映現實世界因此設計實施和維護數據庫完整性的重要性不言而喻
  
  
  數據庫總體上可分為網狀數據庫層次數據庫和關系數據庫其中以關系數據庫最為成熟關系數據庫不僅具有管理大型數據的能力良好的性能和穩定性還有較為完備的數據完整性在實際應用中最為廣泛本文以關系數據庫為例說明數據庫完整性設計問題下文中的數據庫均指關系數據庫
  
  
  數據庫完整性概述
  
  
  數據庫完整性是指數據庫中數據的正確性和相容性數據庫完整性由各種各樣的完整性約束來保證因此可以說數據庫完整性設計就是數據庫完整性約束的設計數據庫完整性約束可以通過DBMS或應用程序來實現基於DBMS的完整性約束作為模式的一部分存入數據庫中通過DBMS實現的數據庫完整性按照數據庫設計步驟進行設計而由應用軟件實現的數據庫完整性則納入應用軟件設計(本文主要討論前者)數據庫完整性對於數據庫應用系統非常關鍵其作用主要體現在以下幾個方面
  
  
  .數據庫完整性約束能夠防止合法用戶使用數據庫時向數據庫中添加不合語義的數據
  
  
  .利用基於DBMS的完整性控制機制來實現業務規則易於定義容易理解而且可以降低應用程序的復雜性提高應用程序的運行效率同時基於DBMS的完整性控制機制是集中管理的因此比應用程序更容易實現數據庫的完整性
  
  
  .合理的數據庫完整性設計能夠同時兼顧數據庫的完整性和系統的效能比如裝載大量數據時只要在裝載之前臨時使基於DBMS的數據庫完整性約束失效此後再使其生效就能保證既不影響數據裝載的效率又能保證數據庫的完整性
  
  
  .在應用軟件的功能測試中完善的數據庫完整性有助於盡早發現應用軟件的錯誤
  
  
  數據庫完整性約束可分為列級靜態約束元組級靜態約束關系級靜態約束列級動態約束元組級動態約束關系級動態約束動態約束通常由應用軟件來實現不同DBMS支持的數據庫完整性基本相同Oracle支持的基於DBMS的完整性約束如下表所示
  
  數據庫完整性設計示例
  
  一個好的數據庫完整性設計首先需要在需求分析階段確定要通過數據庫完整性約束實現的業務規則然後在充分了解特定DBMS提供的完整性控制機制的基礎上依據整個系統的體系結構和性能要求遵照數據庫設計方法和應用軟件設計方法合理選擇每個業務規則的實現方式最後認真測試排除隱含的約束沖突和性能問題基於DBMS的數據庫完整性設計大體分為以下幾個階段
  
  
  .需求分析階段
  
  
  經過系統分析員數據庫分析員用戶的共同努力確定系統模型中應該包含的對象如人事及工資管理系統中的部門員工經理等以及各種業務規則
  
  
  在完成尋找業務規則的工作之後確定要作為數據庫完整性的業務規則並對業務規則進行分類其中作為數據庫模式一部分的完整性設計按下面的過程進行而由應用軟件來實現的數據庫完整性設計將按照軟件工程的方法進行
  
  
  .概念結構設計階段
  
  
  概念結構設計階段是將依據需求分析的結果轉換成一個獨立於具體DBMS的概念模型即實體關系圖(ERD)在概念結構設計階段就要開始數據庫完整性設計的實質階段因為此階段的實體關系將在邏輯結構設計階段轉化為實體完整性約束和參照完整性約束到邏輯結構設計階段將完成設計的主要工作
  
  
  .邏輯結構設計階段
  
  
  此階段就是將概念結構轉換為某個DBMS所支持的數據模型並對其進行優化包括對關系模型的規范化此時依據DBMS提供的完整性約束機制對尚未加入邏輯結構中的完整性約束列表逐條選擇合適的方式加以實現
  
  
  在邏輯結構設計階段結束時作為數據庫模式一部分的完整性設計也就基本完成了每種業務規則都可能有好幾種實現方式應該選擇對數據庫性能影響最小的一種有時需通過實際測試來決定
  
  
  數據庫完整性設計原則
  
  
  在實施數據庫完整性設計的時候有一些基本的原則需要把握
  
  
  .根據數據庫完整性約束的類型確定其實現的系統層次和方式並提前考慮對系統性能的影響一般情況下靜態約束應盡量包含在數據庫模式中而動態約束由應用程序實現
  
  
  .實體完整性約束參照完整性約束是關系數據庫最重要的完整性約束在不影響系統關鍵性能的前提下需盡量應用用一定的時間和空間來換取系統的易用性是值得的
  
  
  .要慎用目前主流DBMS都支持的觸發器功能一方面由於觸發器的性能開銷較大另一方面觸發器的多級觸發不好控制容易發生錯誤非用不可時最好使用Before型語句級觸發器
  
  
  .在需求分析階段就必須制定完整性約束的命名規范盡量使用有意義的英文單詞縮寫詞表名列名及下劃線等組合使其易於識別和記憶CKC_EMP_REAL_INCOME_EMPLOYEEPK_EMPLOYEECKT_EMPLOYEE如果使用CASE工具一般有缺省的規則可在此基礎上修改使用
  
  
  .要根據業務規則對數據庫完整性進行細致的測試以盡早排除隱含的完整性約束間的沖突和對性能的影響
  
  
  .要有專職的數據庫設計小組自始至終負責數據庫的分析設計測試實施及早期維護數據庫設計人員不僅負責基於DBMS的數據庫完整性約束的設計實現還要負責對應用軟件實現的數據庫完整性約束進行審核
  
  
  .應采用合適的CASE工具來降低數據庫設計各階段的工作量好的CASE工具能夠支持整個數據庫的生命周期這將使數據庫設計人員的工作效率得到很大提高同時也容易與用戶溝通
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/18093.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.