專(zhuān)利名稱(chēng):動(dòng)態(tài)建立快速索引的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)庫(kù)的存取方法,特別涉及一種動(dòng)態(tài)建立快速索引的方法。
一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)工具,除了要能建立數(shù)據(jù)庫(kù)及表格信息組之外,也要能輸入、更新、刪除數(shù)據(jù)庫(kù)的內(nèi)容,或做各種數(shù)據(jù)的摘取動(dòng)作,并合成有意義的信息。現(xiàn)今的數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)工具,已漸趨視覺(jué)化和物件化,開(kāi)發(fā)者不需要費(fèi)心于不是系統(tǒng)核心上的瑣事而可專(zhuān)心于開(kāi)發(fā)和設(shè)計(jì)。然而,由于現(xiàn)今的數(shù)據(jù)庫(kù)已非傳統(tǒng)上只著重于結(jié)構(gòu)性數(shù)據(jù)的處理,許多聲音、影像、圖形等非結(jié)構(gòu)性的媒體數(shù)據(jù)大量的出現(xiàn),也增加了數(shù)據(jù)庫(kù)存取上的問(wèn)題。當(dāng)然,較完整的數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)軟件不但開(kāi)發(fā)、維護(hù)容易,更能增進(jìn)系統(tǒng)的執(zhí)行效能。
現(xiàn)今的數(shù)據(jù)庫(kù)管理系統(tǒng)大都提供標(biāo)準(zhǔn)語(yǔ)言的功能(Structured QueryLanguage,SQL),SQL著重于數(shù)據(jù)庫(kù)的操作,同時(shí)具有關(guān)聯(lián)多個(gè)表格的能力,也可快速的建立索引,是關(guān)聯(lián)式數(shù)據(jù)庫(kù)設(shè)計(jì)常用的高階語(yǔ)言。
傳統(tǒng)上的數(shù)據(jù)庫(kù)軟件在建表格時(shí)就指定好信息組進(jìn)行索引(index),但是往往在程序進(jìn)行中又必須建立新的索引。當(dāng)其有需要對(duì)某個(gè)屬性選取子集合時(shí),通常所利用的索引方式為將數(shù)據(jù)庫(kù)的數(shù)據(jù)大量復(fù)制,以符合使用者的需求。而此方式所產(chǎn)生的結(jié)果為數(shù)據(jù)冗長(zhǎng),占用大量的存儲(chǔ)器、及花費(fèi)較長(zhǎng)的時(shí)間,因此系統(tǒng)的執(zhí)行效率勢(shì)將受到影響。
如
圖1所示為英文學(xué)習(xí)軟件中的數(shù)據(jù)庫(kù),其中是依不同的方法將英文單字進(jìn)行分類(lèi)學(xué)習(xí)功能,例如按學(xué)習(xí)階段將其在學(xué)校中可能學(xué)到的單字分為小學(xué)、中學(xué)、高中、和大學(xué)四級(jí);或者按詞性分成名詞、動(dòng)詞、形容詞等等…;或者按動(dòng)詞變化形式分成規(guī)則動(dòng)詞和不規(guī)則動(dòng)詞等等…很明顯的是,在上述不同的分類(lèi)中,很可能會(huì)有重復(fù)的單字出現(xiàn)在各個(gè)不同的分類(lèi)之中。
在此圖中,每個(gè)單字信息組100中出現(xiàn)的單字,除了有解釋信息組110、詞性信息組120之外,尚有其它不同分類(lèi)的信息組130。當(dāng)欲得到所有有關(guān)名詞的列表時(shí),則傳統(tǒng)的方法為將每一筆具有名詞的記錄復(fù)制一遍,形成圖2所示的數(shù)據(jù)庫(kù)形式。
以此方式來(lái)進(jìn)行數(shù)據(jù)庫(kù)的索引之后,如果還要建立其它的索引,則將進(jìn)行相同的操作程序。例如字A及各種信息組可能要占100個(gè)字節(jié)以上,則以復(fù)制的方法形成子集合時(shí)將損失100個(gè)字節(jié)的空間。如此不但會(huì)產(chǎn)生大量的重復(fù)數(shù)據(jù),而且將浪費(fèi)大量的空間和時(shí)間,是相當(dāng)不經(jīng)濟(jì)且無(wú)效率的方式。
鑒于傳統(tǒng)的數(shù)據(jù)庫(kù)在建立索引時(shí),其選取子集合的方式往往是復(fù)制大量的數(shù)據(jù)以達(dá)到所需的條件,浪費(fèi)存儲(chǔ)器且影響系統(tǒng)的執(zhí)行效率,因此本發(fā)明的目的之一為提供一種動(dòng)態(tài)建立快速索引的方法,以提高系統(tǒng)的執(zhí)行效率。
本發(fā)明的另一目的在于利用此動(dòng)態(tài)建立快速索引的方法,用來(lái)對(duì)多筆數(shù)據(jù)所組成的數(shù)據(jù)庫(kù)選取符合某屬性的子集合,并使其數(shù)據(jù)順序仍保持不變。
本發(fā)明的再一目的為利用此動(dòng)態(tài)建立快速索引的方法,以達(dá)到節(jié)省存儲(chǔ)器的優(yōu)點(diǎn)。
根據(jù)以上所述的目的,本發(fā)明提供了一種方法來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行選取任意子集合的功能。本發(fā)明中包括了一個(gè)數(shù)據(jù)庫(kù),而數(shù)據(jù)庫(kù)中則包含了所有未加以分類(lèi)的元素(數(shù)據(jù)),每筆數(shù)據(jù)都具有多個(gè)不同屬性的信息組信息。對(duì)于一個(gè)使用者輸入的分類(lèi)要求,先將此分類(lèi)要求的標(biāo)志和數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)所對(duì)應(yīng)的信息組的信息標(biāo)志互相比較,如果得到相同的結(jié)果,則將此筆數(shù)據(jù)的序號(hào)加到索引的末尾。在全部的數(shù)據(jù)比較完畢之后則得到因分類(lèi)請(qǐng)求而產(chǎn)生的索引表,各筆數(shù)據(jù)的順序在此索引表中并沒(méi)有改變,而由此索引表中即可對(duì)應(yīng)到實(shí)際的數(shù)據(jù)。
也就是說(shuō),具有M筆數(shù)據(jù)的數(shù)據(jù)庫(kù)載入之后,如給定一分類(lèi)要求為K時(shí),則假定數(shù)據(jù)庫(kù)中第N筆數(shù)據(jù)所對(duì)應(yīng)的分類(lèi)信息標(biāo)志為D(N)·k,其中D(N)為第N筆數(shù)據(jù)所對(duì)應(yīng)的函數(shù),k則代表不同信息組的表示值。而此筆數(shù)據(jù)的實(shí)際的內(nèi)容則為D(N)·d。
執(zhí)行的步驟為(1)設(shè)定N=1;(2)比較K是否等于D(N)·k,如果相等的話(huà)將N加到索引表的末尾;(3)如果N=M,則結(jié)束步驟;(4)N=N+1,回到步驟(2)繼續(xù)執(zhí)行。
經(jīng)過(guò)以上的回圈執(zhí)行步驟之后,將可以得到數(shù)據(jù)庫(kù)在該分類(lèi)要求下所得出的索引表,而經(jīng)過(guò)索引表即可得到各筆數(shù)據(jù)的實(shí)際內(nèi)含值。
本發(fā)明的動(dòng)態(tài)建立索引的方法,并不需要復(fù)制大量的數(shù)據(jù)到索引表中,而只需復(fù)制各筆數(shù)據(jù)的序號(hào)即可,所以將節(jié)省大量的空間及時(shí)間,數(shù)據(jù)順序亦不會(huì)有所變動(dòng),系統(tǒng)的執(zhí)行效率可以有效提升。
本發(fā)明的較佳實(shí)施例將在后面說(shuō)明文字中結(jié)合以下附圖做更詳細(xì)的闡述,其中圖1所示為英文學(xué)習(xí)軟件中的數(shù)據(jù)庫(kù),其中具有各種不同的分類(lèi)屬性和解釋?zhuān)粓D2所示為依照傳統(tǒng)方法制作特殊分類(lèi)請(qǐng)求所形成的數(shù)據(jù)庫(kù);圖3所示為依照本發(fā)明建立動(dòng)態(tài)快速索引的方法的流程圖;圖4所示為依照本發(fā)明制作特殊分類(lèi)請(qǐng)求所形成的索引表;及圖5所示為依照本發(fā)明建立動(dòng)態(tài)快速索引的方法的硬件結(jié)構(gòu)圖。
當(dāng)數(shù)據(jù)一筆、一筆的記錄存入文件之后,日后要如何的檢索(retrieve)或更新(update),是數(shù)據(jù)庫(kù)處理的重要課題。而結(jié)構(gòu)良好的數(shù)據(jù)庫(kù),則可以很快的找到所要的數(shù)據(jù),以便適當(dāng)?shù)募右宰x取或更新。本發(fā)明所揭露的即為一種動(dòng)態(tài)建立快速索引的方法。
一般的數(shù)據(jù)庫(kù)中,為了正確記錄數(shù)據(jù),則會(huì)有一些必要的記錄項(xiàng)目,或稱(chēng)之為信息組(field)。信息組是組成數(shù)據(jù)記錄的基本項(xiàng)目,也可稱(chēng)為屬性(attribute)。也就是說(shuō),屬性可用來(lái)描述一件事物所需的要件或特征。例如對(duì)圖1中所示的英文學(xué)習(xí)軟件中的數(shù)據(jù)庫(kù)而言,每一個(gè)單字都有其特定的解釋、詞性…等等信息組或?qū)傩裕瑫r(shí)此信息組內(nèi)的數(shù)據(jù)通常是最基本的、不可分割性的數(shù)據(jù)。
在圖1中,如果要讀取數(shù)據(jù)庫(kù)中單一筆數(shù)據(jù),則作業(yè)系統(tǒng)會(huì)先把文件開(kāi)啟,把文件指位器指到文件開(kāi)頭的位置,再依文件的構(gòu)造算出記錄所在的位置,接著由作業(yè)系統(tǒng)算出該位置相當(dāng)于磁盤(pán)上的第幾磁軌、第幾磁區(qū)(或存儲(chǔ)器中的位置),最后進(jìn)行磁盤(pán)(或存儲(chǔ)器)的讀取動(dòng)作。但是,如果指定讀取的數(shù)據(jù)不是特定的記錄時(shí),則必需從此數(shù)據(jù)庫(kù)中的第一筆記錄開(kāi)始搜尋,一直查看到所要的數(shù)據(jù)為止。如果數(shù)據(jù)庫(kù)中的數(shù)據(jù)量龐大,則此讀取方式是很沒(méi)有效率的。
解決數(shù)據(jù)搜尋的方法很多,而最好的方式便是為了符合使用者的詢(xún)問(wèn)需求而將數(shù)據(jù)庫(kù)分類(lèi)。但是傳統(tǒng)上的分類(lèi)方式會(huì)產(chǎn)生大量的重復(fù)數(shù)據(jù),因此本發(fā)明為了解決傳統(tǒng)上的問(wèn)題,建構(gòu)了快速索引的方法。其主要的原理為
由于數(shù)據(jù)庫(kù)中的記錄具有多個(gè)不同的信息組(或?qū)傩?描述,對(duì)于系統(tǒng)或使用者所需求的一種分類(lèi)方法,首先對(duì)應(yīng)到數(shù)據(jù)庫(kù)中相當(dāng)?shù)男畔⒔M中,然后把分類(lèi)的標(biāo)志和數(shù)據(jù)庫(kù)里所有的記錄中此信息組的信息標(biāo)志互相比較。如果兩者相同,則把數(shù)據(jù)庫(kù)中該筆數(shù)據(jù)的序號(hào)加入索引表的最后一筆數(shù)據(jù),而剛開(kāi)始時(shí)索引表為空的數(shù)據(jù)庫(kù)。然后再比較次一筆數(shù)據(jù),直到所有的記錄數(shù)據(jù)均計(jì)算完畢,則得到該分類(lèi)方法的索引表。
該索引表中的各個(gè)記錄由于只為原數(shù)據(jù)庫(kù)各筆數(shù)據(jù)的序號(hào),因此類(lèi)似指位器的功能,經(jīng)由此序號(hào)即可得到所有數(shù)據(jù)的實(shí)際數(shù)據(jù)。同時(shí)利用本發(fā)明的動(dòng)態(tài)建立快速索引的方法所得到的索引表中各筆數(shù)據(jù)的順序沒(méi)有改變。
參照?qǐng)D3,此圖中顯示的即為本發(fā)明動(dòng)態(tài)建立快速索引方法的流程圖。從步驟300開(kāi)始,首先載入包含有M筆數(shù)據(jù)的數(shù)據(jù)庫(kù)到存儲(chǔ)器之中,步驟310,然后由步驟320提出分類(lèi)標(biāo)志為K的分類(lèi)要求,然后先將數(shù)據(jù)的序號(hào)N設(shè)定為1,步驟330,再到步驟340來(lái)比較分類(lèi)標(biāo)志K是否和第N筆,此時(shí)為第1筆中信息組為k的數(shù)據(jù)相等。在此第N筆數(shù)據(jù)所對(duì)應(yīng)的分類(lèi)信息信息組的標(biāo)志是設(shè)為D(N)·k。
如果步驟340的判斷結(jié)果為真,則執(zhí)行步驟350將N的序號(hào)加到索引表的最后,再進(jìn)行步驟360的判斷;否則直接到步驟360,判斷此時(shí)的N是否等于M。當(dāng)N等于M,表示已到達(dá)數(shù)據(jù)庫(kù)的尾端時(shí),則結(jié)束此程序,步驟370;否則再到步驟380執(zhí)行N=N+1的算式,再回到步驟340執(zhí)行下一筆,此時(shí)為第2筆的數(shù)據(jù)比較,此計(jì)算的回圈將一直繼續(xù),直到數(shù)據(jù)庫(kù)中的M筆數(shù)據(jù)都計(jì)算完畢為此。經(jīng)過(guò)上述的方法,將可得到所需的索引表。而如果該筆數(shù)據(jù)在數(shù)據(jù)庫(kù)中的序號(hào)為I(n)時(shí),則通過(guò)該索引表可以得到所有該類(lèi)數(shù)據(jù)的實(shí)際數(shù)據(jù)為D(I(1))·d,D(I(2))·d,…D(I(n))·d,其中d代表不同的信息組值。
為了方便解釋?zhuān)虼艘詧D1中的英文學(xué)習(xí)軟件中的數(shù)據(jù)庫(kù)為例,說(shuō)明如下英文單字的數(shù)據(jù)庫(kù)中共有1000筆數(shù)據(jù),而每個(gè)單字中除了解釋信息組110之外,尚有其它信息組代表單字的其它屬性,例如詞性信息組120,和其它信息組130。每筆單字亦具有序號(hào)140,參照?qǐng)D4。
首先將英文單字?jǐn)?shù)據(jù)庫(kù)載入,假設(shè)現(xiàn)在有一分類(lèi)請(qǐng)求,需要列出具有名詞的所有數(shù)據(jù),則執(zhí)行
(1)設(shè)定N=1;(2)如果單字表中第N筆單字的詞性欄為名詞,則將N加到索引表的末尾;(3)如果N=1000,則結(jié)束跳出;(4)N=N+1,回到步驟(2)。
參照?qǐng)D4,經(jīng)過(guò)此執(zhí)行步驟,將可得到標(biāo)號(hào)150的索引表,此代表名詞的動(dòng)態(tài)索引表不但占據(jù)空間減少,而且處理時(shí)間也會(huì)相對(duì)的減少。
參照?qǐng)D5,此圖所顯示的為本發(fā)明的硬盤(pán)結(jié)構(gòu)圖。中央處理單元(CPU)500執(zhí)行英文單字?jǐn)?shù)據(jù)庫(kù)的載入動(dòng)作,再經(jīng)由內(nèi)部緩沖存儲(chǔ)器510將上述處理過(guò)的索引表暫存于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)520中。得到索引表之后,如果要將所有的名詞顯示到顯示屏上,則可依照順序從索引表中取出序號(hào)作為指位器,到數(shù)據(jù)庫(kù)中取得實(shí)際要顯示的數(shù)據(jù),例如單字的解釋等等,再經(jīng)由顯示界面卡530顯示在熒光屏上。
經(jīng)過(guò)上述的本發(fā)明的動(dòng)態(tài)建立快速索引的方法,當(dāng)數(shù)據(jù)庫(kù)欲任意選取子集合時(shí),不需要建立大量的數(shù)據(jù),只需動(dòng)態(tài)的建立一個(gè)索引表,此種方式將使存儲(chǔ)器空間和時(shí)間的占用率降到最低的程度。
如本領(lǐng)域的技術(shù)人員所了解的,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用以限定本發(fā)明的權(quán)利要求范圍;凡其它未脫離本發(fā)明所揭示的精神下所完成的等效改變或修飾,均應(yīng)包含在本發(fā)明的權(quán)利要求的范圍內(nèi)。
權(quán)利要求
1.一種建立數(shù)據(jù)庫(kù)索引的方法,該方法至少包含載入數(shù)據(jù)庫(kù);建立索引表,其中該索引表為空集合;輸入分類(lèi)要求;由該數(shù)據(jù)庫(kù)取出一筆數(shù)據(jù);比較該筆數(shù)據(jù)的屬性?xún)?nèi)容和該分類(lèi)要求是否和該分類(lèi)要求相同;及將該筆數(shù)據(jù)的序號(hào)加到該索引表最后一筆數(shù)據(jù),其中該屬性?xún)?nèi)容是和該分類(lèi)要求相同。
2.如權(quán)利要求1的方法,其中所述的屬性?xún)?nèi)容至少包括了該分類(lèi)要求。
3.如權(quán)利要求1的方法,其中所述的建立步驟是將該索引表載入動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)中。
4.如權(quán)利要求1的方法,還包含了重復(fù)執(zhí)行所述的取出數(shù)據(jù)步驟,比較該筆數(shù)據(jù)步驟,和將該筆數(shù)據(jù)的序號(hào)加到該索引表最后一筆數(shù)據(jù)的步驟。
5.如權(quán)利要求1的方法,其中所述的索引表中包括和該分類(lèi)要求相同的該筆數(shù)據(jù)的序號(hào)。
6.如權(quán)利要求1的方法,其中所述的索引表可經(jīng)由該筆數(shù)據(jù)的該序號(hào)而得到該筆數(shù)據(jù)的內(nèi)容。
7.如權(quán)利要求6的方法,其中所述的索引表所對(duì)應(yīng)的該筆數(shù)據(jù)的內(nèi)容可經(jīng)由中央處理單元而顯示在熒光屏上。
8.一種建立數(shù)據(jù)庫(kù)索引的方法,該方法至少包含輸入該數(shù)據(jù)庫(kù)分類(lèi)的要求;由該數(shù)據(jù)庫(kù)取出一筆數(shù)據(jù);比較該筆數(shù)據(jù)的屬性?xún)?nèi)容和該分類(lèi)要求是否和該分類(lèi)要求相同;及將該筆數(shù)據(jù)的序號(hào)加到該索引表最后一筆數(shù)據(jù),其中該屬性?xún)?nèi)容是和該分類(lèi)要求相同。
9.如權(quán)利要求8的方法,其中所述的屬性?xún)?nèi)容至少包括了該分類(lèi)要求。
10.如權(quán)利要求8的方法,其中還包含了將該索引表載入動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器中的步驟。
11.如權(quán)利要求10的方法,其中所述的索引表載入時(shí)為空集合。
12.如權(quán)利要求8的方法,還包含了重復(fù)執(zhí)行所述的取出數(shù)據(jù)步驟,比較該筆數(shù)據(jù)步驟,和將該筆數(shù)據(jù)的序號(hào)加到該索引表最后一筆數(shù)據(jù)的步驟。
13.如權(quán)利要求8的方法,其中所述的索引表中包括和該分類(lèi)要求相同的該筆數(shù)據(jù)的序號(hào)。
14.如權(quán)利要求8的方法,其中所述的索引表可經(jīng)由該筆數(shù)據(jù)的序號(hào)而得到該筆數(shù)據(jù)的內(nèi)容。
15.如權(quán)利要求14的方法,其中所述的索引表所對(duì)應(yīng)的該筆數(shù)據(jù)的內(nèi)容可經(jīng)由中央處理單元而顯示在熒光屏上。
全文摘要
一種動(dòng)態(tài)建立快速索引的方法。本發(fā)明提供了一種方法來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)進(jìn)行選取任意子集合的功能。在數(shù)據(jù)庫(kù)中包含了多筆具有多個(gè)不同屬性的信息組信息的數(shù)據(jù)。當(dāng)使用者輸入分類(lèi)要求之后,先將此分類(lèi)要求的標(biāo)志和數(shù)據(jù)庫(kù)中第一筆數(shù)據(jù)所對(duì)應(yīng)信息組的信息標(biāo)志互相比較,如果得到相同的結(jié)果,則將此筆數(shù)據(jù)的序號(hào)加到索引的末尾。將全部的數(shù)據(jù)依序比較完畢之后則可得到索引表。數(shù)據(jù)的順序在此索引表中并沒(méi)有改變,且由此索引表即可對(duì)應(yīng)到實(shí)際的數(shù)據(jù)。
文檔編號(hào)G06F17/30GK1310419SQ00102380
公開(kāi)日2001年8月29日 申請(qǐng)日期2000年2月21日 優(yōu)先權(quán)日2000年2月21日
發(fā)明者林光信, 宋建福, 段劍雄 申請(qǐng)人:英業(yè)達(dá)股份有限公司