專利名稱::多層次數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu),特別是涉及一種適用于數(shù)據(jù)庫(kù)升級(jí)的多層次數(shù)據(jù)庫(kù)系統(tǒng)結(jié)構(gòu)。
背景技術(shù):
:近年來,隨著多媒體技術(shù)、空間數(shù)據(jù)庫(kù)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)的快速發(fā)展,數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展十分迅速,應(yīng)用領(lǐng)域愈來愈廣,企業(yè)單位、政府部門的行政管理、辦公自動(dòng)化、企業(yè)生產(chǎn)計(jì)劃管理、銀行財(cái)務(wù)管理、醫(yī)院病房病歷管理、圖書館管理、氣象預(yù)報(bào)、地理信息系統(tǒng)(GIS)、電子商務(wù)等等都離不開數(shù)據(jù)庫(kù)系統(tǒng)。一方面,一些較成熟的技術(shù),如各種大、中、小和微型計(jì)算機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)和一些傳統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)方法已付諸應(yīng)用層面;另一方面,尚有許多理論及實(shí)際問題極待開發(fā)和探索,如空間數(shù)據(jù)庫(kù)、多媒體數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)數(shù)據(jù)庫(kù)、智能數(shù)據(jù)庫(kù)等。特別是網(wǎng)絡(luò)數(shù)據(jù)庫(kù)的理論和技術(shù)問題正成為數(shù)據(jù)庫(kù)研究的一個(gè)熱門研究領(lǐng)域,相較之下,傳統(tǒng)的數(shù)據(jù)庫(kù)技術(shù)和系統(tǒng)便顯得力不從心,這也對(duì)傳統(tǒng)的技術(shù)和研究開發(fā)工作提出了挑戰(zhàn)。從1970年代末期以來,幾乎所有的數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展都以關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)(relationaldatabasesystem)為主軸。事實(shí)上,關(guān)系型的作法是今日的主流,而關(guān)系型模型成為數(shù)據(jù)庫(kù)領(lǐng)域中最重要的發(fā)展也是無庸置疑的。簡(jiǎn)單的說,關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)就是1.使用者所看到的數(shù)據(jù)都是表格。2.使用者可使用的運(yùn)算(例如數(shù)據(jù)的擷取)都是從舊的表格中產(chǎn)生新的表格。例如,有些運(yùn)算子(operator)用來擷取表格中的某些橫列成為一個(gè)子集合,另有些運(yùn)算子則用來選取表格中的直行成為子集合,當(dāng)然,表格中橫列的子集合及直行的子集合可以合起來構(gòu)成一個(gè)新的表格。關(guān)系型數(shù)據(jù)庫(kù)的所以如此受歡迎,主要原因是其建立在嚴(yán)格的數(shù)學(xué)概念基礎(chǔ)上(以「關(guān)系運(yùn)算」為基礎(chǔ)),無論數(shù)據(jù)庫(kù)內(nèi)的實(shí)體(entity)或?qū)嶓w之間都用關(guān)系來表示,對(duì)數(shù)據(jù)的檢索結(jié)果也是一種關(guān)系(即表格),因此關(guān)系型數(shù)據(jù)庫(kù)的概念單一,其數(shù)據(jù)結(jié)構(gòu)也顯得相當(dāng)簡(jiǎn)單、清晰。此外關(guān)系型數(shù)據(jù)庫(kù)中關(guān)系表格的存取路徑對(duì)使用者而言是公開的,其具備了更高的數(shù)據(jù)獨(dú)立性、更加的安全保密性,亦簡(jiǎn)化了數(shù)據(jù)庫(kù)開發(fā)建立的工作??偨Y(jié)來說,關(guān)系型數(shù)據(jù)表的優(yōu)點(diǎn)在于對(duì)結(jié)構(gòu)化數(shù)據(jù)關(guān)連的定義和控制十分詳細(xì)。然而關(guān)系型數(shù)據(jù)庫(kù)的缺點(diǎn)則是缺乏彈性,一旦數(shù)據(jù)的關(guān)聯(lián)發(fā)生異動(dòng),則牽一發(fā)而動(dòng)全身,對(duì)應(yīng)程序的修改是相當(dāng)費(fèi)時(shí)費(fèi)力。通常關(guān)系型數(shù)據(jù)庫(kù)在兩個(gè)獨(dú)立的數(shù)據(jù)表格(datatable)之外還需要建立一個(gè)關(guān)系表格(relationaltable),以在數(shù)據(jù)庫(kù)表格中間設(shè)定主鍵(primarykey)與其它附屬鍵(foreignkey)的關(guān)聯(lián)性。請(qǐng)參閱圖1。圖1為一現(xiàn)有的關(guān)系型數(shù)據(jù)庫(kù)B1示意圖。關(guān)系型數(shù)據(jù)庫(kù)B1包含二數(shù)據(jù)表格10及表格20,其中表格10中含有數(shù)據(jù)K1,表格20中含有數(shù)據(jù)K2。此外,根據(jù)數(shù)據(jù)K1及數(shù)據(jù)K2的關(guān)系另建立一表格30來表示。建立關(guān)系表格的好處在于搜尋上如果有關(guān)系式的建立,所有相關(guān)的附屬數(shù)據(jù)可以非??斓卣页鰜恚坏窍鄬?duì)而言,使用關(guān)系表格的一個(gè)非常大的缺點(diǎn)就是當(dāng)需要新增、刪除、修改數(shù)據(jù),甚至需要新增、刪除、修改數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)之間的關(guān)聯(lián)性會(huì)使得執(zhí)行這些任務(wù)變得非常復(fù)雜、耗時(shí)且容易出錯(cuò)。舉例而言,當(dāng)需要?jiǎng)h除數(shù)據(jù)時(shí),必須先將相關(guān)聯(lián)的附屬關(guān)系數(shù)據(jù)一一刪除后才可以刪除原本要?jiǎng)h除的數(shù)據(jù)。如圖1所示,如果我們要?jiǎng)h除表格20中的數(shù)據(jù)K2,必須先將表格30中所有有關(guān)數(shù)據(jù)K2的數(shù)據(jù)刪除才可以將表格20中的數(shù)據(jù)K2刪除。從程序設(shè)計(jì)師的觀點(diǎn)來看,前后數(shù)據(jù)的變動(dòng)關(guān)系會(huì)使得程序設(shè)計(jì)變得異常困難;也往往在數(shù)據(jù)更新的過程中,因?yàn)樾拚绦虻腻e(cuò)誤,而使系統(tǒng)產(chǎn)生錯(cuò)誤的訊息,甚至造成整個(gè)系統(tǒng)的癱瘓。此外,因?yàn)楦鲾?shù)據(jù)彼此之間的關(guān)聯(lián)性很重要,即使是數(shù)據(jù)庫(kù)的硬件有些微的差錯(cuò),也可能遺失各數(shù)據(jù)之間的關(guān)聯(lián)或破壞了該關(guān)聯(lián)性數(shù)據(jù)庫(kù),造成整個(gè)系統(tǒng)停擺。如此一來,雖然關(guān)聯(lián)性數(shù)據(jù)庫(kù)增加了數(shù)據(jù)搜尋上的便利性,卻因此犧牲了數(shù)據(jù)新增、刪除、修改的效率,并且增加了程序本身不必要的復(fù)雜度;更嚴(yán)重的是,復(fù)雜的關(guān)系型數(shù)據(jù)庫(kù)結(jié)構(gòu)的修改成了一近乎不可能的工程。請(qǐng)繼續(xù)參考圖1。一個(gè)具有三個(gè)數(shù)據(jù)表格的關(guān)系型數(shù)據(jù)庫(kù)在針對(duì)數(shù)據(jù)本身作處理的過程中,若處理的數(shù)據(jù)涉及鍵值數(shù)據(jù)(key)時(shí),不管是新增、刪除或修改數(shù)據(jù),皆需要三個(gè)步驟。例如(一)新增數(shù)據(jù)的步驟步驟一于表格10新增數(shù)據(jù)K1步驟二于表格20新增數(shù)據(jù)K2步驟三于表格30新增數(shù)據(jù)K1與數(shù)據(jù)K2的關(guān)聯(lián)數(shù)據(jù)(二)刪除數(shù)據(jù)的步驟步驟一刪除表格30中數(shù)據(jù)K1與數(shù)據(jù)K2的關(guān)聯(lián)數(shù)據(jù)步驟二刪除表格10中數(shù)據(jù)K1步驟三刪除表格20中數(shù)據(jù)K2(三)修改數(shù)據(jù)(鍵值數(shù)據(jù))的步驟步驟一修改表格30中數(shù)據(jù)K1與數(shù)據(jù)K2的關(guān)聯(lián)數(shù)據(jù)步驟二修改表格10中的數(shù)據(jù)K1步驟三修改表格20中的數(shù)據(jù)K2上述關(guān)于新增、刪除與修改數(shù)據(jù)的步驟只有涉及表格30與表格10、表格20之間的關(guān)系,尚未包含表格30與其它表格的關(guān)系。如果關(guān)系型數(shù)據(jù)庫(kù)的具有n個(gè)數(shù)據(jù)表格,則我們可以預(yù)期如表格30的關(guān)系表格最多將有C2n種情形。在表格數(shù)量持續(xù)增加時(shí),單單進(jìn)行簡(jiǎn)單的數(shù)據(jù)或表格的新增、刪除或修改的運(yùn)算量就十分驚人。另一方面,由于C++等面向?qū)ο?objectoriented)的程序相繼問世,幾乎所有程序設(shè)計(jì)都以面向?qū)ο鬄樵O(shè)計(jì)標(biāo)準(zhǔn)。面向?qū)ο笤O(shè)計(jì)的概念在于將所有最基本程序分析的組件轉(zhuǎn)換成對(duì)象與對(duì)象的相互行為。也因?yàn)槌绦蛟O(shè)計(jì)的基本組件變成可分析的概念,UML(unifiedmodelinglanguage)語言一類的語言便相繼被發(fā)明與強(qiáng)化來支持面向?qū)ο蟪绦虻暮?jiǎn)化。然而很不幸的,目前在程序語言被強(qiáng)化成面向?qū)ο笥^念同時(shí),數(shù)據(jù)庫(kù)的運(yùn)用雖有所謂面向?qū)ο蟮臄?shù)據(jù)庫(kù)來配合,但是仍為了在搜尋上與穩(wěn)定度的考慮而采用關(guān)系型數(shù)據(jù)庫(kù)。正因?yàn)槿绱?,無論是面向?qū)ο蟮臄?shù)據(jù)庫(kù)或關(guān)系型數(shù)據(jù)庫(kù),當(dāng)遭遇系統(tǒng)升級(jí)的需求時(shí),數(shù)據(jù)庫(kù)的升級(jí)都會(huì)遭到無比的風(fēng)險(xiǎn)??偫ǘ?,這些風(fēng)險(xiǎn)來自(1)數(shù)據(jù)庫(kù)表格的字段往往會(huì)因?yàn)樯?jí)的需求而增加,而在關(guān)系型數(shù)據(jù)庫(kù)的結(jié)構(gòu)下,「增加字段」會(huì)更動(dòng)到數(shù)據(jù)庫(kù)基本結(jié)構(gòu)。(2)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)表格會(huì)因?yàn)橹鞅砀竦淖兏桓鼊?dòng),同樣也會(huì)更動(dòng)到數(shù)據(jù)庫(kù)的基本結(jié)構(gòu)。(3)當(dāng)數(shù)據(jù)庫(kù)版本變更時(shí),數(shù)據(jù)庫(kù)的數(shù)據(jù)格式可能無法兼容。由于這些數(shù)據(jù)庫(kù)設(shè)計(jì)的風(fēng)險(xiǎn),大部分信息人員往往視移動(dòng)關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)為畏途,即使數(shù)據(jù)庫(kù)效能已經(jīng)不敷使用,也只利用調(diào)教效能(performancetuning)的方式試圖解決。
發(fā)明內(nèi)容因此,本發(fā)明的主要目的是提供一種可解決數(shù)據(jù)庫(kù)升級(jí)風(fēng)險(xiǎn)的多層次數(shù)據(jù)庫(kù)系統(tǒng)。本發(fā)明提供一種多層次的數(shù)據(jù)庫(kù)系統(tǒng),其包含有一實(shí)體數(shù)據(jù)層以及一索引數(shù)據(jù)層。該實(shí)體數(shù)據(jù)層包含一數(shù)據(jù)表,該數(shù)據(jù)表記錄有該數(shù)據(jù)庫(kù)系統(tǒng)的多筆對(duì)象數(shù)據(jù),該數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)表的每一筆對(duì)象數(shù)據(jù)包含多個(gè)數(shù)據(jù)項(xiàng),該對(duì)象數(shù)據(jù)的該多個(gè)數(shù)據(jù)項(xiàng)的每一數(shù)據(jù)項(xiàng)具有一屬性名稱,一對(duì)象識(shí)別碼,一項(xiàng)目?jī)?nèi)容及一索引代碼。該索引數(shù)據(jù)層記錄有索引數(shù)據(jù),用來?yè)?jù)以搜尋該多個(gè)數(shù)據(jù)項(xiàng)的索引代碼以取得該數(shù)據(jù)庫(kù)系統(tǒng)中符合應(yīng)用程序所要求的對(duì)象數(shù)據(jù)。本發(fā)明還提供一種建立多層次數(shù)據(jù)庫(kù)系統(tǒng)的方法,其包含下列步驟產(chǎn)生一實(shí)體數(shù)據(jù)層,其包含一數(shù)據(jù)表,該數(shù)據(jù)表記錄有該數(shù)據(jù)庫(kù)系統(tǒng)的多筆對(duì)象數(shù)據(jù),該數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)表的每一筆對(duì)象數(shù)據(jù)包含多個(gè)數(shù)據(jù)項(xiàng),該對(duì)象數(shù)據(jù)的該多個(gè)數(shù)據(jù)項(xiàng)的每一數(shù)據(jù)項(xiàng)具有一屬性名稱,一對(duì)象識(shí)別碼,一項(xiàng)目?jī)?nèi)容及一索引代碼;以及依據(jù)一索引數(shù)據(jù)層的索引數(shù)據(jù),搜尋該多個(gè)數(shù)據(jù)項(xiàng)的索引代碼以取得該數(shù)據(jù)庫(kù)系統(tǒng)中符合應(yīng)用程序所要求的對(duì)象數(shù)據(jù)。圖1為現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)中關(guān)系表格的示意圖。圖2為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)一實(shí)施例的示意圖。圖3為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)表結(jié)構(gòu)示意圖。圖4為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)中建立一數(shù)據(jù)表的示意圖。圖5為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)中一索引數(shù)據(jù)表的示意圖。圖6為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)中于數(shù)據(jù)表中建立索引的示意圖。圖7為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)中刪除一對(duì)象數(shù)據(jù)的示意圖。圖8為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)另一實(shí)施例中實(shí)體數(shù)據(jù)層叢集實(shí)際操作方法的示意圖。附圖符號(hào)說明K1、K2表格數(shù)據(jù)B1關(guān)系型數(shù)據(jù)庫(kù)10、20、30表格40關(guān)聯(lián)數(shù)據(jù)表42數(shù)據(jù)記錄44字段名稱50應(yīng)用程序100多層次數(shù)據(jù)庫(kù)系統(tǒng)200索引數(shù)據(jù)層210索引數(shù)據(jù)表220對(duì)照表300動(dòng)態(tài)數(shù)據(jù)層400實(shí)體數(shù)據(jù)層410叢集422對(duì)象數(shù)據(jù)424數(shù)據(jù)項(xiàng)430數(shù)據(jù)表432屬性名稱434對(duì)象識(shí)別碼436項(xiàng)目?jī)?nèi)容440,440A,440B索引代碼具體實(shí)施方式請(qǐng)參考圖2。圖2為本發(fā)明的多層次數(shù)據(jù)庫(kù)系統(tǒng)100的示意圖。多層次數(shù)據(jù)庫(kù)系統(tǒng)100包含有一索引數(shù)據(jù)層200、多個(gè)動(dòng)態(tài)數(shù)據(jù)層300及一實(shí)體數(shù)據(jù)層400。其中,多層次數(shù)據(jù)庫(kù)系統(tǒng)100通過索引數(shù)據(jù)層200與應(yīng)用程序連結(jié),而索引數(shù)據(jù)層200與多個(gè)動(dòng)態(tài)數(shù)據(jù)層300還與實(shí)體數(shù)據(jù)層400相連結(jié)。實(shí)體數(shù)據(jù)層400中包含多個(gè)叢集410,而記錄實(shí)體數(shù)據(jù)的數(shù)據(jù)表430則包含于叢集410中。索引數(shù)據(jù)層200及多個(gè)動(dòng)態(tài)數(shù)據(jù)層300中包含多個(gè)索引數(shù)據(jù)表210,用來記錄索引數(shù)據(jù)。索引數(shù)據(jù)表210及其所記錄的索引數(shù)據(jù)依據(jù)應(yīng)用程序的搜尋條件由應(yīng)用程序產(chǎn)生。索引數(shù)據(jù)層200及多個(gè)動(dòng)態(tài)數(shù)據(jù)層300亦依據(jù)應(yīng)用程序的設(shè)計(jì)需求而產(chǎn)生,若應(yīng)用程序需求較為簡(jiǎn)單,多層次數(shù)據(jù)庫(kù)系統(tǒng)100甚至可以不具備動(dòng)態(tài)數(shù)據(jù)層300,只由索引數(shù)據(jù)層200及實(shí)體數(shù)據(jù)層400構(gòu)成。當(dāng)計(jì)算機(jī)系統(tǒng)的應(yīng)用程序依據(jù)搜尋條件及所需求的數(shù)據(jù)庫(kù)類型產(chǎn)生索引數(shù)據(jù)層200的索引數(shù)據(jù)表210(及多個(gè)動(dòng)態(tài)數(shù)據(jù)層300的索引數(shù)據(jù)表210)后,應(yīng)用程序即依據(jù)索引數(shù)據(jù)層200及動(dòng)態(tài)數(shù)據(jù)層300中的索引數(shù)據(jù)表210的索引數(shù)據(jù)來搜尋數(shù)據(jù)表430。請(qǐng)參考圖3。圖3為本發(fā)明的多層次數(shù)據(jù)庫(kù)系統(tǒng)100中,實(shí)體數(shù)據(jù)層400的一叢集410的示意圖。數(shù)據(jù)表430由面向?qū)ο蟪绦驑?gòu)成,數(shù)據(jù)表430數(shù)據(jù)表430記錄有數(shù)據(jù)庫(kù)系統(tǒng)100的多筆對(duì)象數(shù)據(jù)422,其中每一筆對(duì)象數(shù)據(jù)422包含多個(gè)數(shù)據(jù)項(xiàng)424,對(duì)象數(shù)據(jù)422的多個(gè)數(shù)據(jù)項(xiàng)424的每一數(shù)據(jù)項(xiàng)424具有一屬性名稱432、一對(duì)象識(shí)別碼434、一項(xiàng)目?jī)?nèi)容436及一索引代碼440A。此一實(shí)施例的數(shù)據(jù)表430中,屬性名稱432、對(duì)象識(shí)別碼434及項(xiàng)目?jī)?nèi)容436為多層次數(shù)據(jù)庫(kù)系統(tǒng)100中的靜態(tài)數(shù)據(jù),該靜態(tài)數(shù)據(jù)的模式(Schema)于實(shí)體數(shù)據(jù)層400建立的初即規(guī)劃好,當(dāng)數(shù)據(jù)庫(kù)系統(tǒng)100運(yùn)作或進(jìn)行任何數(shù)據(jù)處理的操作時(shí),該模式皆不受影響,亦即多層次數(shù)據(jù)庫(kù)系統(tǒng)100中實(shí)體數(shù)據(jù)層400的實(shí)體數(shù)據(jù)具有一不需更動(dòng)的基本結(jié)構(gòu),可確保實(shí)體數(shù)據(jù)的穩(wěn)定性及安全性。如先前所述,實(shí)體數(shù)據(jù)層400中設(shè)置了多個(gè)叢集410,而為了適應(yīng)數(shù)據(jù)庫(kù)各種實(shí)體數(shù)據(jù)性質(zhì)不同,每一叢集410可允許擁有一種部署綱要,屬于該叢集410的所有數(shù)據(jù)表430則以同一種部署綱要來設(shè)計(jì)。另外,此一實(shí)施例的數(shù)據(jù)表430中,索引代碼440A為多層次數(shù)據(jù)庫(kù)系統(tǒng)100中的動(dòng)態(tài)數(shù)據(jù),其依據(jù)索引數(shù)據(jù)層200及多個(gè)動(dòng)態(tài)數(shù)據(jù)層300中索引數(shù)據(jù)表210的索引數(shù)據(jù)而建立,而當(dāng)索引數(shù)據(jù)表210有所更動(dòng)時(shí),索引代碼440A亦會(huì)同步隨著更動(dòng)(通常是重新建立),當(dāng)索引數(shù)據(jù)表210被刪除時(shí),其所建立的索引代碼440A亦隨之刪除。也適應(yīng)應(yīng)用程序的設(shè)計(jì)及數(shù)據(jù)搜尋的復(fù)雜度,數(shù)據(jù)表430中可包含一個(gè)以上的索引代碼440A。而應(yīng)用程序便是依據(jù)索引索引數(shù)據(jù)表210的索引數(shù)據(jù),以搜尋數(shù)據(jù)表430中數(shù)據(jù)項(xiàng)424的索引代碼440A,以取得多層次數(shù)據(jù)庫(kù)系統(tǒng)100中符合應(yīng)用程序所要求的對(duì)象數(shù)據(jù)422或?qū)ο髷?shù)據(jù)422中的數(shù)據(jù)項(xiàng)424。請(qǐng)繼續(xù)參考圖4。圖4為現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)的一關(guān)聯(lián)數(shù)據(jù)表轉(zhuǎn)換為本發(fā)明的多層次數(shù)據(jù)庫(kù)系統(tǒng)100一實(shí)施例的數(shù)據(jù)表的示意圖,其中關(guān)聯(lián)數(shù)據(jù)表40的首列顯示字段名稱44,于關(guān)聯(lián)數(shù)據(jù)表40中共有「記錄識(shí)別碼」、「姓名」、「性別」、「年齡」及「血型」五個(gè)字段。而關(guān)聯(lián)數(shù)據(jù)表40的其余各列則依據(jù)字段名稱44顯示各筆數(shù)據(jù)記錄42。當(dāng)欲建立本發(fā)明的一實(shí)施例的數(shù)據(jù)表430時(shí),則將關(guān)聯(lián)數(shù)據(jù)表40的數(shù)據(jù)表名稱(此處命名為「人員」數(shù)據(jù)表)及數(shù)據(jù)域位44合并為數(shù)據(jù)表430的屬性名稱432一欄的內(nèi)容;由于關(guān)聯(lián)數(shù)據(jù)表40中每筆數(shù)據(jù)記錄42皆具有一唯一的記錄識(shí)別碼,以與其它數(shù)據(jù)記錄作區(qū)別(主要以該記錄識(shí)別碼作為關(guān)聯(lián)數(shù)據(jù)表的索引),于實(shí)際操作本發(fā)明的一實(shí)施例時(shí),則將該記錄識(shí)別碼記錄于數(shù)據(jù)表430的第二欄,做為對(duì)象識(shí)別碼434一欄的內(nèi)容;數(shù)據(jù)表430的項(xiàng)目?jī)?nèi)容436則記錄數(shù)據(jù)記錄42中相對(duì)應(yīng)于數(shù)據(jù)域位44的數(shù)據(jù)內(nèi)容,以作為項(xiàng)目?jī)?nèi)容436一欄的內(nèi)容。以關(guān)聯(lián)數(shù)據(jù)表40(「人員」數(shù)據(jù)表)中第一筆數(shù)據(jù)記錄42舉例來說,第一筆數(shù)據(jù)記錄42記錄有「姓名」字段內(nèi)容「陳建宏」、「性別」字段內(nèi)容「男」、「年齡」字段內(nèi)容「30」、「血型」字段內(nèi)容「A」,另外第一筆數(shù)據(jù)記錄42的記錄識(shí)別碼為「1」,則本發(fā)明的一實(shí)施例的實(shí)際操作方式會(huì)據(jù)此建立一筆對(duì)象數(shù)據(jù)422,其包含四筆數(shù)據(jù)項(xiàng)424,其中第一筆數(shù)據(jù)項(xiàng)424的屬性名稱432一欄的數(shù)據(jù)內(nèi)容為「人員□姓名」(如前所述,該欄內(nèi)容為關(guān)聯(lián)數(shù)據(jù)表40中數(shù)據(jù)表名稱與數(shù)據(jù)域位名稱的合并),對(duì)象識(shí)別碼434一欄的內(nèi)容為「1」,項(xiàng)目?jī)?nèi)容436一欄的內(nèi)容為「陳建宏」;同理,第二筆數(shù)據(jù)項(xiàng)424的屬性名稱432一欄的數(shù)據(jù)內(nèi)容為「人員□性別」,對(duì)象識(shí)別碼434一欄的內(nèi)容為「1」(皆屬同一對(duì)象數(shù)據(jù),因此對(duì)象識(shí)別碼相同),項(xiàng)目?jī)?nèi)容436一欄的內(nèi)容則為「男」…余此類推。如此一來,關(guān)聯(lián)數(shù)據(jù)表40中的一筆數(shù)據(jù)記錄42會(huì)建立成本發(fā)明的一實(shí)施例的數(shù)據(jù)表430的四筆項(xiàng)目數(shù)據(jù)424,此四筆項(xiàng)目數(shù)據(jù)424構(gòu)成一筆對(duì)象數(shù)據(jù)422,因此四筆項(xiàng)目數(shù)據(jù)424的對(duì)象識(shí)別碼434一欄的內(nèi)容皆相同。請(qǐng)參考圖5、圖6。如前所述,應(yīng)用程序依據(jù)搜尋條件及應(yīng)用程序所需求的數(shù)據(jù)庫(kù)類型而產(chǎn)生索引數(shù)據(jù)層200的索引數(shù)據(jù)表210(及多個(gè)動(dòng)態(tài)數(shù)據(jù)層300的索引數(shù)據(jù)表210后),并據(jù)以進(jìn)行數(shù)據(jù)表430的數(shù)據(jù)搜尋。圖5、圖6說明于索引數(shù)據(jù)層200建立有一索引數(shù)據(jù)表210,其中包含索引數(shù)據(jù)用來將項(xiàng)目數(shù)據(jù)424的項(xiàng)目?jī)?nèi)容436中具有數(shù)據(jù)內(nèi)容為「男」的項(xiàng)目數(shù)據(jù)424,于該項(xiàng)目數(shù)據(jù)424的索引代碼440A字段中標(biāo)示為″0″,并用來將項(xiàng)目數(shù)據(jù)424的項(xiàng)目?jī)?nèi)容436中具有數(shù)據(jù)內(nèi)容為「女」的項(xiàng)目數(shù)據(jù)424,于該項(xiàng)目數(shù)據(jù)424的索引代碼440A字段中標(biāo)示為″1″。當(dāng)索引數(shù)據(jù)表210建立完成后,會(huì)于實(shí)體數(shù)據(jù)層400中已建立好的數(shù)據(jù)表430動(dòng)態(tài)增加一索引代碼440A字段,并依據(jù)前述條件將″0″與″1″填入適當(dāng)項(xiàng)目數(shù)據(jù)424的字段中,其余不符合條件的項(xiàng)目數(shù)據(jù)424的索引代碼440A一欄則不作用。當(dāng)欲依據(jù)索引數(shù)據(jù)表210所標(biāo)示的索引數(shù)據(jù)來搜尋數(shù)據(jù)表430中符合的對(duì)象數(shù)據(jù)422時(shí),例如欲搜尋數(shù)據(jù)庫(kù)中所有男性員工的數(shù)據(jù),則只需要于索引代碼440A中提取出代碼內(nèi)容為″0″的數(shù)據(jù)項(xiàng)424,并依據(jù)數(shù)據(jù)項(xiàng)424中對(duì)象識(shí)別碼434取得所需的對(duì)象數(shù)據(jù)422。如此完成了數(shù)據(jù)的搜尋操作。同理,如欲找出數(shù)據(jù)表430中,年齡小于30歲的男性員工,則根據(jù)事先于索引數(shù)據(jù)層200建立的索引數(shù)據(jù)表210(或于動(dòng)態(tài)數(shù)據(jù)層300中建立的索引數(shù)據(jù)表210)另于數(shù)據(jù)表430建立的一索引代碼440B,再與原先已建立的索引代碼440A交叉搜尋,即可提取出兩個(gè)條件皆符合的數(shù)據(jù)。此外,配合應(yīng)用程序需求而欲實(shí)現(xiàn)「于現(xiàn)有的關(guān)聯(lián)數(shù)據(jù)表40中新增一字段」的目的時(shí),于本發(fā)明的一實(shí)施例的數(shù)據(jù)表430的作法則是直接于數(shù)據(jù)表430中新增一筆數(shù)據(jù)項(xiàng)424,其各字段內(nèi)容則依前述建立方式建立。例如要新增一「婚姻狀態(tài)」的字段,而第一筆數(shù)據(jù)記錄42的相對(duì)于「婚姻狀態(tài)」字段的字段內(nèi)容為「已婚」時(shí),則于數(shù)據(jù)表430中新增一筆數(shù)據(jù)項(xiàng)424,其屬性名稱432一欄的數(shù)據(jù)內(nèi)容為「人員□婚姻狀態(tài)」,對(duì)象識(shí)別碼434一欄的內(nèi)容為「1」(屬同一對(duì)象數(shù)據(jù),因此對(duì)象識(shí)別碼相同),項(xiàng)目?jī)?nèi)容436一欄的內(nèi)容則為「已婚」。請(qǐng)參考圖7。圖7為本發(fā)明的多層次數(shù)據(jù)庫(kù)系統(tǒng)100欲刪除一對(duì)象數(shù)據(jù)的作法示意圖。若配合應(yīng)用程序需求而欲實(shí)現(xiàn)「于現(xiàn)有的關(guān)聯(lián)數(shù)據(jù)表40中刪除一筆數(shù)據(jù)記錄42」甚或「于現(xiàn)有的關(guān)聯(lián)數(shù)據(jù)表40中刪除一字段」的目的時(shí),于本發(fā)明的一實(shí)施例的數(shù)據(jù)表430的作法則是直接于索引數(shù)據(jù)層200的索引數(shù)據(jù)表210中,將記錄有實(shí)體數(shù)據(jù)層400中可用數(shù)據(jù)表430、對(duì)象數(shù)據(jù)422或數(shù)據(jù)項(xiàng)424的索引數(shù)據(jù)表210標(biāo)示出有效或常用的索引數(shù)據(jù)。應(yīng)用程序可動(dòng)態(tài)于索引數(shù)據(jù)層200中建立一全域索引數(shù)據(jù)表210,其中可依需求將處理數(shù)據(jù)的單位規(guī)劃為以數(shù)據(jù)項(xiàng)424為單位,或以對(duì)象數(shù)據(jù)422、甚至以數(shù)據(jù)表430為單位。當(dāng)然亦可以建立二層至多層以上的索引數(shù)據(jù)表210,以實(shí)現(xiàn)同時(shí)針對(duì)叢集410、數(shù)據(jù)表430、對(duì)象數(shù)據(jù)422及數(shù)據(jù)項(xiàng)424等實(shí)體數(shù)據(jù)范圍作全域索引的目標(biāo)。當(dāng)應(yīng)用程序欲刪除數(shù)據(jù)表430中第三筆對(duì)象數(shù)據(jù)422時(shí),于全域索引數(shù)據(jù)表210中將「可用性」字段標(biāo)示為「否」,則「全域索引」字段對(duì)應(yīng)數(shù)據(jù)表430的「有效索引」的索引內(nèi)容亦將被解讀為無效的數(shù)據(jù)。換句話說,多層次數(shù)據(jù)庫(kù)系統(tǒng)100即可藉由于索引數(shù)據(jù)層200中建立索引數(shù)據(jù)表以標(biāo)示出實(shí)體數(shù)據(jù)層400中有效或常用的數(shù)據(jù)表430、叢集410、對(duì)象數(shù)據(jù)422或數(shù)據(jù)項(xiàng)424。特別注意的是,其中數(shù)據(jù)表430的「有效索引」亦為索引數(shù)據(jù)層200根據(jù)應(yīng)用程序設(shè)計(jì)而建立的動(dòng)態(tài)索引欄,其與對(duì)象識(shí)別碼434不相同,無論是對(duì)象識(shí)別碼434或有效索引(甚至是其它動(dòng)態(tài)建立的索引代碼)皆可依程序設(shè)計(jì)需求設(shè)計(jì)成全域索引或局部索引。圖8為本發(fā)明多層次數(shù)據(jù)庫(kù)系統(tǒng)100另一實(shí)施例中實(shí)體數(shù)據(jù)層叢集實(shí)際操作方法的示意圖。當(dāng)數(shù)據(jù)類型因?yàn)槌赡昀墼碌陌l(fā)展與改變而不斷增加時(shí),實(shí)體數(shù)據(jù)層400的數(shù)據(jù)表430并不需要無限制的擴(kuò)張。本發(fā)明的多層次數(shù)據(jù)庫(kù)系統(tǒng)100于實(shí)體數(shù)據(jù)層400另建立叢集410以放置多個(gè)數(shù)據(jù)表430。叢集410本身被系統(tǒng)設(shè)定有固定的容量限制,以避免任一叢集410的大小無限制擴(kuò)大。當(dāng)一類的對(duì)象數(shù)據(jù)數(shù)量增長(zhǎng)至某一程度時(shí),整個(gè)數(shù)據(jù)庫(kù)會(huì)重新開啟一個(gè)叢集410,以放置新增的數(shù)據(jù)表430及其中的對(duì)象數(shù)據(jù)。在一個(gè)大型的數(shù)據(jù)庫(kù)系統(tǒng)中,若是能對(duì)搜尋的數(shù)據(jù)再作進(jìn)一步的分類與篩選,則有助于搜尋效率的提升,因此,于建立叢集410時(shí),本發(fā)明即對(duì)叢集410進(jìn)行建立索引的操作,并于索引數(shù)據(jù)層200中建立一搜尋叢集索引的對(duì)照表220以將搜尋對(duì)象作進(jìn)一步的范圍限制。而實(shí)體數(shù)據(jù)層400中多個(gè)叢集410亦不需被限定儲(chǔ)存在單一計(jì)算機(jī)主機(jī)中。多個(gè)叢集410分別儲(chǔ)存于多個(gè)經(jīng)由網(wǎng)絡(luò)系統(tǒng)相連的計(jì)算機(jī)主機(jī)中,以分散主機(jī)系統(tǒng)的處理負(fù)載。為配合使用者仍較習(xí)慣以表格方式建立數(shù)據(jù)庫(kù)的數(shù)據(jù)內(nèi)容,應(yīng)用程序的接口仍舊可以設(shè)計(jì)成以表格(或類似表格)的形式供使用者輸入數(shù)據(jù),無論是數(shù)據(jù)的新增、刪除、修改,或是數(shù)據(jù)域位的新增、刪除、修改,以致于一個(gè)以上表格之間的數(shù)據(jù)關(guān)系的建立、移除,皆可通過上述索引數(shù)據(jù)層200或動(dòng)態(tài)數(shù)據(jù)層300于實(shí)體數(shù)據(jù)層400的數(shù)據(jù)表430中建立相關(guān)的索引代碼440字段(一個(gè)或一個(gè)以上)以完成對(duì)象數(shù)據(jù)422的建立。以前述實(shí)施例而言,當(dāng)使用者欲建立一筆具有廿個(gè)字段的數(shù)據(jù)時(shí),現(xiàn)有作法就是于數(shù)據(jù)庫(kù)中寫入一筆具有廿個(gè)字段的數(shù)據(jù),而本發(fā)明的多層次數(shù)據(jù)庫(kù)系統(tǒng)100的一實(shí)施例則是于數(shù)據(jù)表430中建立廿筆具有三個(gè)字段(于尚未建立索引代碼440的情況下)的數(shù)據(jù)項(xiàng)424。為避免于數(shù)據(jù)項(xiàng)424建立時(shí)占用系統(tǒng)資源以致于影響多層次數(shù)據(jù)庫(kù)系統(tǒng)100的效能,于應(yīng)用程序端與多層次數(shù)據(jù)庫(kù)系統(tǒng)100的索引數(shù)據(jù)層200之間可另外建立一隊(duì)列緩沖區(qū),使多層次數(shù)據(jù)庫(kù)系統(tǒng)100可利用所有系統(tǒng)閑置的時(shí)間來進(jìn)行數(shù)據(jù)的建立工作。另一方面,經(jīng)過搜尋之后的數(shù)據(jù)也可以通過程序設(shè)計(jì)以轉(zhuǎn)換成使用者較習(xí)慣的表格方式呈現(xiàn),對(duì)于應(yīng)用程序而言,多層次數(shù)據(jù)庫(kù)系統(tǒng)100提供一安全的數(shù)據(jù)儲(chǔ)存結(jié)構(gòu),而使用者端可以沿用原有的數(shù)據(jù)處理方式以避免使用習(xí)慣的改變。也由于多層次數(shù)據(jù)庫(kù)系統(tǒng)100種儲(chǔ)存對(duì)象數(shù)據(jù)的方式幾乎是不變的,針對(duì)數(shù)據(jù)庫(kù)的結(jié)構(gòu)改變、系統(tǒng)升級(jí)等需求,多層次數(shù)據(jù)庫(kù)系統(tǒng)100可以完成這些對(duì)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng)而言相當(dāng)具風(fēng)險(xiǎn)的變更。以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明的權(quán)利要求所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。權(quán)利要求1.一種多層次的數(shù)據(jù)庫(kù)系統(tǒng),其包含有一實(shí)體數(shù)據(jù)層,其包含一數(shù)據(jù)表,該數(shù)據(jù)表記錄有該數(shù)據(jù)庫(kù)系統(tǒng)的多筆對(duì)象數(shù)據(jù),該數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)表的每一筆對(duì)象數(shù)據(jù)包含多個(gè)數(shù)據(jù)項(xiàng),該對(duì)象數(shù)據(jù)的該多個(gè)數(shù)據(jù)項(xiàng)的每一數(shù)據(jù)項(xiàng)具有一屬性名稱,一對(duì)象識(shí)別碼,一項(xiàng)目?jī)?nèi)容及一索引代碼;以及一索引數(shù)據(jù)層,其記錄有索引數(shù)據(jù),用來?yè)?jù)以搜尋該多個(gè)數(shù)據(jù)項(xiàng)的索引代碼以取得該數(shù)據(jù)庫(kù)系統(tǒng)中符合應(yīng)用程序所要求的對(duì)象數(shù)據(jù)。2.如權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng),其還包含多個(gè)動(dòng)態(tài)數(shù)據(jù)層,位于該索引數(shù)據(jù)層與該實(shí)體數(shù)據(jù)層之間。3.如權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng),其中該實(shí)體數(shù)據(jù)層包含多個(gè)叢集,每一叢集包含多個(gè)數(shù)據(jù)表。4.如權(quán)利要求3所述的數(shù)據(jù)庫(kù)系統(tǒng),其中該多個(gè)叢集儲(chǔ)存于多個(gè)經(jīng)由一網(wǎng)絡(luò)系統(tǒng)相連的計(jì)算機(jī)主機(jī)中。5.如權(quán)利要求3所述的數(shù)據(jù)庫(kù)系統(tǒng),其中該多個(gè)叢集的每一叢集還具有索引數(shù)據(jù)。6.如權(quán)利要求1所述的數(shù)據(jù)庫(kù)系統(tǒng),其中該索引數(shù)據(jù)層包含多個(gè)索引數(shù)據(jù)表,每一索引數(shù)據(jù)表包含多筆索引數(shù)據(jù)。7.一種建立多層次數(shù)據(jù)庫(kù)系統(tǒng)的方法,其包含下列步驟(a)產(chǎn)生一實(shí)體數(shù)據(jù)層,其包含一數(shù)據(jù)表,該數(shù)據(jù)表記錄有該數(shù)據(jù)庫(kù)系統(tǒng)的多筆對(duì)象數(shù)據(jù),該數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)表的每一筆對(duì)象數(shù)據(jù)包含多個(gè)數(shù)據(jù)項(xiàng),該對(duì)象數(shù)據(jù)的該多個(gè)數(shù)據(jù)項(xiàng)的每一數(shù)據(jù)項(xiàng)具有一屬性名稱,一對(duì)象識(shí)別碼,一項(xiàng)目?jī)?nèi)容及一索引代碼;以及(b)依據(jù)一索引數(shù)據(jù)層的索引數(shù)據(jù),搜尋該多個(gè)數(shù)據(jù)項(xiàng)的索引代碼以取得該數(shù)據(jù)庫(kù)系統(tǒng)中符合應(yīng)用程序所要求的對(duì)象數(shù)據(jù)。8.如權(quán)利要求7所述的方法,其還包含依據(jù)該應(yīng)用程序的搜尋條件產(chǎn)生該索引數(shù)據(jù)層的索引數(shù)據(jù)。9.如權(quán)利要求7所述的方法,其還包含依據(jù)該應(yīng)用程序的搜尋條件,于該索引數(shù)據(jù)層與該實(shí)體數(shù)據(jù)層之間建立多個(gè)動(dòng)態(tài)數(shù)據(jù)層。10.如權(quán)利要求9所述的方法,其中步驟(b)依據(jù)該索引數(shù)據(jù)層的索引數(shù)據(jù)及該多個(gè)動(dòng)態(tài)數(shù)據(jù)層的索引數(shù)據(jù),搜尋該多個(gè)數(shù)據(jù)項(xiàng)的索引代碼以取得該數(shù)據(jù)庫(kù)系統(tǒng)中符合該應(yīng)用程序所要求的對(duì)象數(shù)據(jù)。11.如權(quán)利要求7所述的方法,其還包含根據(jù)該應(yīng)用程序的搜尋條件于該索引數(shù)據(jù)層中標(biāo)記常用或有效的索引數(shù)據(jù)。12.如權(quán)利要求7所述的方法,其還包含由一面向?qū)ο蟪绦驑?gòu)成該數(shù)據(jù)表。13.如權(quán)利要求7所述的方法,其還包含將一關(guān)系型數(shù)據(jù)庫(kù)的一筆記錄轉(zhuǎn)換成一筆對(duì)象數(shù)據(jù),每一筆對(duì)象數(shù)據(jù)包含多個(gè)數(shù)據(jù)項(xiàng)。14.如權(quán)利要求7所述的方法,其還包含于該實(shí)體數(shù)據(jù)層建立多個(gè)叢集,每一叢集包含多個(gè)數(shù)據(jù)表。15.如權(quán)利要求14所述的方法,其中當(dāng)對(duì)象數(shù)據(jù)的數(shù)目超過該數(shù)據(jù)庫(kù)設(shè)定的叢集大小時(shí),該數(shù)據(jù)庫(kù)系統(tǒng)于該實(shí)體數(shù)據(jù)層還建立一新叢集以放置新增的對(duì)象數(shù)據(jù)。16.如權(quán)利要求14所述的方法,其還包含以一數(shù)據(jù)庫(kù)模式規(guī)劃一叢集。17.如權(quán)利要求14所述的方法,其還包含對(duì)每一叢集建立索引數(shù)據(jù)。全文摘要本發(fā)明提供一種可解決數(shù)據(jù)庫(kù)升級(jí)風(fēng)險(xiǎn)的數(shù)據(jù)庫(kù)系統(tǒng)及其建立方法,利用混合多種不同層次的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì),以在升級(jí)數(shù)據(jù)庫(kù)時(shí)能維持原始程序的數(shù)據(jù)及保持系統(tǒng)的完整性。在不需更動(dòng)實(shí)體數(shù)據(jù)結(jié)構(gòu)的條件下,通過應(yīng)用程序于索引數(shù)據(jù)層針對(duì)實(shí)體數(shù)據(jù)建立索引數(shù)據(jù)表以進(jìn)行數(shù)據(jù)及字段的搜尋、建立、刪除及修改。文檔編號(hào)G06F17/30GK1877573SQ20051007635公開日2006年12月13日申請(qǐng)日期2005年6月10日優(yōu)先權(quán)日2005年6月10日發(fā)明者高裕翔,蘇漢良,葉志強(qiáng),葉金寬申請(qǐng)人:華夏科技股份有限公司