專利名稱:數(shù)據(jù)庫(kù)個(gè)性化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及使用對(duì)象代理模型實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化的方法。
技術(shù)背景當(dāng)數(shù)據(jù)庫(kù)模式按數(shù)據(jù)內(nèi)在聯(lián)系和用戶公共需求定義后,用戶想要根據(jù)自身需要將公共 數(shù)據(jù)庫(kù)進(jìn)行擴(kuò)充或變更,從而生成個(gè)性化的數(shù)據(jù)空間,要達(dá)到此目的,現(xiàn)有方法是通過(guò)視 圖機(jī)制來(lái)實(shí)現(xiàn)。虛擬視圖是個(gè)虛擬表,其內(nèi)容由査詢來(lái)定義。通過(guò)定義虛擬視圖,用戶得 到來(lái)自不同表的,自己感興趣的那部分?jǐn)?shù)據(jù)。虛擬視圖簡(jiǎn)化了用戶對(duì)數(shù)據(jù)的理解,也簡(jiǎn)化 了用戶的操作,虛擬視圖可以使應(yīng)用程序和數(shù)據(jù)庫(kù)表在一定程度上獨(dú)立。但是,通過(guò)使用 虛擬視圖來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化存在一些不足虛擬視圖難以擴(kuò)展新的屬性,而且當(dāng)虛擬視 圖是建立在多表連接上時(shí),査詢視圖仍然轉(zhuǎn)化為對(duì)多表進(jìn)行費(fèi)時(shí)的連接操作,査詢效率得 不到保證。物化視圖能解決虛擬視圖査詢效率低的問(wèn)題,但增加了數(shù)據(jù)的冗余。 發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種集傳統(tǒng)的虛擬視圖機(jī)制與物化視圖機(jī)制的優(yōu) 勢(shì)于一體并克服其不足,同吋還能根據(jù)用戶興趣追加用戶需要的屬性和方法,這樣一種新 的數(shù)據(jù)庫(kù)個(gè)性化方法。本發(fā)明按下述技術(shù)方案解決其技術(shù)問(wèn)題包括使用計(jì)算機(jī)數(shù)據(jù)庫(kù),其特征是基于對(duì)象代理模型來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化,具體是采 用包括以下步驟的方法(1) 公共數(shù)據(jù)庫(kù)的創(chuàng)建 公共數(shù)據(jù)庫(kù)是指在不考慮用戶個(gè)性化要求的基礎(chǔ)上,根據(jù)數(shù)據(jù)內(nèi)在本質(zhì)聯(lián)系,為實(shí)現(xiàn)系統(tǒng)公共需求所創(chuàng)建的數(shù)據(jù)庫(kù)模式,包括基本類和代理類的創(chuàng)建?;绢惖膭?chuàng)建所創(chuàng)建的基本類不依賴任何其他類,是最基本的類,其所有的屬性都 是實(shí)屬性,并擁有對(duì)該類數(shù)據(jù)進(jìn)行操作的方法。代理類的創(chuàng)建在基本類卜.創(chuàng)建代理類,表現(xiàn)數(shù)據(jù)內(nèi)在的本質(zhì)聯(lián)系和所有用戶的公共 需求。代理類源于一個(gè)或多個(gè)基本類,前者稱為后者的源類;代理類以部分或全部方式繼 承源類的屬性和方法,并可以追加自己的屬性和方法;在代理類上可繼續(xù)創(chuàng)建代理類,它 源于一個(gè)或多個(gè)代理類,或者既源于基本類又源于代理類。(2) 個(gè)性化數(shù)據(jù)空間的創(chuàng)建在公共數(shù)據(jù)庫(kù)的基礎(chǔ)上,通過(guò)創(chuàng)建各種類型的代理類以實(shí)現(xiàn)用戶個(gè)性化需求的數(shù)據(jù)空 間,包括不斷反復(fù)創(chuàng)建基本類和代理類的過(guò)程,直到滿足用戶要求的個(gè)性化數(shù)據(jù)空間創(chuàng)建 好。為了理解本發(fā)明所采用的"基于對(duì)象代理模型實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化",可參見(jiàn)本發(fā)明人先前發(fā)表的有關(guān)《對(duì)象代理模型》的論文(見(jiàn)參考文獻(xiàn)[l]),現(xiàn)簡(jiǎn)單介紹如下。對(duì)象代理模型是為了克服傳統(tǒng)的關(guān)系數(shù)據(jù)模型和面向?qū)ο髷?shù)據(jù)模型的先天不足,通過(guò) 引入代理對(duì)象和代理類的概念,提出的一個(gè)新的數(shù)據(jù)模型。傳統(tǒng)的關(guān)系數(shù)據(jù)模型很難用來(lái) 實(shí)現(xiàn)復(fù)雜數(shù)據(jù)(如多媒體數(shù)據(jù)等)管理。而面向?qū)ο髷?shù)據(jù)模型盡管可以很好的表現(xiàn)復(fù)雜對(duì) 象的豐富語(yǔ)義,但是在靈活性及模擬現(xiàn)實(shí)實(shí)體的多面性和動(dòng)態(tài)性方面還存在著嚴(yán)重的缺 陷。對(duì)象代理模型的提出就是為了集成關(guān)系數(shù)據(jù)模型的靈活性和面向?qū)ο髷?shù)據(jù)模型的豐富 語(yǔ)義,提供一個(gè)統(tǒng)一的對(duì)象視圖、角色和移動(dòng)的實(shí)現(xiàn),以滿足復(fù)雜數(shù)據(jù)管理的需要。對(duì)象代理模型的核心在于允許一個(gè)對(duì)象具有多個(gè)代理對(duì)象或多個(gè)對(duì)象共享一個(gè)代理 對(duì)象。對(duì)象與其代理對(duì)象之間存在雙向指針。代理對(duì)象繼承其源對(duì)象的屬性和方法,并可 以追加新的屬性和方法。繼承通過(guò)切換操作實(shí)現(xiàn),繼承的屬性不存儲(chǔ)實(shí)際數(shù)據(jù),這樣以來(lái), 不但節(jié)省了空間,同時(shí)還能通過(guò)指針直接得到數(shù)據(jù),也就保證了效率。它還可改變對(duì)象的 屬性和操作方法,這方便了用戶實(shí)現(xiàn)自己的個(gè)性化要求。另外,對(duì)象更新遷移能夠保證對(duì) 象代理約束關(guān)系。對(duì)象代理模型的這些特征使其在數(shù)據(jù)庫(kù)層面上實(shí)現(xiàn)基于用戶需求的個(gè)性 化具有先天的優(yōu)勢(shì)。本發(fā)明與現(xiàn)有技術(shù)相比具有以下的主要突出優(yōu)點(diǎn)本方法利用對(duì)象代理模型來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化。這種方法和傳統(tǒng)的虛擬視圖機(jī)制與物 化視圖機(jī)制比較,允許用戶在數(shù)據(jù)庫(kù)個(gè)性化過(guò)程中,根據(jù)需要追加新的數(shù)據(jù)屬性和操作方 法。同時(shí),此方法既減少了數(shù)據(jù)冗余,又提高了查詢效率。
圖1為源對(duì)象與代理對(duì)象的切換操作的示意圖。
具體實(shí)施方式
本發(fā)明提供的是基于對(duì)象代理模型來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化,包括使用計(jì)算機(jī)數(shù)據(jù)庫(kù),具體是采用包括以下步驟的方法(1) 公共數(shù)據(jù)庫(kù)的創(chuàng)建 公共數(shù)據(jù)庫(kù)是指在不考慮用戶個(gè)性化要求的基礎(chǔ)上,根據(jù)數(shù)據(jù)內(nèi)在本質(zhì)聯(lián)系,為實(shí)現(xiàn)用戶公共需求所創(chuàng)建的數(shù)據(jù)庫(kù)模式,包括基本類和代理類的創(chuàng)建,基本類的創(chuàng)建所創(chuàng)建的基本類不依賴任何其他類,是最基本的類,其所有的屬性都 是實(shí)屬性,并擁有對(duì)該類數(shù)據(jù)進(jìn)行操作的方法;代理類的創(chuàng)建在基本類上創(chuàng)建代理類,代理類源于一個(gè)或多個(gè)基本類,前者稱為后 者的源類;代理類以部分或全部方式繼承源類的屬性和方法,并可以追加自己的屬性和方 法;在代理類上可繼續(xù)創(chuàng)建代理類,它源于一個(gè)或多個(gè)代理類,或者既源于基本類又源于 代理類;(2) 個(gè)性化數(shù)據(jù)空間的創(chuàng)建在公共數(shù)據(jù)庫(kù)的基礎(chǔ)上,通過(guò)創(chuàng)建各種類型的代理類以實(shí)現(xiàn)用戶個(gè)性化需求的數(shù)據(jù)空 間,包括不斷反復(fù)創(chuàng)建基本類和代理類的過(guò)程,直到滿足用戶要求的個(gè)性化數(shù)據(jù)空間創(chuàng)建 好。本發(fā)明可采用以下方法創(chuàng)建基本類,包括定義類名、屬性名和屬性類型;建立約束; 創(chuàng)建操作方法、定義操作方法的名稱、參數(shù)類型、返回類型以及函數(shù)體。本發(fā)明可X用以下方法創(chuàng)建代理類,包括定義代理類名、代理類型、實(shí)屬性、操作 方法以及代理規(guī)則。定義一個(gè)代理類需要一個(gè)代理規(guī)則來(lái)定義對(duì)源類進(jìn)行的間接變換,允許四種含語(yǔ)義約 束的代理規(guī)則,分別為選擇,合并,連接和分組代理(1) 選擇型代理類只從一個(gè)類中選擇源對(duì)象進(jìn)行代理,這種代理用來(lái)為一個(gè)源類 中滿足選擇條件的一部分源對(duì)象生成代理對(duì)象;(2) 合并型代理類將若干個(gè)選擇代理的結(jié)果并在一個(gè)代理類中,即為兩個(gè)或兩個(gè) 以上的源類的并集生成代理類;(3) 連接型代理類在幾個(gè)類的連接結(jié)果中進(jìn)行代理,即由兩個(gè)或兩個(gè)以上的源類 按照連接條件進(jìn)行連接生成的代理類,它用于為多個(gè)類的連接結(jié)果生成代理對(duì)象;(4) 分組型代理類在一個(gè)類上進(jìn)行分組,為每個(gè)滿足分組條件的集合生成代理對(duì)象。代理對(duì)象的生成過(guò)程即為個(gè)性化數(shù)據(jù)空間中生成數(shù)據(jù)的過(guò)程,包括(1) 創(chuàng)建代理類時(shí),檢査其源類中是否有滿足代理類的代理規(guī)則的對(duì)象;如果存在 這樣的對(duì)象,在新創(chuàng)建的代理類中生成若干對(duì)象作為這些對(duì)象的代理對(duì)象,即源類中滿足 某個(gè)代理類的代理規(guī)則的對(duì)象會(huì)自動(dòng)生成其代理對(duì)象插入到這個(gè)代理類中;(2) 向源類中插入對(duì)象時(shí),先檢査對(duì)象是否滿足某個(gè)代理類的代理規(guī)則,如果存在 這樣的代理類,則在代理類屮生成這個(gè)對(duì)象的代理對(duì)象,即新插入的對(duì)象會(huì)自動(dòng)生成代理 對(duì)象插入到滿足代理規(guī)則的代理類中;(3) 當(dāng)一個(gè)對(duì)象被更新后,看它是否還滿足已有其代理對(duì)象的代理類的代理規(guī)則, 如果不滿足要在代理類中刪除這個(gè)代理對(duì)象;還看它是否滿足更新前沒(méi)有其代理對(duì)象的代 理類的代理規(guī)則,如果更新后滿足,要在代理類中新建這個(gè)對(duì)象的代理對(duì)象并插入其中。代理對(duì)象根據(jù)代理規(guī)則從源對(duì)象中選擇性地繼承部分屬性和方法,同時(shí)也定義屬于代 理對(duì)象本身的擴(kuò)展屬性和方法;代理對(duì)象中繼承自源對(duì)象的屬性是不占有任何存儲(chǔ)空間 的,稱為"虛屬性",代理對(duì)象的擴(kuò)展屬性擁有自己的存儲(chǔ)空間,稱為"實(shí)屬性"。當(dāng)對(duì)代理對(duì)象的虛屬性進(jìn)行讀或?qū)懖僮鲿r(shí),系統(tǒng)實(shí)際上是通過(guò)一種稱為"切換操作" 的特殊方法,來(lái)讀寫其源對(duì)象中相應(yīng)屬性的值,通過(guò)切換操作,代理類將源類的數(shù)據(jù)進(jìn)行 各種語(yǔ)義形式上的變換。下面結(jié)合具體實(shí)例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不限定本發(fā)明。本發(fā)明的具體實(shí)施方案是以對(duì)象代理數(shù)據(jù)庫(kù)TOTEM為例,來(lái)描述通過(guò)建立基本類和 代理類的方式實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化的方法。對(duì)象代理數(shù)據(jù)庫(kù)TOTEM是基于對(duì)象代理模型研 制的一種數(shù)據(jù)庫(kù)管理系統(tǒng)。它提供對(duì)象代理數(shù)據(jù)庫(kù)語(yǔ)言,用于定義基本類和代理類,創(chuàng)建 滿足用戶個(gè)人需要的數(shù)據(jù)空間,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的個(gè)性化。(1)定義基本類基本類就是不依賴其他類所定義的類,其所有的屬性都是實(shí)屬性。在對(duì)象代理數(shù)據(jù)庫(kù) 系統(tǒng)中,它們是最先被創(chuàng)建出來(lái)的類,用來(lái)存儲(chǔ)大部分的實(shí)際數(shù)據(jù),是其它各種代理類的 代理基礎(chǔ)?;绢愒趯?duì)象代理數(shù)據(jù)庫(kù)中類似于關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系表,但是它擁有操作所屬類數(shù) 據(jù)的方法?;绢惖亩x過(guò)程包括定義類名、屬性名和屬性類型;建立約束,如屬性是 否允許為空,屬性的缺省值等;創(chuàng)建操作方法、定義操作方法的名稱、參數(shù)類型、返回類 型以及凼數(shù)體。其形式定義如下CREATECLASS〈class—name〉([ATTRIBUTE]({<column><type〉<attr_constrain>",[<class—constrain〉]) [METHOD {<method—defmition>}];其中<class—name〉 類的名字;<column>:屬性名;<tWe>:屬性的數(shù)據(jù)類型;<attr—constraint各種列約束語(yǔ)句;<class_constmin〉各種類(表)約束語(yǔ)句;<method—defmition>:操作方法定義子句。一個(gè)操作方法定義子句中可以有多個(gè)方法定義體,它們之間用逗號(hào)隔開(kāi)。如果不需要 操作方法,則省略操作方法定義子句。操作方法定義體和數(shù)據(jù)庫(kù)系統(tǒng)中定義函數(shù)的語(yǔ)句類 似。其形式定義如下<method—definition>::=<method—name>({<parameter—type>})RETURNS<return—type〉A(chǔ)S'<method—body>'LANGUAGE' <language>'g巾-<method—name>: 操作方法名; <parameter—type>:函數(shù)參數(shù)的數(shù)據(jù)類型表; <retum—type〉函數(shù)返回的結(jié)果類型; <method_body>:操作方法體(程序代碼); <language>:操作方法體所使用的程序語(yǔ)言;例1:定義一個(gè)基本類person表示所有的人。它有4個(gè)屬性和一個(gè)方法person—age(用 當(dāng)前的年份減去出生的年份,計(jì)算人的年齡)。 CREATE PUBLIC CLASS person ATTRIBUTE(name CHAR() NOT NULL UNIQUE,sex CHAR NOT NULL ,birth INT, address CHAR(20),)METHOD(CREATE person—age(INT) RETURNS INT AS 'select CURYEAR—S1 :: INTEGER' LANGUAGE 'sql,);(注CURYEAR表示當(dāng)前的年份) (2)定義代理類代理類的定義基于對(duì)象代理代數(shù),它包括以下六種操作a. 選擇操作用于從一個(gè)源類派生一個(gè)代理類,其實(shí)例為源類中根據(jù)選擇謂詞選擇的 實(shí)例的代理對(duì)象;b. 合并操作用于派生一個(gè)代理類,其外延由多個(gè)不同源類實(shí)例的代理對(duì)象組成;c. 連接操作用于從多個(gè)源類派生一個(gè)代理類,其實(shí)例是根據(jù)連接謂詞連接源類的實(shí) 例而產(chǎn)生的代理對(duì)象;d. 分組操作用于派生一個(gè)代理類,它的每個(gè)實(shí)例都是對(duì)源類中的對(duì)象根據(jù)分組謂詞 進(jìn)行分組而產(chǎn)生的一個(gè)代理對(duì)象-,e. 投影操作用于選擇性地從源類繼承部分屬性和操作方法而派生代理類;f. 擴(kuò)展操作的作用是在派生代理類時(shí),為其實(shí)例增加額外的屬性和操作方法; 通過(guò)對(duì)象代理代數(shù)操作,可以定義以下四種類型的代理類。(1) 選擇型代理類只從一個(gè)類中選擇源對(duì)象進(jìn)行代理,這種代理用來(lái)為-^個(gè)源類中 滿足某一選擇條作的 一部分源對(duì)象生成代理對(duì)象;(2) 合并型代理類將若干個(gè)選擇代理的結(jié)果并在一個(gè)代理類中,即為兩個(gè)或兩個(gè)以 上的源類的并集生成代理類;(3) 連接型代理類在幾個(gè)類的連接結(jié)果中進(jìn)行代理,即由兩個(gè)或兩個(gè)以上的源類按 照某個(gè)連接條件進(jìn)行連接生成的代理類,它用于為多個(gè)類的連接結(jié)果生成代理對(duì)象;(4) 分組型代理類在一個(gè)類上進(jìn)行分組,為每個(gè)滿足分組條件的集合生成代理對(duì)象。 代理類的定義包括定義代理類名、代理類型、實(shí)屬性、操作方法以及代理規(guī)則。其定義形式如下 CREATESELECTDEPUTYCXASSJ0INDEPUTYCLASS1 UNIONDEPUTYCLASS|GROUPDEPUTYCLASS<class—name>[[ATTRIBUTE]({<column><type>[attr—constrain]} ,[<class—constrain>])]AS<deputy—rule>;[METHOD {<method—definition" J[WHITE ( {somce.attr = expression})]WRITE子句用來(lái)定義寫操作。它是一個(gè)等式,左邊為源屬性,右邊為其對(duì)應(yīng)虛屬性 的表達(dá)式。定義中,alassjame〉前的四個(gè)關(guān)鍵字分別對(duì)應(yīng)了四種代理類型。"ATTRIBUTE"子句 定義代理類的實(shí)屬性,如果不進(jìn)行屬性擴(kuò)展則省略該子句。定義代理類必須有代理規(guī)則, 它是一個(gè)滿足一定條件的select語(yǔ)句。具體定義如下<deputy—rule>::=<select—deputy—rule><join—deputy—rule>|<union—deputy—rule>|<group—deputy—rule>選擇代理規(guī)則的形式<select—deputy—mle>::=SELECT<expr> {,<expr>}FROM<source—class—name>WHERE<condition>連接代理規(guī)則的形式<join—deputy—rule>::= SELECT<expr> {,<expr>}FROM<source—class—name>{,<source—class—nam e>} WHERE<conditon>合并代理規(guī)則的形式<union—deputy—rule>::=<select—deputy—rule> {UNION<select—deputy—rule>}分組代理規(guī)則的形式 <group—deputy—rule>::= SELECT<expr> {,<expr>} FROM<source—class—nam e> GROUPBY<attr—name〉{,<attr—name>} [HAVING<condition>]其中<source—class—name>:被代理的源類的名字。 <conditon>:條件表達(dá)式。<eXpr>:目標(biāo)表達(dá)式。它定義了虛屬性的模式,及其對(duì)源屬性的切換操作。切換操作(switching operation)是為實(shí)現(xiàn)虛屬性讀寫所設(shè)計(jì)的一種特殊的方法。切換 操作屬于代理類中虛屬性模式的一部分,當(dāng)用戶對(duì)某個(gè)虛屬性發(fā)出讀寫請(qǐng)求時(shí),系統(tǒng)實(shí)際 上是通過(guò)調(diào)用對(duì)應(yīng)的切換操作來(lái)讀寫其對(duì)應(yīng)的源對(duì)象中的屬性值。用戶査詢時(shí),可通過(guò)指 針直接取到數(shù)據(jù),這樣即便代理類對(duì)應(yīng)多個(gè)源類,查詢時(shí)也不需要連接操作,而是通過(guò)指 針直接取數(shù)據(jù),大幅度提高了查詢性能。切換操作分為讀操作(read switching)和寫操作(write switching)。讀操作用來(lái)讀取源屬性的值,而寫操作可以修改源屬性的值。注意,任何虛屬性都有讀操作,但是不一定有S操作。如果一個(gè)虛屬性上沒(méi)有定義寫操作,那么該屬性是只讀的。如圖1所示,代理對(duì)象中的虛屬性D1, D2分別代理源對(duì)象中的屬性Sl, S2。其中 Dl上定義了讀操作readl和寫操作writel,因此D1即可讀又可寫;D2上只定義了讀操作 read2,因此它是只讀的。Al為代理對(duì)象附加的實(shí)屬性,丙此不需要定義任何切換操作。 ^用戶査詢D1時(shí),實(shí)際上看到的是readl (Sl)的值,而用戶在Dl上進(jìn)行更新時(shí),實(shí)際 上是將Sl更新為wrilel (Dl)的值。切換操作的定義實(shí)際上是代理類定義的 一 部分。讀操作的定義是在定義代理規(guī)則時(shí)隱 含的完成的。代理規(guī)則是一個(gè)查詢命令,而代理規(guī)則的目標(biāo)表達(dá)式列表,實(shí)際上定義了代 理類的各個(gè)虛屬性的讀操作。寫操作對(duì)于虛屬性而言是可選的,因此由專門的WRITE子 句來(lái)定義。例2:為person(人)建立一個(gè)選擇型代理類adult表示所有的成年人。它選擇所有年齡 大于18的人,直接繼承其name(姓名),sex(性別)屬性,并且由函數(shù)調(diào)用生成了 age(年齡) 虛屬性CREATE SELECTDEPUTYCLASS adult AS SELECT name, sex, person—age(birth) AS age FROM personWHERE 18 <= person—age (birth);例3:在adult(成年人)上再建立一個(gè)選擇代理類undergraduate表示本科生。實(shí)屬性 college表示學(xué)校名,major表示學(xué)生的專業(yè)。繼承了 name(姓名)屬性。并且用年齡減去18 作為虛屬性grade(年級(jí))CREATE SELECTDEPUTYCLASS undergraduateATTRIBUTE(college CHAR(), major CHAR()) ASSELECT name, (age — 18) AS grade FROM adultWHERE 19<= age <= 22。)數(shù)據(jù)庫(kù)個(gè)性化的實(shí)現(xiàn)過(guò)程包括a. 公共數(shù)據(jù)庫(kù)的創(chuàng)建。這里所說(shuō)的公共數(shù)據(jù)庫(kù)是指在表現(xiàn)數(shù)據(jù)內(nèi)在本質(zhì)聯(lián)系的基礎(chǔ)上,實(shí)現(xiàn)所有用戶公共需求所創(chuàng)建的公共數(shù)據(jù)庫(kù)模式。包括基本類和代理類的創(chuàng)建。b. 個(gè)性化數(shù)據(jù)空間的創(chuàng)建。在公共數(shù)據(jù)庫(kù)的基礎(chǔ)上,通過(guò)創(chuàng)建基本類及各種類型的 代理類,建立數(shù)據(jù)空間,以實(shí)現(xiàn)用戶個(gè)性化需求。包括不斷反復(fù)創(chuàng)建基本類和代理類的過(guò) 程,代理類上還可以建立代理類,直到滿足用戶要求的個(gè)性化數(shù)據(jù)空間創(chuàng)建好。 參考文獻(xiàn)[l]彭智勇,上林彌彥,面向?qū)ο髷?shù)據(jù)庫(kù)代理機(jī)制,美國(guó)電子電氣工程學(xué)會(huì)第十一屆國(guó)際數(shù)據(jù)工程學(xué)術(shù)會(huì)議論文集,333至340頁(yè),1995年(Zhiyong Peng, Yahiko Kambayashi, Deputy Mechanisms for 0bject-0riented Databases, Proc. of IEEE 11th International Conference on Data Engineering, pp. 333-340, 1995.)
權(quán)利要求
1.一種數(shù)據(jù)庫(kù)個(gè)性化方法,包括使用計(jì)算機(jī)數(shù)據(jù)庫(kù),其特征是基于對(duì)象代理模型來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化,具體是采用包括以下步驟的方法(1)公共數(shù)據(jù)庫(kù)的創(chuàng)建公共數(shù)據(jù)庫(kù)是指在不考慮用戶個(gè)性化要求的基礎(chǔ)上,根據(jù)數(shù)據(jù)內(nèi)在本質(zhì)聯(lián)系,為實(shí)現(xiàn)用戶公共需求所創(chuàng)建的數(shù)據(jù)庫(kù)模式,包括基本類和代理類的創(chuàng)建,基本類的創(chuàng)建所創(chuàng)建的基本類不依賴任何其他類,是最基本的類,其所有的屬性都是實(shí)屬性,并擁有對(duì)該類數(shù)據(jù)進(jìn)行操作的方法;代理類的創(chuàng)建在基本類上創(chuàng)建代理類,代理類源于一個(gè)或多個(gè)基本類,前者稱為后者的源類;代理類以部分或全部方式繼承源類的屬性和方法,并可以追加自己的屬性和方法;在代理類上可繼續(xù)創(chuàng)建代理類,它源于一個(gè)或多個(gè)代理類,或者既源于基本類又源于代理類;(2)個(gè)性化數(shù)據(jù)空間的創(chuàng)建在公共數(shù)據(jù)庫(kù)的基礎(chǔ)上,通過(guò)創(chuàng)建各種類型的代理類以實(shí)現(xiàn)用戶個(gè)性化需求的數(shù)據(jù)空間,包括不斷反復(fù)創(chuàng)建基本類和代理類的過(guò)程,直到滿足用戶要求的個(gè)性化數(shù)據(jù)空間創(chuàng)建好。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫(kù)個(gè)性化方法,其特征是采用以下方法創(chuàng)建基本類,包 括定義類名、屬性名和屬性類型;建立約束;創(chuàng)建操作方法、定義操作方法的名稱、參 數(shù)類型、返回類型以及函數(shù)體。
3. 根據(jù)權(quán)利耍求1所述的數(shù)據(jù)庫(kù)個(gè)性化方法,其特征是采用以下方法創(chuàng)建代理類,包 括定義代理類名、代理類型、實(shí)屬性、操作方法以及代理規(guī)則。
4. 根據(jù)權(quán)利要求3所述的數(shù)據(jù)庫(kù)個(gè)性化方法,其特征在于定義一個(gè)代理類需要一個(gè)代理規(guī)則來(lái)定義對(duì)源類進(jìn)行的間接變換,允許四種含語(yǔ)義約 束的代理規(guī)則,分別為選擇,合并,連接和分組代理(1) 選擇型代理類只從一個(gè)類中選擇源對(duì)象進(jìn)行代理,這種代理用來(lái)為一個(gè)源類 中滿足選擇條件的 -部分源對(duì)象生成代理對(duì)象;(2) 合并型代理類將若干個(gè)選擇代理的結(jié)果并在一個(gè)代理類屮,即為兩個(gè)或兩個(gè) 以上的源類的并集生成代理類;(3) 連接型代理類在幾個(gè)類的連接結(jié)果中進(jìn)行代理,即由兩個(gè)或兩個(gè)以上的源類 按照連接條件進(jìn)行連接生成的代理類,它用于為多個(gè)類的連接結(jié)果牛成代理對(duì)象;(4) 分組型代理類在一個(gè)類上進(jìn)行分組,為每個(gè)滿足分組條件的集合生成代理對(duì)象。
5. 根據(jù)權(quán)利要求4所述的數(shù)據(jù)庫(kù)個(gè)性化方法,其特征在于代理對(duì)象的生成過(guò)程即為個(gè)性化數(shù)據(jù)空間中生成數(shù)據(jù)的過(guò)程,包括(1)創(chuàng)建代理類時(shí),檢査其源類中是否有滿足代理類的代理規(guī)則的對(duì)象;如果存在這樣的對(duì)象,在新創(chuàng)建的代理類中生成若干對(duì)象作為這些對(duì)象的代理對(duì)象,即源類中滿足 某個(gè)代理類的代理規(guī)則的對(duì)象會(huì)自動(dòng)生成其代理對(duì)象插入到這個(gè)代理類中;(2) 向源類中插入對(duì)象時(shí),先檢查對(duì)象是否滿足某個(gè)代理類的代理規(guī)則,如果存在 這樣的代理類,則在代理類中生成這個(gè)對(duì)象的代理對(duì)象,即新插入的對(duì)象會(huì)fi動(dòng)生成代理 對(duì)象插入到滿足代理規(guī)則的代理類中;(3) 當(dāng)一個(gè)對(duì)象被更新后,看它是否還滿足已有其代理對(duì)象的代理類的代理規(guī)則, 如果不滿足要在代理類中刪除這個(gè)代理對(duì)象;還看它是否滿足更新前沒(méi)有其代理對(duì)象的代 理類的代理規(guī)則,如果更新后滿足,要在代理類中新建這個(gè)對(duì)象的代理對(duì)象并插入其中。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)庫(kù)個(gè)性化方法,其特征在于代理對(duì)象根據(jù)代理規(guī)則從源對(duì)象中選擇性地繼承部分屬性和方法,同時(shí)也定義屬于代 理對(duì)象本身的擴(kuò)展屬性和方法;代理對(duì)象中繼承自源對(duì)象的屬性是不占有任何存儲(chǔ)空間 的,稱為"虛屬性",代理對(duì)象的擴(kuò)展屬性擁有自己的存儲(chǔ)空間,稱為"實(shí)屬性"。
7. 根據(jù)權(quán)利要求6所述的數(shù)據(jù)庫(kù)個(gè)性化方法,其特征在于當(dāng)對(duì)代理對(duì)象的虛屬性進(jìn)行讀或?qū)懖僮鲿r(shí),系統(tǒng)實(shí)際上是通過(guò)一種稱為"切換操作" 的特殊方法,來(lái)讀寫其源對(duì)象中相應(yīng)屬性的值,通過(guò)切換操作,代理類將源類的數(shù)據(jù)進(jìn)行 各種語(yǔ)義形式上的變換。
全文摘要
本發(fā)明公開(kāi)的是一種使用計(jì)算機(jī)數(shù)據(jù)庫(kù)并且基于對(duì)象代理模型來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)個(gè)性化,具體是采用包括公共數(shù)據(jù)庫(kù)的創(chuàng)建和個(gè)性化數(shù)據(jù)空間的創(chuàng)建,其中,公共數(shù)據(jù)庫(kù)的創(chuàng)建包括基本類和代理類的創(chuàng)建;在公共數(shù)據(jù)庫(kù)的基礎(chǔ)上,通過(guò)創(chuàng)建各種類型的代理類以實(shí)現(xiàn)用戶個(gè)性化需求的數(shù)據(jù)空間,包括不斷反復(fù)創(chuàng)建基本類和代理類的過(guò)程,直到滿足用戶要求的個(gè)性化數(shù)據(jù)空間創(chuàng)建好。本發(fā)明通過(guò)代理對(duì)象能對(duì)公共數(shù)據(jù)庫(kù)靈活的進(jìn)行間接的拆分與重組,并能根據(jù)用戶的需求任意擴(kuò)展新的屬性和操作方法形成新的數(shù)據(jù)模式,同時(shí)還有效的同時(shí)解決了虛擬視圖存在查詢效率低和物化視圖存在數(shù)據(jù)冗余的問(wèn)題。
文檔編號(hào)G06F17/30GK101241503SQ200810046610
公開(kāi)日2008年8月13日 申請(qǐng)日期2008年1月3日 優(yōu)先權(quán)日2008年1月3日
發(fā)明者彭智勇 申請(qǐng)人:彭智勇