欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

建立多個(gè)數(shù)據(jù)庫(kù)表的共享索引的方法及裝置制造方法

文檔序號(hào):6490365閱讀:246來(lái)源:國(guó)知局
建立多個(gè)數(shù)據(jù)庫(kù)表的共享索引的方法及裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法及裝置。在該方法中,首先獲取主鍵表的主鍵索引和至少一個(gè)外鍵表的每一個(gè)的外鍵索引,接著,在每一個(gè)外鍵表的外鍵索引中,確定至少一個(gè)非空的外鍵索引項(xiàng)。對(duì)于所確定的每一個(gè)非空的外鍵索引項(xiàng),獲取該外鍵索引項(xiàng)的外鍵值,并在主鍵索引中查找包括與該外鍵值相同的主鍵值的主鍵索引項(xiàng),然后,將所查找到的主鍵索引項(xiàng)與該外鍵表的表標(biāo)識(shí)符和該外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符合并,以形成共享索引項(xiàng)。
【專利說(shuō)明】建立多個(gè)數(shù)據(jù)庫(kù)表的共享索引的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及關(guān)系數(shù)據(jù)庫(kù)的管理技術(shù),更具體地,涉及建立具有主鍵-外鍵約束的多個(gè)數(shù)據(jù)庫(kù)表的共享索引的方法和裝置以及在包括具有主鍵-外鍵約束的多個(gè)數(shù)據(jù)庫(kù)表的關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002]一般地,對(duì)于數(shù)據(jù)庫(kù)表,可確定該數(shù)據(jù)庫(kù)表的數(shù)據(jù)記錄中的某個(gè)屬性作為主鍵,其可唯一地標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的一個(gè)數(shù)據(jù)記錄。主鍵用于保證數(shù)據(jù)庫(kù)表的實(shí)體完整性。一個(gè)數(shù)據(jù)庫(kù)表只有一個(gè)主鍵,并且主鍵的值不能為空值(Null)。
[0003]在關(guān)系數(shù)據(jù)庫(kù)中,可以使用主鍵和外鍵將多個(gè)數(shù)據(jù)庫(kù)表關(guān)聯(lián)在一起,這樣的多個(gè)數(shù)據(jù)庫(kù)表可被認(rèn)為具有主鍵-外鍵約束。一般地,如果數(shù)據(jù)庫(kù)表I的主鍵在數(shù)據(jù)庫(kù)表2中出現(xiàn),則該主鍵是數(shù)據(jù)庫(kù)表2的外鍵。在這種情況下,數(shù)據(jù)庫(kù)表I被稱為主鍵表,而數(shù)據(jù)庫(kù)表2被稱為外鍵表。外鍵可表不兩個(gè)數(shù)據(jù)庫(kù)表之間的關(guān)系,并可用于保持?jǐn)?shù)據(jù)的一致性。
[0004]通常,主鍵和/或外鍵可在創(chuàng)建數(shù)據(jù)庫(kù)表時(shí)定義。如果定義了外鍵,則進(jìn)一步定義外鍵的關(guān)聯(lián)表和更新的關(guān)聯(lián)。外鍵表成為引用表,而主鍵表成為被引用的表。更新的關(guān)聯(lián)包括級(jí)聯(lián)刪除和級(jí)聯(lián)更新。如果刪除或更改主鍵表中的某個(gè)數(shù)據(jù)記錄,則所有外鍵表中與該數(shù)據(jù)記錄有關(guān)的數(shù)據(jù)記錄都將被刪除或更改。
[0005]為了方便對(duì)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)記錄的查詢,還可以對(duì)數(shù)據(jù)庫(kù)表建立索引。索引可以通過(guò)對(duì)數(shù)據(jù)庫(kù)表中的某一列的值進(jìn)行排序而建立。在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中,通常使用B樹(shù)結(jié)構(gòu)表示數(shù)據(jù)庫(kù)表的索引。圖2示出了傳統(tǒng)的使用B樹(shù)結(jié)構(gòu)的索引的示意圖。如圖2所示,B樹(shù)索引包括根節(jié)點(diǎn)、中間節(jié)點(diǎn)和葉節(jié)點(diǎn)。在根節(jié)點(diǎn)處存儲(chǔ)的索引項(xiàng)可用于指示各個(gè)中間節(jié)點(diǎn)所對(duì)應(yīng)的索引值的范圍,在中間節(jié)點(diǎn)處存儲(chǔ)的索引項(xiàng)可用于指示各個(gè)葉節(jié)點(diǎn)所對(duì)應(yīng)的索引值。在葉節(jié)點(diǎn)處存儲(chǔ)的索引項(xiàng)可用于指示與索引值對(duì)應(yīng)的數(shù)據(jù)記錄的信息,其可包括索引值(Key)和數(shù)據(jù)記錄標(biāo)識(shí)符(R0WID)。數(shù)據(jù)記錄標(biāo)識(shí)符可唯一地標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)記錄的物理位置,通常包括指示數(shù)據(jù)庫(kù)表的頁(yè)的頁(yè)信息(Page)和指示頁(yè)中的行的行信息(Slot)。
[0006]對(duì)主鍵表和外鍵表分別建立主鍵索引和外鍵索引。主鍵索引是對(duì)主鍵表中主鍵的值進(jìn)行排序的結(jié)構(gòu),此時(shí),索引值是主鍵的值。外鍵索引是對(duì)外鍵表中外鍵的值進(jìn)行排序的結(jié)構(gòu),此時(shí),索引值是外鍵的值。在對(duì)主鍵表和外鍵表分別建立了主鍵索引和外鍵索引的情況下,當(dāng)由于對(duì)主鍵表中的某個(gè)數(shù)據(jù)記錄進(jìn)行更改或刪除而導(dǎo)致與該數(shù)據(jù)記錄有關(guān)的所有外鍵表中的數(shù)據(jù)記錄將被更改或刪除時(shí),首先對(duì)所有外鍵表的外鍵索引進(jìn)行遍歷,根據(jù)被更改或刪除的主鍵表的數(shù)據(jù)記錄所對(duì)應(yīng)的主鍵值,查找各個(gè)外鍵索引中對(duì)應(yīng)的外鍵索引項(xiàng),然后根據(jù)所查找的外鍵索引項(xiàng),獲得對(duì)應(yīng)的外鍵表的數(shù)據(jù)記錄,以進(jìn)行更改或刪除操作。因此,無(wú)論在外鍵表中是否實(shí)際存在與被更改或刪除的主鍵表的數(shù)據(jù)記錄有關(guān)的數(shù)據(jù)記錄,都將遍歷所有外鍵表的外鍵索引。
[0007]然而,當(dāng)前存在與主鍵表關(guān)聯(lián)的外鍵表的數(shù)量日益增多的趨勢(shì)。如果一個(gè)主鍵表關(guān)聯(lián)了大量的外鍵表,則在進(jìn)行級(jí)聯(lián)刪除或級(jí)聯(lián)更新操作時(shí),對(duì)所有外鍵表的外鍵索引的遍歷會(huì)花費(fèi)大量的時(shí)間,導(dǎo)致工作效率降低。
[0008]此外,當(dāng)在包括主鍵表和多個(gè)外鍵表的關(guān)系數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)查詢時(shí)也存在這樣的問(wèn)題。在對(duì)每一個(gè)主鍵值查詢對(duì)應(yīng)的數(shù)據(jù)記錄時(shí),都需要對(duì)多個(gè)外鍵表的外鍵索引進(jìn)行遍歷。在存在大量的外鍵表時(shí),會(huì)增加查詢時(shí)間,導(dǎo)致較差的用戶體驗(yàn)。

【發(fā)明內(nèi)容】

[0009]根據(jù)本發(fā)明的一個(gè)方面,提供了 一種建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法,包括:獲取所述主鍵表的主鍵索引和所述至少一個(gè)外鍵表的每一個(gè)的外鍵索引;對(duì)于每一個(gè)所述外鍵表,在該外鍵表的外鍵索引中,確定至少一個(gè)非空的外鍵索引項(xiàng);對(duì)于所確定的至少一個(gè)非空的外鍵索引項(xiàng)的每一個(gè),獲取該外鍵索引項(xiàng)的外鍵值;在所述主鍵索引中查找包括與該外鍵值相同的主鍵值的主鍵索引項(xiàng);以及將所查找到的主鍵索引項(xiàng)與該外鍵表的表標(biāo)識(shí)符和該外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符合并,以形成所述共享索引的共享索引項(xiàng)。
[0010]根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的方法,其中,所述關(guān)系數(shù)據(jù)庫(kù)包括主鍵表和至少一個(gè)外鍵表,并且所述主鍵表和所述至少一個(gè)外鍵表具有共享索引,其中,所述共享索引中的共享索引項(xiàng)包括主鍵索引項(xiàng)、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,所述方法包括:接收查詢請(qǐng)求,所述查詢請(qǐng)求包括索引值;在所述共享索引中查找包括所述索引值的共享索引項(xiàng);以及根據(jù)所述共享索引項(xiàng)中的至少一個(gè)表標(biāo)識(shí)符和對(duì)應(yīng)的數(shù)據(jù)記錄標(biāo)識(shí)符,從由所述至少一個(gè)表標(biāo)識(shí)符標(biāo)識(shí)的表中獲取在由各自的數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)。
[0011 ] 根據(jù)本發(fā)明的再一個(gè)方面,提供了 一種建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置,包括:索引獲取模塊,其被配置為獲取所述主鍵表的主鍵索引和所述至少一個(gè)外鍵表的每一個(gè)的外鍵索引;索引項(xiàng)確定模塊,其被配置為對(duì)于每一個(gè)所述外鍵表,在該外鍵表的外鍵索引中,確定至少一個(gè)非空的外鍵索引項(xiàng);獲取模塊,其被配置為對(duì)于所確定的至少一個(gè)非空的外鍵索引項(xiàng)的每一個(gè),獲取該外鍵索引項(xiàng)的外鍵值;查找模塊,其被配置為在所述主鍵索引中查找包括與該外鍵值相同的主鍵值的主鍵索引項(xiàng);以及合并模塊,其被配置為將所查找到的主鍵索引項(xiàng)與該外鍵表的表標(biāo)識(shí)符和該外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符合并,以形成所述共享索引的共享索引項(xiàng)。
[0012]根據(jù)本發(fā)明的再一個(gè)方面,提供了一種用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的裝置,其中,所述關(guān)系數(shù)據(jù)庫(kù)包括主鍵表和至少一個(gè)外鍵表,并且所述主鍵表和所述至少一個(gè)外鍵表具有共享索引,其中,所述共享索引中的共享索引項(xiàng)包括主鍵索引項(xiàng)、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,所述裝置包括:請(qǐng)求接收模塊,其被配置為接收查詢請(qǐng)求,所述查詢請(qǐng)求包括索引值;索引項(xiàng)查找模塊,其被配置為在所述共享索引中查找包括所述索引值的共享索引項(xiàng);以及數(shù)據(jù)獲取模塊,其被配置為根據(jù)所述共享索引項(xiàng)中的至少一個(gè)表標(biāo)識(shí)符和數(shù)據(jù)記錄標(biāo)識(shí)符,從由所述至少一個(gè)表標(biāo)識(shí)符標(biāo)識(shí)的表中獲取在由各自的數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)。
【專利附圖】

【附圖說(shuō)明】[0013]通過(guò)結(jié)合附圖對(duì)本公開(kāi)示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開(kāi)的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開(kāi)示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
[0014]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖;
[0015]圖2示出了傳統(tǒng)的使用B樹(shù)結(jié)構(gòu)的索引的示意圖;
[0016]圖3示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法的流程圖;
[0017]圖4示出了根據(jù)圖3所示的方法而建立的共享索引的示意圖;
[0018]圖5示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法的流程圖;
[0019]圖6示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的方法的流程圖;
[0020]圖7不出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置的示意性框圖;
[0021]圖8不出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置的示意性框圖;
[0022]圖9示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的裝置的示意性框圖。
【具體實(shí)施方式】
[0023]下面將參照附圖更詳細(xì)地描述本公開(kāi)的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開(kāi)的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開(kāi)更加透徹和完整,并且能夠?qū)⒈竟_(kāi)的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0024]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開(kāi)可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0025]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0026]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括一但不限于一電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0027]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無(wú)線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0028]可以以一種或多種程序設(shè)計(jì)語(yǔ)言或其組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如”C”語(yǔ)言或類似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
[0029]下面將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0030]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0031]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。
[0032]圖1示出了適于用來(lái)實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來(lái)任何限制。
[0033]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
[0034]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0035]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問(wèn)的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
[0036]系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫(xiě)不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤(pán)驅(qū)動(dòng)器”)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(pán)(例如“軟盤(pán)”)讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(pán)(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
[0037]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0038]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14 (例如鍵盤(pán)、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過(guò)網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過(guò)總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤(pán)驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
[0039]圖3示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法的流程圖。下面結(jié)合附圖,對(duì)本實(shí)施例進(jìn)行詳細(xì)描述。
[0040]本實(shí)施例的方法可以應(yīng)用于包括主鍵表和至少一個(gè)外鍵表的關(guān)系數(shù)據(jù)庫(kù)。
[0041]如圖3所示,在步驟S310,獲取主鍵表的主鍵索引,以及至少一個(gè)外鍵表的每一個(gè)的外鍵索引。索引可以在創(chuàng)建主鍵表和外鍵表時(shí)建立,也可以在創(chuàng)建了主鍵表和外鍵表之后建立。所建立的主鍵索引和外鍵索引可以如圖2所示。在主鍵索引的葉節(jié)點(diǎn)上存儲(chǔ)的主鍵索引項(xiàng)包括主鍵值和主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,其中主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符唯一地標(biāo)識(shí)了主鍵表中的數(shù)據(jù)記錄的物理位置。在外鍵索引的葉節(jié)點(diǎn)上存儲(chǔ)的外鍵索引項(xiàng)包括外鍵值和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,其中外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符唯一地標(biāo)識(shí)了外鍵表中的數(shù)據(jù)記錄的物理位置。主鍵值和外鍵值具有相同的取值范圍。
[0042]接著,對(duì)于每一個(gè)外鍵表,執(zhí)行以下的操作。在步驟S320,在外鍵表的外鍵索引中確定至少一個(gè)非空的外鍵索引項(xiàng)。在此,非空的外鍵索引項(xiàng)是指外鍵值和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符都是非空值的索引項(xiàng)。如果外鍵索引項(xiàng)為空,則表示在外鍵表中沒(méi)有相應(yīng)的數(shù)據(jù)記錄。該步驟可通過(guò)對(duì)外鍵索引的外鍵索引項(xiàng)進(jìn)行遍歷來(lái)執(zhí)行。
[0043]然后,對(duì)于每一個(gè)非空的外鍵索引項(xiàng),進(jìn)行以下操作。在步驟S330,獲取外鍵索引項(xiàng)的外鍵值,并在步驟S340,在主鍵索引中查找包括與外鍵值相同的主鍵值的主鍵索引項(xiàng)。然后,在步驟S350,將所查找到的主鍵索引項(xiàng)與外鍵表的表標(biāo)識(shí)符和外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符進(jìn)行合并,以形成共享索引項(xiàng)。這樣,所形成的共享索引項(xiàng)可包括主鍵值、主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符??蛇x地,所形成的共享索引還可包括主鍵表的表標(biāo)識(shí)符。表標(biāo)識(shí)符可以是表的名稱。
[0044]在對(duì)所有非空的外鍵索引項(xiàng)進(jìn)行了上述步驟S330至S350的操作后,形成了用于主鍵表和單個(gè)外鍵表的共享索引。
[0045]在對(duì)所有外鍵表進(jìn)行了上述步驟S320至S350的操作后,可以將所有的用于主鍵表和單個(gè)外鍵表的共享索引中具有相同主鍵值的共享索引項(xiàng)合并成一個(gè)共享索引項(xiàng),從而形成用于主鍵表和至少一個(gè)外鍵表的共享索引。
[0046]通過(guò)以上描述可以看出,本實(shí)施例的方法能夠?qū)⒁粋€(gè)主鍵索引與至少一個(gè)外鍵索引合并成一個(gè)共享索引,從而通過(guò)只訪問(wèn)一個(gè)共享索引項(xiàng)就能夠?qū)崿F(xiàn)主鍵表與至少一個(gè)外鍵表之間的引用操作。另外,在進(jìn)行級(jí)聯(lián)更新或級(jí)聯(lián)刪除時(shí),能夠快速地確定將被更新或刪除的外鍵表的數(shù)據(jù)記錄,而無(wú)需對(duì)所有外鍵表的外鍵索引進(jìn)行遍歷,從而大大節(jié)約了操作時(shí)間,提聞了效率。
[0047]圖4示出了根據(jù)圖3所示的方法而建立的共享索引的示意圖。如圖4所示,共享索引也使用B樹(shù)結(jié)構(gòu),其包括根節(jié)點(diǎn)、中間節(jié)點(diǎn)和葉節(jié)點(diǎn)。在根節(jié)點(diǎn)和中間節(jié)點(diǎn)處存儲(chǔ)的共享索引項(xiàng)可與在主鍵索引的對(duì)應(yīng)節(jié)點(diǎn)處存儲(chǔ)的主鍵索引項(xiàng)相同,而在葉節(jié)點(diǎn)處存儲(chǔ)的共享索引項(xiàng)包括主鍵值(Key)、主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符(ROWID= (Page,Slot))、至少一個(gè)外鍵表的表標(biāo)識(shí)符(Foreign Key Table ID)和至少一個(gè)外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符(ROffID= (Page, Slot))。當(dāng)然,共享索引項(xiàng)也可包括主鍵表的表標(biāo)識(shí)符(Primary Key TableID)。
[0048]圖5示意性地示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法的流程圖。下面結(jié)合附圖,對(duì)本實(shí)施例進(jìn)行詳細(xì)描述,其中對(duì)于與前面實(shí)施例相同的部分,付與相同的附圖標(biāo)記,并適當(dāng)省略其說(shuō)明。
[0049]圖5所示的實(shí)施例的方法是在圖3所示的實(shí)施例的方法的基礎(chǔ)上增加了與共享索引項(xiàng)的更新有關(guān)的操作。
[0050]如圖5所示,在建立了共享索引之后,在步驟S510,監(jiān)控至少一個(gè)外鍵表的外鍵索引中外鍵索引項(xiàng)的改變。在本實(shí)施例中,外鍵索引項(xiàng)的改變包括以下的至少一個(gè):外鍵索引項(xiàng)從空變?yōu)榉强?;外鍵索引項(xiàng)從非空變?yōu)榭眨缓托薷耐怄I索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
[0051]當(dāng)在外鍵表中添加了新的數(shù)據(jù)記錄時(shí),對(duì)應(yīng)的外鍵索引項(xiàng)將從空變?yōu)榉强?。在這種情況下,外鍵索引項(xiàng)中的外鍵值和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符為非空值。
[0052]當(dāng)在外鍵表中刪除了某個(gè)數(shù)據(jù)記錄時(shí),對(duì)應(yīng)的外鍵索引項(xiàng)將從非空變?yōu)榭?。在這種情況下,外鍵索引項(xiàng)中的外鍵值和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符為空值。
[0053]當(dāng)某個(gè)數(shù)據(jù)記錄在外鍵表中的物理位置發(fā)生變化時(shí),對(duì)應(yīng)的外鍵索引項(xiàng)中的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符將被修改以反映該數(shù)據(jù)記錄的新的物理位置。
[0054]然后,在任意一個(gè)外鍵索引項(xiàng)發(fā)生改變時(shí),在步驟S520,更新相應(yīng)的共享索引項(xiàng)。在該更新步驟中,首先,獲取改變了的外鍵索引項(xiàng)所屬的外鍵表的表標(biāo)識(shí)符及其外鍵值,接著,在共享索引中查找包括與所獲取的外鍵值相同的共享索引值的共享索引項(xiàng),并根據(jù)該外鍵索引項(xiàng)的改變,對(duì)所查找到的共享索引項(xiàng)進(jìn)行更新。具體地,當(dāng)外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從空變?yōu)榉强諘r(shí),在對(duì)應(yīng)的共享索引項(xiàng)中添加所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。當(dāng)外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從非空變?yōu)榭諘r(shí),從對(duì)應(yīng)的共享索引項(xiàng)中刪除所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。當(dāng)外鍵索引項(xiàng)的改變是修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符時(shí),在對(duì)應(yīng)的共享索引項(xiàng)中用修改了的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符替換與所獲取的外鍵表的表標(biāo)識(shí)符對(duì)應(yīng)的原外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
[0055]通過(guò)以上描述可以看出,本實(shí)施例的方法能夠進(jìn)一步動(dòng)態(tài)地維持共享索引,以保證共享索引與數(shù)據(jù)記錄的一致性。
[0056]圖6示意性地示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的方法的流程圖。在本實(shí)施例中,關(guān)系數(shù)據(jù)庫(kù)可包括主鍵表和至少一個(gè)外鍵表,其中對(duì)于主鍵表和至少一個(gè)外鍵表建立共享索引,其中共享索引中的共享索引項(xiàng)可包括主鍵索引項(xiàng)、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。共享索引可使用圖3或圖5所示的實(shí)施例的方法來(lái)建立。
[0057]如圖6所示,在步驟S610,接收查詢請(qǐng)求,該查詢請(qǐng)求可包括索引值。在本實(shí)施例中,索引值的范圍與主鍵值的范圍相同。接著,在步驟S620,根據(jù)查詢請(qǐng)求中的索引值,在共享索引中查找包括該索引值的共享索引項(xiàng)。在找到了所需的共享索引項(xiàng)后,在步驟S630,根據(jù)該共享索引項(xiàng)所包含的至少一個(gè)表標(biāo)識(shí)符和對(duì)應(yīng)的數(shù)據(jù)記錄標(biāo)識(shí)符,從由表標(biāo)識(shí)符標(biāo)識(shí)的表中獲取在由對(duì)應(yīng)的數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)。
[0058]在本實(shí)施例中,至少一個(gè)表標(biāo)識(shí)符至少包括主鍵表的表標(biāo)識(shí)符。如果共享索引項(xiàng)只包括主鍵表的表標(biāo)識(shí)符和主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,則從主鍵表中主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符所標(biāo)識(shí)的位置處取得數(shù)據(jù)記錄,并返回該取得的數(shù)據(jù)記錄。如果共享索引項(xiàng)包括主鍵表的表標(biāo)識(shí)符、主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符、至少一個(gè)外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,則從主鍵表中獲取在由主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)記錄,并從每一個(gè)所標(biāo)識(shí)的外鍵表中獲取由各自的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)記錄,然后將這些數(shù)據(jù)記錄組合在一起,并返回組合后的數(shù)據(jù)記錄。
[0059]通過(guò)以上描述可以看出,本實(shí)施例的方法能夠只根據(jù)一個(gè)共享索引項(xiàng),實(shí)現(xiàn)對(duì)包括主鍵表和至少一個(gè)外鍵表的關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)查詢。
[0060]圖7不出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置的示意性框圖。下面根據(jù)附圖,對(duì)本實(shí)施例進(jìn)行詳細(xì)描述,其中對(duì)于與前面實(shí)施例相同的部分,適當(dāng)省略其說(shuō)明。
[0061]如圖7所不,本實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置700可包括索引獲取模塊701、索引項(xiàng)確定模塊702、獲取模塊703、查找模塊704和合并模塊 705。
[0062]在本實(shí)施例的裝置700中,索引獲取模塊701配置為獲取主鍵表的主鍵索引,以及每一個(gè)外鍵表的外鍵索引。然后,索引項(xiàng)確定模塊702在每一個(gè)外鍵表的外鍵索引中,確定至少一個(gè)非空的外鍵索引項(xiàng)。如前所述,非空的外鍵索引項(xiàng)是指外鍵值和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符都為非空值的索引項(xiàng)。在對(duì)每一個(gè)外鍵索引確定了非空的外鍵索引項(xiàng)之后,對(duì)于每一個(gè)非空的外鍵索引項(xiàng),獲取模塊703獲取該外鍵索引項(xiàng)的外鍵值。根據(jù)由獲取模塊703獲得的外鍵值,查找模塊704在由索引獲取模塊701獲取的主鍵索引中查找包括與該外鍵值相同的主鍵值的主鍵索引項(xiàng)。然后,合并模塊705將所查找到的主鍵索引項(xiàng)與外鍵表的表標(biāo)識(shí)符和外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符合并,以形成共享索引項(xiàng)。因此,共享索引項(xiàng)可包括主鍵值、主鍵表數(shù)據(jù)記錄標(biāo)識(shí)符、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。可選地,共享索引項(xiàng)還可包括主鍵表的表標(biāo)識(shí)符。
[0063]圖8不出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置800的示意性框圖。
[0064]如圖8所示,本實(shí)施例的裝置800除了包括索引獲取模塊701、索引項(xiàng)確定模塊702、獲取模塊703、查找模塊704和合并模塊705之外,還可包括監(jiān)控模塊801和更新模塊802。
[0065]在圖8所示的裝置800中,監(jiān)控模塊801監(jiān)控至少一個(gè)外鍵表的外鍵索引中外鍵索引項(xiàng)的改變。在本實(shí)施例中,外鍵索引項(xiàng)的改變包括以下的至少一個(gè):外鍵索引項(xiàng)從空變?yōu)榉强?;外鍵索引項(xiàng)從非空變?yōu)榭?;和修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
[0066]當(dāng)監(jiān)控模塊801監(jiān)控到任意一個(gè)外鍵索引項(xiàng)發(fā)生改變時(shí),更新模塊802更新相應(yīng)的共享索引項(xiàng)。在更新模塊802中,獲取單元8021獲取改變了的外鍵索引項(xiàng)所屬的外鍵表的表標(biāo)識(shí)符及其外鍵值,并由查找單元8022在共享索引中查找包括與所獲取的外鍵值相同的共享索引值的共享索引項(xiàng)。然后,更新單元8023根據(jù)所監(jiān)控的外鍵索引項(xiàng)的改變,對(duì)由查找單元8022查找到的共享索引項(xiàng)進(jìn)行更新。
[0067]具體地,更新單元8023可包括添加單元,其在監(jiān)控模塊801監(jiān)控到外鍵索引項(xiàng)的改變是外鍵索弓I項(xiàng)從空變?yōu)榉强諘r(shí),在共享索弓I項(xiàng)中添加所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
[0068]更新單元8023還可包括刪除單元,其在監(jiān)控模塊801監(jiān)控到外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從非空變?yōu)榭諘r(shí),從共享索弓I項(xiàng)中刪除所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
[0069]更新單元8023還可包括替換單元,其在監(jiān)控模塊801監(jiān)控到外鍵索引項(xiàng)的改變是修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符時(shí),在共享索引項(xiàng)中用修改了的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符替換與所獲取的外鍵表的表標(biāo)識(shí)符對(duì)應(yīng)的原外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
[0070]本領(lǐng)域的普通技術(shù)人員能夠理解,圖7和圖8所示的實(shí)施例的裝置700、800可包括在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中。
[0071]圖9示出了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的裝置900的示意性框圖。下面結(jié)合附圖,對(duì)本實(shí)施例進(jìn)行詳細(xì)描述。
[0072]在本實(shí)施例中,關(guān)系數(shù)據(jù)庫(kù)包括主鍵表和至少一個(gè)外鍵表,并且對(duì)于主鍵表和至少一個(gè)外鍵表建立共享索引,其中共享索引中的共享索引項(xiàng)可包括主鍵索引項(xiàng)、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。主鍵表和至少一個(gè)外鍵表的共享索引可由圖7或圖8所示的建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置700、800建立,并在關(guān)系數(shù)據(jù)庫(kù)中維持。
[0073]如圖9所示,本實(shí)施例的裝置900可包括請(qǐng)求接收模塊901、索引項(xiàng)查找模塊902和數(shù)據(jù)獲取模塊903。[0074]在本實(shí)施例的裝置900中,請(qǐng)求接收模塊901接收包括索引值的查詢請(qǐng)求。索引值的范圍與主鍵值的范圍相同。然后,索引項(xiàng)查找模塊902在共享索引中查找包括該索引值的共享索引項(xiàng),并由數(shù)據(jù)獲取模塊903根據(jù)所查找到的共享索引項(xiàng)中的至少一個(gè)表標(biāo)識(shí)符和數(shù)據(jù)記錄標(biāo)識(shí)符,從由所標(biāo)識(shí)的表中獲取在由各自的數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)。
[0075]本領(lǐng)域的普通技術(shù)人員能夠理解,圖9所示的實(shí)施例的裝置900可包括在關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)中。此外,圖9所示的實(shí)施例的裝置900可與圖7和圖8所示的實(shí)施例的裝置700、800相組合。
[0076]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
[0077]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說(shuō)明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說(shuō)明的各實(shí)施例的范圍和精神的情況下,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。本文中所用術(shù)語(yǔ)的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的技術(shù)改進(jìn),或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【權(quán)利要求】
1.一種建立用于主鍵表和至少一個(gè)外鍵表的共享索引的方法,包括: 獲取所述主鍵表的主鍵索引和所述至少一個(gè)外鍵表的每一個(gè)的外鍵索引; 對(duì)于每一個(gè)所述外鍵表: 在該外鍵表的外鍵索引中,確定至少一個(gè)非空的外鍵索引項(xiàng); 對(duì)于所確定的至少一個(gè)非空的外鍵索引項(xiàng)的每一個(gè): 獲取該外鍵索引項(xiàng)的外鍵值; 在所述主鍵索引中查找包括與該外鍵值相同的主鍵值的主鍵索引項(xiàng);以及將所查找到的主鍵索引項(xiàng)與該外鍵表的表標(biāo)識(shí)符和該外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符合并,以形成所述共享索引的共享索引項(xiàng)。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 監(jiān)控所述至少一個(gè)外鍵表的外鍵索引中外鍵索引項(xiàng)的改變;以及 在任意一個(gè)外鍵索引項(xiàng)發(fā)生改變時(shí),更新相應(yīng)的共享索引項(xiàng)。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述外鍵索引項(xiàng)的改變包括以下改變的至少一個(gè):外鍵索引項(xiàng)從空變?yōu)榉强?;外鍵索引項(xiàng)從非空變?yōu)榭?;和修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
4.根據(jù)權(quán)利要求2所述的方法,其中,所述更新步驟包括: 獲取改變了的外鍵索引項(xiàng)所屬的外鍵表的表標(biāo)識(shí)符及其外鍵值; 在所述共享索引中查找包括與所`獲取的外鍵值相同的共享索引值的共享索引項(xiàng);以及 根據(jù)所述外鍵索引項(xiàng)的改變,對(duì)所查找的共享索引項(xiàng)進(jìn)行更新。
5.根據(jù)權(quán)利要求4所述的方法,其中,當(dāng)所述外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從空變?yōu)榉强諘r(shí),所述對(duì)所查找的共享索引項(xiàng)進(jìn)行更新的步驟包括: 在所述共享索引項(xiàng)中添加所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
6.根據(jù)權(quán)利要求4所述的方法,其中,當(dāng)所述外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從非空變?yōu)榭諘r(shí),所述對(duì)所查找的共享索引項(xiàng)進(jìn)行更新的步驟包括: 從所述共享索引項(xiàng)中刪除所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
7.根據(jù)權(quán)利要求4所述的方法,其中,當(dāng)所述外鍵索引項(xiàng)的改變是修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符時(shí),所述對(duì)所查找的共享索引項(xiàng)進(jìn)行更新的步驟包括: 在所述共享索引項(xiàng)中用修改了的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符替換與所獲取的外鍵表的表標(biāo)識(shí)符對(duì)應(yīng)的原外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
8.根據(jù)權(quán)利要求1至7任意一項(xiàng)所述的方法,其中,所述共享索引項(xiàng)還包括主鍵表的表標(biāo)識(shí)符。
9.一種用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的方法,其中,所述關(guān)系數(shù)據(jù)庫(kù)包括主鍵表和至少一個(gè)外鍵表,并且所述主鍵表和所述至少一個(gè)外鍵表具有共享索引,其中,所述共享索引中的共享索引項(xiàng)包括主鍵索引項(xiàng)、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,所述方法包括: 接收查詢請(qǐng)求,所述查詢請(qǐng)求包括索引值; 在所述共享索引中查找包括所述索引值的共享索引項(xiàng);以及根據(jù)所述共享索引項(xiàng)中的至少一個(gè)表標(biāo)識(shí)符和對(duì)應(yīng)的數(shù)據(jù)記錄標(biāo)識(shí)符,從由所述至少一個(gè)表標(biāo)識(shí)符標(biāo)識(shí)的表中獲取在由各自的數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)。
10.一種建立用于主鍵表和至少一個(gè)外鍵表的共享索引的裝置,包括: 索引獲取模塊,其被配置為獲取所述主鍵表的主鍵索引和所述至少一個(gè)外鍵表的每一個(gè)的外鍵索引; 索引項(xiàng)確定模塊,其被配置為對(duì)于每一個(gè)所述外鍵表,在該外鍵表的外鍵索引中,確定至少一個(gè)非空的外鍵索引項(xiàng); 獲取模塊,其被配置為對(duì)于所確定的至少一個(gè)非空的外鍵索引項(xiàng)的每一個(gè),獲取該外鍵索引項(xiàng)的外鍵值; 查找模塊,其被配置為在所述主鍵索引中查找包括與該外鍵值相同的主鍵值的主鍵索引項(xiàng);以及 合并模塊,其被配置為將所查找到的主鍵索引項(xiàng)與該外鍵表的表標(biāo)識(shí)符和該外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符合并,以形成所述共享索引的共享索引項(xiàng)。
11.根據(jù)權(quán)利要求10所述的裝置,還包括: 監(jiān)控模塊,其被配置為監(jiān)控所述至少一個(gè)外鍵表的外鍵索引中外鍵索引項(xiàng)的改變;以及 更新模塊,其被配置為在任意一個(gè)外鍵索引項(xiàng)發(fā)生改變時(shí),更新相應(yīng)的共享索引項(xiàng)。
12.根據(jù)權(quán)利要求11所述的裝置,其中,所述外鍵索引項(xiàng)的改變包括以下改變的至少一個(gè):外鍵索引項(xiàng)從空變?yōu)榉强眨煌怄I索引項(xiàng)從非空變?yōu)榭?;和修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
13.根據(jù)權(quán)利要求11所述的裝置,其中,所述更新模塊包括: 獲取單元,其被配置為獲取改變了的外鍵索引項(xiàng)所屬的外鍵表的表標(biāo)識(shí)符及其外鍵值; 查找單元,其被配置為在所述共享索引中查找包括與所獲取的外鍵值相同的共享索引值的共享索引項(xiàng);以及 更新單元,其被配置為根據(jù)所述外鍵索引項(xiàng)的改變,對(duì)所查找的共享索引項(xiàng)進(jìn)行更新。
14.根據(jù)權(quán)利要求13所述的裝置,其中,當(dāng)所述外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從空變?yōu)榉强諘r(shí),所述更新單元包括: 添加單元,其被配置為在所述共享索引項(xiàng)中添加所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
15.根據(jù)權(quán)利要求13所述的裝置,其中,當(dāng)所述外鍵索引項(xiàng)的改變是外鍵索引項(xiàng)從非空變?yōu)榭諘r(shí),所述更新單元包括: 刪除單元,其被配置為從所述共享索引項(xiàng)中刪除所獲取的外鍵表的表標(biāo)識(shí)符和改變了的外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
16.根據(jù)權(quán)利要求13所述的裝置,其中,當(dāng)所述外鍵索引項(xiàng)的改變是修改外鍵索引項(xiàng)的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符時(shí),所述更新單元包括: 替換單元,其被配置為在所述共享索引項(xiàng)中用修改了的外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符替換與所獲取的外鍵表的表標(biāo)識(shí)符 對(duì)應(yīng)的原外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符。
17.根據(jù)權(quán)利要求10至16任意一項(xiàng)所述的裝置,其中,所述共享索引項(xiàng)還包括主鍵表的表標(biāo)識(shí)符。
18.一種用于在關(guān)系數(shù)據(jù)庫(kù)中查詢數(shù)據(jù)的裝置,其中,所述關(guān)系數(shù)據(jù)庫(kù)包括主鍵表和至少一個(gè)外鍵表,并且所述主鍵表和所述至少一個(gè)外鍵表具有共享索引,其中,所述共享索引中的共享索引項(xiàng)包括主鍵索引項(xiàng)、外鍵表的表標(biāo)識(shí)符和外鍵表數(shù)據(jù)記錄標(biāo)識(shí)符,所述裝置包括: 請(qǐng)求接收模塊,其被配置為接收查詢請(qǐng)求,所述查詢請(qǐng)求包括索引值; 索引項(xiàng)查找模塊,其被配置為在所述共享索引中查找包括所述索引值的共享索引項(xiàng);以及 數(shù)據(jù)獲取模塊,其被配置為根據(jù)所述共享索引項(xiàng)中的至少一個(gè)表標(biāo)識(shí)符和數(shù)據(jù)記錄標(biāo)識(shí)符,從由所述至少一個(gè)表標(biāo)識(shí)符標(biāo)識(shí)的表中獲取在由各自的數(shù)據(jù)記錄標(biāo)識(shí)符標(biāo)識(shí)的位置處的數(shù)據(jù)。`
【文檔編號(hào)】G06F17/30GK103793401SQ201210424372
【公開(kāi)日】2014年5月14日 申請(qǐng)日期:2012年10月30日 優(yōu)先權(quán)日:2012年10月30日
【發(fā)明者】孫建強(qiáng), 王威, 郝大偉, 周宇辰 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
当涂县| 云浮市| 江都市| 玉山县| 新龙县| 阳西县| 元朗区| 嘉荫县| 芜湖市| 安溪县| 句容市| 遂昌县| 安丘市| 广德县| 广昌县| 苏尼特右旗| 金塔县| 清丰县| 启东市| 扶风县| 临桂县| 栾城县| 横山县| 沛县| 桂阳县| 海淀区| 淮安市| 张家港市| 武城县| 华蓥市| 噶尔县| 山阳县| 那坡县| 合肥市| 葵青区| 琼结县| 锦州市| 凤凰县| 泾川县| 西和县| 南川市|