計算機畢業論文-基于Client/Server數據完整性約束的實現技術
時間:2022-06-07 04:47:00
導語:計算機畢業論文-基于Client/Server數據完整性約束的實現技術一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要:本論文主要討論基于client/server數據完整性約束及其如何實施企業業務規則,并以SQLServer和PowerBuilder為例,介紹了數據完整性約束的實現技術。
關鍵詞:Client/Server,數據完整性約束,企業業務規則
DBMS已從早期的分散的一個個計算模型、網絡/文件服務計算模型(針對文件)發展到現在的Client/Server計算模型(針對表中的一行)。Client/Server模型是非對等的(decoupled),客戶發出服務請求,服務器作出響應,提供服務,即所謂的"請求驅動"。DB的Client/Server系統由DBServer、客戶應用程序和網絡組成。DBServer(即后端)負責有效地管理系統的資源,主要負責數據處理、并發控制、數據安全性、數據完整性和數據的備份和恢復等。客戶應用程序(即前端)是系統中供用戶與數據進行交互的部件,主要任務是提供交互式界面完成數據的錄入、分析、檢查和顯示,向DBServer發出請求(SQL語句)并接收結果和錯誤信息。網絡和通信軟件是系統中客戶和服務器之間數據傳送的工具。
由于現在的數據庫都是開放、多用戶共享,因此維護數據庫的正確性至關重要。數據庫的完整性描述為數據庫內容的完整性約束集合,其中完整性約束指數據庫的一個狀態是否合理,這是一組謂詞。DBS檢查數據的狀態和狀態轉換,判定它們是否合理,是否應予接受。對一個數據庫操作,要判定其是否符合完整性約束,全部斷言無矛盾時才可以執行。完整性約束的形式化定義I=(O,P,A,R),其中O是完整性約束所涉及的數據對象集合,P是對象所滿足的謂詞,A是觸發檢查的條件,R是約束不滿足時的反應動作[2]
一、常見的數據完整性約束
根據分類角度不同,可將完整性約束分為如下幾類:
·域、元組、集合完整性
·立即約束和推遲(到EOT)約束
·狀態約束和狀態演變約束。
·標準和定制的數據完整性約束
實際的系統中,一般將數據完整性約束分為標準的數據完整性約束和定制的數據完整性約束。標準的數據完整性約束是DBS已經實現的內部規則,包括域完整性、實體完整性和引用完整性。
域完整性(FieldIntegrity)保證一個數據庫不包含無意義的或不合理的值,即保證表的某一列的任何值是該列域(即合法的數據集合)的成員。方法是限制列的數據類型、精度、范圍、格式和長度等。
實體完整性(EntityIntegrity)保證一個表中的每一行必須是唯一的(元組的唯一性)。為保證實體完整性,需指定一個表中的一列或一組列作為它的主鍵(PrimaryKey)。一個表中每行的主鍵必須確實含有一個值。一個表只能含有一個主鍵,如需要從其它列中除去重復的值,可以將一個或一組非主鍵列指定為一個候選鍵或唯一值鍵。
引用完整性(ReferenceIntegrity)定義了一個關系數據庫中不同的列和不同的表之間的關系(主鍵與外鍵)。要求一列或一組列中的值必須要與相關的一列或一組列中的值相匹配。從屬的一列或一組列稱之為外鍵(ForeignKey)。被引用的列或一組列稱之為父鍵,父鍵必須是一個主鍵或唯一鍵。外鍵屬于子表或明細表,父鍵屬于父表或主表。若父鍵和外鍵屬于同一表,則稱之為自引用完整性。子表某行的外鍵必須與主表的主鍵相匹配,只要依賴于某主鍵的外鍵仍存在,主表中包含該主鍵的行就不能刪除。
由于每個公司的數據庫都有自己獨特的業務規則集,所以系統必須有一種方式來實現定制的業務規則即定制的數據完整性約束。定制的數據完整性約束可由如下幾種方法實施。
一種最原始的方法是將將每一個完整性約束編入要訪問數據庫的每個應用程序中,缺點是在每個相關的數據庫應用程序中,開發者都要對相同的完整性規則進行編碼、測試和排錯。若某一規則變動,所有相關的應用程序都得改動。應用程序須向DBServer請求大量的數據,以執行該應用程序內部的數據完整性規則檢查,這將阻塞網絡。因而這是一種耗時、低性能的方法。
用戶定義的數據類型(User-definedDataType)是由標準數據類型導出的新數據類型,它比標準的數據類型更準確地限定了數據輸入的范圍。
約束(Check)用于限制列的值域,在數據類型限制的基礎上對輸入的數據進一步進行限制。通過邏輯表達式來定義列的有效值。
缺省(Default)定義了一個數值,當用戶向數據表插入數據時,若某個域未給定值,系統自動將定義在該域上的缺省作為輸入
值,保證數據庫數據的合理性。
規則(Rule)是一個用來綁定域或用戶定義數據類型的數據庫對象,規則說明了哪些數據可以輸入到域中。任何時刻,用戶輸入或修改數據(INSERT或UPDATE),DBMS都將檢查該數據是否違反綁定在域上的規則。
存儲過程(StoredProcedure)是由編譯過的SQL語句、控制流語句、變量說明和賦值運算等組成的集合,由開發者創建并存儲在數據字典(大部分DBMS叫系統表)中。我們可以通過存儲過程中的語句來定義企業業務規則,特別對于復雜的表與表之間的餓關系,用存儲過程來實現將變得相當容易。
觸發器(Trigger)也是一個存儲過程,該過程在插入、修改和刪除等操作事前或事后由DBS自動激發(執行)。經常用于實現邏輯上相關的數據表之間的數據完整性和一致性。觸發器非常適合于實施企業規則,如果某個輸入違反了其中的某個企業規則,觸發器可以顯示相應錯誤并中止正在執行的數據庫動作。