專利名稱:面向?qū)ο髽?biāo)識方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫,具體而言,涉及一種面向?qū)ο髽?biāo)識方法。
背景技術(shù):
在關(guān)系數(shù)據(jù)庫理論和面向?qū)ο蠓椒ㄖ行枰褂脤ο髽?biāo)識技術(shù)。關(guān)系數(shù)據(jù)庫理論的三個要素是實體、實體屬性和實體之間的關(guān)系。通常地,一個實體對應(yīng)于一個表中的一條記錄,實體的一個屬性對應(yīng)于記錄中的一個字段,其中一個特定的屬性能起到唯一標(biāo)識一個實體的作用,稱為主鍵。而兩個實體之間的關(guān)系是通過一個實體的一個屬性值(成為外鍵)和另一個實體的主鍵值相等的方式來建立。
針對數(shù)據(jù)庫主鍵的設(shè)計,通常采用兩種方案。
一是采用有業(yè)務(wù)含義的字段作主鍵,比如客戶的身份證號,訂單的編號。這種方案針對每個表的特點分別不同格式和長度的主鍵,因而可以節(jié)省存儲空間并且可以提高關(guān)聯(lián)查詢的性能,但壞處也是顯而易見的在系統(tǒng)的生命周期中一旦主鍵字段的規(guī)則發(fā)生變化會造成災(zāi)難性的后果,這一點相信有企業(yè)應(yīng)用開發(fā)經(jīng)驗的讀者都有共識。并且這種主鍵格式不一,不能體現(xiàn)為對所有對象統(tǒng)一的標(biāo)識,所以不能滿足面向?qū)ο蠓椒ǖ男枰?br> 二是另外設(shè)計一個ID字段來作為主鍵,這個ID的值沒有任何含義,只要保證其取值唯一即可。可以把這種方案稱為“ID模式”,它解決了前一方案的問題,目前越來越成為企業(yè)應(yīng)用開發(fā)的主流。
但是ID模式在很多情況下并不完美。以面向?qū)ο蟮挠^點來看,無任何含義的ID通常只在一個數(shù)據(jù)表的范疇內(nèi)進(jìn)行數(shù)據(jù)記錄的區(qū)分,而不能描述一個全局性的對象體系架構(gòu)。
另一方面,在面向?qū)ο蠓椒ㄖ校ǔτ嬎銠C程序中的對象的標(biāo)識使用其地址值來實現(xiàn),而對象之間的關(guān)系也通過使用指針或引用等來體現(xiàn)。
在關(guān)系數(shù)據(jù)庫中,對象標(biāo)識和對象關(guān)系表達(dá)目前主要采用GUID(全局唯一標(biāo)識,Globally Unique Identifier)技術(shù)和O/RMapping(對象-關(guān)系映射,object-relational mapping)技術(shù)。
GUID技術(shù)使用隨機生成的一個數(shù)字GUID來作為數(shù)據(jù)的主鍵,因為GUID非常大,可以在理論上保證在系統(tǒng)中生成的各個主鍵值是唯一的。但GUID的主要缺點是不包含有價值的信息性,不能實現(xiàn)體現(xiàn)面向?qū)ο蟮膬?yōu)點,并且難以實現(xiàn)有效的管理。
O/R Mapping技術(shù)是用于構(gòu)建關(guān)系數(shù)據(jù)庫和對象之間關(guān)系映射的技術(shù)。O/R Mapping技術(shù)并不考慮數(shù)據(jù)庫結(jié)構(gòu)本身的改良,而是試圖在一個已經(jīng)有的數(shù)據(jù)庫結(jié)構(gòu)上和程序開發(fā)的類和對象之間建立松散的耦合關(guān)聯(lián)。
GUID的主要缺點是不包含有價值的信息性,不能實現(xiàn)體現(xiàn)面向?qū)ο蟮膬?yōu)點,并且難以實現(xiàn)有效的管理。獲取到一個GUID,并不能簡單地知道它是什么類。要記錄一個全局性的所有的對象的GUID和它們所屬有類之間的對應(yīng)關(guān)系需要非常大的一張表,這事實上是不可行的。
將編程的對象和數(shù)據(jù)庫對應(yīng)起來,就是基本的O/R Mapping的思想。其缺點是O/R Mapping技術(shù)并不考慮數(shù)據(jù)庫結(jié)構(gòu)本身的改良,而是在一個已經(jīng)有的數(shù)據(jù)庫結(jié)構(gòu)上和面向?qū)ο蟮某绦蚪Y(jié)合起來,將數(shù)據(jù)庫操作的SQL語句轉(zhuǎn)變成了面向?qū)ο蟮恼Z句,主要是一種語法便利而不能帶來更深刻的思想變化,具體應(yīng)用效果也會受到很大的限制。如果數(shù)據(jù)庫本身沒有一種面向?qū)ο蟮奈锢斫Y(jié)構(gòu)設(shè)計,那么O/R Mapping到后邊會無法實現(xiàn)有價值的東西,而且造成O/RMapping內(nèi)部結(jié)構(gòu)復(fù)雜。
另一方面,O/R Mapping是靜態(tài)的,需要在編譯前生成代碼。
在采用面向?qū)ο蠓椒ǖ拿嫦驅(qū)ο髷?shù)據(jù)庫中,對象標(biāo)識和對象關(guān)系表達(dá)是完備的,保證了對象標(biāo)識的統(tǒng)一性、全局性和多態(tài)性。而關(guān)系數(shù)據(jù)庫中則沒有對等的方法。通常地,關(guān)系數(shù)據(jù)庫設(shè)計的主鍵是面向表的,一個主鍵值在一個表的范圍內(nèi)唯一,并不在整個系統(tǒng)內(nèi)唯一。以面向?qū)ο蟮挠^點來看,這樣的標(biāo)識不能描述一個全局性的對象體系架構(gòu)。
發(fā)明內(nèi)容本發(fā)明旨在提供本發(fā)明提供了一種面向?qū)ο髽?biāo)識方法,用于以面向?qū)ο蠓绞綐?biāo)識數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫包括多個包括業(yè)務(wù)信息的數(shù)據(jù),每個數(shù)據(jù)的業(yè)務(wù)信息相對獨立,包括以下步驟對每個數(shù)據(jù)設(shè)置ID作為主鍵,以將多個數(shù)據(jù)映射成相互獨立的對象。
在一個復(fù)雜的系統(tǒng)中,管理的實體對象種類往往非常多,而且相互之間關(guān)系復(fù)雜,更主要的是這些實體種類和相互之間關(guān)系的規(guī)則都可能隨時發(fā)生變化,這種情況下非常適合于本發(fā)明的應(yīng)用。
本發(fā)明中的技術(shù)在這個系統(tǒng)中應(yīng)用后,效果非常好,使系統(tǒng)結(jié)構(gòu)非常清晰、易于管理和擴(kuò)展。由此可知,本發(fā)明的可行性得到充分的驗證,前邊所描述的各種優(yōu)點也得到很好的體現(xiàn)。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求
書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1示出了根據(jù)本發(fā)明第二實施例的數(shù)據(jù)庫結(jié)構(gòu)示意圖。
具體實施方式下面將參考附圖詳細(xì)說明本發(fā)明。值得注意的是,下面描述本發(fā)明雖然部分內(nèi)容是針對關(guān)系數(shù)據(jù)庫進(jìn)行闡述,但是本發(fā)明顯然可應(yīng)用于其他數(shù)據(jù)庫。另外,在本發(fā)明中,數(shù)據(jù)庫不限定于數(shù)據(jù)表集合本身,應(yīng)當(dāng)包括數(shù)據(jù)庫產(chǎn)品以及以關(guān)系數(shù)據(jù)庫為中心的設(shè)計和開發(fā),例如涉及中間件開發(fā)、應(yīng)用軟件開發(fā)等。本發(fā)明可主要應(yīng)用于關(guān)系數(shù)據(jù)庫產(chǎn)品的設(shè)計和圍繞關(guān)系數(shù)據(jù)庫為核心的應(yīng)用軟件開發(fā)。
根據(jù)本發(fā)明的實施例,提供了一種面向?qū)ο髽?biāo)識方法,用于以面向?qū)ο蠓绞綐?biāo)識數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫包括多個包括業(yè)務(wù)信息的數(shù)據(jù),每個數(shù)據(jù)的業(yè)務(wù)信息相對獨立,本方法包括以下步驟對每個數(shù)據(jù)設(shè)置ID作為主鍵,以將多個數(shù)據(jù)映射成相互獨立的對象。
對每個對象設(shè)置ID可包括以下步驟將每個ID均設(shè)置成在整個數(shù)據(jù)庫中是唯一的。
可以在整個數(shù)據(jù)庫中采用統(tǒng)一的規(guī)則和數(shù)據(jù)類型來設(shè)置每個ID。
在整個數(shù)據(jù)庫中采用統(tǒng)一的規(guī)則和數(shù)據(jù)類型來設(shè)置每個ID可包括以下步驟將ID設(shè)置為長度為N+M位的整數(shù)或字符,其中,N和M均為大于0的正整數(shù),N位代表類標(biāo)識,M位代表對象標(biāo)識,類標(biāo)識用于標(biāo)識自己所屬的類,對象標(biāo)識用于在這個類的多個對象實例中唯一地標(biāo)識自己。
根據(jù)本發(fā)明的實施例,將ID設(shè)置為128位二進(jìn)制表示的整數(shù),其中N=64,M=64。ID設(shè)置為二進(jìn)制或十進(jìn)制表示的整數(shù),其中整個ID的值不超過64位的二進(jìn)制數(shù)。
在上述的面向?qū)ο髽?biāo)識方法中,還可包括以下步驟通過設(shè)置外鍵的值等于主鍵的值,以映射多個對象之間的關(guān)系。
例如,通過設(shè)置外鍵的值等于主鍵的值來在兩者之間建立關(guān)聯(lián)包括以下步驟通過在外鍵中存儲主鍵,外鍵不重復(fù),以映射多個對象之間的1∶1關(guān)系;或者通過在外鍵中存儲主鍵,外鍵有重復(fù),以映射多個對象之間的1∶多關(guān)系;或者設(shè)置關(guān)系表,其中含有多個外鍵來存儲多類對象的主鍵,外鍵有重復(fù),以映射多個對象之間的多∶多關(guān)系。
本發(fā)明以這種統(tǒng)一形式的兩段式標(biāo)識作為主鍵來進(jìn)行數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的標(biāo)識,使系統(tǒng)中的數(shù)據(jù)可唯一識別并形成面向?qū)ο蟮淖R別體系。這種標(biāo)識全局、簡單、可識別、易于管理。
這個標(biāo)識的形式是面向?qū)ο蟮?,它包含了類?biāo)識和對象標(biāo)識的信息,在一個系統(tǒng)內(nèi)可全局唯一識別。在存儲上它體現(xiàn)為一個單值,易于處理。
本發(fā)明可提供一種數(shù)據(jù)結(jié)構(gòu),用來記錄已經(jīng)被分配使用的類標(biāo)識,以及每個類標(biāo)識對應(yīng)的已分配對象標(biāo)識的和可用的對象標(biāo)識。針對數(shù)據(jù)量過大的問題也可以將記錄優(yōu)化為用一個最小標(biāo)識值和最大標(biāo)識值的數(shù)據(jù)對來記錄一段標(biāo)識值。
在上述的面向?qū)ο髽?biāo)識方法中,還可包括以下步驟描述類標(biāo)識和類之間的映射關(guān)系,類和表之間的映射關(guān)系、以及各個類之間的派生關(guān)系。
根據(jù)本發(fā)明的實施例,要獲取類標(biāo)識時,根據(jù)ID,通過分解獲取到N位的類標(biāo)識;要獲取對應(yīng)的類時,根據(jù)類標(biāo)識,從映射中獲取到對應(yīng)的類;要獲取對應(yīng)的一個或多個表時,根據(jù)類,從映射中獲取到對應(yīng)的一個或多個表;要獲取其派生的一個或多個類所對應(yīng)的多個表時,根據(jù)類,從映射中獲取到其派生的一個或多個類從而獲取對應(yīng)到的多個表。
本發(fā)明可提供一種計算機程序,創(chuàng)建一個機構(gòu)來維護(hù)和管理類標(biāo)識值和對象標(biāo)識值的分配。整個系統(tǒng)擁有大小為N位長特定數(shù)制的一個類標(biāo)識取值區(qū)間,每一個類標(biāo)識又可以分別擁有大小為M位長特定數(shù)制的一個對象標(biāo)識取值區(qū)間。這個機構(gòu)能根據(jù)需要手動或自動地為不同的類分配不同的類標(biāo)識,也能根據(jù)需要手動或自動地為同一個類的不同對象分配不同的對象標(biāo)識。
本發(fā)明可提供一種計算機程序,用一個機構(gòu)來描述并管理類標(biāo)識和類的映射關(guān)系、類和數(shù)據(jù)表的映射關(guān)系、各個類之間的派生和組合關(guān)系。利用這個機構(gòu),系統(tǒng)可以在上述ID標(biāo)識、類標(biāo)識、類和數(shù)據(jù)表之間相互轉(zhuǎn)換信息。
在上述的面向?qū)ο髽?biāo)識方法中,還可包括以下步驟根據(jù)ID中的類標(biāo)識查詢到對應(yīng)的類;動態(tài)地創(chuàng)建出這個類的程序?qū)ο蟛⒉樵兊竭@個類對應(yīng)的表;從表中查詢到主鍵等于ID的記錄來為程序?qū)ο蠹虞d完整的數(shù)據(jù);運行程序?qū)ο蟮母鞣N方法以完成相應(yīng)的業(yè)務(wù)處理。
在上述的面向?qū)ο髽?biāo)識方法中,還包括以下步驟在一個表中存儲具有相同類標(biāo)識的對象;或者在一個表中存儲具有不同類標(biāo)識的對象;或者將一個類的對象的數(shù)據(jù)內(nèi)容分布在不同的表中。
在上述的面向?qū)ο髽?biāo)識方法中,還包括以下步驟要查詢具體類的對象時,根據(jù)這個類的名字,獲取到這個類對應(yīng)的表,根據(jù)表系統(tǒng)生成面向表的查詢語句來查詢對象;要查詢多個類的對象時,則將每個類按上述方法處理,然后將結(jié)果匯總起來形成一個總的結(jié)果集;要查詢一個基類的對象時,按照類之間關(guān)系的描述分析出基類派生的所有派生類,然后按上述的方法匯總成一個總的結(jié)果集。
在上述的面向?qū)ο髽?biāo)識方法中,還可包括以下步驟在界面控件中按照ID的格式存儲數(shù)據(jù)來實現(xiàn)界面和對象的關(guān)聯(lián)。本發(fā)明可提供一種計算機程序,在界面控件中存儲COID格式的數(shù)據(jù)來實現(xiàn)界面和對象的關(guān)聯(lián)。具體地,在TextBox、CheckBox、TreeView、ListView等控件中,利用控件內(nèi)置的一個隱含數(shù)據(jù)存儲機構(gòu)來存儲COID數(shù)據(jù)。在需要的時候,程序能根據(jù)這個COID值可靠地從數(shù)據(jù)庫中重新生成對象來完成處理。
本發(fā)明可提供一種計算機程序,可以實現(xiàn)動態(tài)對象生成,根據(jù)一個上述ID值,體系可以生成一個面向?qū)ο蟮慕涌趯ο蟆O到y(tǒng)可以通過上述的體系根據(jù)上述ID值中的類標(biāo)識查詢到對應(yīng)的類,然后程序可以動態(tài)地創(chuàng)建出這個類的程序?qū)ο蟛⒉樵兊竭@個類對應(yīng)的數(shù)據(jù)表,然后程序可以從數(shù)據(jù)表中查詢到主鍵等于上述ID的記錄來為程序?qū)ο蠹虞d完整的數(shù)據(jù),最后程序就可以運行這個程序?qū)ο蟮母鞣N方法完成業(yè)務(wù)處理。
本發(fā)明在系統(tǒng)中定義了一套數(shù)據(jù)結(jié)構(gòu)來描述并管理已分配的類標(biāo)識和可用的類標(biāo)識、每個類標(biāo)識對應(yīng)的已分配對象標(biāo)識和可用的對象標(biāo)識、類標(biāo)識和類的映射關(guān)系、類和數(shù)據(jù)表的映射關(guān)系、各個類之間的派生和組合關(guān)系。
圍繞上述結(jié)構(gòu)設(shè)計一套程序來進(jìn)行相互之間的信息轉(zhuǎn)換和處理,包括實現(xiàn)類標(biāo)識和對象標(biāo)識的分配,為類分配類標(biāo)識,為類的對象實例分配對象標(biāo)識,在類標(biāo)識、類和數(shù)據(jù)表幾者之間進(jìn)行信息轉(zhuǎn)換等。
同樣形式的COID標(biāo)識被用來作為外鍵表述數(shù)據(jù)對象之間的關(guān)系,這種關(guān)系和傳統(tǒng)的數(shù)據(jù)關(guān)系表達(dá)方法相比具有和數(shù)據(jù)表解耦合、多態(tài)指向、全局指向、容易適應(yīng)變化的優(yōu)勢。總之,這項技術(shù)在物理層實現(xiàn)了用關(guān)系數(shù)據(jù)庫來描述面向?qū)ο蟮男畔Ⅲw系。在這個信息體系中,對數(shù)據(jù)是完全以一種面向?qū)ο笾械念惡蛯ο蟮挠^點來看待的,不同的類產(chǎn)生的各個對象存儲在不同的數(shù)據(jù)表中,但這些對象都具有統(tǒng)一的COID的主鍵來標(biāo)識,而對象之間的關(guān)系通過在外鍵屬性中設(shè)置目標(biāo)對象的COID值來表達(dá)。這個體系容易實現(xiàn)非常復(fù)雜的數(shù)據(jù)關(guān)系而且容易擴(kuò)展,這是傳統(tǒng)的關(guān)系數(shù)據(jù)庫表達(dá)方法完全不具有的優(yōu)勢。
和數(shù)據(jù)表解耦合的含義是一個COID形式的外鍵值包含了類標(biāo)識的信息,因此它的含義是“指向某個類中的某個對象”,而不象傳統(tǒng)的外鍵值那樣是“指向特定表中的某條記錄”。
多態(tài)指向的含義是因為每個COID形式的外鍵值的長度和含義是相同的,且包含了類和對象的識別信息,所以一個COID變量通過取不同的值可以指向不同類的對象,這是面向?qū)ο蠓椒ㄖ卸鄳B(tài)性的實現(xiàn)基礎(chǔ)。
全局指向的含義是因為系統(tǒng)中的各數(shù)據(jù)對象原則上都采用COID來做主鍵標(biāo)識,因此一個COID形式的外鍵值可以指向整個系統(tǒng)中任何一個數(shù)據(jù)對象。
容易適應(yīng)變化的含義是在很多業(yè)務(wù)發(fā)生變化的情況下,利用上述技術(shù),只是COID的值本身發(fā)生變化,不需要修改表的結(jié)構(gòu)就能適應(yīng)業(yè)務(wù)的變化。
以上述技術(shù)來改進(jìn)以關(guān)系數(shù)據(jù)庫為核心的應(yīng)用開發(fā)的設(shè)計,新的數(shù)據(jù)結(jié)構(gòu)在概念設(shè)計、邏輯設(shè)計和物理設(shè)計以及最后的運行期都具備面向?qū)ο蟮奶匦?。相比較,傳統(tǒng)的設(shè)計方法應(yīng)用面向?qū)ο蟮乃枷胧蔷植康模局辉诟拍钤O(shè)計階段存在,在設(shè)計的后期和最終具體化物理數(shù)據(jù)模型后就失去了面向?qū)ο蟮奶卣骱蛢?yōu)點。
在上述的面向?qū)ο髽?biāo)識方法中,還可包括以下步驟通過分解ID中的N位類ID來建立針對類的索引,索引用于從多條記錄中選擇出屬于某一個或多個類的對象。
在上述的面向?qū)ο髽?biāo)識方法中,還可包括以下步驟匯總多個表的數(shù)據(jù)的ID來生成索引,索引用于只根據(jù)一個對象的ID查找到其對象所對應(yīng)的表和記錄。
可以將根據(jù)本發(fā)明的ID稱之為COID,遵循上述規(guī)則設(shè)計的ID鍵可以簡稱為COID,在這個基礎(chǔ)推演出相關(guān)的設(shè)計和開發(fā)技術(shù)就是COID模式。
本發(fā)明可以利用COID體系,設(shè)計多態(tài)的數(shù)據(jù)庫模型,比如一個表的一個字段,可以影射到一個類。而不是映射到一個具體的表。利用COID模式,實現(xiàn)多態(tài)的數(shù)據(jù)關(guān)系描述,這樣,數(shù)據(jù)庫中的一個外鍵字段,在含義上可以靈活地關(guān)聯(lián)到系統(tǒng)中任意一個對象,不再和具體的表綁定。利用COID模式可以簡便地實現(xiàn)O/R Mapping技術(shù),實現(xiàn)單表模式。
本發(fā)明的核心思想是COID,COID模式的含義是Class-ObjectIdentifier,中文是類-對象標(biāo)識模式。本發(fā)明提供了適用于企業(yè)應(yīng)用開發(fā)的一種完全面向?qū)ο笏枷脒M(jìn)行數(shù)據(jù)庫設(shè)計的方法,可以對企業(yè)應(yīng)用系統(tǒng)的設(shè)計開發(fā)甚至數(shù)據(jù)庫產(chǎn)品的設(shè)計理念產(chǎn)生顯著影響。
COID(Class-Object Identifier)模式是在企業(yè)應(yīng)用系統(tǒng)的開發(fā)中,以一種面向?qū)ο蟮乃枷牒头椒▉磉M(jìn)行邏輯數(shù)據(jù)庫的設(shè)計和實現(xiàn),并以此為基礎(chǔ)進(jìn)行系統(tǒng)架構(gòu)設(shè)計和系統(tǒng)功能實現(xiàn),其關(guān)鍵特征是采用以類標(biāo)識+對象標(biāo)識組合成的全局唯一的COID主鍵來標(biāo)識數(shù)據(jù)對象。
COID模式首先體現(xiàn)在數(shù)據(jù)庫設(shè)計方面的理念改變。
一將數(shù)據(jù)庫中的數(shù)據(jù)作為對象看待,采用不包含業(yè)務(wù)信息的COID字段作為數(shù)據(jù)的主鍵。
二整個系統(tǒng)中各對象的COID鍵采用統(tǒng)一的名字和數(shù)據(jù)類型。
三一個具體的COID鍵取值由兩部分組成,N位是類標(biāo)識即類標(biāo)識,M位是對象標(biāo)識即對象標(biāo)識。同一個類的不同對象實例具有相同的類標(biāo)識,只是對象標(biāo)識不同,這樣在整個系統(tǒng)中每個對象的COID鍵值唯一。
采用COID模式會對數(shù)據(jù)庫設(shè)計理念和系統(tǒng)功能架構(gòu)開發(fā)產(chǎn)生顯著的影響。
本發(fā)明使系統(tǒng)開發(fā)變得清晰和容易。因為數(shù)據(jù)庫對象都用COID形式來進(jìn)行唯一標(biāo)識,圍繞數(shù)據(jù)庫的程序開發(fā)也遵循這樣的規(guī)則,程序語言可以用一個一致的單一數(shù)字或字符串變量來唯一并可靠地指示數(shù)據(jù)對象,這使系統(tǒng)中傳遞信息變得統(tǒng)一和容易,單一的COID值在一個程序的各函數(shù)內(nèi)部、不同的計算機程序之間、不同的計算機之間,以及網(wǎng)絡(luò)上傳遞COID都非常簡單和有效,減少了傳統(tǒng)方法中大量的工作和問題。
本發(fā)明也使數(shù)據(jù)庫數(shù)據(jù)和用戶界面的交互變得簡單和容易。因為COID體現(xiàn)為一個簡單的數(shù)值,計算機程序可以容易地在窗口控制上存儲隱含地存儲相關(guān)對象的COID值,使界面和對象關(guān)聯(lián)起來,在需要的時候,程序能根據(jù)這個COID值可靠地從數(shù)據(jù)庫中重新生成對象來完成處理。傳統(tǒng)的方法總是針對不同情況做不同的處理,增加了不必要的復(fù)雜度。
以本技術(shù)為核心可以更好地實現(xiàn)ORM技術(shù),ORM技術(shù)使用面向?qū)ο蟮某绦騺硖幚韺﹃P(guān)系數(shù)據(jù)庫中數(shù)據(jù)的操作。以COID形式實現(xiàn)了數(shù)據(jù)的唯一標(biāo)識和關(guān)系描述,由此獲得的ORM能力比傳統(tǒng)的實現(xiàn)要強大得多。例如統(tǒng)一、簡單的動態(tài)對象生成任何時候如果獲取到一個COID值,都可以通過上述的體系根據(jù)COID值中的類標(biāo)識查詢到對應(yīng)的類,然后程序可以動態(tài)地創(chuàng)建出這個類的程序?qū)ο蟛⒉樵兊竭@個類對應(yīng)的數(shù)據(jù)表,然后程序可以從數(shù)據(jù)表中查詢到主鍵等于COID的記錄來為程序?qū)ο蠹虞d完整的數(shù)據(jù),最后程序就可以運行這個程序?qū)ο蟮母鞣N方法完成業(yè)務(wù)處理。這個過程就提供了統(tǒng)一的COID數(shù)值、數(shù)據(jù)和程序?qū)ο笾g的聯(lián)系紐帶,可以貫穿在整個程序的開發(fā)中實現(xiàn)各種面向?qū)ο蟮墓δ?。這個過程完全是自動化的,不需要開發(fā)者再做任何的工作。
可以實現(xiàn)面向?qū)ο蟮牟樵兩踔潦腔惒樵儽热缈赡苄枰樵円粋€基類的所有實例,而一個基類會有多個派生類,這些派生類的對象分別分布在不同的數(shù)據(jù)表中。利用上述技術(shù),系統(tǒng)可以分析出所有的派生類,然后獲取到它們對應(yīng)的所有數(shù)據(jù)表,將這些表的數(shù)據(jù)都查詢出來然后可以合并到一起就形成這個基類所有實例的結(jié)果。這個過程中的關(guān)鍵是每一個派生類的每一個對象實例都具有相同形式而數(shù)值不一的COID標(biāo)識,所以可以合并結(jié)果并在后續(xù)的處理中唯一識別出各個對象來。而傳統(tǒng)的數(shù)據(jù)庫設(shè)計是難以滿足這個條件的。
本發(fā)明可以實現(xiàn)和優(yōu)化以上述思想和方法為中心的各種支持功能。具體地實現(xiàn)實現(xiàn)面向?qū)ο笮问降牟樵冋Z法。
針對COID形式的數(shù)據(jù)進(jìn)行查詢的優(yōu)化。
針對COID形式數(shù)據(jù)進(jìn)行特殊的索引實現(xiàn)。
實現(xiàn)其它的一些輔助操作。
進(jìn)一步地,這些技術(shù)可應(yīng)用在關(guān)系數(shù)據(jù)庫的設(shè)計上,在關(guān)系數(shù)據(jù)庫產(chǎn)品中內(nèi)置。關(guān)系數(shù)據(jù)庫產(chǎn)品可以直接支持形如COID這樣的字段類型,以及上述的元數(shù)據(jù)管理體系和相關(guān)的處理和優(yōu)化,為應(yīng)用開發(fā)提供強有力的支持。
而COID首先是從數(shù)據(jù)描述層解決了對象的標(biāo)識問題,將數(shù)據(jù)完全按對象的方式來進(jìn)行設(shè)計,理念層面是和O/R Mapping產(chǎn)品不一樣的。
在數(shù)據(jù)庫中數(shù)據(jù)的組織已經(jīng)被處理成對象體系的基礎(chǔ)上,再利用O/R Mapping映射機制建立編程語言的對象和數(shù)據(jù)庫的對象之間的聯(lián)系具有更大的價值。上述的統(tǒng)一簡單的動態(tài)對象生成、面向?qū)ο蟮幕惒樵兊榷汲浞煮w現(xiàn)這一區(qū)別。
本發(fā)明的理念將主要實現(xiàn)動態(tài)的ORM,在運行時可以根據(jù)元數(shù)據(jù)配置動態(tài)調(diào)整行為。在此舉兩個例子來描述COID的用法。
實施例一數(shù)據(jù)庫設(shè)計的示例假定一個公司需要一個CRM系統(tǒng)來管理客戶的信息以及相互之間的關(guān)系,客戶的類型有多種,可能是一個人、也可能是一個組織機構(gòu)如商業(yè)企業(yè)、政府部門等,同時,系統(tǒng)中也管理訂單,每張訂單需要記錄所屬的客戶。
應(yīng)用COID模式時,體現(xiàn)在數(shù)據(jù)庫上需要定義數(shù)據(jù)表TPerson、TCorporation、Tdepartment和TorderFrom,在系統(tǒng)中要定義類CPerson、CCorporation、Cdepartment、CorderFrom來實現(xiàn)這些數(shù)據(jù)對象的行為實現(xiàn)。根據(jù)COID的原則,為不同的類分配類標(biāo)識,具體為Cperson=000001、CCorporation=000002、CDepartment=000003、CorderFrom=000004。一個具體對象的類標(biāo)識由其所屬的類來確定,其對象標(biāo)識值從1開始,由系統(tǒng)自增量來產(chǎn)生,假定設(shè)計為12位。這樣產(chǎn)生的一個示例快照數(shù)據(jù)如下
從這些數(shù)據(jù)中可以看到對象的主鍵和外鍵的形式完全統(tǒng)一,具有相同的形式,而且具備面向?qū)ο蠓椒ㄖ兄匾亩鄳B(tài)數(shù)據(jù)的特征,比如很明顯的是TorderFrom這個表的客戶COID字段是一個多態(tài)的外鍵,可以存儲不同類型的客戶,在示例數(shù)據(jù)三條訂單的客戶分別是商業(yè)企業(yè)類型的萬翔科技(000002000000000001)、個人類型的王芳(000003000000000002)和政府部門的市國土資源局(000003000000000001)。事實上系統(tǒng)中其它任何一種類型的對象的COID主鍵值也可以填寫到這個外鍵字段中成為訂單的客戶,這充分體現(xiàn)了COID模式在數(shù)據(jù)設(shè)計和表達(dá)上的靈活性。
從系統(tǒng)演變的角度來看,如果哪一天這個公司的實力提升,將業(yè)務(wù)發(fā)展到了火星上,系統(tǒng)中需要增加新的一種客戶類型,那么可以建立一個新的類CMars和TMars表簡單地結(jié)合到系統(tǒng)中。TOrderFrom這個表不需要任何變化!系統(tǒng)就能接納這樣的新數(shù)據(jù)的加入從而開展轟轟烈烈的火星營銷計劃,這種結(jié)構(gòu)上的可擴(kuò)展性能解決很多類似的系統(tǒng)擴(kuò)展和演變問題,相比較之下,ID模式是不行的,因為不同的類型的ID會產(chǎn)生重復(fù)從而產(chǎn)生二義性,而業(yè)務(wù)主鍵模式就更不用說了,新的數(shù)據(jù)的主鍵的數(shù)據(jù)類型可能和原設(shè)計的結(jié)構(gòu)可能就是完全不一致的,根本無法在不改變現(xiàn)有結(jié)構(gòu)的情況下填寫進(jìn)來。
實施例二業(yè)務(wù)功能實現(xiàn)的示例實施例一表達(dá)了COID模式下下數(shù)據(jù)庫設(shè)計的簡潔、靈活和高度的可擴(kuò)展性,而COID更大的價值可能體現(xiàn)在系統(tǒng)的業(yè)務(wù)開發(fā)上。
想象上述系統(tǒng)需要用一個TreeView控件來展現(xiàn)很多不同類別的對象,在這個樹狀控件的各個節(jié)點可以是一張訂單、一個個人客戶、一個公司客戶...等等。當(dāng)用戶用用鼠標(biāo)雙擊任意一個節(jié)點的時候系統(tǒng)都能觸發(fā)這個對象的操作。
看起來簡單,但事實上這個功能的實現(xiàn)難度相當(dāng)大,關(guān)鍵問題是如何以一種統(tǒng)一的方式來識別每個節(jié)點中存儲的對象。一般是利用TreeView節(jié)點的圖標(biāo)、字符串等形式存儲對象的識別信息,這種方法顯然不通用,并且識別信息的解釋常存在二義性等諸多問題。
現(xiàn)在采用COID模式則是非常簡單和可靠的,因為每一個treeview的節(jié)點都可以隱含地保存一個數(shù)字,這樣就可以將對象的COID保存起來,COID的統(tǒng)一性、簡潔性和全局唯一性以及可識別性可以保證這種方法的通用、方便和可靠。
圖1示出了根據(jù)本發(fā)明第二實施例的數(shù)據(jù)庫結(jié)構(gòu)示意圖。下面將示出代碼是如何處理的,當(dāng)用戶雙擊一個節(jié)點時,treeview對雙擊事件的處理代碼如下{long COID=treenode->value;//從雙擊的樹狀控件節(jié)點取出隱含保存的COID;CBaseObject*p=GetObject(COID);//用COID調(diào)用系統(tǒng)函數(shù)GetObject創(chuàng)建具體的對象p->OnOpen();//調(diào)用對象的OnOpen的虛函數(shù)}
這里補充說明一下,按COID模式開發(fā)的系統(tǒng)遵循一定的類體系結(jié)構(gòu)來充分體現(xiàn)面向?qū)ο蠓椒ǖ膬?yōu)勢,如圖中,CBaseObject類是一個系統(tǒng)定義的基類,其它的數(shù)據(jù)庫相關(guān)的類如都CPerson、Ccorporation都從它派生。
注意CbaseObject*GetObject(long COID),這個函數(shù)體現(xiàn)了圍繞COID模式進(jìn)行開發(fā)的特征,具體來說,這個函數(shù)的作用是傳入一個coID,創(chuàng)建并返回一個具體的對象,其是利用元數(shù)據(jù)來實現(xiàn)的,系統(tǒng)中用元數(shù)據(jù)表來存儲類、類標(biāo)識的對應(yīng)關(guān)系。
GetObject函數(shù)在得到COID后,分析出前邊6位的類標(biāo)識,這樣就能在系統(tǒng)元數(shù)據(jù)表中反查出對應(yīng)的類,之后就能創(chuàng)建類的實例對象,然后調(diào)用對象初始化和加載數(shù)據(jù)等方法并返回。接收到這個對象的代碼(這里是treeview的事件代碼)在接收這個對象后就可調(diào)用其虛函數(shù)OnOpen,這樣系統(tǒng)每增加一個類只要實現(xiàn)它的OnOpen函數(shù)即可,樹狀控件的事件處理代碼一次編好后就不用作變化。
這是完全的面向?qū)ο蟮脑O(shè)計和實現(xiàn)方法。因為數(shù)據(jù)庫設(shè)計采用了面向?qū)ο蟮捏w系,它和面向?qū)ο笳Z言體系配合起來,就使得這個過程變得簡便和藝術(shù)化。
COID模式的基礎(chǔ)是數(shù)據(jù)庫主鍵設(shè)計的提升和統(tǒng)一,傳統(tǒng)的兩種主鍵設(shè)計模式是包含業(yè)務(wù)信息的主鍵方案和完全不包含任何信息的ID模式方案。這樣看起來COID模式含有兩個信息一個類標(biāo)識和一個對象標(biāo)識。應(yīng)該明白,前者模式對包含信息沒有做任何規(guī)范,所以做的信息的假定是不標(biāo)準(zhǔn)的、不具有普遍性而且也可能是不穩(wěn)定的,而對于類標(biāo)識和對象標(biāo)識這樣的普遍性的描述是面向?qū)ο笏枷氲幕A(chǔ)的表達(dá),因此它的概括性、普適性和穩(wěn)定性都是非常強的。可以明顯感覺到類標(biāo)識+對象標(biāo)識具備一種“簡約的美感”。將ID包含信息均衡到類標(biāo)識+對象標(biāo)識的程度應(yīng)該是比較合理的,其它信息是別屬性字段應(yīng)承擔(dān)的職責(zé)而不是ID,ID承載類和對象的標(biāo)識是其恰倒好處的職責(zé)所在。
根據(jù)本發(fā)明,COID有幾種較為具體的方案1、采用N位十進(jìn)制數(shù)字的類標(biāo)識結(jié)合M位十進(jìn)制數(shù)字的對象標(biāo)識的形式,N+M長度的十進(jìn)制數(shù)值的總大小不超過64位二進(jìn)制數(shù)的大小。方案下總的大小可以用一個8字節(jié)長的整數(shù)類型來表示,在32位計算環(huán)境下實現(xiàn)容易,性能優(yōu)越,且能節(jié)省空間,而且十進(jìn)制的表示方式具有一定的可閱讀性。缺點是一些計算要用乘除運算影響效率,另外ID的取值空間有限,要考慮ID分配溢出的問題。
2、采用64位二進(jìn)制的類標(biāo)識結(jié)合64位二進(jìn)制的對象標(biāo)識的形式,這種形式的數(shù)字總長度是128位二進(jìn)制位,長度和GUID一樣,這樣長的數(shù)字使類標(biāo)識和對象標(biāo)識值溢出的可能性大大降低。更主要的是,在分解一個COID的時候不需要做除法運算,因為計算機通常是以16個字節(jié)來存儲這個數(shù)字,要獲取類標(biāo)識和對象標(biāo)識只需要直接提取各自對應(yīng)的八個字節(jié)就可以了,計算性能會有大幅度提升,數(shù)據(jù)庫產(chǎn)品也可以根據(jù)這樣的數(shù)據(jù)類型更好地實現(xiàn)數(shù)據(jù)索引。這種方案的缺點是占用空間大,但隨著硬件的不斷提升這個弱點將漸漸消失。
3、采用N位字符串的類標(biāo)識結(jié)合M位字符串的對象標(biāo)識的形式。這種方式不用數(shù)字操作而用字符串操作,性能方面較差,也需要占用更多的存儲空間。主要的好處是可以具有較好的可讀性。
下面將分析本發(fā)明帶來的好處。
本發(fā)明將所有數(shù)據(jù)對象的標(biāo)識進(jìn)行了標(biāo)準(zhǔn)化。所有的數(shù)據(jù)對象的鍵標(biāo)識都具有相同的字段名字、數(shù)據(jù)類型和大小,這樣就極大簡化了數(shù)據(jù)庫設(shè)計和開發(fā)工作。因為數(shù)據(jù)庫的設(shè)計三個要素就是實體、實體屬性、實體之間的關(guān)系,COID統(tǒng)一了實體的統(tǒng)一標(biāo)識,相當(dāng)于統(tǒng)一解決了實體和實體關(guān)系兩個要素的實現(xiàn)問題,這使數(shù)據(jù)庫結(jié)構(gòu)不用在這方面下工夫。
本發(fā)明將系統(tǒng)中所有數(shù)據(jù)對象的鍵標(biāo)識進(jìn)行了唯一化。一個COID數(shù)字唯一標(biāo)識一個對象,等于在數(shù)據(jù)庫的層面解決了面向?qū)ο蠓椒ㄕ撝袑ο蟊倔w標(biāo)識問題??梢哉f一個COID對于數(shù)據(jù)庫就好比一個指針值對于C++,一個引用對于Java的效果。下面對此做一個比較●每一個C++指針都是32位的整數(shù),而所有的COID都是統(tǒng)一大小的數(shù)字,兩者是等同的。
●在一個進(jìn)程中每一個C++指針都指向一個對象,而COID作為主外鍵在一個數(shù)據(jù)庫中標(biāo)識一個數(shù)據(jù)對象,兩者是等同的。
●C++指針是多態(tài)的,同樣是一個32位的數(shù)字可以指向不同類型的對象,COID同樣具有這樣的多態(tài)特征,由于包含類標(biāo)識和對象標(biāo)識信息,一個相同形式的COID鍵值可以指向系統(tǒng)中任何一個不同類型的數(shù)據(jù)對象。
●C++指針具有簡單的形式,就是一個數(shù)字,COID總體上也體現(xiàn)為一個數(shù)字,這一點非常重要??梢曰叵胍幌聜鹘y(tǒng)ID鍵值不能獨立標(biāo)識出對象。要標(biāo)識的話通常是在具體上下文環(huán)境里隱含規(guī)定了ID鍵值所屬類別,這樣帶來設(shè)計和代碼不能重用的問題;要想重用的話就要給ID鍵值再配上一個“類型”字段來完成對對象的標(biāo)識,這對具有普遍性的工作帶來的開銷是巨大的,如果你不信的話想象一下如果每一個C++指針都需要用兩個數(shù)字表達(dá)的話是什么情形。
這使數(shù)據(jù)庫設(shè)計的方法發(fā)生了根本的變化。整個庫不再是表、記錄的組合,而是一系列對象以及對象之間關(guān)系的銜接。以前面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計只是在初期階段使用UML等面向?qū)ο蟮墓ぞ邅磔o助業(yè)務(wù)分析和設(shè)計,在后期映射為表、字段后就丟棄了初期的對象體系架構(gòu)。而COID模式則在數(shù)據(jù)庫初期設(shè)計、后期實現(xiàn)以及運行的整個生命周期中都是完全的面向?qū)ο蟮捏w系,甚至對于繼承、多態(tài)等面向?qū)ο蟮奶卣饕材苡行У乇磉_(dá)和實現(xiàn)。
開發(fā)上帶來的好處是COID模式更大的價值所在。以前的代碼開發(fā)在對象標(biāo)識、對象間關(guān)系方面等方面的處理需要做大量的、重復(fù)的工作,而現(xiàn)在這些內(nèi)容能作為共性化的東西提取出來統(tǒng)一實現(xiàn),剩下來的工作就只是集中在真正的業(yè)務(wù)領(lǐng)域上了。而且COID標(biāo)識是簡約的,它只是1個數(shù)字,在設(shè)計、開發(fā)、系統(tǒng)交互等方面產(chǎn)生的方便性和效率都非常好!比如說在多層架構(gòu)開發(fā)模式下,如果任何一個數(shù)據(jù)對象的標(biāo)識都可以由一個數(shù)字來代表,就可以簡化在不同的層、不同的模塊以及不同的計算機之間傳遞數(shù)據(jù)對象的形式和難度,使以前錯綜復(fù)雜的系統(tǒng)業(yè)務(wù)結(jié)構(gòu)變得相對簡單,EAI、SOA這樣理念的系統(tǒng)設(shè)計構(gòu)建也變得更為容易。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種面向?qū)ο髽?biāo)識方法,用于以面向?qū)ο蠓绞綐?biāo)識數(shù)據(jù)庫中的數(shù)據(jù),所述數(shù)據(jù)庫包括多個包括業(yè)務(wù)信息的數(shù)據(jù),每個所述數(shù)據(jù)的業(yè)務(wù)信息相對獨立,其特征在于,包括以下步驟對每個所述數(shù)據(jù)設(shè)置ID作為主鍵,以將所述多個數(shù)據(jù)映射成相互獨立的對象。
2.根據(jù)權(quán)利要求
1所述的面向?qū)ο髽?biāo)識方法,其特征在于,對每個所述對象設(shè)置ID包括以下步驟將每個所述ID均設(shè)置成在整個所述數(shù)據(jù)庫中是唯一的。
3.根據(jù)權(quán)利要求
2所述的面向?qū)ο髽?biāo)識方法,其特征在于,在整個所述數(shù)據(jù)庫中采用統(tǒng)一的規(guī)則和數(shù)據(jù)類型來設(shè)置每個所述ID。
4.根據(jù)權(quán)利要求
3所述的面向?qū)ο髽?biāo)識方法,其特征在于,在整個所述數(shù)據(jù)庫中采用統(tǒng)一的規(guī)則和數(shù)據(jù)類型來設(shè)置每個所述ID包括以下步驟將所述ID設(shè)置為長度為N+M位的整數(shù)或字符,其中,N和M均為大于0的正整數(shù),N位代表類標(biāo)識,M位代表對象標(biāo)識,所述類標(biāo)識用于唯一地標(biāo)識自己所屬的類,所述對象標(biāo)識用于在這個類的多個對象實例中唯一地標(biāo)識自己。
5.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,所述ID設(shè)置為128位二進(jìn)制表示的整數(shù),其中N=64,M=64。
6.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,所述ID設(shè)置為二進(jìn)制或十進(jìn)制表示的整數(shù),整個ID的值不超過264。
7.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟通過設(shè)置外鍵的值等于所述ID的值,以描述所述多個對象之間的關(guān)系。
8.根據(jù)權(quán)利要求
7所述的面向?qū)ο髽?biāo)識方法,其特征在于,通過設(shè)置外鍵的值等于所述主鍵的值來在兩者之間建立關(guān)聯(lián)包括以下步驟通過在所述外鍵中存儲所述ID,外鍵不重復(fù),以映射所述多個對象之間的1∶1關(guān)系;或者通過在所述外鍵中存儲所述ID,所述外鍵有重復(fù),以映射所述多個對象之間的1∶多關(guān)系;或者設(shè)置關(guān)系表,其中含有多個外鍵來存儲所述ID,所述外鍵有重復(fù),以映射所述多個對象之間的多∶多關(guān)系。
9.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟描述類標(biāo)識和類之間的映射關(guān)系,類和表之間的映射關(guān)系、以及各個類之間的派生關(guān)系。
10.根據(jù)權(quán)利要求
9所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟要獲取類標(biāo)識時,根據(jù)所述ID,通過分解獲取到N位的所述類標(biāo)識;要獲取對應(yīng)的類時,根據(jù)所述類標(biāo)識,從所述映射中獲取到對應(yīng)的類;要獲取對應(yīng)的一個或多個表時,根據(jù)所述類,從所述映射中獲取到對應(yīng)的一個或多個表;要獲取其派生的一個或多個類所對應(yīng)的多個表時,根據(jù)所述類,從映射中獲取到其派生的一個或多個類從而獲取對應(yīng)到的多個表。
11.根據(jù)權(quán)利要求
9所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟根據(jù)所述ID中的類標(biāo)識查詢到對應(yīng)的類;動態(tài)地創(chuàng)建出這個類的程序?qū)ο蟛⒉樵兊竭@個類對應(yīng)的表;從所述表中查詢到主鍵等于所述ID的記錄來為所述程序?qū)ο蠹虞d完整的數(shù)據(jù);運行所述程序?qū)ο蟮母鞣N方法以完成相應(yīng)的業(yè)務(wù)處理。
12.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟在一個表中存儲具有相同類標(biāo)識的對象;或者在一個表中存儲具有不同類標(biāo)識的對象;或者將一個類的對象的數(shù)據(jù)內(nèi)容分布在不同的表中。
13.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟要查詢具體類的對象時,根據(jù)這個類的名字,獲取到這個類對應(yīng)的表,根據(jù)表系統(tǒng)生成面向表的查詢語句來查詢對象;要查詢多個類的對象時,則將每個類按上述方法處理,然后將結(jié)果匯總起來形成一個總的結(jié)果集;要查詢一個基類的對象時,按照類之間關(guān)系的描述分析出基類派生的所有派生類,然后按上述的方法匯總成一個總的結(jié)果集。
14.根據(jù)權(quán)利要求
13所述的面向?qū)ο髽?biāo)識方法,其特征在于,結(jié)果集中的每一條數(shù)據(jù)都包含一個所述ID。
15.根據(jù)權(quán)利要求
14所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟根據(jù)所述結(jié)果集中的所述ID中的N位類標(biāo)識查詢到對應(yīng)的類;動態(tài)地創(chuàng)建出這個類的程序?qū)ο蟛⒉樵兊竭@個類對應(yīng)的表;從所述表中查詢到主鍵等于所述ID的記錄來為所述程序?qū)ο蠹虞d完整的數(shù)據(jù);運行所述程序?qū)ο蟮母鞣N方法以完成相應(yīng)的業(yè)務(wù)處理。
16.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟在界面控件中存儲所述ID來實現(xiàn)界面和所述對象的關(guān)聯(lián)。
17.根據(jù)權(quán)利要求
16所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟從界面控件中取出存儲的所述ID;根據(jù)所述ID中的N位類標(biāo)識查詢到對應(yīng)的類;動態(tài)地創(chuàng)建出這個類的程序?qū)ο蟛⒉樵兊竭@個類對應(yīng)的表;從所述表中查詢到主鍵等于所述ID的記錄來為所述程序?qū)ο蠹虞d完整的數(shù)據(jù);運行所述程序?qū)ο蟮母鞣N方法以完成相應(yīng)的業(yè)務(wù)處理。
18.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟通過分解所述ID中的N位類ID來建立針對類的索引,所述索引用于從多條記錄中選擇出屬于某一個或多個類的對象。
19.根據(jù)權(quán)利要求
4所述的面向?qū)ο髽?biāo)識方法,其特征在于,還包括以下步驟匯總多個表的數(shù)據(jù)的所述ID來生成索引,所述索引用于只根據(jù)一個對象的ID來查找到其對象所對應(yīng)的表和記錄。
20.根據(jù)權(quán)利要求
1至19中任一項所述的面向?qū)ο髽?biāo)識方法,其特征在于,所述數(shù)據(jù)庫包括關(guān)系數(shù)據(jù)庫。
專利摘要
本發(fā)明提供了一種面向?qū)ο髽?biāo)識方法,用于以面向?qū)ο蠓绞綐?biāo)識數(shù)據(jù)庫中的數(shù)據(jù),數(shù)據(jù)庫包括多個包括業(yè)務(wù)信息的數(shù)據(jù),每個數(shù)據(jù)的業(yè)務(wù)信息相對獨立,本方法包括以下步驟對每個數(shù)據(jù)設(shè)置ID作為主鍵,以將多個數(shù)據(jù)映射成相互獨立的對象。
文檔編號G06F17/30GK1996308SQ200610173201
公開日2007年7月11日 申請日期2006年12月30日
發(fā)明者陳 峰 申請人:陳 峰導(dǎo)出引文BiBTeX, EndNote, RefMan