趙鳳芝,王振雷,劉學(xué)爽,饒 平
(大慶石油學(xué)院計算機(jī)與信息技術(shù)學(xué)院,黑龍江大慶163318)
模型是系統(tǒng)的抽象,是用一種給定的形式化語言對系統(tǒng)的功能、結(jié)構(gòu)和行為進(jìn)行描述[1].同一系統(tǒng)不同抽象層次的模型,在組織結(jié)構(gòu)和信息表達(dá)方式上有著較大的差異,稱之為模型描述的異構(gòu)性.模型描述的異構(gòu)性表現(xiàn)為三個層次:語法、結(jié)構(gòu)和語義.而模型映射的成效主要依賴于模型之間的結(jié)構(gòu)差異.這種差異對映射規(guī)則的定義有重要的影響,當(dāng)二者以相同的結(jié)構(gòu)和行為展示模型元素時,其映射關(guān)系是很容易定義的.如果兩個模型之間的結(jié)構(gòu)描述差異很大,即模型之間的相似度較小,直接映射就很困難[2].
本文研究的源模型是半結(jié)構(gòu)化數(shù)據(jù)模型,目標(biāo)模型是關(guān)系數(shù)據(jù)庫模型.針對這兩種模型的種種差異,分別分析他們的結(jié)構(gòu)特征,依據(jù)目標(biāo)模型的分析原理,找到源模型的模式構(gòu)造原理,采用樹形結(jié)構(gòu)對兩種模型進(jìn)行描述.找到源模型和目標(biāo)模型的映射關(guān)系,最終形成映射文件,完成模型之間的映射[3].
模型映射是根據(jù)一組規(guī)則(稱為映射規(guī)則),建立源模型和目標(biāo)模型之間的對應(yīng)關(guān)系.映射之前,源模型和目標(biāo)模型的描述均已存在.模型映射有時也稱數(shù)據(jù)映射[4].
模型間數(shù)據(jù)映射的體系結(jié)構(gòu)如圖1.
圖1 數(shù)據(jù)模型映射體系結(jié)構(gòu)
這里稱源數(shù)據(jù)模型為SDM(Source Data Model),稱目標(biāo)數(shù)據(jù)模型為TDM(Target Data Model).我們通過本身屬性對其進(jìn)行結(jié)構(gòu)描述,然后從描述后的模型中找到映射關(guān)系,形成映射文件,最終完成源模型到目標(biāo)模型的數(shù)據(jù)映射[5].
本文研究的目標(biāo)數(shù)據(jù)模型(TM)是基于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型.在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)模型是以二維表為主要形式存在的,因此如何描述二維表的結(jié)構(gòu)是數(shù)據(jù)模型描述的主要內(nèi)容.實(shí)體和數(shù)據(jù)項這兩個屬性描述了二維表的基本結(jié)構(gòu).
實(shí)體的屬性包括實(shí)體名稱、實(shí)體代碼和實(shí)體描述等.實(shí)體之間存在父子關(guān)系,即某一實(shí)體在邏輯上是另一個實(shí)體的父實(shí)體,同理,某一實(shí)體也可能是另一實(shí)體的子實(shí)體,這種關(guān)系只是一種邏輯上的關(guān)系,但對關(guān)系之內(nèi)的每一個實(shí)體來說都是一個獨(dú)立的實(shí)體.這種關(guān)系不是必需的并且父子關(guān)系的存在不影響父實(shí)體和子實(shí)體的各個屬性.
數(shù)據(jù)項必須是實(shí)體的一部分,數(shù)據(jù)項的描述不能脫離實(shí)體.數(shù)據(jù)項之間不存在約束關(guān)系.數(shù)據(jù)項可以作為實(shí)體的唯一標(biāo)識,可以是一個數(shù)據(jù)項,也可以十多個數(shù)據(jù)項聯(lián)合起來唯一標(biāo)識一個實(shí)體.用來唯一標(biāo)識實(shí)體的數(shù)據(jù)項也稱為主碼.
樹形結(jié)構(gòu)圖的根節(jié)點(diǎn)是目標(biāo)模型的一個總括,子節(jié)點(diǎn)對應(yīng)的是目標(biāo)數(shù)據(jù)庫中的實(shí)體表.實(shí)體之間的關(guān)聯(lián)是通過實(shí)體之間的約束來表示的.實(shí)體之間,一個實(shí)體為父實(shí)體,另一個和其有約束關(guān)系的實(shí)體為子實(shí)體,通過關(guān)聯(lián)數(shù)據(jù)項產(chǎn)生關(guān)聯(lián),對應(yīng)的數(shù)據(jù)項為父屬性和子屬性見圖2.葉子節(jié)點(diǎn)對應(yīng)的是目標(biāo)數(shù)據(jù)庫中的數(shù)據(jù)項.通過對這樣樹形結(jié)構(gòu)的分析,可以清晰的看出直接的層次描述關(guān)系.所以我們完全可以應(yīng)用樹形結(jié)構(gòu)描述這個目標(biāo)模型.
圖2 目標(biāo)模型的樹形結(jié)構(gòu)圖
本文研究的源數(shù)據(jù)模型(SM)是半結(jié)構(gòu)化數(shù)據(jù)模型.這種數(shù)據(jù)模型無論是在數(shù)據(jù)上還是結(jié)構(gòu)上都給數(shù)據(jù)的處理帶來了很大的困難.因此,可以把一個半結(jié)構(gòu)化數(shù)據(jù)的實(shí)例看成一個結(jié)構(gòu)樹來展開,從根對象到某個葉子對象構(gòu)成一條路徑,節(jié)點(diǎn)就是對象標(biāo)識,連接兩個節(jié)點(diǎn)的邊就是屬性.這種描述形式的一個顯著優(yōu)點(diǎn)是模式和數(shù)據(jù)采用一種數(shù)據(jù)模型.區(qū)域塊和區(qū)域數(shù)據(jù)項這兩個屬性描述了半結(jié)構(gòu)化數(shù)據(jù)的基本結(jié)構(gòu).
區(qū)域塊是由區(qū)域數(shù)據(jù)項(Block Data Item,記為B-DI)構(gòu)成,每一個區(qū)域數(shù)據(jù)項描述區(qū)域塊的某一方面的特征,是區(qū)域塊的屬性之一.根據(jù)分塊規(guī)則,我們認(rèn)為塊和塊之間存在著嵌套關(guān)系.區(qū)域塊之間通過約束規(guī)則,如主外鍵約束等聯(lián)系在一起.
由2部分組成,包括,數(shù)據(jù)名稱和數(shù)據(jù)本身.兩者合在一起稱為區(qū)域數(shù)據(jù)項,在一個半結(jié)構(gòu)化數(shù)據(jù)實(shí)例中,是由多個數(shù)據(jù)單元構(gòu)成.對于半結(jié)構(gòu)化數(shù)據(jù)來說,這種數(shù)據(jù)多為展示數(shù)據(jù),如web數(shù)據(jù)、報表數(shù)據(jù)等.
樹形結(jié)構(gòu)圖的根節(jié)點(diǎn)是源模型的一個總括,子節(jié)點(diǎn)對應(yīng)的是源模型中的區(qū)域塊.區(qū)域塊之間的關(guān)聯(lián)是通過區(qū)域數(shù)據(jù)項之間的約束來表示的.一個半結(jié)構(gòu)化數(shù)據(jù)源模型可以由多個區(qū)域塊組成,每個區(qū)域塊可以由多個區(qū)域數(shù)據(jù)項組成.通過對此源模型的樹形結(jié)構(gòu)分析,我們完全可以應(yīng)用樹形結(jié)構(gòu)描述這個源模型,見圖3.
圖3 源模型的樹形結(jié)構(gòu)圖
經(jīng)過前幾節(jié)的系統(tǒng)分析,本文將源模型和目標(biāo)模型都用樹形結(jié)構(gòu)來表示.下面給出源模型和目標(biāo)模型之間的映射算法.
在源模型中,定義P為源模型中區(qū)域塊的數(shù)量.定義M為某一個區(qū)域塊含有區(qū)域數(shù)據(jù)項的數(shù)量.在目標(biāo)模型中,定義Q為目標(biāo)模型中包含實(shí)體的數(shù)量.對于一個區(qū)域塊和一個實(shí)體之間的相似度,表示為
其中:B表示區(qū)域塊,E表示實(shí)體,N表示該實(shí)體中包含所有數(shù)據(jù)項的數(shù)量,m表示在該實(shí)體中包含區(qū)域塊中區(qū)域數(shù)據(jù)項的數(shù)量,m≤M.
為了確定源模型子樹與目標(biāo)模型子樹的相似度,我們需將源模型的每一棵子樹與目標(biāo)模型的每一棵子樹相比較.假設(shè)兩棵子樹計算所得的相似度數(shù)值的個數(shù)為Q個,對得到的Q個數(shù)值進(jìn)行歸類.分子相同的為一組,分組進(jìn)行比較.
根據(jù)上面的歸類方法可以得到以下2種情況:
第1種情況(m=M):即實(shí)體中包含塊中所有區(qū)域數(shù)據(jù)項.相似度記為m/N.對于一個設(shè)計合理的數(shù)據(jù)庫來說,一般不會存在一個實(shí)體表完全包含所有的區(qū)域數(shù)據(jù)項的情況,因此在這種情況下得到的相似度值,不一定是正確的答案,我們將其作為備選項.
第2種情況(m<M):區(qū)域數(shù)據(jù)項被多個實(shí)體表包含.相似度記為m1/N1(m1<M).在這種情況下我們就要考慮實(shí)體關(guān)聯(lián)的情況了.實(shí)體和實(shí)體之間的關(guān)聯(lián)可以分為兩層實(shí)體關(guān)聯(lián)和多層實(shí)體關(guān)聯(lián).
第1種:2層實(shí)體(0-1)關(guān)聯(lián)的情況.
由于無法確定0層實(shí)體所關(guān)聯(lián)的1層實(shí)體的數(shù)量,我們將其再分成兩種情況:
1)1層實(shí)體數(shù)量Q1=1
在1層實(shí)體中,若不包含剩余數(shù)量M-m1中的任意一個區(qū)域數(shù)據(jù)項,我們便認(rèn)為0層實(shí)體和1層實(shí)體的關(guān)聯(lián)在該計算中無意義,并且認(rèn)為1層的實(shí)體為無效實(shí)體.
在1層實(shí)體中,若全部包含剩余數(shù)量M-m1中的區(qū)域數(shù)據(jù)項,該層有效,我們便認(rèn)為0層實(shí)體和1層實(shí)體的關(guān)聯(lián)有意義.在此我們設(shè)定m2為1層實(shí)體包含區(qū)域塊中的區(qū)域數(shù)據(jù)項的個數(shù),其中m2≥M-m1.
在Q1=1情況下,在樹形結(jié)構(gòu)中是實(shí)體和實(shí)體相連接,但是在計算相似度時我們也是將相連部分分解,單獨(dú)計算1層中的實(shí)體和區(qū)域塊的相似度.以后如果有實(shí)體之間的關(guān)聯(lián)時,仍然是分解后單獨(dú)計算,不再贅述.所以1層實(shí)體與區(qū)域塊的相似度計算滿足公式(1)的要求.取值為m2/N2(m2≥M-m1).所以區(qū)域塊樹與兩層實(shí)體關(guān)聯(lián)的相似度計算公式為:
其中:m1/N1為0層實(shí)體與塊樹對應(yīng)的相似度,m2/N2為1層實(shí)體與塊樹對應(yīng)的相似度.β為我們設(shè)定的一個調(diào)節(jié)參數(shù).
在1層實(shí)體中,若包含部分剩余數(shù)量M-m1中的區(qū)域數(shù)據(jù)項,轉(zhuǎn)為多層實(shí)體的情況.
2)1層實(shí)體數(shù)量Q1>1
對于這樣一對多的實(shí)體關(guān)聯(lián)情況來說,我們可以將這樣一個實(shí)體關(guān)聯(lián)關(guān)系拆分見圖4、5.
圖4 Q1>1的實(shí)體關(guān)聯(lián)情況
圖5 Q1>1的分解情況
將實(shí)體關(guān)聯(lián)分解后,可以看成0層實(shí)體與1層實(shí)體中任何一個單獨(dú)實(shí)體比較.在此過程中因?yàn)?層有多個實(shí)體(有效實(shí)體)與0層實(shí)體關(guān)聯(lián),每一個實(shí)體樹都可與區(qū)域塊樹計算得到一個相似度數(shù)值.設(shè)1層的有效實(shí)體個數(shù)為t1,因此我們可以得到t1個相似度值.所以Q1>1情況下的相似度計算公式為:
其中:i為1層實(shí)體的標(biāo)號,N2i為1層實(shí)體中第i個實(shí)體的數(shù)據(jù)項數(shù)目,m2i為1層實(shí)體中第i個實(shí)體包含塊中的區(qū)域數(shù)據(jù)項的數(shù)量,調(diào)節(jié)參數(shù)仍為 β.
第2種:多層實(shí)體(0-1-2…)的情況.
多層實(shí)體情況原理上與2層實(shí)體相同,我們以3層實(shí)體的情況為例.對于3層實(shí)體,分為以下4種情況:1)Q1=1,Q2=1;2)Q1=1,Q2>1;3)Q1>1,Q2=1,4)Q1>1,Q2>1.
此情況類似與Q1=1的情況.依據(jù)Q1=1研究,我們設(shè)定m3為2層實(shí)體包含塊中的剩余區(qū)域數(shù)據(jù)項.m3≥M-m1-a,所以兩棵樹的相似度為
N3為2層實(shí)體包含的數(shù)據(jù)項個數(shù).m3為2層實(shí)體包含塊中區(qū)域數(shù)據(jù)項的個數(shù).
2)Q1=1,Q2>1
此情況類似與Q1>1的情況.所以兩棵樹的相似度為
j為3層實(shí)體的標(biāo)號.N3j為2層實(shí)體中第j個實(shí)體包含的數(shù)據(jù)項的個數(shù).m3j是第j個實(shí)體包含的區(qū)域數(shù)據(jù)項的個數(shù).
同理我們得出
3)Q1>1,Q2=1,
4)Q1>1,Q2>1情況的相似度計算公式:
多層實(shí)體的情況依此類推.根據(jù)以上映射算法,我們就能計算出源模型和目標(biāo)模型之間的相似度,找到源模型和目標(biāo)模型的映射關(guān)系,最終形成映射文件來完成模型之間的映射.
本文從模型結(jié)構(gòu)的抽象分析出發(fā),利用樹形結(jié)構(gòu)對模型進(jìn)行描述,對模型間不同層次的映射進(jìn)行了分類,通過對模型間相似度的計算建立了模型間的映射關(guān)系,探討了模型間映射關(guān)系的建立過程以及應(yīng)遵循的基本原則,可為不同抽象層次模型之間映射關(guān)系的正確性驗(yàn)證提供依據(jù),從而對模型驅(qū)動的軟件開發(fā)提供有力的支持.
[1]楊 瀟,萬建成,侯金奎.一種基于語義重構(gòu)的模型映射方法[J].計算機(jī)工程,2007,12(23):45-47.
[2]殷曉嵐,付遠(yuǎn)彬.企業(yè)數(shù)據(jù)集成模式的研究[J].計算機(jī)工程與應(yīng)用,2002,12(3):253-255.
[3]李文武,金遠(yuǎn)平,童咪娜.半結(jié)構(gòu)化數(shù)據(jù)到結(jié)構(gòu)化數(shù)據(jù)的無損映射[J].東南大學(xué)學(xué)報,2002,4(10):192-197.
[4]侯金奎,王 鋒,張 睿.基于本體語義的模型映射研究[J].計算機(jī)科學(xué),2008,35(5):119-122.
[5]文必龍,王 瑞.一種Excel數(shù)據(jù)到結(jié)構(gòu)化數(shù)據(jù)的轉(zhuǎn)換方法[J].佳木斯大學(xué)學(xué)報,2006,24(3):365-367.