丁香婷婷网,黄色av网站裸体无码www,亚洲午夜无码精品一级毛片,国产一区二区免费播放

現(xiàn)在位置:范文先生網(wǎng)>理工論文>計算機信息技術(shù)>基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)

基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)

時間:2023-02-21 00:15:34 計算機信息技術(shù) 我要投稿

基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)

 基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)

                          彭湘凱   時亞弘

(中共廣州市委辦公廳自動化中心 510046;廣東省財貿(mào)管理干部學(xué)院計算機系 510400;

                   廣州工程總承包集團有限公司 510620)

摘 要:

本論文主要討論基于Client/Server數(shù)據(jù)完整性約束及其如何實施企業(yè)業(yè)務(wù)規(guī)則,并以SQLServer和PowerBuilder為例,介紹了數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)。

關(guān)鍵詞:Client/Server,數(shù)據(jù)完整性約束, 企業(yè)業(yè)務(wù)規(guī)則

 

    DBMS已從早期的分散的一個個計算模型、網(wǎng)絡(luò)/文件服務(wù)計算模型(針對文件)發(fā)展到現(xiàn)在的Client/Server計算模型(針對表中的一行)。Client/Server模型是非對等的(decoupled),客戶發(fā)出服務(wù)請求,服務(wù)器作出響應(yīng),提供服務(wù),即所謂的“請求驅(qū)動”。DB的Client/Server系統(tǒng)由DBServer、客戶應(yīng)用程序和網(wǎng)絡(luò)組成。DBServer(即后端)負責有效地管理系統(tǒng)的資源,主要負責數(shù)據(jù)處理、并發(fā)控制、數(shù)據(jù)安全性、數(shù)據(jù)完整性和數(shù)據(jù)的備份和恢復(fù)等?蛻魬(yīng)用程序(即前端)是系統(tǒng)中供用戶與數(shù)據(jù)進行交互的部件,主要任務(wù)是提供交互式界面完成數(shù)據(jù)的錄入、分析、檢查和顯示,向DBServer發(fā)出請求(SQL語句)并接收結(jié)果和錯誤信息。網(wǎng)絡(luò)和通信軟件是系統(tǒng)中客戶和服務(wù)器之間數(shù)據(jù)傳送的工具。

    由于現(xiàn)在的數(shù)據(jù)庫都是開放、多用戶共享,因此維護數(shù)據(jù)庫的正確性至關(guān)重要。數(shù)據(jù)庫的完整性描述為數(shù)據(jù)庫內(nèi)容的完整性約束集合,其中完整性約束指數(shù)據(jù)庫的一個狀態(tài)是否合理,這是一組謂詞。DBS檢查數(shù)據(jù)的狀態(tài)和狀態(tài)轉(zhuǎn)換,判定它們是否合理,是否應(yīng)予接受。對一個數(shù)據(jù)庫操作,要判定其是否符合完整性約束,全部斷言無矛盾時才可以執(zhí)行。完整性約束的形式化定義I=(O,P,A,R),其中O是完整性約束所涉及的數(shù)據(jù)對象集合,P是對象所滿足的謂詞,A是觸發(fā)檢查的條件,R是約束不滿足時的反應(yīng)動作[2]

 

一、       常見的數(shù)據(jù)完整性約束

 &

nbsp; 根據(jù)分類角度不同,可將完整性約束分為如下幾類:

         ·域、元組、集合完整性

         ·立即約束和推遲(到EOT)約束

         ·狀態(tài)約束和狀態(tài)演變約束。

         ·標準和定制的數(shù)據(jù)完整性約束

    實際的系統(tǒng)中,一般將數(shù)據(jù)完整性約束分為標準的數(shù)據(jù)完整性約束和定制的數(shù)據(jù)完整性約束。標準的數(shù)據(jù)完整性約束是DBS已經(jīng)實現(xiàn)的內(nèi)部規(guī)則,包括域完整性、實體完整性和引用完整性。

    域完整性(Field Integrity)保證一個數(shù)據(jù)庫不包含無意義的或不合理的值,即保證表的某一列的任何值是該列域(即合法的數(shù)據(jù)集合)的成員。方法是限制列的數(shù)據(jù)類型、精度、范圍、格式和長度等。

    實體完整性(Entity Integrity)保證一個表中的每一行必須是唯一的(元組的唯一性)。為保證實體完整性,需指定一個表中的一列或一組列作為它的主鍵(Primary Key)。一個表中每行的主鍵必須確實含有一個值。一個表只能含有一個主鍵,如需要從其它列中除去重復(fù)的值,可以將一個或一組非主鍵列指定為一個候選鍵或唯一值鍵。

    引用完整性(Reference Integrity)定義了一個關(guān)系數(shù)據(jù)庫中不同的列和不同的表之間的關(guān)系(主鍵與外鍵)。要求一列或一組列中的值必須要與相關(guān)的一列或一組列中的值相匹配。從屬的一列或一組列稱之為外鍵(Foreign Key)。被引用的列或一組列稱之為父鍵,父鍵必須是一個主鍵或唯一鍵。外鍵屬于子表或明細表,父鍵屬于父表或主表。若父鍵和外鍵屬于同一表,則稱之為自引用完整性。子表某行的外鍵必須與主表的主鍵相匹配,只要依賴于某主鍵的外鍵仍存在,主表中包含該主鍵的行就不能刪除。

   由于每個公司的數(shù)據(jù)庫都有自己獨特的業(yè)務(wù)規(guī)則集,所以系統(tǒng)必須有一種方式來實現(xiàn)定制的業(yè)務(wù)規(guī)則即定制的數(shù)據(jù)完整性約束。定制的數(shù)據(jù)完整性約束可由如下幾種方法實施。

    一種最原始的方法是將將每一個完整性約束編入要訪問數(shù)據(jù)庫的每個應(yīng)用程序中,缺點是在每個相關(guān)的數(shù)據(jù)庫應(yīng)用程序中,開發(fā)者都要對相同的完整性規(guī)則進行編碼、測試和排錯。若某一規(guī)則變動,所有相關(guān)的應(yīng)用程序都得改動。應(yīng)用程序須向DBServer請求大量的數(shù)據(jù),以執(zhí)行該應(yīng)用程序內(nèi)部的數(shù)據(jù)完整性規(guī)則檢查,這將阻塞網(wǎng)絡(luò)。因而這是一種耗時、低性能的方法。

用戶定義的數(shù)據(jù)類型(User-defined DataType)是由標準數(shù)據(jù)類型導(dǎo)出的新數(shù)據(jù)類型,它比標準的數(shù)據(jù)類型更準確地限定了數(shù)據(jù)輸入的范圍。

約束(Check)用于限制列的值域,在數(shù)據(jù)類型限制的基礎(chǔ)上對輸入的數(shù)據(jù)進一步進行限制。通過邏輯表達式來定義列的有效值。

缺省(Default) 定義了一個數(shù)值,當用戶向數(shù)據(jù)表插入數(shù)據(jù)時,若某個域未給定值,系統(tǒng)自動將定義在該域上的缺省作為輸入值,保證數(shù)據(jù)庫數(shù)據(jù)的合理性。

規(guī)則(Rule) 是一個用來綁定域或用戶定義數(shù)據(jù)類型的數(shù)據(jù)庫對象,規(guī)則說明了哪些數(shù)據(jù)可以輸入到域中。任何時刻,用戶輸入或修改數(shù)據(jù)(INSERT 或 UPDATE), DBMS都將檢查該數(shù)據(jù)是否違反綁定在域上的規(guī)則。

存儲過程(Stored Procedure)是由編譯過的SQL語句、控制流語句、變量說明和賦值運算等組成的集合,由開發(fā)者創(chuàng)建并存儲在數(shù)據(jù)字典(大部分DBMS叫系統(tǒng)表)中。我們可以通過存儲過程中的語句來定義企業(yè)業(yè)務(wù)規(guī)則,特別對于復(fù)雜的表與表之間的餓關(guān)系,用存儲過程來實現(xiàn)將變得相當容易。

觸發(fā)器(Trigger)也是一個存儲過程,該過程在插入、修改和刪除等操作事前或事后由DBS自動激發(fā)(執(zhí)行)。經(jīng)常用于實現(xiàn)邏輯上相關(guān)的數(shù)據(jù)表之間的數(shù)據(jù)完整性和一致性。觸發(fā)器非常適合于實施企業(yè)規(guī)則,如果某個輸入違反了其中的某個企業(yè)規(guī)則,觸發(fā)器可以顯示相應(yīng)錯誤并中止正在執(zhí)行的數(shù)據(jù)庫動作。

 

      二、Client/Server模型下實施企業(yè)規(guī)則的準則

    在Client/Server系統(tǒng)中,前端和后端都提供數(shù)據(jù)完整性約束。在前端可進行域完整性約束,并能定制業(yè)務(wù)規(guī)則。在后端幾乎可以實現(xiàn)上述所列的所有的完整性約束。E.F.Codd在衡量關(guān)系數(shù)據(jù)庫的十二條準則之第十條指出關(guān)系完整性約束條件必須用數(shù)據(jù)子語言定義并存儲在數(shù)據(jù)字典中,而不是在應(yīng)用程序中。這樣,當完整性約束改變時,只要修改數(shù)據(jù)字典即可,完整性的改變一般不會在邏輯上影響應(yīng)用程序的活動。

   前端應(yīng)用程序也可以進行某些完整性檢查并實施企業(yè)規(guī)則,但是這些做法不能用于取代在數(shù)據(jù)庫里的完整性約束定義。如果數(shù)據(jù)庫設(shè)計者完全正確地說明了所有的約束和企業(yè)規(guī)則,則任何違反約束和規(guī)則的數(shù)據(jù)操作都會引起數(shù)據(jù)庫錯誤。前端應(yīng)用程序的任務(wù)是盡量減少產(chǎn)生數(shù)據(jù)庫錯誤的可能性,只有從這個意義上說,前端應(yīng)用程序才應(yīng)當包含完整性檢查和實施事務(wù)規(guī)則。當數(shù)據(jù)庫沒有完整性約束時,前端應(yīng)用程序必須實施企業(yè)規(guī)則。

  由此我們得出在實施企業(yè)規(guī)則時須遵循如下準則:

     ·集中在數(shù)據(jù)庫中實施企業(yè)規(guī)則

     ·減少對數(shù)據(jù)庫請求的次數(shù),盡量減少返回結(jié)果

  我們在實施企業(yè)規(guī)則時,應(yīng)將所有的企業(yè)規(guī)則定義在數(shù)據(jù)字典中,應(yīng)用程序在向數(shù)據(jù)庫提交SQL語句之前盡量減少由用戶引起數(shù)據(jù)庫錯誤的可能性,使應(yīng)用程序運行順暢,對用戶友好,開銷少。


【基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)】相關(guān)文章:

基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)08-06

基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術(shù)08-06

基于Client/Server 的課件系統(tǒng)的設(shè)計與實現(xiàn)08-06

基于Client/Server 的課件系統(tǒng)的設(shè)計與實現(xiàn)04-12

基于圖像的OMR技術(shù)的實現(xiàn)08-06

開發(fā)基于SQL SERVER 的C/S數(shù)據(jù)庫應(yīng)用系統(tǒng)?08-06

基于USB總線的實時數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)08-06

基于MPLS的VPN技術(shù)原理及其實現(xiàn)08-06

基于LabVIEW的USB實時數(shù)據(jù)采集處理系統(tǒng)的實現(xiàn)08-06