洪欣,陳維斌,蹇崇軍
(1.華僑大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,福建 泉州 362021;2.華僑大學(xué)機(jī)電及自動(dòng)化學(xué)院,福建 泉州 362021)
XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的映射
洪欣1,陳維斌1,蹇崇軍2
(1.華僑大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,福建 泉州 362021;2.華僑大學(xué)機(jī)電及自動(dòng)化學(xué)院,福建 泉州 362021)
為實(shí)現(xiàn)XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的數(shù)據(jù)映射,提出一種模式抽取算法,通過(guò)XML2XDR模塊抽取XML模式,依據(jù)模式對(duì)XML數(shù)據(jù)分類.分析XML模式與關(guān)系模式的差異性,通過(guò)XMLdata2DB模塊建立XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的映射規(guī)則,從而實(shí)現(xiàn)將XML數(shù)據(jù)映射到關(guān)系數(shù)據(jù)中.
關(guān)系數(shù)據(jù);XML;映射規(guī)則;模式抽取
企業(yè)之間進(jìn)行商務(wù)數(shù)據(jù)交換時(shí),存在數(shù)據(jù)結(jié)構(gòu)不同的問(wèn)題,往往通過(guò)XML格式的數(shù)據(jù)進(jìn)行數(shù)據(jù)交換,并將其導(dǎo)入企業(yè)原有的關(guān)系數(shù)據(jù)庫(kù)中[1].隨著大量XML文檔數(shù)據(jù)的出現(xiàn),如何高效地存儲(chǔ)、管理和查詢這些XML數(shù)據(jù),成為目前值得研究的重要課題.對(duì)XML數(shù)據(jù)庫(kù)系統(tǒng)的研究主要有兩個(gè)基本途徑一種是純XML數(shù)據(jù)庫(kù)系統(tǒng),優(yōu)點(diǎn)是充分考慮XML數(shù)據(jù)的特點(diǎn),以一種自然的方式來(lái)處理XML數(shù)據(jù),能較好地支持XML數(shù)據(jù)的存儲(chǔ)和查詢,但目前技術(shù)仍不成熟;另一種是在原關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)或面向?qū)ο髷?shù)據(jù)庫(kù)基礎(chǔ)之上擴(kuò)充功能,實(shí)現(xiàn)XML數(shù)據(jù)的處理[2-5].本文提出一種XML模式抽取技術(shù),抽取XML文檔的模式,將XML模式映射到關(guān)系模式中,從而實(shí)現(xiàn)企業(yè)間的電子商務(wù)數(shù)據(jù)交換[6].
在XML文檔中,模式不是必須的.對(duì)于帶模式的XML文檔,可以將XML模式直接映射為關(guān)系模式.對(duì)于不帶模式的XML文檔,如果直接映射為關(guān)系,即使XML文檔來(lái)自于同一模式,也可能映射為不同結(jié)果.如以下兩個(gè)XML文檔片斷A和B.
(1)XML文檔片斷A.
文檔片斷A直接映射生成的關(guān)系表如下:
(2)XML文檔片斷B.
文檔片斷B映射生成的關(guān)系表如下:
以上示例(1),(2)中可見,文檔片斷直接映射生成的關(guān)系表存在著差異.即采用不帶模式的映射,可能會(huì)生成多個(gè)具有重復(fù)字段卻并不完全相同的表,不僅浪費(fèi)了存儲(chǔ)空間,而且不利于數(shù)據(jù)的管理.
如果首先抽取XML文檔片斷A與XML文檔片斷B的模式,然后通過(guò)模式進(jìn)行映射,由于兩個(gè)文檔片斷是同源的,那么生成的關(guān)系表就是相同的.由此可見,如果XML文檔帶有模式,最好的方式就是依據(jù)模式來(lái)映射關(guān)系模式,這樣映射生成的關(guān)系表具有通用性.如果XML文檔不帶模式定義,則先為其建立XDR模式,然后再調(diào)用帶有模式的XML文檔的映射算法進(jìn)行映射.
2.1 映射框架
對(duì)不帶XDR模式的XML文檔的映射包含如下3個(gè)步驟.(1)生成XDR模式.(2)應(yīng)用含有XDR模式的映射方法,對(duì)XML文檔進(jìn)行映射生成關(guān)系表.(3)通過(guò)填入數(shù)據(jù)模塊,將XML文檔數(shù)據(jù)映射為關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù).
圖1為系統(tǒng)流程.模塊結(jié)構(gòu)包括XML文檔模式的抽?。╔ML2XDR模塊)、XDR模式到關(guān)系模式的映射(XDR2DB模塊)、XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的映射(XMLdata2DBdata模塊).
圖1 系統(tǒng)工作流程Fig.1 Working flow of the system
2.2 XML文檔模式的抽取
XML文檔的模式有多種,選擇其中的XDR(XML Data Reduced Language,簡(jiǎn)化XML數(shù)據(jù)定義語(yǔ)言)進(jìn)行說(shuō)明.基于XDR模式的XML文檔的抽取算法XML2XDR有如下7個(gè)步驟.
(1)讀取XML文檔.
(2)建立XDR文件頭.
(3)讀取XML數(shù)據(jù)建立根節(jié)點(diǎn).
(4)生成元素聲明.
(5)如果元素有屬性,則讀取屬性值,建立屬性聲明.
(6)如果元素有子節(jié)點(diǎn),則讀取子節(jié)點(diǎn)生成子元素,轉(zhuǎn)到(4),繼續(xù)分析子元素,建立子元素的元素及屬性聲明.
(7)是否還有同層節(jié)點(diǎn),如果有則轉(zhuǎn)到(4),為該節(jié)點(diǎn)建立元素及屬性聲明;如果沒(méi)有則輸出XDR模式文件.
前例中的A文檔與B文檔經(jīng)過(guò)模式抽取之后,生成的XDR模式如圖2所示.由于Star包含在minOccurs=“0”maxOccurs=“*”的group中,出現(xiàn)的次數(shù)是不定的,所以在XDR模式的實(shí)例中,Star元素可能出現(xiàn)零次、一次或多次,與文檔A及文檔B的情況相符.
圖2 XML文檔抽取的XDR模式Fig.2 XDR schema extracted from XML documents
2.3 XML模式到關(guān)系模式的映射算法
抽取XML模式之后,可以通過(guò)模式將XML的數(shù)據(jù)結(jié)構(gòu)映射到關(guān)系數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),建立模式映射算法XDR2DB.算法有如下5個(gè)步驟.
(1)讀取XDR模式.
(2)讀取ElementType元素聲明.
(3)消除遞歸,生成關(guān)系表XDR2DB-Recursion-Mapping.
(4)根據(jù)節(jié)點(diǎn)類型,進(jìn)行相應(yīng)的映射.如果子元素類型為屬性,調(diào)用元素屬性映射算法生成字段;如果子元素類型為元素,調(diào)用子元素映射算法生成字段及關(guān)系;如果子元素為group,調(diào)用模式組映射算法生成字段及關(guān)系.
(5)判斷是否到達(dá)XDR模式末尾,如果不是,則轉(zhuǎn)到(2);否則,生成表間聯(lián)系.
圖2所示生成的XDR模式,經(jīng)過(guò)XDR2DB映射后,其結(jié)果如圖3所示.
圖3 XDR模式映射到關(guān)系數(shù)據(jù)庫(kù)的結(jié)果Fig.3 The results of XDR schema mapping to the relational database
2.4 XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的映射算法
將XML模式映射為關(guān)系模式之后,需要將XML文檔的數(shù)據(jù)填充到所建立的關(guān)系表中.XMLdata2DB映射算法有如下5個(gè)步驟.
(1)讀取XML模式的根節(jié)點(diǎn),建立表格.
(2)讀取模式的節(jié)點(diǎn)element,創(chuàng)建子表.
(3)如果element不含子節(jié)點(diǎn),則轉(zhuǎn)到(5);如果element含有子節(jié)點(diǎn),則分析子節(jié)點(diǎn)的類型.如果為屬性節(jié)點(diǎn),則為該屬性節(jié)點(diǎn)對(duì)應(yīng)的字段賦值;如果為元素節(jié)點(diǎn),則判定是否還包含子節(jié)點(diǎn),如果含有子節(jié)點(diǎn)則轉(zhuǎn)到(2);否則,為該子節(jié)點(diǎn)對(duì)應(yīng)的字段賦值.
(4)判斷子節(jié)點(diǎn)是否還有未訪問(wèn)的同層節(jié)點(diǎn),如果是,則讀取下一節(jié)點(diǎn)轉(zhuǎn)到(3);否則,插入一條記錄到關(guān)系表中.
(5)查找是否還有未訪問(wèn)的節(jié)點(diǎn),如果有轉(zhuǎn)到(3);否則完成數(shù)據(jù)映射.
文檔A與文檔B的數(shù)據(jù)映射到關(guān)系數(shù)據(jù)庫(kù)中的結(jié)果,如圖4所示.
圖4 XML數(shù)據(jù)映射到關(guān)系數(shù)據(jù)的結(jié)果Fig.4 Results of XML data mapping to relational data
建立了一個(gè)數(shù)據(jù)交換框架,提出一種XML模式的抽取技術(shù),并給出從XML數(shù)據(jù)到關(guān)系數(shù)據(jù)的映射算法.研究結(jié)果可為企業(yè)的商務(wù)數(shù)據(jù)交換提供一種可行的方法,方便企業(yè)之間在異構(gòu)平臺(tái)上的實(shí)現(xiàn)數(shù)據(jù)交換.
[1]宋培義.XML與電子商務(wù)[J].北京廣播學(xué)院學(xué)報(bào):自然科學(xué)版,2000,7(4):33-37.
[2]WANG Guo-ren,HAN Dong-hong,QI AO Ba i-you,et al.Extending XML schema with object-oriented features[J].Information Technology Journal,2005,4(1):44-54.
[3]WANG Guo-ren,LIU Meng-chi.Extending XML schema with nonmonotonic inheritance[C]//Proceedings of 1st International Workshop on XML Schema and Data Management.Chicago:Iustrotion,2003:402-407.
[4]LEE Dong-won,CHU W W.Comparative analysis of six XML schema language[J].ACM SIGMOD Record,2002 29(3):117-151.
[5]萬(wàn)常選,林大海.基于關(guān)系數(shù)據(jù)庫(kù)分裂大型XML文檔到關(guān)系存儲(chǔ)[J].計(jì)算機(jī)應(yīng)用研究,2004,21(8):166-167.
[6]洪欣.基于XDR模式的XML文檔與關(guān)系數(shù)據(jù)庫(kù)的映射技術(shù)研究[D].泉州:華僑大學(xué),2004.
Mapping from XML-Data to Relational-Data
HONG Xin1,CHEN Wei-bin1,JIAN Chong-jun2
(1.College of Computer Science and Technology,HuaQiao University,Quanzhou 362021,China;2.College of Mechanical Engineering and Automation,Huaqiao University,Quanzhou 362021,China)
In order to realize the data mapping from the XML-data to the relational-data,this paper propose a model extraction algorithm,the XML2XDR model extract the XML model,according to the model the XML-data is classified.By analysing the differences between the XML schema and relational schema,the mapping rules from XML-data to relational data was established based on XML data2B,and the mapping from XML-data to relational-data was realized.
relational data;XML;mapping rules;pattern extraction
1000-5013(201101-0039-04
TP311.132.3;TP311.12
A
(責(zé)任編輯:錢筠 英文審校:吳逢鐵)
2010-04-23
洪欣(1977-),女,講師,主要從事數(shù)據(jù)庫(kù)領(lǐng)域的研究.E-mail:xinhong@hqu.edu.cn.
福建省青年人才項(xiàng)目資助(2007F3062);福建省泉州市科技計(jì)劃項(xiàng)目(2010G4);華僑大學(xué)高層次人才科研啟動(dòng)項(xiàng)目(07BS403);華僑大學(xué)科研基金資助項(xiàng)目(08HZR18)