郝彥琴
(山西忻州市工業(yè)學(xué)校計算機(jī)學(xué)科組,山西 原平 034100)
一般情況下,表中記錄的順序由數(shù)據(jù)錄入的先后順序而定,并用記錄號予以標(biāo)識,因此,表中的記錄無規(guī)律。要想使無規(guī)律的記錄有規(guī)律,VFP中提供了兩種方法:一是排序法,二是索引法。排序是對表中記錄進(jìn)行整理,按指定的關(guān)鍵字段排序,并將排序結(jié)果形成一個新的數(shù)據(jù)表,屬于物理排序。其缺點是:當(dāng)原始的表文件被修改后,必須重新排序,排序時產(chǎn)生的新表文件,占用磁盤空間,當(dāng)表較大時,排序處理太耗時,因此此法較少使用。索引是根據(jù)某一字段的值進(jìn)行邏輯排序,VFP在輸出記錄時,按照索引的順序分別讀取每一條記錄,而這些記錄的實際儲存位置并未改變。一般來講,在數(shù)據(jù)庫中,索引不會自動生成新的表文件,只是會生成有用的索引新文件。但是,不能單獨利用索引新文件來進(jìn)行搜索,必須在表文件的密切配合下,才能加以利用。因此,在一定意義上,可以將索引的優(yōu)勢概括為三點:(1)在數(shù)據(jù)檢索上,利用索引使得搜索速度得到了質(zhì)的提升,節(jié)約了搜索過程的時間;(2)可以精確定位數(shù)據(jù)庫中每一行,甚至每一個字符的唯一性;(3)能夠加強(qiáng)表與表之間的關(guān)聯(lián)性,同時也加快了他們之間的連接。
索引是根據(jù)某一特定關(guān)鍵字進(jìn)行排序的,因此根據(jù)對關(guān)鍵字的不同要求,可以將索引分為以下四種不同的類型。
(1)主索引:主索引的關(guān)鍵字不允許出現(xiàn)重復(fù)值,因此,只能在數(shù)據(jù)庫表中建立主索引,并且,一個數(shù)據(jù)庫也只能建立唯一的主索引。
(2)候選索引:一般情況下,一個表中可以建立若干個候選索引,但是,候選索引卻不允許關(guān)鍵字出現(xiàn)重復(fù)值。
(3)普通索引:普通索引可以認(rèn)為是候選索引的進(jìn)一步擴(kuò)展,既允許一個表建立若干個普通的索引,同時也允許索引的關(guān)鍵出現(xiàn)重復(fù)值。所以,可以將普通索引歸類為默認(rèn)類型的索引。
(4)唯一索引:在唯一索引中,一個表可以創(chuàng)建多個唯一索引,也同樣允許出現(xiàn)重復(fù)的關(guān)鍵字,但卻區(qū)別于普通索引的是,只能包含表文件與索引關(guān)鍵字匹配的第一個記錄。
索引文件分為以下三類。
(1)結(jié)構(gòu)復(fù)合索引文件(.CDX):使用和表文件名相同的基本名,可以包含多個索引,每個索引有一個索引標(biāo)志。此類索引文件,隨表的打開自動打開,當(dāng)數(shù)據(jù)庫文件被修改時被自動維護(hù)。
(2)非結(jié)構(gòu)復(fù)合索引文件(.CDX):必須明確打開。使用和表不同的基本名,可以包含多個索引,每個索引有一個索引標(biāo)志,需要單獨打開。
(3)獨立索引文件(.IDX):必須明確的打開。文件的基本名由用戶定義。此類索引文件是根據(jù)一個索引項建立的索引文件。
以往的臨床醫(yī)學(xué)檢驗中,在對標(biāo)本進(jìn)行尿液白細(xì)胞檢驗的時候,往往都會采用尿液干化學(xué)法來進(jìn)行檢驗,采取尿液標(biāo)本,并將檢測試紙放入尿液標(biāo)本中,尿液化學(xué)成分會使試紙內(nèi)的發(fā)色模塊產(chǎn)生反應(yīng),然后再采用尿液分析儀器來對試紙的檢驗結(jié)果進(jìn)行分析,從而得出準(zhǔn)確的尿液白細(xì)胞檢驗結(jié)果。在對泌尿系統(tǒng)疾病患者進(jìn)行醫(yī)學(xué)檢驗的時候,通常都會采用該檢測方式,但是在實際檢測的過程中,很容易受到各種因素的影響,從而導(dǎo)致檢驗結(jié)果的準(zhǔn)確性下降,進(jìn)一步影響醫(yī)護(hù)人員對患者病情的判斷,很容易導(dǎo)致誤診、漏診現(xiàn)象的發(fā)生,非常不利于患者病情的康復(fù),嚴(yán)重的甚至?xí)?dǎo)致醫(yī)患糾紛的發(fā)生。
VFP創(chuàng)建索引文件有兩種方式:表設(shè)計器方式和命令方式。
(1)表設(shè)計器方式:打開表文件→從顯示菜單中選擇表設(shè)計器→在表設(shè)計器中單擊索引→輸入索引名并選擇索引類型→選擇索引的方向(升序還是降序)→在表達(dá)式框中輸入作為排序依據(jù)的索引關(guān)鍵字→在篩選框中輸入篩選表達(dá)式→單擊確定,完畢。
(2)命令方式。
INDEX ON <索引關(guān)鍵字表達(dá)式> TO <單索引文件> | TAG <標(biāo)識名>
[OF <復(fù)合索引文件名>] [FOR <邏輯表達(dá)式>] [ASCENDING | DESCENDING][UNIQUE][ADDITIVE]
[說明]<索引關(guān)鍵字表達(dá)式>:對于關(guān)鍵字表達(dá)式在索引文件中的建立,既可以是單一字段名,也能夠是多個字段組成的字符型的表達(dá)式,但在字段類型上,必須是數(shù)值型、字符型、日期型和邏輯型等四種,不能是其他類型的字段,在指定的索引文件中進(jìn)行。單個字段的表達(dá)式類型無須轉(zhuǎn)換,但多個字段的表達(dá)式在應(yīng)用中需要轉(zhuǎn)換成同一個類型的表達(dá)式才能進(jìn)行使用。
TAG<標(biāo)識名>:對于TAG標(biāo)識名,屬于指定建立或者追加索引的標(biāo)識名,因此只對復(fù)合索引文件的檢索有效,而對其他類型的索引文件無法進(jìn)行檢索。
OF<復(fù)合索引文件名>:在VFP關(guān)系數(shù)據(jù)庫中,OF特指指定的復(fù)合索引文件名。若有此選項,就會在指定的復(fù)合索引文件中追加一個索引標(biāo)識,即使指定的復(fù)合索引文件不存在,系統(tǒng)也會自動建立指定的文件。若沒有此選項,表示在結(jié)構(gòu)復(fù)合文件中追加一個索引標(biāo)識,若結(jié)構(gòu)復(fù)合索引文件不存在,系統(tǒng)將自動建立結(jié)構(gòu)復(fù)合索引文件。
ASCENDING|DESCENDING:ASCENDING表示按升序建立索引,DESCENDING表示按降序建立索引。缺省時,按按升序建立索引。單索引文件不能選用DESCENDING選項。
UNIQUE:用來建立唯一的索引,確保在后續(xù)檢索操作中的精確定位,加快檢索速度。
ADDITIVE:用來標(biāo)識以前打開的索引文件,防止在使用過程中關(guān)閉索引文件。要是沒有ADDITIVE進(jìn)行識別,就會關(guān)閉除了結(jié)構(gòu)符合索引文件外的其他已經(jīng)打開的索引文件,帶來不必要的麻煩。
舉例:
INDEX ON產(chǎn)品名稱TAG cpmc OF產(chǎn)品名稱索引FOR產(chǎn)品名稱=“三星手機(jī)”表示按照升序排列給產(chǎn)品名稱為三星手機(jī)的記錄建立索引文件,其索引文件名為產(chǎn)品名稱索引,索引標(biāo)識為:cpmc。
(1)建立一個或者幾個索引,打開相應(yīng)的索引文件。
一個表可以建立多個索引,但任一時刻控制記錄邏輯順序的索引卻只有一個,這個索引稱為當(dāng)前索引。指定當(dāng)前索引后記錄的順序就由該索引決定。但在指定當(dāng)前索引之前,必須打開索引文件(結(jié)構(gòu)索引文件除外,結(jié)構(gòu)索引文件隨著表的打開而打開),打開索引文件的命令是:SET INDEX TO,其中的“索引文件列表”指定打開的索引文件,每兩個文件名之間用逗號分隔。當(dāng)索引文件打開后,就可以指定當(dāng)前索引了,其命令為:SET ORDER TO<索引名>,其中“OF索引文件名”,指定該索引文件中的索引為當(dāng)前索引。如果缺少該項,則默認(rèn)為結(jié)構(gòu)索引文件。
例如,將產(chǎn)品名稱索引文件中的cpmc指定為當(dāng)前索引:
SET INDEX TO 產(chǎn)品名稱索引
SET ORDER TO cpmc OF 產(chǎn)品名稱索引
(2)索引文件的維護(hù)。
增加、刪除和修改當(dāng)前表中的數(shù)據(jù)時,同時也需要對索引進(jìn)行相應(yīng)的動態(tài)維護(hù)和調(diào)整,使索引文件中的索引正確反映記錄的最新狀態(tài)。當(dāng)表文件和需要維護(hù)的索引文件都打開后,可以執(zhí)行重新索引命令來維護(hù)索引,其命令為:REINDEX。
(3)關(guān)閉索引文件。
當(dāng)索引文件使用完畢后,應(yīng)及時的關(guān)閉,其關(guān)閉命令為:SET INDEX TO,CLOSE INDEX,CLOSE ALL,CLEAR ALL。SET INDEX TO:關(guān)閉當(dāng)前表除結(jié)構(gòu)索引以外的其他打開的索引文件;CLOSE INDEX:用法同SET INDEX TO;close all:關(guān)閉當(dāng)前所有類型文件(其中包括數(shù)據(jù)庫文件以及索引文件);clear all:關(guān)閉所有類型文件的同時還清除所有內(nèi)存變量的值。
[1] 王睿.技工院校數(shù)據(jù)庫VFP的教學(xué)探討[J].知識經(jīng)濟(jì),2015,(15).
[2] 段雪莉.探析當(dāng)代案例教學(xué)法在VFP教學(xué)中的應(yīng)用[J].電子制作,2015,(10).
[3] 楊云春.指針在Visual FoxPro教學(xué)中的應(yīng)用研究[J].昆明學(xué)院學(xué)報,2015,(03).