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