楊丹+李桃迎+陳燕

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