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