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