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