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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論