基于VFP的數據庫約束和觸發(fā)技術及其應用_第1頁
基于VFP的數據庫約束和觸發(fā)技術及其應用_第2頁
基于VFP的數據庫約束和觸發(fā)技術及其應用_第3頁
基于VFP的數據庫約束和觸發(fā)技術及其應用_第4頁
基于VFP的數據庫約束和觸發(fā)技術及其應用_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、118福建電腦2011年第1期基于VFP的數據庫約束和觸發(fā)技術及其應用魏同明,嚴彩梅,楚紅(揚州大學信息工程學院江蘇揚州225009)【摘要】:本文介紹了為保持VisualFoxpro數據庫數據完整性而涉及的約束和觸發(fā)技術以及在此基礎上的應用實例。【關鍵詞】:數據庫,約束,觸發(fā)技術,數據完整性0、引言在VisualFoxpro(以下簡稱VFP)課程教學中我們發(fā)現學生基于VFP設計的管理信息系統(tǒng)作品中,系統(tǒng)往往看重功能的正常實現而忽視了系統(tǒng)中的信息安全問題。雖然管理信息系統(tǒng)程序可以經由對用戶進行系統(tǒng)培訓后正確操作,或者也可在用戶對數據庫進行的日常簡單維護過程中為管理信息系統(tǒng)中數據的的完整性提供一

2、定的保障。但是,不可避免的某些用戶的誤操作就可能導致數據的錯誤,影響了系統(tǒng)重要數據的正確性、合理性和一致性,給軟件的后期維護帶來很大的麻煩。為了盡可能減小用戶的誤操作給后期數據維護人員帶來的維護麻煩,系統(tǒng)設計人員就應該通過一定技術手段避免用戶進行誤操作,同時也應該通過一定的技術手段了解用戶進行了哪些誤操作。另外,除了普通用戶可以操作的一般數據外,大量的重要數據也需要我們系統(tǒng)設計人員在設計階段就要保證數據的完整性。所以,基于以上的問題,特提出VFP數據庫的約束和觸發(fā)技術以及在此基礎上的應用實例。1、VFP數據庫表的基本約束技術我們就可以通過VFP提供的Create-SQL等數據描述語句(DDL)

3、和數據操縱語句(DML)來幫助我們實現這些規(guī)則的約束以保證數據庫數據的完整性。按照關系數據庫的理論要求,對于數據庫表的關鍵字來說應該要避免關鍵字值為空也不能重復。實現這些約束機制的命令及其區(qū)別如下:實現關鍵字空值約束的命令語句如下:實現關鍵字字段級約束規(guī)則的命令語句如下:CreateTableXS(xhC(10)CheckNotIsNull(xh)Er-ror“關鍵字值不許為空值”,xmc(8),csrqD)針對以上的空值約束規(guī)則或字段級約束規(guī)則來說,無論用戶是通過管理系統(tǒng)提供的可視化的界面還是通過命令方式實現對該數據庫表的xh字段值的更新或插入新記錄的操作,當焦點離開該字段時VFP都會自動激

4、發(fā)它的空值或字段級約束機制來檢查該字段值是否為空值。如果為空值則會拒絕用戶的修改或插入操作。實現候選索引約束的命令語句如下:實現表的約束規(guī)則的命令語句如下:CreateTableXS(xhC(10),xmc(8),csrqD,SetCheckNotIsNull(xh)Error“關鍵字值不許為空值”)VFP在進行了上述的空值和字段級約束規(guī)則檢查之后且發(fā)生記錄指針移動時,VFP都會自動激發(fā)它的主索引或候選索引約束規(guī)則以及表的約束規(guī)則機制來檢查該xh字段值是否為空值。如果為空值則會拒絕用戶的修改或插入操作。對于以上的約束規(guī)則來說,根據具體應用的具體要求,除了空值約束外當然也可以實現其他條件的約20

5、11年第1期福建束。而對于主索引或候選索引約束規(guī)則機制來說最重要的一點,還會同時對關鍵字重復值進行檢查約束。實際上上述兩大類的約束機制有一個缺陷,規(guī)則只能是通過系統(tǒng)來自動實現約束檢查。如果我們把可以實現各種自定義功能的用戶自定義函數和VFP的約束規(guī)則聯系起來,那將會起到更好的事半功倍的效果。這就要用到數據庫的強大的觸發(fā)技術了。2、VFP數據庫的觸發(fā)技術數據庫表的“觸發(fā)器”實質上是一個記錄級事件代碼檢測程序,它是綁定在表上的邏輯表達式。觸發(fā)器分為插入觸發(fā)器(InsertTrigger)、更新觸發(fā)器(UpdateTrigger)和刪除觸發(fā)器(DeleteTrigger)三種。它們分別對應于對數據庫

6、表進行新增記錄、更新記錄以及刪除記錄操作時所觸發(fā)的檢測程序。VFP允許對以上的插入、更新和刪除中的任一種操作設定不同的規(guī)則,該規(guī)則可以是普通的邏輯表達式或用戶自定義函數。當表中的任何記錄被三個操作之一修改時,觸發(fā)器將會被激活,從而觸發(fā)規(guī)則檢測。若響應值為真值時,表示觸發(fā)成功,所進行的操作就會被VFP接受。若響應值為假值時,表示觸發(fā)失敗,所進行的操作就會被VFP拒絕,從而保障了數據庫數據的完整性。2.1觸發(fā)器規(guī)則的創(chuàng)建繼續(xù)以前面所述的對關鍵字的值不能為空值的約束條件為例,創(chuàng)建表的插入觸發(fā)器規(guī)則的命令語句如下:CREATETRIGGERONxsFORINSERTASNOTISNULL(xh)只要將

7、以上命令中的INSERT保留字替換為UP-DATE或DELETE即可以實現更新觸發(fā)器和刪除觸發(fā)器規(guī)則的約束了。值得一提的是VFP觸發(fā)器約束規(guī)則還可以是用戶自定義函數,這對于系統(tǒng)設計人員來說簡直就是如虎添翼。2.2用戶自定義函數的創(chuàng)建在本文示例數據庫中,xs表和cj表的數據應該要保證數據的一致性。例如在cj表中插入的記錄的外部關鍵字值必須要與xs表中的主關鍵字的值對應。如果違反了上述的約定,則會引起cj表中出現孤立記錄。為了保證VFP相關表數據的一致性,可以通過VFP的數據庫設計器創(chuàng)建xs表和cj表之間的參照完整性規(guī)則。創(chuàng)建完畢后通過觀察xs表和cj表的觸發(fā)器不難發(fā)現:在對存在永久關系的表之間創(chuàng)

8、建參照完整性規(guī)則的時候,實際上VFP會自動的在數據庫的存儲過程中創(chuàng)建實現參照完整性規(guī)則的邏輯自定義函數,然后在相關表的觸發(fā)器里面加以調用。根據這一方法,系統(tǒng)設計人員當然也可以在存儲過程中設計用戶自定義函數以實現跟具體應用相關的功能。電腦119對于普通用戶的沒有違反上述規(guī)則約束的操作之外的誤操作來說,作為系統(tǒng)設計人員有必要知道用戶進行了哪些誤操作。下面結合一個具體的實例來介紹一下借助于VFP觸發(fā)器的激發(fā)機制如何幫助我們解決這一實際問題。首先,通過modifyprocedure命令打開數據庫的存儲過程,然后在存儲過程里面創(chuàng)建自定義函數Insert-Log()。InsertLog()函數的作用是借助

9、于觸發(fā)器的激發(fā)機制響應用戶對數據庫表文件中進行增加記錄操作時,對用戶針對當前表的操作細節(jié)進行詳細記載形成日志文件以方便后期數據維護。具體代碼(已對本文所涉表文件測試通過)及相應注釋如下:FUNCTIONInsertlog()path=alltrim(SUBSTR(dbf(),1,rat('',dbf()rzname='log'+SUBSTR(DBF(),LEN(path)+1)&&日志文件保存在'log+表名'文件里IF!FILE(rzname)COPYSTRUCTURETOtempfileextend&&獲取當前

10、表結構信息*為tempfile表添加具體操作名稱和操作時間字段信息INSERTINTOtempfile(field_name,field_type,field_len)VALUES('操作名稱','C',10)INSERTINTOtempfile(field_name,field_type,field_len)VALUES('操作時間','T',8)curarea=SELECT()IFUSED("tempfile")useintempfileEndifSELECT0CREATE&rznamefromte

11、mpfileDELETEFILEtempfile.*SELECT(curarea)ENDIFSCATTERMEMVAR操作名稱='添加字段值'操作時間=datetime()&&記錄具體操作時間通過如下的三個命令以分別創(chuàng)建插入觸發(fā)器、更新觸發(fā)器和刪除觸發(fā)器規(guī)則:CREATETRIGGERONxsFORINSERTASInsertlog()CREATETRIGGERONxsFORUPDATEASUpdateLog()CREATETRIGGERONxsFORDELETEASDelectLog()假設用戶對xs表插入了如下的記錄(部分字段)值:(下接第127頁)2011

12、年第1期福建電腦127了以下特色:3.1設計富有創(chuàng)意,風格生動活潑,具有很強的吸引力本網站的整體形象(包括版面布局、色彩、字體等)給瀏覽者留下一種清新簡潔、生動活潑、美觀大方的綜合印象。網站配色是精心設計的,使用以淡藍和淡綠為主調的色系,在同一色系里面采用不同的顏色使網頁增加色彩,色調統(tǒng)一,色彩豐富,搭配和諧,不花哨。頁面元素大小適中,布局勻稱,不同元素之間留有足夠空白,給人視覺上休息的機會。網站的風格讓人感到和諧、舒適,從而吸引用戶經常瀏覽,進而激發(fā)其對網站主題(輕松快樂學英語)的興趣。3.2具備良好的可擴展性、可移植性和強大的后臺維護功能網站欄目類別及內容可以無限擴展,具有強大的后臺維護功

13、能,可以隨意增加、修改和刪除網站新欄目類別及內容,方便網站的隨時更新。本網站框架設計的靈活性決定了其能支撐較廣泛的產品系列,只要稍作修改,就能快速地將其改造成為其他內容和功能用途的網站,具備良好的可移植性。如果將所有網站欄目類別和內容全部刪除,那么網站就會成為一個空架子,然后再新增其他主題的網站新欄目和內容,就可以將網站改造成為其他主題類別。比如,新增其他某課程的學習和宣傳內容,可以很方便地將其改造成為精品課程網站。3.3多媒體表現形式豐富,內容生動有趣一般的英語學習網站,以文字敘述為主,用戶容易感到枯燥乏味,而本網站通過電影、歌曲、flash動畫等各種多媒體形式,充分使用生動有趣的教學內容,

14、寓教于樂,激發(fā)用戶的學習興趣,幫助提高用戶的英語聽、說、讀、寫等應用能力,使用戶學得主動、學得快樂。3.4結合Windows7的語音識別功能,通過語音與網站頁面進行交互Windows7操作系統(tǒng)已經實現了令人激動的語音識別功能,可以通過語音來完成以前需要通過鼠標和鍵盤實現的操作。開啟英文版Windows7的語音識別功能后,本網站的頁面上的超鏈接、按鈕等控件元素都可以通過語音來控制。比如,在英語口語欄目中,只要對著麥克風說"tiger",頁面上就會自動展示出老虎的圖片,這樣有利于形象記憶單詞,增加英語學習的趣味性。另外,對于一些特殊人群,比如盲人,如果想聽英文歌曲,想聽英語故事

15、和電影,就可以自己通過語音來與本網站交互,而不需要使用可視化的鼠標和鍵盤。3.5前臺界面語言采用全英文,有利于營造英語學習氛圍前臺用戶界面的語言使用全英文,讓用戶在潛意識中慢慢接受全英文的學習氛圍,看到整屏英文不會感到陌生,尋找到英語學習的感覺??梢哉{用其他網站的在線翻譯功能,選中單詞,就能在旁邊出現該單詞的中文解釋,從而克服生詞問題。當用戶習慣了瀏覽全英文網頁后,其英語學習自信心能得到提高,非常有利于提高其英語水平。另外,留言板里面也鼓勵大家使用英文留言,以鍛煉其英文表達能力。4、結束語本網站平臺采用先進的計算機技術,使用正確巧妙的英語學習方法,通過豐富有趣的英語學習資源,重點培養(yǎng)學習者的英

16、語自學能力,全面提高用戶的英語聽、說、讀、寫等綜合能力,讓用戶輕松掌握英語這個語言工具,從而更好地為社會服務。在實際應用網站的過程中,根據安全維護的需要,還應該考慮增加日志管理的功能,便于記錄出錯信息,查找問題的原因。參考文獻:1孫淑珍利用計算機技術與網絡資源輔助英語學習J美中教育評論,2008,5(4):24-272張進明,呂曉基于B/S結構的遠程故障診斷系統(tǒng)的研究J微計算機信息,2004,(2):62-633李雪梅,鐘遠薪應用ASP技術實現對科技文獻數據庫的動態(tài)查詢J西南師范大學學報(自然科學版),2004,29(2):294-2994宋立峰基于ASP的B2C電子商務網站的設計J福建電腦,2008,(11):159,199!(上接第119頁)則通過插入觸發(fā)器的自動激發(fā)機制,Insertlog()用戶自定義函數將會被調用,并創(chuàng)建logxs.dbf表文件詳細記載用戶對xs表的操作。這樣維護人員通過瀏覽logxs表文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論