楊明學
【摘要】為保證數(shù)據(jù)庫中數(shù)據(jù)的精確性和可靠性,數(shù)據(jù)完整性的設計在數(shù)據(jù)庫的設計過程中是非常重要的。在VFP的教學過程中,從利用數(shù)據(jù)庫系統(tǒng)自身提供的完整性約束功能實現(xiàn)數(shù)據(jù)的完整性約束;利用觸發(fā)器實現(xiàn)數(shù)據(jù)的完整性約束;利用編程界面實現(xiàn)數(shù)據(jù)的完整性約束三個方面,分層次講述VFP的數(shù)據(jù)庫完整性的實現(xiàn)方法。
【關鍵詞】數(shù)據(jù)完整性 VFP 教學
一、前言
數(shù)據(jù)完整性是指數(shù)據(jù)的精確性和可靠性,設計VFP數(shù)據(jù)庫的數(shù)據(jù)完整性,可以防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù),防止因錯誤信息的輸入輸出造成數(shù)據(jù)的錯誤或數(shù)據(jù)的不一致。在VFP的教學過程中,數(shù)據(jù)完整性是數(shù)據(jù)庫部分的教學難點,學生對實現(xiàn)數(shù)據(jù)完整性的設計方法不易系統(tǒng)掌握,為此,在教學中我從以下三個方面,由淺入深、由易到難講述VFP數(shù)據(jù)庫完整性的設計。
二、實現(xiàn)數(shù)據(jù)完整性的方法
1、利用數(shù)據(jù)庫系統(tǒng)自身提供的完整性約束功能實現(xiàn)數(shù)據(jù)的完整性約束
VFP是一個面向對象的關系型數(shù)據(jù)庫管理系統(tǒng)。在VFP數(shù)據(jù)庫中,數(shù)據(jù)完整性一般包括實體完整性、域完整性和參照完整性。
實體完整性是保證表中記錄唯一的特性,在VFP數(shù)據(jù)庫中,可以通過建立主索引或候選索引來實現(xiàn)實體完整性的約束。
域完整性是指表中每個字段取值必須符合規(guī)定的邏輯,一般包括字段的缺省值、字段的有效性校驗以及是否為空等內容,利用VFP數(shù)據(jù)詞典中的字段的有效性,可以設置字段的有效性規(guī)則、默認值和信息。在VFP數(shù)據(jù)庫表設計器的字段選項卡的規(guī)則中輸入對字段數(shù)據(jù)有效性進行檢查的規(guī)則,有效性規(guī)則實際上是一個條件,對于該字段輸入的數(shù)據(jù),VFP會自動檢查它是否符合條件,若不符合必須進行修改,直至與規(guī)則中輸入的條件相符合。當該字段輸入的數(shù)據(jù)違反規(guī)則條件時,出錯信息將顯示。記錄的有效性規(guī)則用來檢查同一記錄中不同字段之間的邏輯關系,在VFP數(shù)據(jù)庫的數(shù)據(jù)詞典中提供了設置記錄有效性規(guī)則的功能,在VFP數(shù)據(jù)庫表設計器的選項卡中提供了記錄有效性包括規(guī)則和信息的設置,規(guī)則中用于設置記錄有效性的檢查條件,通常是包含兩個或多個字段之間應當遵守的數(shù)據(jù)規(guī)則的邏輯表達式;對于數(shù)據(jù)庫中具有永久關系的相關表,在更新、插入或刪除記錄時,若只改其中一個表的數(shù)據(jù),而不更改相關表的相應數(shù)據(jù),則必然會影響數(shù)據(jù)的一致性,在VFP數(shù)據(jù)庫中設置了參照完整型用于限制相關數(shù)據(jù)表的數(shù)據(jù)一致性。VFP在參照完整性中設置了更新規(guī)則、插入規(guī)則、刪除規(guī)則,在對數(shù)據(jù)庫中具有永久關系的表進行更新、插入、刪除記錄時,必須遵照在參照完整性中預先設定的級聯(lián)、限制、忽略的完整性規(guī)則。
2、利用觸發(fā)器實現(xiàn)數(shù)據(jù)的完整性約束
利用觸發(fā)器可以完成比較復雜的完整性控制。觸發(fā)器是一種存儲過程,但和一般的存儲過程不同,一般的存儲過程可以由用戶通過存儲過程的名字直接調用,而觸發(fā)器主要是通過事件觸發(fā)而被執(zhí)行。VFP中設置了插入、更新、刪除三種觸發(fā)器,當對表文件進行插入記錄、更新記錄、刪除記錄操作時,VFP就會自動執(zhí)行觸發(fā)器所定義的SQL命令。
觸發(fā)器觸發(fā)應具備三個條件:事件、條件和動作,當數(shù)據(jù)庫進行插入、刪除、修改操作時,事件發(fā)生,觸發(fā)器將開始工作。VFP中可以通過數(shù)據(jù)庫的表設計器或命令兩種方法創(chuàng)建觸發(fā)器。數(shù)據(jù)庫表設計器中的“表”選項卡中觸發(fā)器部分,可以分別在插入觸發(fā)器、更新觸發(fā)器和刪除觸發(fā)器框中輸入觸發(fā)條件的邏輯表達式或用戶自定義的函數(shù);用CREAT TRIGGER命令可以創(chuàng)建觸發(fā)器,可以將用該命令創(chuàng)建的觸發(fā)器存儲在數(shù)據(jù)庫中的編輯存儲過程中。創(chuàng)建觸發(fā)器的命令有三種:CREAT TRIGGER ON <表名> FOR INSERT AS <觸發(fā)條件>,該命令用來創(chuàng)建插入觸發(fā)器;CREAT TRIGGER ON <表名> FOR UPDATE AS <觸發(fā)條件>,該命令用來創(chuàng)建更新觸發(fā)器;CREAT TRIGGER ON <表名> FOR DELETE AS <觸發(fā)條件>,該命令用來創(chuàng)建刪除觸發(fā)器。
在使用觸發(fā)器時應注意以下問題:不能對有插入觸發(fā)器的表使用INSERT命令,但可以使用INSERT-SQL命令;刪除命令PACK、ZAP不激發(fā)刪除觸發(fā)器;更新具有刪除標記的記錄不觸發(fā)更新觸發(fā)器;觸發(fā)器是否立即激發(fā)還和表的當前緩沖模式有關。
3、利用編程界面實現(xiàn)數(shù)據(jù)的完整性約束
VFP數(shù)據(jù)庫管理系統(tǒng)提供了較完整的數(shù)據(jù)完整性約束手段,但利用編程保證數(shù)據(jù)的完整性,將極大地改善系統(tǒng)的可操作性。借助應用系統(tǒng)編程的方法,在用戶輸入數(shù)據(jù)時可以直接檢查輸入數(shù)據(jù)是否符合規(guī)定。VFP的表單設計器為數(shù)據(jù)的輸入提供了可滿足各種需要的控件,利用表單設計器可以設計出滿足用戶需要的有好的操作界面。在進行界面設計時,可根據(jù)不同的數(shù)據(jù)輸入要求,選擇合適的控件,如選項按鈕組、組合框、列表框、復選框微調框等。要充分利用不同類型的控件來輸入數(shù)據(jù)可以明顯提高數(shù)據(jù)的錄入速度,降低數(shù)據(jù)輸入的出錯率,也可以在相應輸入數(shù)據(jù)的控件的LostFocus中輸入檢驗數(shù)據(jù)是否符合規(guī)定的程序代碼。
三、結束語
在利用VFP數(shù)據(jù)庫管理系統(tǒng)進行應用程序開發(fā)時,數(shù)據(jù)庫設計是一個重要的環(huán)節(jié),而數(shù)據(jù)的完整性設計尤為重要,數(shù)據(jù)完整性控制實現(xiàn)的好壞直接影響到數(shù)據(jù)庫的性能。數(shù)據(jù)字典是最直接、最方便的數(shù)據(jù)完整性控制方法,可以在很大程度上減少應用程序開負擔;觸發(fā)器的編程比較麻煩,在具體使用時,可使用系統(tǒng)內部提供的觸發(fā)器自動生成程序完成。在教學過程中,從使用數(shù)據(jù)庫數(shù)據(jù)詞典設計數(shù)據(jù)庫完整性約束功能,到利用觸發(fā)器編程設計數(shù)據(jù)的完整性,再到利用前段開發(fā)工具編程實現(xiàn)數(shù)據(jù)庫的完整性設計,使學生對數(shù)據(jù)庫完整性的實現(xiàn)方法有了整體和系統(tǒng)的概念。
參考文獻:
[1]孟先平,王劍云.Visual Foxpro程序設計教程[M],上海:
上海交通大學出版社,2006
[2]史濟民,湯觀全Visual Foxpro及其應用系統(tǒng)開發(fā),北京:
清華大學出版社,2006
[3]田嵐,試論VFP應用開發(fā)中數(shù)據(jù)完整性的實現(xiàn),中國農業(yè)
銀行武漢培訓學院學報 2004年第6期總第108期
[4]梁玉磊,孔峰 基于VFP的管理信息系統(tǒng)數(shù)據(jù)完整性控制
方法探討,技術在線,10.3969/j.jssn.
1671-489x.2009.30.092