一種關(guān)系數(shù)據(jù)庫(kù)與xml的基本映射方法【
技術(shù)領(lǐng)域:
】[0001]一種關(guān)系數(shù)據(jù)庫(kù)與XML的基本映射方法主要涉及計(jì)算機(jī)數(shù)據(jù)庫(kù)開發(fā)方面領(lǐng)域?!?br>背景技術(shù):
】[0002]數(shù)據(jù)交換問(wèn)題的解決使得企業(yè)不同的異構(gòu)系統(tǒng)之間可以實(shí)現(xiàn)最大限度的協(xié)同,并能擴(kuò)展現(xiàn)有數(shù)據(jù)交換應(yīng)用,使得孤立的應(yīng)用系統(tǒng)各業(yè)務(wù)環(huán)節(jié)有機(jī)地結(jié)合起來(lái),建立基于Internet的協(xié)作模式,從根本上提高了工作效率。從更深遠(yuǎn)的角度來(lái)說(shuō),對(duì)數(shù)據(jù)交換技術(shù)的研究將有助于數(shù)掘集成的發(fā)展,同時(shí)它還將促進(jìn)數(shù)據(jù)庫(kù)、數(shù)據(jù)倉(cāng)庫(kù)、虛擬數(shù)據(jù)庫(kù)及其它一些相關(guān)領(lǐng)域的發(fā)展,加速我國(guó)的信息化建設(shè)。[0003]在數(shù)據(jù)交換過(guò)程中,針對(duì)XML的優(yōu)勢(shì),使用XML作為中間數(shù)據(jù),用XML在源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)傳遞,通過(guò)對(duì)XML進(jìn)行解析和轉(zhuǎn)換來(lái)完成數(shù)據(jù)交換。[0004]【
發(fā)明內(nèi)容】通過(guò)國(guó)家專利檢索沒(méi)有發(fā)現(xiàn)關(guān)于此系統(tǒng)方面的申請(qǐng)資料。[0005]關(guān)系數(shù)據(jù)庫(kù)與XML的基本映射方法有兩種:基于模板驅(qū)動(dòng)的映射和基于模型驅(qū)動(dòng)的映射。[0006]一.基于模板驅(qū)動(dòng)的映射:基于模板驅(qū)動(dòng)的映射是在一個(gè)模板中嵌入帶參數(shù)的SQL命令,用數(shù)據(jù)傳輸如中間件等實(shí)體軟件進(jìn)行處理?;谀0弪?qū)動(dòng)的映射是淺層次映射,以XML文檔內(nèi)嵌的SQL執(zhí)行的數(shù)據(jù)結(jié)果集合為依據(jù),不涉及數(shù)據(jù)庫(kù)賴以存在的關(guān)系模式或?qū)ο竽J?,?dāng)前MicrosoftSQL2000等大多數(shù)的產(chǎn)品都屬于模板映射,只能應(yīng)用于在關(guān)系數(shù)據(jù)庫(kù)和XML文檔之間傳遞數(shù)據(jù),不足之處在于它只適合將其它類型的數(shù)據(jù)轉(zhuǎn)換為XML文檔,對(duì)于反向的轉(zhuǎn)換就無(wú)能為力了,也不支持面向?qū)ο髷?shù)據(jù)庫(kù)之間或關(guān)系數(shù)據(jù)庫(kù)與對(duì)象數(shù)據(jù)庫(kù)之間的信息交互。此外,基于模板的轉(zhuǎn)換方法關(guān)鍵是要生成大量合理的模板,為此系統(tǒng)要為用戶提供一套生產(chǎn)模板的工具以及相應(yīng)的指令執(zhí)行程序。[0007]考慮下面的模板:<?xmlvers1n=”1.0,,?><Studentlnfo><Intro>Thestudent’Sinformat1n</Intro><SelectStmt>SelectSno,Sname,Ssex,Sage,SdeptfromStudent</SelectStmt〉<Conclude>thatiSall</Conclude)</StudentInfo>在文檔中嵌入Select語(yǔ)句,當(dāng)對(duì)其進(jìn)行處理時(shí),每一個(gè)Select語(yǔ)句都會(huì)被它的結(jié)果所代替,用XML形式表現(xiàn)出來(lái):<?xmlvers1n=”1.0,,?><Studentlnfo><Intro>Thestudent’Sinformat1n</Intro>〈Students〉〈Row〉<Sno>9500I</Sno><Sname>李勇〈/Sname><Ssex>男〈/Ssex><Sage>20</Sage〉<Sdept>CS</Sdept></Row〉〈Row〉<Sno>95002</Sno><Sname>RIJ晨〈/Sname><Ssex>女〈/Ssex><Sage>21</Sage〉<Sdept>MA</Sdept></Row〉</Students)<Conclude>thatisall</Conclude)</Studentlnfo>二.基于模型驅(qū)動(dòng)的映射:在基于模型驅(qū)動(dòng)的映射中,當(dāng)把數(shù)據(jù)從數(shù)據(jù)庫(kù)傳送到XML文檔或者把數(shù)據(jù)從XML文檔傳送到數(shù)據(jù)庫(kù)時(shí),用一個(gè)具體模型來(lái)實(shí)現(xiàn),而不是僅僅依賴內(nèi)嵌SQL命令,關(guān)系數(shù)據(jù)庫(kù)依賴關(guān)系模型,面向?qū)ο髷?shù)據(jù)庫(kù)依賴對(duì)象模型,而XML文檔依據(jù)Schema或DTD。[0008]基于模型驅(qū)動(dòng)實(shí)現(xiàn)數(shù)據(jù)在數(shù)據(jù)庫(kù)和XML文檔間的雙向傳輸?shù)年P(guān)鍵是在數(shù)據(jù)庫(kù)模式和XMLSchema/DTD之間建立雙向映射。具體思路是把一個(gè)XML文檔表示為由數(shù)據(jù)對(duì)象構(gòu)成的樹,每一個(gè)元素類型和對(duì)象模式中的對(duì)象相對(duì)應(yīng),主要在面向?qū)ο髷?shù)據(jù)庫(kù)中使用,當(dāng)然,傳統(tǒng)的關(guān)系.對(duì)象模型也可以映射到關(guān)系模式中。基于模型驅(qū)動(dòng)的映射是一種深層次的映射,是模式與模式之間的映射。[0009]數(shù)據(jù)庫(kù)和XML之問(wèn)的映射機(jī)制大致有兩種,分別是基于表格的映射和基于對(duì)象的映射,這兩種映射都可以在XML文檔和數(shù)據(jù)庫(kù)之間轉(zhuǎn)換數(shù)據(jù)。它們的主要區(qū)別在于基于表格映射比較簡(jiǎn)單,轉(zhuǎn)換出來(lái)的XML文檔格式比較單一,類似于關(guān)系表,需要利用XSLT轉(zhuǎn)換語(yǔ)言將單一的XML格式轉(zhuǎn)換成復(fù)雜豐富的格式;而基于對(duì)象的轉(zhuǎn)換功能比較強(qiáng)大,轉(zhuǎn)換比較豐富,可以根據(jù)需要轉(zhuǎn)換成格式多樣的XML文檔。[0010](I)表格映射:許多中間件軟件包用表格模型在.XML文檔和關(guān)系數(shù)據(jù)庫(kù)之間傳遞數(shù)據(jù)。它把XML文檔表示為一個(gè)單一的表格或者是表格的集合。這樣,一個(gè)XML文檔的結(jié)構(gòu)可以用如下的形式表示:〈database〉〈table〉<row><columnl>?〈/columnl><column2>?〈/column2></row></table〉</database)這里關(guān)鍵字“table’’在把數(shù)據(jù)從數(shù)據(jù)庫(kù)傳遞到XML文檔的時(shí)候,表示一個(gè)單一的結(jié)果集,把數(shù)據(jù)從XML文檔傳遞到數(shù)據(jù)庫(kù)的時(shí)候,表示一個(gè)單一的表格或視圖。但是,當(dāng)結(jié)果集合不只一個(gè)的時(shí)候,或者當(dāng)XML文檔包括多個(gè)復(fù)雜嵌套的時(shí)候,這個(gè)傳遞方式就不適用了。[0011](2)基于對(duì)象的映射方法將數(shù)據(jù)庫(kù)中的數(shù)據(jù)映射為一棵對(duì)象樹,根據(jù)規(guī)則將文檔的層次結(jié)構(gòu)映射為樹狀結(jié)構(gòu)(通常把文檔中的元素定義為樹的節(jié)點(diǎn))。然后把這些對(duì)象轉(zhuǎn)換到XML文檔中,或者相反。這種模型對(duì)于XML文檔與面向?qū)ο髷?shù)據(jù)庫(kù)和層次數(shù)據(jù)庫(kù)之間的映射非常便利。當(dāng)需要與關(guān)系數(shù)據(jù)庫(kù)進(jìn)行映射時(shí),可以利用傳統(tǒng)的“對(duì)象一關(guān)系"映射技術(shù)來(lái)實(shí)現(xiàn)。[0012]基于模型的映射方法由于有了數(shù)據(jù)模型的支持,可以完成關(guān)系數(shù)據(jù)庫(kù)和XML數(shù)據(jù)之間的雙向映射。但是模型的弓I入也使得XML文檔的結(jié)構(gòu)受到了限制,一個(gè)XML文檔必須符合模型所規(guī)定的結(jié)構(gòu)才能將XML文檔映射成其它類型的數(shù)據(jù),而從其它類型數(shù)據(jù)轉(zhuǎn)換得到的XML文檔也具有某種結(jié)構(gòu)特點(diǎn)。所以基于模型的映射方法的關(guān)鍵在于設(shè)計(jì)一個(gè)靈活的映射模型,而為了更好的支持其雙向映射的特點(diǎn),這個(gè)映射模型又必須是易于讀懂、易于操縱并能很好的表達(dá)關(guān)系數(shù)據(jù)庫(kù)的各種約束。[0013]JDOM旨是構(gòu)建一個(gè)完整的、基于Java的解決方案,以便從Java代碼訪問(wèn)、操作和輸出XML數(shù)據(jù)時(shí)就像使用Java語(yǔ)言本身一樣簡(jiǎn)單。[0014]JDOM無(wú)縫地整合了現(xiàn)有的XMLAPI標(biāo)準(zhǔn)(如SAX和D0M),并為基本文檔操作(使用元素、屬性和文本)創(chuàng)建了一套新的類和接1:1。JDOM可以從現(xiàn)有的DOM和SAX數(shù)據(jù)源讀取數(shù)據(jù),并且可輸出為DOM和SAX可以接受的數(shù)據(jù);但它自身不包含解析器。它通常使用SAX解析器來(lái)解析和驗(yàn)證輸入XML文檔(盡管它還可以將以前構(gòu)造的DOM表示作為輸入I;它還包含一些轉(zhuǎn)換器,以將JDOM表示輸出成SAX事件流,DOM模型或XML文檔。[0015]JDOM將DOM和SAX的當(dāng)前第1頁(yè)1 2