專利名稱:數(shù)據(jù)庫(kù)跨類查詢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)查詢處理領(lǐng)域,特別是一種用對(duì)象間的雙向指針技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨 類査詢的方法。
背景技術(shù):
隨著數(shù)據(jù)庫(kù)技術(shù)的不斷進(jìn)步,數(shù)據(jù)庫(kù)的應(yīng)用范圍也更加廣泛。 一些新的應(yīng)用領(lǐng)域如跨 媒體應(yīng)用、數(shù)字圖書館和生物信息管理等,對(duì)數(shù)據(jù)庫(kù)提出了更多的要求。在這些應(yīng)用中, 往往涉及到非傳統(tǒng)形式的、復(fù)雜的數(shù)據(jù)。面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù) 據(jù)庫(kù)能較好地支持各種非傳統(tǒng)的數(shù)據(jù)類型,對(duì)各種復(fù)雜的數(shù)據(jù)進(jìn)行管理,而且在表現(xiàn)復(fù)雜 語(yǔ)義和關(guān)系方面具有較強(qiáng)的能力。在數(shù)據(jù)庫(kù)中,復(fù)雜數(shù)據(jù)之間存在著豐富的語(yǔ)義關(guān)系,數(shù) 據(jù)庫(kù)一方面需要支持定義這些復(fù)雜的聯(lián)系,另一方面也需要支持基于復(fù)雜數(shù)據(jù)之間的語(yǔ)義
關(guān)系進(jìn)行查詢。
面向?qū)ο髷?shù)據(jù)庫(kù)支持行類型和抽象數(shù)據(jù)類型定義,對(duì)象關(guān)系數(shù)據(jù)庫(kù)通過類型構(gòu)造器來 創(chuàng)建復(fù)雜類型,對(duì)象代理數(shù)據(jù)庫(kù)引入類和代理類來定義復(fù)雜數(shù)據(jù)。在這些數(shù)據(jù)庫(kù)中,數(shù)據(jù) 類型與數(shù)據(jù)類型之間、類與類之間存在著各種關(guān)系和復(fù)雜語(yǔ)義,伴隨著的是對(duì)象與對(duì)象之 間也存在相互關(guān)系或者語(yǔ)義聯(lián)系。隨著數(shù)據(jù)模型對(duì)語(yǔ)義進(jìn)行擴(kuò)充,數(shù)據(jù)庫(kù)支持復(fù)雜類型和 復(fù)雜對(duì)象,由此要求對(duì)數(shù)據(jù)庫(kù)查詢進(jìn)行擴(kuò)充,以支持對(duì)復(fù)雜對(duì)象進(jìn)行查詢以及進(jìn)行跨類查 詢。
在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)跨類査詢,豐富了數(shù)據(jù)庫(kù)的查詢處理能力。針對(duì)相互關(guān)聯(lián)的類型或類, 允許用戶從一個(gè)類型或類中的對(duì)象出發(fā),對(duì)相互關(guān)聯(lián)的其他類型或類中的對(duì)象進(jìn)行查詢。 在面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)和對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中,如果抽象數(shù)據(jù)類型的屬性引用其它類型 的對(duì)象,那么允許在相互聯(lián)系的類型之間進(jìn)行導(dǎo)航査詢,即訪問單個(gè)對(duì)象時(shí)根據(jù)對(duì)象之間 的聯(lián)系從一個(gè)對(duì)象導(dǎo)航到另一個(gè)對(duì)象。遍歷的類型通過遍歷路徑進(jìn)行說明,類型之間只能 是單向的關(guān)系,即路徑只能從引用者出發(fā),指向被引用者。而在對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)中, 類之間的代理關(guān)系在邏輯上形成了一個(gè)相互連接的網(wǎng)狀結(jié)構(gòu),這種類之間的聯(lián)系在對(duì)象層 次上則表現(xiàn)為相關(guān)對(duì)象之間的連接,因此可以根據(jù)類層次的導(dǎo)航,從一個(gè)類中的對(duì)象出發(fā) 査詢其它相關(guān)類中的對(duì)象。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種用對(duì)象間的雙向指針技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查 詢的方法,該方法能夠在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)有效的跨類査詢,進(jìn)一步豐富數(shù)據(jù)庫(kù)的查詢處理能 力。
本發(fā)明按下述技術(shù)方案解決其技術(shù)問題
本發(fā)明提供的是一種用對(duì)象間的雙向指針方法實(shí)現(xiàn)數(shù)據(jù)庫(kù)的跨類査詢,具體是采用包 括以下步驟的方法(1) 數(shù)據(jù)庫(kù)跨類査詢機(jī)制的設(shè)計(jì)
在面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)中,采用包括對(duì)象間的雙向指 針連接、跨類查詢描述以及跨類査詢處理,實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類査詢,具體是
將數(shù)據(jù)庫(kù)中的每一個(gè)對(duì)象賦予一個(gè)OID, OID是對(duì)象標(biāo)識(shí)符,根據(jù)對(duì)象所擁有的OID 以及不同對(duì)象間所具有的關(guān)系,建立起不同對(duì)象間的雙向指針,以刻畫不同對(duì)象間的聯(lián)系。
在數(shù)據(jù)庫(kù)查詢語(yǔ)言中,為支持跨類查詢描述定義相關(guān)語(yǔ)法。
數(shù)據(jù)庫(kù)跨類查詢處理時(shí),從某個(gè)初始類中的對(duì)象出發(fā),根據(jù)對(duì)象間的雙向指針,找到 目標(biāo)類中相關(guān)的對(duì)象,并應(yīng)用跨類查詢的目標(biāo)表達(dá)式,對(duì)目標(biāo)類中的對(duì)象采用數(shù)據(jù)庫(kù)表達(dá) 式計(jì)算的方法進(jìn)行計(jì)算,最后返回跨類查詢的結(jié)果;
(2) 數(shù)據(jù)庫(kù)跨類査詢機(jī)制的實(shí)現(xiàn)
其步驟包括根據(jù)數(shù)據(jù)組織形式,采用上述數(shù)據(jù)庫(kù)跨類查詢機(jī)制的設(shè)計(jì),在數(shù)據(jù)庫(kù)系 統(tǒng)中實(shí)現(xiàn)跨類查詢。
本發(fā)明具有以下主要有益效果
其一.能夠方便有效地表現(xiàn)對(duì)象間的各種語(yǔ)義關(guān)系。
在面向?qū)ο髷?shù)據(jù)庫(kù)和對(duì)象關(guān)系數(shù)據(jù)庫(kù)中,抽象數(shù)據(jù)類型的定義使得類型之間存在著相 互關(guān)聯(lián);在對(duì)象代理數(shù)據(jù)庫(kù)中,代理類的定義使得類之間存在著代理關(guān)系。以上聯(lián)系在對(duì) 象層次則表現(xiàn)為對(duì)象之間的相互關(guān)聯(lián)。針對(duì)數(shù)據(jù)庫(kù)中對(duì)象具有唯一對(duì)象標(biāo)識(shí)符的特點(diǎn),本 發(fā)明提出在相互關(guān)聯(lián)的對(duì)象之間采用對(duì)象標(biāo)識(shí)符建立雙向指針連接。利用雙向指針能方便 有效地表現(xiàn)對(duì)象間的各種復(fù)雜關(guān)系。
其二.能夠在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)有效的跨類查詢操作。
對(duì)象間雙向指針連接的存在以及類型與類型之間、類與類之間所存在的各種語(yǔ)義關(guān) 系,使得在數(shù)據(jù)庫(kù)內(nèi)部具有了進(jìn)行跨類査詢的基礎(chǔ)。本發(fā)明通過在現(xiàn)有數(shù)據(jù)庫(kù)査詢語(yǔ)言基 礎(chǔ)上進(jìn)一步擴(kuò)充語(yǔ)義操作,使得數(shù)據(jù)庫(kù)査詢語(yǔ)言具有描述跨類査詢的能力;通過擴(kuò)展數(shù)據(jù) 庫(kù)查詢處理模塊,采用一種基于對(duì)象間的雙向指針連接的數(shù)據(jù)庫(kù)跨類査詢機(jī)制,能夠在數(shù) 據(jù)庫(kù)中實(shí)現(xiàn)有效的跨類査詢操作。
其三.為目前正在興起的跨媒體應(yīng)用提供有效支持。
隨著網(wǎng)上數(shù)字媒體信息呈爆炸性增長(zhǎng),人們已不滿足通過文本之間的簡(jiǎn)單連接進(jìn)行信 息檢索,而希望通過挖掘和利用媒體信息之間的各種語(yǔ)義關(guān)聯(lián)進(jìn)行更廣泛更深層次的跨媒 體交叉檢索。通過建立各種媒體之間的雙向連接,表現(xiàn)各種語(yǔ)義關(guān)系,進(jìn)行有效的存儲(chǔ)和 管理,跨類査詢能夠?yàn)閷?shí)現(xiàn)高效跨媒體查詢提供有效支持。
圖1為對(duì)象之間的代理關(guān)系及雙向指針連接的示意圖。
具體實(shí)施例方式
本發(fā)明是一種用對(duì)象間的雙向指針技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢的方法。包括數(shù)據(jù)庫(kù)跨類 查詢機(jī)制的設(shè)計(jì)和實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢機(jī)制的步驟。具體是一. 數(shù)據(jù)庫(kù)跨類查詢機(jī)制的設(shè)計(jì)
在面向?qū)ο髷?shù)據(jù)庫(kù)和對(duì)象關(guān)系數(shù)據(jù)庫(kù)中,允許用戶定義抽象數(shù)據(jù)類型。類型與類型之 間存在著二元關(guān)系,二元關(guān)系又可以分為一對(duì)一關(guān)系、 一對(duì)多關(guān)系、多對(duì)多關(guān)系等。由此 而產(chǎn)生的是類型實(shí)例間,即對(duì)象間也存在著二元關(guān)系。在對(duì)象代理數(shù)據(jù)庫(kù)中,源類與代理 類之間存在著代理關(guān)系, 一個(gè)源類可以同時(shí)定義多個(gè)代理類, 一個(gè)代理類也不僅限于代理 一個(gè)源類。伴隨著類之間代理關(guān)系的是對(duì)象間的代理關(guān)系。 一個(gè)類中的對(duì)象可以是多個(gè)不 同代理類中的代理對(duì)象的源對(duì)象,同時(shí)一個(gè)類中的對(duì)象也可以作為多個(gè)不同源類中的源對(duì) 象的代理對(duì)象而存在。
由于在面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)中,系統(tǒng)為每一個(gè)對(duì)象分 配一個(gè)唯一的對(duì)象標(biāo)識(shí)符,對(duì)象間的關(guān)系可以通過對(duì)象標(biāo)識(shí)符相互關(guān)聯(lián)來記錄。 一旦對(duì)象 之間建立了聯(lián)系,就為數(shù)據(jù)庫(kù)進(jìn)行跨類査詢提供了基礎(chǔ)。通過在數(shù)據(jù)庫(kù)查詢語(yǔ)言中支持跨 類查詢描述,以及在查詢處理過程中利用對(duì)象間的聯(lián)系支持跨類査詢處理,從而達(dá)到數(shù)據(jù) 庫(kù)跨類查詢的目的。
在面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)中,采用包括對(duì)象間的雙向指 針連接、跨類査詢描述以及跨類查詢處理,實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢,具體是
將數(shù)據(jù)庫(kù)中的每一個(gè)對(duì)象賦予一個(gè)OID, OID是對(duì)象標(biāo)識(shí)符,根據(jù)對(duì)象所擁有的OID
以及不同對(duì)象間所具有的關(guān)系,建立起不同對(duì)象間的雙向指針,以刻畫不同對(duì)象間的聯(lián)系。 在數(shù)據(jù)庫(kù)查詢語(yǔ)言中,為支持跨類査詢描述定義相關(guān)語(yǔ)法。數(shù)據(jù)庫(kù)查詢語(yǔ)言中包含描 述跨類査詢的語(yǔ)法,其是路徑表達(dá)式或者是和路徑表達(dá)式相類似的形式,包括跨類查詢的 初始類、目標(biāo)類,跨類査詢所經(jīng)歷的類路徑,以及跨類査詢目標(biāo)類上的表達(dá)式。
數(shù)據(jù)庫(kù)跨類査詢處理時(shí),從某個(gè)初始類中的對(duì)象出發(fā),根據(jù)對(duì)象間的雙向指針,找到 目標(biāo)類中相關(guān)的對(duì)象,并應(yīng)用跨類査詢的目標(biāo)表達(dá)式,對(duì)目標(biāo)類中的對(duì)象采用數(shù)據(jù)庫(kù)表達(dá) 式計(jì)算的方法進(jìn)行計(jì)算,最后返回跨類查詢的結(jié)果。所述數(shù)據(jù)庫(kù)中對(duì)象間的雙向指針連接,
包括對(duì)象間雙向指針的建立和對(duì)象間雙向指針的刪除,具體如下
建立對(duì)象間雙向指針的方法是對(duì)于屬于不同的類、且彼此之間具有相互關(guān)系的對(duì)象, 當(dāng)這些對(duì)象在數(shù)據(jù)庫(kù)中被創(chuàng)建時(shí),數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)對(duì)象所具有的對(duì)象標(biāo)識(shí)符,構(gòu)造兩個(gè)對(duì) 象間的雙向指針連接,以記錄兩個(gè)對(duì)象間的關(guān)系。
刪除對(duì)象間雙向指針的方法是當(dāng)某個(gè)對(duì)象被刪除時(shí),數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)刪除與該對(duì)象 有關(guān)的所有雙向指針連接。
二. 數(shù)據(jù)庫(kù)跨類査詢機(jī)制的實(shí)現(xiàn)
根據(jù)數(shù)據(jù)組織形式,采用上述數(shù)據(jù)庫(kù)跨類查詢機(jī)制的設(shè)計(jì),在數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)跨類 査詢??珙惒樵兲幚聿捎冒ㄒ韵虏襟E的方法
1. 根據(jù)跨類查詢描述,確定由初始類G到達(dá)目標(biāo)類Cd所經(jīng)歷的類路徑,該類路徑不 存在回路;
2. 對(duì)于初始類中的每一個(gè)對(duì)象Os,由其出發(fā),根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)維護(hù)的對(duì)象間雙向指針 連接,在跨類查詢路徑所涉及的所有類之間,按照深度優(yōu)先遍歷算法查找相互關(guān)聯(lián)的對(duì)象,直到找到屬于目標(biāo)類的相關(guān)對(duì)象;
3.根據(jù)跨類査詢所指定的目標(biāo)類上的表達(dá)式,采用數(shù)據(jù)庫(kù)表達(dá)式計(jì)算的方法,對(duì)S標(biāo) 類上的對(duì)象進(jìn)行計(jì)算,從而完成跨類査詢執(zhí)行。
三.上述數(shù)據(jù)庫(kù)跨類査詢的方法的應(yīng)用
本發(fā)明提供的上述數(shù)據(jù)庫(kù)跨類查詢的方法,可在面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù) 庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類査詢的應(yīng)用。
用雙向指針連接來記錄相關(guān)聯(lián)對(duì)象之間的語(yǔ)義關(guān)系;在面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù) 據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)査詢語(yǔ)言中采用路徑表達(dá)式來描述跨類査詢;面向?qū)ο髷?shù)據(jù)庫(kù)系 統(tǒng)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)在進(jìn)行跨類查詢處理時(shí),對(duì)路徑表達(dá)式進(jìn) 行計(jì)算,從而實(shí)現(xiàn)面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)的跨類査詢。
1. 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)維護(hù)相關(guān)聯(lián) 對(duì)象之間的雙向指針連接,包括
(1)相關(guān)聯(lián)對(duì)象之間雙向指針的自動(dòng)創(chuàng)建 面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)創(chuàng)建相關(guān)聯(lián)對(duì) 象間的雙向指針連接,其歩驟是
當(dāng)一個(gè)類中的對(duì)象被創(chuàng)建的時(shí)候,找到其所有相關(guān)聯(lián)的對(duì)象,
根據(jù)數(shù)據(jù)庫(kù)為每個(gè)對(duì)象所分配的OID,在數(shù)據(jù)庫(kù)系統(tǒng)中記錄下新創(chuàng)建對(duì)象與其所關(guān)聯(lián) 對(duì)象之間的雙向指針,新創(chuàng)建對(duì)象與其每一個(gè)相關(guān)聯(lián)對(duì)象間的雙向指針由新創(chuàng)建對(duì)象的
OID、其所屬類的OID、相關(guān)聯(lián)對(duì)象的OID和相關(guān)聯(lián)對(duì)象所屬類的OID等組成。對(duì)象間 口J能存在著一對(duì)一或一對(duì)多的關(guān)系,對(duì)于一對(duì)一的關(guān)系,可以通過一對(duì)雙向指針來記錄對(duì) 象間的關(guān)系,對(duì)于一對(duì)多(l:m)的關(guān)系,則可通過多對(duì)(m對(duì))雙向指針來記錄對(duì)象間 的關(guān)系;
(2 )相關(guān)聯(lián)對(duì)象之間的雙向指針連接的自動(dòng)刪除 當(dāng)一個(gè)類中的對(duì)象被刪除的時(shí)候,找到數(shù)據(jù)庫(kù)記錄的與該對(duì)象有關(guān)的所有雙向指針, 并將它們從數(shù)據(jù)庫(kù)系統(tǒng)中刪除。
2. 跨類查詢的描述。在描述跨類査詢時(shí),至少需要包括以下幾點(diǎn)跨類查詢的起點(diǎn) 類、跨類杳詢的終點(diǎn)類,跨類杳詢所要經(jīng)歷的路徑,跨類查詢的目標(biāo)表達(dá)式??珙惒樵冎?要求査詢路徑所經(jīng)歷的類之間具有聯(lián)系,而且査詢的方向可以是雙向的。描述跨類查詢的 路徑表達(dá)式為
{<class〉~>}+<target〉.<expression>,
上述路徑表達(dá)式是基于目標(biāo)類屬性的任意表達(dá)式,其中"lass〉為路徑中各個(gè)類的名 稱,〈target〉為目標(biāo)類,〈expression〉為目標(biāo)表達(dá)式。
3. 跨類杳詢的執(zhí)行是從初始類的一個(gè)對(duì)象出發(fā),按照跨類査詢制定的路徑找到它 在目標(biāo)類中對(duì)應(yīng)的對(duì)象,并返回目標(biāo)對(duì)象的某個(gè)計(jì)算表達(dá)式。其具體步驟是
(1)根據(jù)跨類査詢命令,確定由初始類G到達(dá)目標(biāo)類Cd所經(jīng)歷的類路徑;對(duì)跨類 查詢所經(jīng)歷的路徑進(jìn)行正確性檢査,首先要求該類路徑不存在回路;其次類路徑中前后兩個(gè)類之間必須具有某種語(yǔ)義聯(lián)系;
(2) 對(duì)于初始類中的每一個(gè)對(duì)象Os,由其出發(fā)根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)所維護(hù)的對(duì)象間雙向 指針連接,在跨類查詢路徑所涉及的所有類之間,査找相互關(guān)聯(lián)的對(duì)象,直到找到屬于目 標(biāo)類的相關(guān)對(duì)象。
由于跨類査詢類路徑中前后兩個(gè)類之間彼此關(guān)聯(lián),對(duì)象間可能存在一對(duì)一或一對(duì)多的 關(guān)系,根據(jù)對(duì)象間的雙向指針,對(duì)于一對(duì)一的關(guān)系,可以由前一個(gè)類中的一個(gè)對(duì)象直接找 到后一個(gè)類中的一個(gè)對(duì)象;對(duì)于一對(duì)多的關(guān)系,則由前一個(gè)類中的一個(gè)對(duì)象找到與其相關(guān) 的后一個(gè)類中的多個(gè)對(duì)象。對(duì)于后一種情況,將由找到的后一個(gè)類的一個(gè)對(duì)象出發(fā),沿著 類路徑直到找到屬于目標(biāo)類中的對(duì)象;之后回溯到該類,取下一個(gè)未計(jì)算的對(duì)象,繼續(xù)查 詢處理過程。
(3) 根據(jù)跨類查詢所指定的目標(biāo)類上的表達(dá)式,采用數(shù)據(jù)庫(kù)表達(dá)式計(jì)算的方法,對(duì) 目標(biāo)類上的對(duì)象進(jìn)行計(jì)算,從而完成跨類查詢處理。
4.路徑表達(dá)式的正確性檢驗(yàn)的標(biāo)準(zhǔn)是路徑表達(dá)式中前后兩個(gè)類之間必須具有直接 關(guān)聯(lián)關(guān)系,例如在對(duì)象代理數(shù)據(jù)庫(kù)中;或者前一個(gè)類是后一個(gè)類的代理類,或者前一個(gè)類 是后一個(gè)類的源類。
下面結(jié)合在對(duì)象代理數(shù)據(jù)庫(kù)中實(shí)現(xiàn)跨類查詢,對(duì)本發(fā)明作進(jìn)一歩說明。
在對(duì)象代理數(shù)據(jù)庫(kù)中可以定義類和代理類。對(duì)象代理數(shù)據(jù)庫(kù)存在四種類型的代理類, 包括選擇,合并,連接和分組,用于支持特化,泛化,聚集和分組。對(duì)于每一個(gè)代理類, 根據(jù)其代理類型的不同,存在著一定數(shù)量的源類;此外在代理類之上,也可以進(jìn)一步定義 代理類。由于類與代理類之間的代理關(guān)系,使得對(duì)象代理數(shù)據(jù)庫(kù)中的類在邏輯上形成了一 個(gè)網(wǎng)狀結(jié)構(gòu)。例如,在圖l中,通過定義三個(gè)選擇型代理類,可以擴(kuò)展學(xué)生類使其分別具 有相關(guān)聯(lián)的文檔,視頻和相冊(cè)。
在對(duì)象層次上,由于代理類中的對(duì)象扮演源類中的源對(duì)象的不同角色。代理對(duì)象和源 對(duì)象之間也存在著代理關(guān)系,根據(jù)代理類型的不同, 一個(gè)代理對(duì)象可以有一個(gè)或多個(gè)源對(duì) 象;同樣,對(duì)于同一個(gè)源對(duì)象,也可以擁有一個(gè)或多個(gè)代理對(duì)象。
在對(duì)象代理數(shù)據(jù)庫(kù)中進(jìn)行跨類查詢,即對(duì)于相互之間具有代理關(guān)系的類,可以從其 中一個(gè)類的一個(gè)對(duì)象出發(fā),按照某種路徑找到它在目標(biāo)類中相關(guān)的對(duì)象,并返回目標(biāo)對(duì)象 的某個(gè)計(jì)算表達(dá)式。例如,在圖1中,可以從學(xué)生張三的一個(gè)文檔出發(fā),通過跨類查詢, 可以找到與他關(guān)聯(lián)的視頻和相冊(cè)。
1.對(duì)象代理數(shù)據(jù)庫(kù)對(duì)象間的雙向指針連接維護(hù)的具體步驟 (1)源對(duì)象和代理對(duì)象之間雙向指針連接的自動(dòng)創(chuàng)建
當(dāng)創(chuàng)建一個(gè)代理類時(shí),根據(jù)其代理規(guī)則,由源類中的對(duì)象自動(dòng)派生代理對(duì)象到該代理 類中。此外,更新遷移機(jī)制使得對(duì)源類進(jìn)行操作時(shí),滿足代理規(guī)則的新代理對(duì)象被派生到 代理類中。因此,當(dāng)代理類中的對(duì)象被派生時(shí),數(shù)據(jù)庫(kù)根據(jù)為每個(gè)對(duì)象所分配的對(duì)象標(biāo)識(shí) 符OID,在數(shù)據(jù)庫(kù)系統(tǒng)中記錄下新產(chǎn)生代理對(duì)象與其所有源對(duì)象之間的雙向指針,新派生 的代理對(duì)象與其每一個(gè)源對(duì)象間的雙向指針由新派生的代理對(duì)象的OID、其所屬類的OID、源對(duì)象的OID和源對(duì)象所屬類的OID等組成。 (2)源對(duì)象和代理對(duì)象之間雙向指針的自動(dòng)刪除 當(dāng)一個(gè)類中的對(duì)象被刪除的時(shí)候,數(shù)據(jù)庫(kù)系統(tǒng)將找到與該對(duì)象有關(guān)的所有雙向指針, 并將它們從數(shù)據(jù)庫(kù)系統(tǒng)中刪除。
2. 路徑表達(dá)式描述跨類査詢
在對(duì)象代理數(shù)據(jù)庫(kù)查詢語(yǔ)言中,定義了路徑表達(dá)式來表達(dá)跨類查詢。
路徑表達(dá)式的形式化定義為
{<class>~>}+<target>.<expression>
其中〈class〉為路徑中各個(gè)類的名稱,〈target〉為目標(biāo)類,〈expression〉為目標(biāo)表達(dá)式, 它可以是基于曰標(biāo)類屬性的任意表達(dá)式。例如,上記跨類査詢的路徑表達(dá)式可表示為 文檔》學(xué)生今視頻.*;文檔+學(xué)生+相冊(cè).*
3. 路徑表達(dá)式計(jì)算
對(duì)象代理數(shù)據(jù)庫(kù)査詢處理模塊通過對(duì)路徑表達(dá)式進(jìn)行計(jì)算,從而實(shí)現(xiàn)跨類査詢。在計(jì) 算路徑表達(dá)式時(shí),數(shù)據(jù)庫(kù)依賴跨類查詢命令所給出的路徑表達(dá)式進(jìn)行導(dǎo)航,根據(jù)對(duì)象間的 雙向指針進(jìn)行追蹤查詢。其具體步驟是
(1) 檢查路徑表達(dá)式的正確性。路徑表達(dá)式的正確性耍求路徑所經(jīng)歷的所有類之間 具有這樣的關(guān)系,即前后兩個(gè)類之間具有直接的代理關(guān)系,或者前一個(gè)類是后一個(gè)類的代 理類,或者前一個(gè)類是后一個(gè)類的源類。此外,路徑表達(dá)式的目標(biāo)表達(dá)式是基于路徑目標(biāo) 類的屬性的一個(gè)計(jì)算表達(dá)式。
(2) 掃描初始類中的每一個(gè)對(duì)象,根據(jù)路徑表達(dá)式的3航,由其出發(fā),根據(jù)數(shù)據(jù)庫(kù) 系統(tǒng)所維護(hù)的對(duì)象間雙向指針連接,在路徑表達(dá)式所涉及的所有類之間,按照深度優(yōu)先遍 歷算法査找相互具有代理關(guān)系的對(duì)象,直到找到目標(biāo)類h的相關(guān)對(duì)象。
路徑表達(dá)式的表達(dá)是雙向的,即可以從源類出發(fā)査詢代理類,也可以由代理類出發(fā)査 詢?cè)搭?。?duì)于路徑表達(dá)式類路徑中的前后兩個(gè)類,如果他們的代理關(guān)系是選擇、合并或連 接型代理關(guān)系,那么由甜一個(gè)類中的一個(gè)對(duì)象出發(fā),只能査詢到其對(duì)應(yīng)的后一個(gè)類的一個(gè) 對(duì)象,即對(duì)象間的關(guān)系是一對(duì)一的關(guān)系;如果他們的代理關(guān)系是分組型代理關(guān)系,且能一 個(gè)類是后一個(gè)類的分組型代理類,那么由前一個(gè)類中的一個(gè)對(duì)象出發(fā),將查詢到其對(duì)應(yīng)的 后一個(gè)類的多個(gè)對(duì)象,即對(duì)象間的關(guān)系是一對(duì)多的關(guān)系。當(dāng)遇到后一種情況時(shí),在找到后 一個(gè)類的所有對(duì)象之后,將選擇由其中的一個(gè)對(duì)象出發(fā),沿著類路徑繼續(xù)進(jìn)行查詢,直到
找到屬于目標(biāo)類中的對(duì)象;之后再回溯到該類,取下一個(gè)為計(jì)算的對(duì)象,繼續(xù)查詢處理過 程。
(3) 對(duì)于上述找到的目標(biāo)類上的對(duì)象,應(yīng)用路徑表達(dá)式的目標(biāo)表達(dá)式,按照數(shù)據(jù)庫(kù) 表達(dá)式計(jì)算方法,對(duì)目標(biāo)表達(dá)式進(jìn)行計(jì)算,并最終返回計(jì)算結(jié)果。
權(quán)利要求
1.數(shù)據(jù)庫(kù)跨類查詢方法,其特征是一種用對(duì)象間的雙向指針方法實(shí)現(xiàn)數(shù)據(jù)庫(kù)的跨類查詢,具體是采用包括以下步驟的方法(1)數(shù)據(jù)庫(kù)跨類查詢機(jī)制的設(shè)計(jì)在面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)中,采用包括對(duì)象間的雙向指針連接、跨類查詢描述以及跨類查詢處理,實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢,具體是將數(shù)據(jù)庫(kù)中的每一個(gè)對(duì)象賦予一個(gè)OID,OID是對(duì)象標(biāo)識(shí)符,根據(jù)對(duì)象所擁有的OID以及不同對(duì)象間所具有的關(guān)系,建立起不同對(duì)象間的雙向指針,以刻畫不同對(duì)象間的聯(lián)系。在數(shù)據(jù)庫(kù)查詢語(yǔ)言中,為支持跨類查詢描述定義相關(guān)語(yǔ)法。數(shù)據(jù)庫(kù)跨類查詢處理時(shí),從某個(gè)初始類中的對(duì)象出發(fā),根據(jù)對(duì)象間的雙向指針,找到目標(biāo)類中相關(guān)的對(duì)象,并應(yīng)用跨類查詢的目標(biāo)表達(dá)式,對(duì)目標(biāo)類中的對(duì)象采用數(shù)據(jù)庫(kù)表達(dá)式計(jì)算的方法進(jìn)行計(jì)算,最后返回跨類查詢的結(jié)果;(2)數(shù)據(jù)庫(kù)跨類查詢機(jī)制的實(shí)現(xiàn)其步驟包括根據(jù)數(shù)據(jù)組織形式,采用上述數(shù)據(jù)庫(kù)跨類查詢機(jī)制的設(shè)計(jì),在數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)跨類查詢。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)跨類査詢方法,其特征在于數(shù)據(jù)庫(kù)中對(duì)象間的雙 向指針連接,包括對(duì)象間雙向指針的建立和對(duì)象間雙向指針的刪除,建立對(duì)象間雙向指針的方法是對(duì)于屬于不同的類、且彼此之間具有相互關(guān)系的對(duì)象, 當(dāng)這些對(duì)象在數(shù)據(jù)庫(kù)中被創(chuàng)建時(shí),數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)對(duì)象所具有的對(duì)象標(biāo)識(shí)符,構(gòu)造兩個(gè)對(duì) 象間的雙向指針連接,以記錄兩個(gè)對(duì)象間的關(guān)系,刪除對(duì)象間雙向指針的方法是當(dāng)某個(gè)對(duì)象被刪除時(shí),數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)刪除與該對(duì)象 有關(guān)的所有雙向指針連接。
3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)跨類査詢方法,其特征在于數(shù)據(jù)庫(kù)查詢語(yǔ)言中包含 描述跨類查詢的語(yǔ)法,其是路徑表達(dá)式或者是和路徑表達(dá)式相類似的形式,包括跨類查詢 的初始類、目標(biāo)類,跨類查詢所經(jīng)歷的類路徑,以及跨類査詢目標(biāo)類上的表達(dá)式。
4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)跨類査詢方法,其特征在于跨類查詢處理采用包括 以下步驟的方法(1) 根據(jù)跨類査詢描述,確定由初始類G到達(dá)目標(biāo)類Cd所經(jīng)歷的類路徑,該類路 徑不存在回路;(2) 對(duì)于初始類中的每一個(gè)對(duì)象Os,由其出發(fā),根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)維護(hù)的對(duì)象間雙向 指針連接,在跨類查詢路徑所涉及的所有類之間,按照深度優(yōu)先遍歷算法查找相互關(guān)聯(lián)的 對(duì)象,直到找到屬于目標(biāo)類的相關(guān)對(duì)象;(3) 根據(jù)跨類查詢所指定的目標(biāo)類上的表達(dá)式,采用數(shù)據(jù)庫(kù)表達(dá)式計(jì)算的方法,對(duì)目標(biāo)類上的對(duì)象進(jìn)行計(jì)算,從而完成跨類查詢執(zhí)行。
5. —種將權(quán)利要求1至4中任一權(quán)利要求所述的數(shù)據(jù)庫(kù)跨類查詢的方法,在面向?qū)?象數(shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類査詢的應(yīng) 用。
6. 根據(jù)權(quán)利要求5所述的應(yīng)用,其特征在于用雙向指針連接來記錄相關(guān)聯(lián)對(duì)象之 間的語(yǔ)義關(guān)系;在面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)查詢語(yǔ)言中采用路 徑表達(dá)式來描述跨類查詢;面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù) 系統(tǒng)在進(jìn)行跨類查詢處理時(shí),對(duì)路徑表達(dá)式進(jìn)行計(jì)算,從而實(shí)現(xiàn)面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān) 系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)的跨類査詢。
7. 根據(jù)權(quán)利要求6所述的應(yīng)用,其特征在于面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù) 庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)維護(hù)相關(guān)聯(lián)對(duì)象之間的雙向指針連接,包括(1) 相關(guān)聯(lián)對(duì)象之間雙向指針的自動(dòng)創(chuàng)建面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和對(duì)象代理數(shù)據(jù)庫(kù)系統(tǒng)自動(dòng)創(chuàng)建相關(guān)聯(lián)對(duì) 象間的雙向指針連接,其步驟是當(dāng)一個(gè)類中的對(duì)象被創(chuàng)建的時(shí)候,找到其所有相關(guān)聯(lián)的對(duì)象,根據(jù)數(shù)據(jù)庫(kù)為每個(gè)對(duì)象所分配的OID,在數(shù)據(jù)庫(kù)系統(tǒng)中記錄下新創(chuàng)建對(duì)象與其所關(guān)聯(lián) 對(duì)象之間的雙向指針,新創(chuàng)建對(duì)象與其每一個(gè)相關(guān)聯(lián)對(duì)象間的雙向指針由新創(chuàng)建對(duì)象的 OID、其所屬類的OID、相關(guān)聯(lián)對(duì)象的OID和相關(guān)聯(lián)對(duì)象所屬類的OID等組成;(2) 相關(guān)聯(lián)對(duì)象之間的雙向指針的自動(dòng)刪除 當(dāng)一個(gè)類中的對(duì)象被刪除的時(shí)候,找到數(shù)據(jù)庫(kù)記錄的與該對(duì)象有關(guān)的所有雙向指針,并將它們從數(shù)據(jù)庫(kù)系統(tǒng)中刪除。
8. 根據(jù)權(quán)利要求6所述的應(yīng)用,其特征在于描述跨類查詢的路徑表達(dá)式為{<class〉》}+<target>.<expression>,上述路徑表達(dá)式是基于目標(biāo)類屬性的任意表達(dá)式,其中〈class〉為路徑中各個(gè)類的名 稱,〈target〉為目標(biāo)類,〈expression〉為目標(biāo)表達(dá)式。
9. 根據(jù)權(quán)利要求8所述的應(yīng)用,其特征在于路徑表達(dá)式計(jì)算的具體步驟是(1) 檢查路徑表達(dá)式的正確性;(2) 按照路徑表達(dá)式的導(dǎo)航,從初始類的每一個(gè)對(duì)象出發(fā),根據(jù)數(shù)據(jù)庫(kù)系統(tǒng)維護(hù)的 對(duì)象間雙向指針連接,在路徑表達(dá)式所涉及的所有類之間,查找相關(guān)聯(lián)的對(duì)象,直到找到 目標(biāo)類上的相關(guān)對(duì)象;(3) 對(duì)于上述找到的目標(biāo)類上的對(duì)象,應(yīng)用路徑表達(dá)式的目標(biāo)表達(dá)式,按照數(shù)據(jù)庫(kù) 表達(dá)式計(jì)算方法,對(duì)目標(biāo)表達(dá)式進(jìn)行計(jì)算。
10. 根據(jù)權(quán)利要求9所述的應(yīng)用,其特征在于路徑表達(dá)式的正確性檢驗(yàn)的標(biāo)準(zhǔn)是路 徑表達(dá)式中前后兩個(gè)類之間必須具有直接關(guān)聯(lián)關(guān)系。
全文摘要
本發(fā)明是一種用對(duì)象間的雙向指針技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢的方法。本方法包括利用對(duì)象間的雙向指針實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢機(jī)制的設(shè)計(jì),以及在對(duì)象代理數(shù)據(jù)庫(kù)中實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢的步驟。本發(fā)明針對(duì)面向?qū)ο髷?shù)據(jù)庫(kù)、對(duì)象關(guān)系數(shù)據(jù)庫(kù)和對(duì)象代理數(shù)據(jù)庫(kù)中對(duì)象具有唯一對(duì)象標(biāo)識(shí)符(OID)的特點(diǎn),能夠?qū)?shù)據(jù)庫(kù)中屬于不同的類、且具有相互關(guān)系的對(duì)象借助對(duì)象標(biāo)識(shí)符建立起雙向指針連接,在數(shù)據(jù)庫(kù)查詢語(yǔ)言的設(shè)計(jì)上增加跨類查詢描述,利用雙向指針連接實(shí)現(xiàn)數(shù)據(jù)庫(kù)跨類查詢。對(duì)于對(duì)象代理數(shù)據(jù)庫(kù),用雙向指針記錄源對(duì)象和代理對(duì)象間的代理關(guān)系,同時(shí)在數(shù)據(jù)庫(kù)查詢語(yǔ)言中使用路徑表達(dá)式來描述跨類查詢,從而達(dá)到了在彼此具有代理關(guān)系的類之間進(jìn)行跨類查詢的目的。
文檔編號(hào)G06F17/30GK101216844SQ200810046608
公開日2008年7月9日 申請(qǐng)日期2008年1月3日 優(yōu)先權(quán)日2008年1月3日
發(fā)明者彭智勇 申請(qǐng)人:彭智勇