楊丹+李桃迎+陳燕
(大連海事大學(xué),遼寧 大連 116026)
摘要:XML可以用于實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫,同時(shí)也是一種中間件和數(shù)據(jù)承載工具,XML強(qiáng)大的技術(shù)功能為數(shù)據(jù)交換提供了便利。伴著計(jì)算機(jī)技術(shù)的快速發(fā)展和網(wǎng)絡(luò)的高速普及,數(shù)據(jù)量呈現(xiàn)爆炸式地增長。借助于XML文檔強(qiáng)大的數(shù)據(jù)轉(zhuǎn)換能力實(shí)現(xiàn)與關(guān)系數(shù)據(jù)庫文件的轉(zhuǎn)換,就成為一種必然趨勢(shì)。因此,研究XML向關(guān)系數(shù)據(jù)轉(zhuǎn)換技術(shù)具有非常重要的價(jià)值。
關(guān)鍵詞:XML;數(shù)據(jù)結(jié)構(gòu);關(guān)系數(shù)據(jù)庫
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2017)18-0200-02
隨著網(wǎng)絡(luò)的飛速發(fā)展,對(duì)數(shù)據(jù)交換技術(shù)的產(chǎn)生了需求,可擴(kuò)展標(biāo)記語言XML(Extensible Markup Language)應(yīng)運(yùn)而生。XML與HTML相似,都是SGML[1]的一個(gè)子集,允許用戶使用自己定義的、簡(jiǎn)單的、統(tǒng)一的標(biāo)準(zhǔn)來實(shí)現(xiàn)自己的應(yīng)用。XML保持了SGML的優(yōu)秀特性[2]的同時(shí)克服了SGML的繁雜缺點(diǎn),更為便利地運(yùn)用到Web開發(fā)上,給Web的客戶端開發(fā)提供了更強(qiáng)大地對(duì)文檔過程設(shè)計(jì)的控制能力。
一、關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)與模式轉(zhuǎn)換
關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)較為單一,只包含關(guān)系。以用戶角度,關(guān)系模型的邏輯結(jié)構(gòu)就是一張扁平的二維表,同時(shí)建立在集合代數(shù)的基礎(chǔ)上,有著明確的數(shù)學(xué)概念。以集合論的角度闡述關(guān)系數(shù)據(jù)結(jié)構(gòu)的形式化定義[3]如下:關(guān)系的描述稱為關(guān)系模式(Relation Schema)。通過形式化定義表示為R(U,D,DOM,F(xiàn)),其中,R稱為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來自的域,DOM為屬性向域的映向集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合。大多數(shù)情況下,屬性組U中屬性所來自的域D和屬性到域的映射DOM對(duì)模式的影響不大,也可以將其看作是一個(gè)三元組:R。在實(shí)際應(yīng)用中,一般把關(guān)系模式描述為:關(guān)系名(屬性1,屬性2,…屬性n)。
在將XML映射為關(guān)系數(shù)據(jù)庫時(shí),首先需要將XML文檔解析為樹形結(jié)構(gòu),然后根據(jù)元素樹,將其映射轉(zhuǎn)換為概念模型——ER圖,接著再把ER圖轉(zhuǎn)換為對(duì)象關(guān)系數(shù)據(jù)模型,也就是規(guī)范化的二維表,最終建立起關(guān)系型數(shù)據(jù)庫。整個(gè)流程圖如圖1所示。
二、解析XML文檔
(一)使用JAXP解析XML文檔
JAXP支持兩種解析方式,分別是基于對(duì)象的解析和基于事件的解析。
基于對(duì)象的解析:這種方式支持W3C DOM解析,未來的JAXP版本中可能會(huì)支持J-DOM規(guī)范;基于事件的解析:支持SAX解析模式。
(二)將XML Tree映射為ER圖
1.XML樹的“根元素”映射為數(shù)據(jù)庫名,即contacts。它概括出了E-R圖。實(shí)體與聯(lián)系的大范疇。
2.XML樹的直接子元素映射為實(shí)體,即contacts的3個(gè)同名的子元素contact轉(zhuǎn)換為ER圖中的一個(gè)“聯(lián)系人”實(shí)體集。
3.直接子元素的屬性及子元素映射為其的屬性,即contact有person、tags、name、location、phone、knows、description屬性。
4.對(duì)于上一點(diǎn)中復(fù)雜類型的子元素,其屬性及子元素又被轉(zhuǎn)換為父元素的屬性。最終,E-R圖如下頁圖1所示。
(三)E-R圖向關(guān)系模型轉(zhuǎn)換
聯(lián)系人contact對(duì)應(yīng)的關(guān)系模式如下:
contact(person,tags,name(title,first,middle,last),location(address,latitude,longitude),phone(kind),knows(contacts),description)
但是,上方關(guān)系模式并非規(guī)范化的關(guān)系模式,因此利用數(shù)據(jù)依賴將其規(guī)范化。
數(shù)據(jù)依賴是一個(gè)關(guān)系內(nèi)部屬性與屬性之間的一種約束關(guān)系。這種約束關(guān)系是通過屬性間值的相等與否體現(xiàn)出來的數(shù)據(jù)間相關(guān)聯(lián)系,是數(shù)據(jù)內(nèi)在的性質(zhì),是語義的體現(xiàn)。數(shù)據(jù)依賴有很多類型,其中最重要的是函數(shù)依賴(Functional Dependency,F(xiàn)D)和多值依賴(Multivalued Dependency,MVD)[3]。
規(guī)范化后:
contact (person(主鍵),tags,phone_kind,phone,knows_contacts,description)
name (person(外鍵),title,first,middle,last)
location (person(外鍵),address,latitude,longitude)
(四)XML文檔數(shù)據(jù)錄入數(shù)據(jù)庫
解析XML文檔,使用JDBC連接數(shù)據(jù)庫,在java中執(zhí)行sql的insert語句將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中,至此XML模式已經(jīng)完整地轉(zhuǎn)化為關(guān)系模式,包括模式轉(zhuǎn)換和數(shù)據(jù)入庫兩部分。
(五)關(guān)系模式到XML模式的轉(zhuǎn)換
三、根據(jù)關(guān)系表構(gòu)建DOM樹
1.數(shù)據(jù)庫名轉(zhuǎn)化為樹的根結(jié)點(diǎn),即contacts為根結(jié)點(diǎn)。
2.根據(jù)contact表的記錄數(shù)生成根節(jié)點(diǎn)的子結(jié)點(diǎn),元素名為表名,即3個(gè)實(shí)體生成3個(gè)子結(jié)點(diǎn)contact。
3.contact表的主碼轉(zhuǎn)換為contact的屬性結(jié)點(diǎn),其余根據(jù)屬性名轉(zhuǎn)換為contact的子結(jié)點(diǎn)或子結(jié)點(diǎn)的屬性結(jié)點(diǎn)。
4.從表和主表進(jìn)行自然連接,即name和location表與contact表連接:從表的表名轉(zhuǎn)換為contact的子結(jié)點(diǎn),從表的屬性根據(jù)屬性名分別轉(zhuǎn)換為contact子元素的屬性結(jié)點(diǎn)或子結(jié)點(diǎn)。
將DOM樹轉(zhuǎn)化為XML文檔數(shù)據(jù)嵌入,使用JDBC連接數(shù)據(jù)庫,在java中執(zhí)行sql的select語句將數(shù)據(jù)插入到XML文檔中。
四、小結(jié)
由于互聯(lián)網(wǎng)與計(jì)算機(jī)技術(shù)的快速發(fā)展和廣泛應(yīng)用,以XML為交換載體的數(shù)據(jù)交換方式成為當(dāng)前數(shù)據(jù)集成和整合的一種趨勢(shì),如何快速、有效地實(shí)現(xiàn)關(guān)系數(shù)據(jù)與XML數(shù)據(jù)的轉(zhuǎn)換成為當(dāng)前數(shù)據(jù)整合和集成的研究熱點(diǎn)。由于作者對(duì)問題的理解程度和查閱資料有限等方面的原因,本文的研究還有很多不足,在未來的研究工作中還需要完善和改進(jìn),例如:本文尚未考慮轉(zhuǎn)化規(guī)則的制定,缺乏對(duì)多個(gè)實(shí)體型和單個(gè)實(shí)體型的聯(lián)系轉(zhuǎn)化,在二元聯(lián)系轉(zhuǎn)化規(guī)則的思想上,未來的研究可以擴(kuò)充對(duì)多個(gè)實(shí)體型和單個(gè)實(shí)體型聯(lián)系轉(zhuǎn)化規(guī)則。
參考文獻(xiàn):
[1]C.M.Sperberg-McQueen,Lou Burnard.A Gentle Introduction to SGML,http://www.isgmlug.org/sgmlhelp/g-index.htm,1994.
[2]陳志煒.一種基于語義的將關(guān)系數(shù)據(jù)轉(zhuǎn)換為XML數(shù)據(jù)的方法[D].南京:東南大學(xué)碩士學(xué)位論文,2004.
[3]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論[M].第三版.北京:高等教育出版社,2005.
收稿日期:2016-11-25
基金項(xiàng)目:遼寧省普通高等學(xué)校優(yōu)勢(shì)特色專業(yè)(本科教改項(xiàng)目);大連海事大學(xué)研究生教改項(xiàng)目(YJG201600)
作者簡(jiǎn)介:楊丹(1996-),女(漢族),湖北鄂州人,在讀本科,研究方向:信息管理與信息系統(tǒng);李桃迎(1983-),女(漢族),安徽宿州人,博士,副教授,研究方向:管理科學(xué)與工程、系統(tǒng)集成、數(shù)據(jù)挖掘;陳燕(1952-),女(漢族),遼寧大連人,博士,教授/博導(dǎo),研究方向:數(shù)據(jù)倉庫與數(shù)據(jù)挖掘、管理科學(xué)與決策支持、多維交通信息組織與管理。