版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、118福建電腦2011年第1期基于VFP的數(shù)據(jù)庫約束和觸發(fā)技術(shù)及其應(yīng)用魏同明,嚴彩梅,楚紅(揚州大學信息工程學院江蘇揚州225009)【摘要】:本文介紹了為保持VisualFoxpro數(shù)據(jù)庫數(shù)據(jù)完整性而涉及的約束和觸發(fā)技術(shù)以及在此基礎(chǔ)上的應(yīng)用實例?!娟P(guān)鍵詞】:數(shù)據(jù)庫,約束,觸發(fā)技術(shù),數(shù)據(jù)完整性0、引言在VisualFoxpro(以下簡稱VFP)課程教學中我們發(fā)現(xiàn)學生基于VFP設(shè)計的管理信息系統(tǒng)作品中,系統(tǒng)往往看重功能的正常實現(xiàn)而忽視了系統(tǒng)中的信息安全問題。雖然管理信息系統(tǒng)程序可以經(jīng)由對用戶進行系統(tǒng)培訓后正確操作,或者也可在用戶對數(shù)據(jù)庫進行的日常簡單維護過程中為管理信息系統(tǒng)中數(shù)據(jù)的的完整性提供一
2、定的保障。但是,不可避免的某些用戶的誤操作就可能導致數(shù)據(jù)的錯誤,影響了系統(tǒng)重要數(shù)據(jù)的正確性、合理性和一致性,給軟件的后期維護帶來很大的麻煩。為了盡可能減小用戶的誤操作給后期數(shù)據(jù)維護人員帶來的維護麻煩,系統(tǒng)設(shè)計人員就應(yīng)該通過一定技術(shù)手段避免用戶進行誤操作,同時也應(yīng)該通過一定的技術(shù)手段了解用戶進行了哪些誤操作。另外,除了普通用戶可以操作的一般數(shù)據(jù)外,大量的重要數(shù)據(jù)也需要我們系統(tǒng)設(shè)計人員在設(shè)計階段就要保證數(shù)據(jù)的完整性。所以,基于以上的問題,特提出VFP數(shù)據(jù)庫的約束和觸發(fā)技術(shù)以及在此基礎(chǔ)上的應(yīng)用實例。1、VFP數(shù)據(jù)庫表的基本約束技術(shù)我們就可以通過VFP提供的Create-SQL等數(shù)據(jù)描述語句(DDL)
3、和數(shù)據(jù)操縱語句(DML)來幫助我們實現(xiàn)這些規(guī)則的約束以保證數(shù)據(jù)庫數(shù)據(jù)的完整性。按照關(guān)系數(shù)據(jù)庫的理論要求,對于數(shù)據(jù)庫表的關(guān)鍵字來說應(yīng)該要避免關(guān)鍵字值為空也不能重復。實現(xiàn)這些約束機制的命令及其區(qū)別如下:實現(xiàn)關(guān)鍵字空值約束的命令語句如下:實現(xiàn)關(guān)鍵字字段級約束規(guī)則的命令語句如下:CreateTableXS(xhC(10)CheckNotIsNull(xh)Er-ror“關(guān)鍵字值不許為空值”,xmc(8),csrqD)針對以上的空值約束規(guī)則或字段級約束規(guī)則來說,無論用戶是通過管理系統(tǒng)提供的可視化的界面還是通過命令方式實現(xiàn)對該數(shù)據(jù)庫表的xh字段值的更新或插入新記錄的操作,當焦點離開該字段時VFP都會自動激
4、發(fā)它的空值或字段級約束機制來檢查該字段值是否為空值。如果為空值則會拒絕用戶的修改或插入操作。實現(xiàn)候選索引約束的命令語句如下:實現(xiàn)表的約束規(guī)則的命令語句如下:CreateTableXS(xhC(10),xmc(8),csrqD,SetCheckNotIsNull(xh)Error“關(guān)鍵字值不許為空值”)VFP在進行了上述的空值和字段級約束規(guī)則檢查之后且發(fā)生記錄指針移動時,VFP都會自動激發(fā)它的主索引或候選索引約束規(guī)則以及表的約束規(guī)則機制來檢查該xh字段值是否為空值。如果為空值則會拒絕用戶的修改或插入操作。對于以上的約束規(guī)則來說,根據(jù)具體應(yīng)用的具體要求,除了空值約束外當然也可以實現(xiàn)其他條件的約20
5、11年第1期福建束。而對于主索引或候選索引約束規(guī)則機制來說最重要的一點,還會同時對關(guān)鍵字重復值進行檢查約束。實際上上述兩大類的約束機制有一個缺陷,規(guī)則只能是通過系統(tǒng)來自動實現(xiàn)約束檢查。如果我們把可以實現(xiàn)各種自定義功能的用戶自定義函數(shù)和VFP的約束規(guī)則聯(lián)系起來,那將會起到更好的事半功倍的效果。這就要用到數(shù)據(jù)庫的強大的觸發(fā)技術(shù)了。2、VFP數(shù)據(jù)庫的觸發(fā)技術(shù)數(shù)據(jù)庫表的“觸發(fā)器”實質(zhì)上是一個記錄級事件代碼檢測程序,它是綁定在表上的邏輯表達式。觸發(fā)器分為插入觸發(fā)器(InsertTrigger)、更新觸發(fā)器(UpdateTrigger)和刪除觸發(fā)器(DeleteTrigger)三種。它們分別對應(yīng)于對數(shù)據(jù)庫
6、表進行新增記錄、更新記錄以及刪除記錄操作時所觸發(fā)的檢測程序。VFP允許對以上的插入、更新和刪除中的任一種操作設(shè)定不同的規(guī)則,該規(guī)則可以是普通的邏輯表達式或用戶自定義函數(shù)。當表中的任何記錄被三個操作之一修改時,觸發(fā)器將會被激活,從而觸發(fā)規(guī)則檢測。若響應(yīng)值為真值時,表示觸發(fā)成功,所進行的操作就會被VFP接受。若響應(yīng)值為假值時,表示觸發(fā)失敗,所進行的操作就會被VFP拒絕,從而保障了數(shù)據(jù)庫數(shù)據(jù)的完整性。2.1觸發(fā)器規(guī)則的創(chuàng)建繼續(xù)以前面所述的對關(guān)鍵字的值不能為空值的約束條件為例,創(chuàng)建表的插入觸發(fā)器規(guī)則的命令語句如下:CREATETRIGGERONxsFORINSERTASNOTISNULL(xh)只要將
7、以上命令中的INSERT保留字替換為UP-DATE或DELETE即可以實現(xiàn)更新觸發(fā)器和刪除觸發(fā)器規(guī)則的約束了。值得一提的是VFP觸發(fā)器約束規(guī)則還可以是用戶自定義函數(shù),這對于系統(tǒng)設(shè)計人員來說簡直就是如虎添翼。2.2用戶自定義函數(shù)的創(chuàng)建在本文示例數(shù)據(jù)庫中,xs表和cj表的數(shù)據(jù)應(yīng)該要保證數(shù)據(jù)的一致性。例如在cj表中插入的記錄的外部關(guān)鍵字值必須要與xs表中的主關(guān)鍵字的值對應(yīng)。如果違反了上述的約定,則會引起cj表中出現(xiàn)孤立記錄。為了保證VFP相關(guān)表數(shù)據(jù)的一致性,可以通過VFP的數(shù)據(jù)庫設(shè)計器創(chuàng)建xs表和cj表之間的參照完整性規(guī)則。創(chuàng)建完畢后通過觀察xs表和cj表的觸發(fā)器不難發(fā)現(xiàn):在對存在永久關(guān)系的表之間創(chuàng)
8、建參照完整性規(guī)則的時候,實際上VFP會自動的在數(shù)據(jù)庫的存儲過程中創(chuàng)建實現(xiàn)參照完整性規(guī)則的邏輯自定義函數(shù),然后在相關(guān)表的觸發(fā)器里面加以調(diào)用。根據(jù)這一方法,系統(tǒng)設(shè)計人員當然也可以在存儲過程中設(shè)計用戶自定義函數(shù)以實現(xiàn)跟具體應(yīng)用相關(guān)的功能。電腦119對于普通用戶的沒有違反上述規(guī)則約束的操作之外的誤操作來說,作為系統(tǒng)設(shè)計人員有必要知道用戶進行了哪些誤操作。下面結(jié)合一個具體的實例來介紹一下借助于VFP觸發(fā)器的激發(fā)機制如何幫助我們解決這一實際問題。首先,通過modifyprocedure命令打開數(shù)據(jù)庫的存儲過程,然后在存儲過程里面創(chuàng)建自定義函數(shù)Insert-Log()。InsertLog()函數(shù)的作用是借助
9、于觸發(fā)器的激發(fā)機制響應(yīng)用戶對數(shù)據(jù)庫表文件中進行增加記錄操作時,對用戶針對當前表的操作細節(jié)進行詳細記載形成日志文件以方便后期數(shù)據(jù)維護。具體代碼(已對本文所涉表文件測試通過)及相應(yīng)注釋如下:FUNCTIONInsertlog()path=alltrim(SUBSTR(dbf(),1,rat('',dbf()rzname='log'+SUBSTR(DBF(),LEN(path)+1)&&日志文件保存在'log+表名'文件里IF!FILE(rzname)COPYSTRUCTURETOtempfileextend&&獲取當前
10、表結(jié)構(gòu)信息*為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()假設(shè)用戶對xs表插入了如下的記錄(部分字段)值:(下接第127頁)2011
12、年第1期福建電腦127了以下特色:3.1設(shè)計富有創(chuàng)意,風格生動活潑,具有很強的吸引力本網(wǎng)站的整體形象(包括版面布局、色彩、字體等)給瀏覽者留下一種清新簡潔、生動活潑、美觀大方的綜合印象。網(wǎng)站配色是精心設(shè)計的,使用以淡藍和淡綠為主調(diào)的色系,在同一色系里面采用不同的顏色使網(wǎng)頁增加色彩,色調(diào)統(tǒng)一,色彩豐富,搭配和諧,不花哨。頁面元素大小適中,布局勻稱,不同元素之間留有足夠空白,給人視覺上休息的機會。網(wǎng)站的風格讓人感到和諧、舒適,從而吸引用戶經(jīng)常瀏覽,進而激發(fā)其對網(wǎng)站主題(輕松快樂學英語)的興趣。3.2具備良好的可擴展性、可移植性和強大的后臺維護功能網(wǎng)站欄目類別及內(nèi)容可以無限擴展,具有強大的后臺維護功
13、能,可以隨意增加、修改和刪除網(wǎng)站新欄目類別及內(nèi)容,方便網(wǎng)站的隨時更新。本網(wǎng)站框架設(shè)計的靈活性決定了其能支撐較廣泛的產(chǎn)品系列,只要稍作修改,就能快速地將其改造成為其他內(nèi)容和功能用途的網(wǎng)站,具備良好的可移植性。如果將所有網(wǎng)站欄目類別和內(nèi)容全部刪除,那么網(wǎng)站就會成為一個空架子,然后再新增其他主題的網(wǎng)站新欄目和內(nèi)容,就可以將網(wǎng)站改造成為其他主題類別。比如,新增其他某課程的學習和宣傳內(nèi)容,可以很方便地將其改造成為精品課程網(wǎng)站。3.3多媒體表現(xiàn)形式豐富,內(nèi)容生動有趣一般的英語學習網(wǎng)站,以文字敘述為主,用戶容易感到枯燥乏味,而本網(wǎng)站通過電影、歌曲、flash動畫等各種多媒體形式,充分使用生動有趣的教學內(nèi)容,
14、寓教于樂,激發(fā)用戶的學習興趣,幫助提高用戶的英語聽、說、讀、寫等應(yīng)用能力,使用戶學得主動、學得快樂。3.4結(jié)合Windows7的語音識別功能,通過語音與網(wǎng)站頁面進行交互Windows7操作系統(tǒng)已經(jīng)實現(xiàn)了令人激動的語音識別功能,可以通過語音來完成以前需要通過鼠標和鍵盤實現(xiàn)的操作。開啟英文版Windows7的語音識別功能后,本網(wǎng)站的頁面上的超鏈接、按鈕等控件元素都可以通過語音來控制。比如,在英語口語欄目中,只要對著麥克風說"tiger",頁面上就會自動展示出老虎的圖片,這樣有利于形象記憶單詞,增加英語學習的趣味性。另外,對于一些特殊人群,比如盲人,如果想聽英文歌曲,想聽英語故事
15、和電影,就可以自己通過語音來與本網(wǎng)站交互,而不需要使用可視化的鼠標和鍵盤。3.5前臺界面語言采用全英文,有利于營造英語學習氛圍前臺用戶界面的語言使用全英文,讓用戶在潛意識中慢慢接受全英文的學習氛圍,看到整屏英文不會感到陌生,尋找到英語學習的感覺。可以調(diào)用其他網(wǎng)站的在線翻譯功能,選中單詞,就能在旁邊出現(xiàn)該單詞的中文解釋,從而克服生詞問題。當用戶習慣了瀏覽全英文網(wǎng)頁后,其英語學習自信心能得到提高,非常有利于提高其英語水平。另外,留言板里面也鼓勵大家使用英文留言,以鍛煉其英文表達能力。4、結(jié)束語本網(wǎng)站平臺采用先進的計算機技術(shù),使用正確巧妙的英語學習方法,通過豐富有趣的英語學習資源,重點培養(yǎng)學習者的英
16、語自學能力,全面提高用戶的英語聽、說、讀、寫等綜合能力,讓用戶輕松掌握英語這個語言工具,從而更好地為社會服務(wù)。在實際應(yīng)用網(wǎng)站的過程中,根據(jù)安全維護的需要,還應(yīng)該考慮增加日志管理的功能,便于記錄出錯信息,查找問題的原因。參考文獻:1孫淑珍利用計算機技術(shù)與網(wǎng)絡(luò)資源輔助英語學習J美中教育評論,2008,5(4):24-272張進明,呂曉基于B/S結(jié)構(gòu)的遠程故障診斷系統(tǒng)的研究J微計算機信息,2004,(2):62-633李雪梅,鐘遠薪應(yīng)用ASP技術(shù)實現(xiàn)對科技文獻數(shù)據(jù)庫的動態(tài)查詢J西南師范大學學報(自然科學版),2004,29(2):294-2994宋立峰基于ASP的B2C電子商務(wù)網(wǎng)站的設(shè)計J福建電腦,2008,(11):159,199!(上接第119頁)則通過插入觸發(fā)器的自動激發(fā)機制,Insertlog()用戶自定義函數(shù)將會被調(diào)用,并創(chuàng)建logxs.dbf表文件詳細記載用戶對xs表的操作。這樣維護人員通過瀏覽logxs表文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 神經(jīng)系統(tǒng)考試題及答案
- 容器技術(shù)考試題庫及答案
- 輻射探測技術(shù)
- 《GAT 759-2008公安信息化標準管理基本數(shù)據(jù)結(jié)構(gòu)》專題研究報告
- 2026年深圳中考語文小說閱讀專項試卷(附答案可下載)
- 2026年深圳中考物理專題過關(guān)檢測試卷(附答案可下載)
- 積分題目及答案解析
- 2026年深圳中考數(shù)學一元一次方程試卷(附答案可下載)
- 2026年深圳中考數(shù)學沖刺名校專項試卷(附答案可下載)
- 2026年深圳中考歷史戰(zhàn)后世界格局的演變試卷(附答案可下載)
- 不能降低投標價的回復函
- 2024-2025學年廣東省實驗中學高一(上)期中語文試卷
- 鋼鐵制造的工藝流程(內(nèi)部資料)課件
- DB31-T 1448-2023 監(jiān)獄場所消防安全管理規(guī)范
- 公司干部調(diào)研方案
- 無糾紛自愿離婚協(xié)議書
- 四川省高等教育自學考試畢業(yè)生登記表【模板】
- 專題五 以新發(fā)展理念引領(lǐng)高質(zhì)量發(fā)展
- GB/T 22417-2008叉車貨叉叉套和伸縮式貨叉技術(shù)性能和強度要求
- GB/T 20145-2006燈和燈系統(tǒng)的光生物安全性
- GB/T 1.1-2009標準化工作導則 第1部分:標準的結(jié)構(gòu)和編寫
評論
0/150
提交評論