下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
基于Client/Server數(shù)據(jù)完整性約束的實現(xiàn)技術4300字摘要:本主要討論基于Client/Server數(shù)據(jù)完整性約束及其如何實施企業(yè)業(yè)務規(guī)那么,并以SQLServer和PowerBuilder為例,介紹了數(shù)據(jù)完整性約束的實現(xiàn)技術。
關鍵詞:Client/Server,數(shù)據(jù)完整性約束,企業(yè)業(yè)務規(guī)那么
DBMS已從早期的分散的一個個計算模型、網(wǎng)絡/文件效勞計算模型(針對文件)開展到現(xiàn)在的Client/Server計算模型(針對表中的一行)。Client/Server模型是非對等的(decoupled),客戶發(fā)出效勞請求,效勞器作出響應,提供效勞,即所謂的"請求驅(qū)動"。DB的Client/Server系統(tǒng)由DBServer、客戶應用程序和網(wǎng)絡組成。DBServer(即后端)負責有效地管理系統(tǒng)的資源,主要負責數(shù)據(jù)處理、并發(fā)控制、數(shù)據(jù)平安性、數(shù)據(jù)完整性和數(shù)據(jù)的備份和恢復等??蛻魬贸绦?即前端)是系統(tǒng)中供用戶與數(shù)據(jù)進行交互的部件,主要任務是提供交互式界面完成數(shù)據(jù)的錄入、分析、檢查和顯示,向DBServer發(fā)出請求(SQL語句)并接收結果和錯誤信息。網(wǎng)絡和通信軟件是系統(tǒng)中客戶和效勞器之間數(shù)據(jù)傳送的工具。
由于現(xiàn)在的數(shù)據(jù)庫都是開放、多用戶共享,因此維護數(shù)據(jù)庫的正確性至關重要。數(shù)據(jù)庫的完整性描述為數(shù)據(jù)庫內(nèi)容的完整性約束匯合,其中完整性約束指數(shù)據(jù)庫的一個狀態(tài)是否合理,這是一組謂詞。DBS檢查數(shù)據(jù)的狀態(tài)和狀態(tài)轉(zhuǎn)換,判定它們是否合理,是否應予接受。對一個數(shù)據(jù)庫操作,要判定其是否合乎完整性約束,全部斷言無矛盾時才可以執(zhí)行。完整性約束的形式化定義I=(O,P,A,R),其中O是完整性約束所波及的數(shù)據(jù)對象匯合,P是對象所滿足的謂詞,A是觸發(fā)檢查的條件,R是約束不滿足時的反饋動作[2]
一、常見的數(shù)據(jù)完整性約束
根據(jù)分類角度不同,可將完整性約束分為如下幾類:
·域、元組、匯合完整性
·立即約束和推遲(到EOT)約束
·狀態(tài)約束和狀態(tài)演變約束。
·規(guī)范和定制的數(shù)據(jù)完整性約束
實際的系統(tǒng)中,一般將數(shù)據(jù)完整性約束分為規(guī)范的數(shù)據(jù)完整性約束和定制的數(shù)據(jù)完整性約束。規(guī)范的數(shù)據(jù)完整性約束是DBS已經(jīng)實現(xiàn)的內(nèi)部規(guī)那么,包括域完整性、實體完整性和引用完整性。
域完整性(FieldIntegrity)保證一個數(shù)據(jù)庫不包含無意義的或不合理的值,即保證表的某一列的任何值是該列域(即合法的數(shù)據(jù)匯合)的成員。辦法是限制列的數(shù)據(jù)類型、精度、范圍、格式和長度等。
實體完整性(EntityIntegrity)保證一個表中的每一行必須是唯一的(元組的唯一性)。為保證實體完整性,需指定一個表中的一列或一組列作為它的主鍵(PrimaryKey)。一個表中每行的主鍵必須的確含有一個值。一個表只能含有一個主鍵,如需要從其它列中除去重復的值,可以將一個或一組非主鍵列指定為一個候選鍵或唯一值鍵。
引用完整性(ReferenceIntegrity)定義了一個關系數(shù)據(jù)庫中不同的列和不同的表之間的關系(主鍵與外鍵)。要求一列或一組列中的值必須要與相關的一列或一組列中的值相匹配。附屬的一列或一組列稱之為外鍵(ForeignKey)。被引用的列或一組列稱之為父鍵,父鍵必須是一個主鍵或唯一鍵。外鍵屬于子表或明細表,父鍵屬于父表或主表。假設父鍵和外鍵屬于同一表,那么稱之為自引用完整性。子表某行的外鍵必須與主表的主鍵相匹配,只要依賴于某主鍵的外鍵仍存在,主表中包含該主鍵的行就不能刪除。
由于每個公司的數(shù)據(jù)庫都有自己獨特的業(yè)務規(guī)那么集,所以系統(tǒng)必須有一種方式來實現(xiàn)定制的業(yè)務規(guī)那么即定制的數(shù)據(jù)完整性約束。定制的數(shù)據(jù)完整性約束可由如下幾種辦法實施。
一種最原始的辦法是將將每一個完整性約束編入要訪問數(shù)據(jù)庫的每個應用程序中,缺點是在每個相關的數(shù)據(jù)庫應用程序中,開發(fā)者都要對相同的完整性規(guī)那么進行編碼、測試和排錯。假設某一規(guī)那么變動,所有相關的應用程序都得改動。應用程序須向DBServer請求大量的數(shù)據(jù),以執(zhí)行該應用程序內(nèi)部的數(shù)據(jù)完整性規(guī)那么檢查,這將阻塞網(wǎng)絡。因而這是一種耗時、低性能的辦法。
用戶定義的數(shù)據(jù)類型(User-definedDataType)是由規(guī)范數(shù)據(jù)類型導出的新數(shù)據(jù)類型,它比規(guī)范的數(shù)據(jù)類型更準確地限定了數(shù)據(jù)輸入的范圍。
約束(Check)用于限制列的值域,在數(shù)據(jù)類型限制的根底上對輸入的數(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ī)那么。
存儲過程(StoredProcedure)是由編譯過的SQL語句、控制流語句、變量表明和賦值運算等組成的匯合,由開發(fā)者創(chuàng)立并存儲在數(shù)據(jù)字典(大局部DBMS叫系統(tǒng)表)中。我們可以通過存儲過程中的語句來定義企業(yè)業(yè)務規(guī)那么,特別對于復雜的表與表之間的餓關系,用存儲過程來實現(xiàn)將變得相當容易。
觸發(fā)器(Trigger)也是一個存儲過程,該過程在插入、修改和刪除等操作事前或事后由DBS自動激發(fā)(執(zhí)行)。經(jīng)常用于實現(xiàn)邏輯上相關的數(shù)據(jù)表之間的數(shù)據(jù)完整性和一致性。觸發(fā)器非常適合于實施企業(yè)規(guī)那么,如果某個輸入違反了其中的某個企業(yè)規(guī)那么,觸發(fā)器可以顯示相應錯誤并中止正在執(zhí)行的數(shù)據(jù)庫動作。
二、Client/Server模型下實施企業(yè)規(guī)那么的準那么
在Client/Server系統(tǒng)中,前端和后端都提供數(shù)據(jù)完整性約束。在前端可進行域完整性約束,并能定制業(yè)務規(guī)那么。在后端幾乎可以實現(xiàn)上述所列的所有的完整性約束。E.F.Codd在衡量關系數(shù)據(jù)庫的十二條準那么之第十條指出關系完整性約束條件必須用數(shù)據(jù)子語言定義并存儲在數(shù)據(jù)字典中,而不是在應用程序中。這樣,當完整性約束改變時,只要修改數(shù)據(jù)字典即可,完整性的改變一般不會在邏輯上影響應用程序的活動。
前端應用程序也可以進行某些完整性檢查并實施企業(yè)規(guī)那么,但是這些做法不能用于取代在數(shù)據(jù)庫里的完整性約束定義。如果數(shù)據(jù)庫設計者完全正確地表明了所有的約束和企業(yè)規(guī)那么,那么任何違反約束和規(guī)那么的數(shù)據(jù)操作都會引起數(shù)據(jù)庫錯誤。前端應用程序的任務是盡量減少產(chǎn)生數(shù)據(jù)庫錯誤的可能性,只有從這個意義上說,前端應用程序才應當包含完整性檢查和實施事務規(guī)那么。當數(shù)據(jù)庫沒有完整性約束時,前端應用程序必須實施企業(yè)規(guī)那么。
由此我們得出在實施企業(yè)規(guī)那么時須遵循如下準那么:
·集中在數(shù)據(jù)庫中實施企業(yè)規(guī)那么
·減少對數(shù)據(jù)庫請求的次數(shù),盡量減少返回結果
我們在實施企業(yè)規(guī)那么時,應將所有的企業(yè)規(guī)那么定義在數(shù)據(jù)字典中,應用程序在向數(shù)據(jù)庫提交SQL語句之前盡量減少由用戶引起數(shù)據(jù)庫錯誤的可能性,使應用程序運行順暢,對用戶友好,開銷少。
三、PowerBuilder/SQLServer數(shù)據(jù)完整性約束的實現(xiàn)技術
PowerBuilder是當今非常流行的前端開發(fā)工具,它提供了豐盛的構件,能很方便地開發(fā)出界面友好、功能強大的應用程序。下面以功能強大的數(shù)據(jù)窗口為例,表明前端開發(fā)工具如何實現(xiàn)數(shù)據(jù)完整性約束,PowerBuilder的其它構件也提供類似實現(xiàn)完整性約束的辦法。
利用列的編輯格調(diào)(EditStyle)限制列的長度、格式、值域等。PowerBuilder提供無線按鈕(RadioButton)、檢查框(CheckBox)、下拉式數(shù)據(jù)窗口(DropDownDataWindow)、下拉式列表框(DropDownList)、編輯屏蔽(EditMask)和編輯(Edit)等編輯格調(diào)來檢查列的數(shù)據(jù)類型。
利用列的有效性驗證規(guī)那么(ValidationRule)對輸入數(shù)據(jù)進行限制。在ValidationRule對話框內(nèi),可輸入規(guī)那么定義(RuleDefinition)和有效性規(guī)那么出錯信息(ValidationErrorMessage)。
可在ItemChanged事件的Script程序里對輸入數(shù)據(jù)進行進一步的有效性驗證,假設輸入數(shù)據(jù)不能通過在ItemChanged事件里所設置的檢查,那么返回動作碼1,拒絕輸入數(shù)據(jù)。
當應用程序調(diào)用函數(shù)Update()更新數(shù)據(jù)庫之前,觸發(fā)UpdateStart事件。該事件是用于進行數(shù)據(jù)有效性驗證的最后一次時機。假設輸入數(shù)據(jù)的有效性驗證失敗,那么返回動作碼1,拒絕數(shù)據(jù)更新。
針對那些數(shù)據(jù)庫要求必須具備值的列(即那些具有NOTNULL約束的列),可將對應的數(shù)據(jù)窗口的列置為必備域(RequiredField)。但是必備域的約束對用戶來說并不友好,用戶必須輸入一個值,否那么無法離開該列。一種替代的方法是在UpdateStart事件里檢查列(在數(shù)據(jù)庫中為NOTNULL列)的值是否為NULL。
利用自定義有效性驗證函數(shù)進行常規(guī)的數(shù)據(jù)檢查,有助于應用程序的規(guī)范化和簡化。這些函數(shù)可以用在列的有效性驗證規(guī)那么,也可以用在Itemchanged事件的Script程序中。一般自定義有效性驗證函數(shù)被設計成全局函數(shù)、返回布爾型結果。
值得注意的是有效性驗證規(guī)那么對數(shù)據(jù)窗口類的所有實例都通用,而在Itemchanged事件的Script程序里進行有效性驗證與具體的數(shù)據(jù)窗口密切相關。有些有效性驗證需進行數(shù)據(jù)庫查詢,假設需要很高的系統(tǒng)代價,盡量防止使用。
SQLServer是一個多用戶的RDBMS,它為復雜環(huán)境下有效地實現(xiàn)企業(yè)管理提供了一個強有力的Client/Se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025吉林大學白求恩醫(yī)學部機關面向校內(nèi)招聘正科級干部1人備考考試試題及答案解析
- 2025重慶大學醫(yī)院勞務派遣醫(yī)技人員招聘4人備考考試試題及答案解析
- 2023檢查實施方案十篇
- 網(wǎng)商家的合同范本
- 網(wǎng)格員聘請協(xié)議書
- 耗材供銷合同范本
- 職工不坐班協(xié)議書
- 聯(lián)合中標合同范本
- 聘用dj合同范本
- 聘用護士合同范本
- 土石壩除險加固設計規(guī)范(2025版)
- 移動衛(wèi)星通信終端創(chuàng)新創(chuàng)業(yè)項目商業(yè)計劃書
- 前期物業(yè)服務招標投標管理辦法
- 危重癥患者體溫管理課件
- 033《知識產(chǎn)權法》電大期末考試題庫及答案
- 中醫(yī)消防安全知識培訓課件
- 多發(fā)性骨髓瘤的個案護理
- 洗胃操作并發(fā)癥及預防
- 綠色建筑可行性分析報告
- 重癥超聲在ECMO治療中的應用
- 2024年新人教版道德與法治一年級上冊 7 上課了好好學 教學課件
評論
0/150
提交評論