杨丹+李桃迎+陈燕
(大连海事大学,辽宁 大连 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-),女(汉族),辽宁大连人,博士,教授/博导,研究方向:数据仓库与数据挖掘、管理科学与决策支持、多维交通信息组织与管理。