admin 管理员组

文章数量: 1086019


2024年4月20日发(作者:定义函数matlab)

维普资讯

厂_]堕璺茎 

蒋海鸥 薛原 王之怡 

(西南财经大学经济信息工程学院,四川成都6111 50) 

摘要:本文通过对XML] ̄I术进行分析介绍,结合实例,提出并实现了用JDOM解析×ML实现数据库可视化操作、通过×ML文档和关系数据 

库相互转换来实现数据更新维护及数据移植。 

关键字:XML(可扩展性标记语言);关系数据库;JDOM 

The research of vlsible operations on a database and data transplnatation between hetero叠ene0us 

databases based On XML technolo酊 

TIANG Hai—OH XUE YuanⅥ,ANG Zhi—yi 

(School of Economic Information Engineering。South Western University of Finance and Economics,Chengdu 

6】】13O) 

Abstract:This article not only puts forward the notion of using TD0M to parse XML in order to operate on the RDB 

visibly but also provides a solution of data upgrade and transDlaI1tation with the help of mutual conversion between XML 

and RDB with a handful of instances. 

Keywords:XML;RDB;lD0M 

l 引言 

2.1 XML技术 

近年来,随着Web的应用越来越广泛和深入,HTML等 

XML的全称是Extensible Mark Up Language(可扩展 

Web语言不能满足不断增长的需求,于是一种新的、带来革 

性标记语言)。作为一种标记语言它 ̄IHTML语言有很多相 

命性效果的XML语言诞生了。XML以其易学易用、跨平台、 

似之处,可以把它看成是对HTML语言的一种补充。由于不 

良好的结构和可扩展性、可移植性强等优点,迅速扩展到 

仅它所保存的数据可以被应用程序读写,而且它能够利用 

各种应用领域,并带来了一场声势浩大的技术革命。 

标记对数据信息进行结构化的描述,有良好的格式,有利 

然而,关系数据库存储数据仍是目前的主流。但在用 

于和应用程序进行数据处交流,因此它可以被很好地用于 

关系数据库进行数据存储时,也会遇到或多或少的棘手的 

数据传输和分析。基于XML良好的公用性和简单易用的特 

问题。我们知道,数据库管理人员在建立数据库前,首先 

点,它是很好的跨平台数据传输的工具。 

必须获取用户的需求。客户能否明确地表达需求,以及数 

2.2 JDOM技术 

据库管理人员能否正确理解就成了制约数据库建立的瓶 

JDOM是由Jason Hunter和Brett McLaughlin ̄lJ建的用 

颈。然而,数据在数据库中存储后,往往还需要进行更新 

于解析XML的Java工具包,IJD0M文档中的每一个节点类型对 

和维护。通常数据库更新人员面对的是大量的二维表格, 

应格式良好的XML文档中的每一个元素。JDOM不要求程序员 

而对表格的修改将增大出错的概率从而造成数据不一致等 

呆板地操作树型结构,而是可以直接操作某个Element, 

问题。再者,有时候我们需要在异构数据库之间进行数据 

这就为利用JDOM转换数据库表单 ̄OXML文档提供了可操作的 

的移植。由于这些异构数据库二维表格的存储与管理存在 

依据。JDOM与DOM、SAX等其它编程接口相比大大减少了应 

着差异,所以不能通过表格文件的直接拷贝来实现,而重 

用程序的代码数量,而且在处理速度上也具有一定的优 

新建立表格也将造成人力物力的巨大浪费,而且效率和正 

势。总之,JDOM技术为XML的解析提供了很大的方便。 

确率也得不到保证。 针对以上问题,考虑 ̄OXML的各种优 

3 关键问题 

点,发现XMI 正是一个很好的解决方案。本文通过对XML技 

3.1数据的可视化操作 

术进行分析介绍,结合实例,提出并实现了用JDOM解析 由于XML文件具有很强的数据表现能力,即使是不懂 

XML实现数据库可视化操作、通过XML文档和关系数据库相 XML的用户,也能通过对XML文件进行修改来实现对数据的 

互转换来实现数据更新维护及数据移植。 输入和修改;而XML文档可以很好地表现成树型结构,用树 

2 技术简介 

型结梅组织数据将使数据的层次结构更加清晰,因此实现 

收稿日期:2007—07—12修回日期:2007-08-10 

作者简介:蒋海鸥(1985~),男,湖南衡阳人,本科,主要研究方向:信息管理与信息系统,计算机应用技术。 

99 

维普资讯

中国西部科技 2007・08 

个树型视图,让用户能通过直接对树型视图进行可视化 

两个事件监听器,用来监听事件的发生并及时产生反应。 

操作来实现对数据的操作和存储,将能较好地解决各种数 

据不一致问题。 

3.2 XML与关系数据库的结合及异构数据库间的数据移植 

关系数据库在数据管理方面具有管理方便、存储占用 

空间小、检索速度快、修改效率高、安全性好等优点,许 

多测试结果也表明它在处理数据、特别是大规模数据的时 

候,性能非常好。 但客观上需要用一种应用方式将其丰富 

的数据有效地发布出来,以消除平台差异、增强语义描述 

功能、降低环境要求。而XML在数据应用方面具有易表义、 

跨平台等优势,但客观上需要一种有效的存储、检索和修 

改等方面的管理机制,因而也存在着不足。 所以,把 

XML与关系数据库进行结合,通过XML文档和关系数据库之 

间的相互转换,能很好地解决数据库中数据的存储与更新 

以及异构数据库间数据的移植。 

所毒计算机 

数务处 

lI.j1 

鼍 j2 

射务处 

— c1 

— C2 

。 

机隽一 

— 192 16B 133 151 

啊192 168 133 152 

啊192 168 133 153 

啊192 168 133 154 

啊192 168 133 155 

l 192 16B 133 156 

2:■●192 .168日B .133 .15 B 图1 一个简单的  ll 早日 

_|.192 16B 133 159 

啊192 168 133 160 

“树型”数据视图 

如图一所示,这是一个简单的深度为3的“树型”数据 

结构,所有数据的层次结构通过该树型结构非常清晰地表 

现了出来。由于XML文件具有良好的结构,可以利用JDOM、 

DOM等解析器轻易地将文件中的数据组织成清晰的树型视图 

展示出来。所以,可以先将数据库中的数据提取出来,转 

换成XML文件后,再对XML文件进行解析生成树型视图,这 

样对数据的操作就可以非常直观地在该视图上实现了。操 

作结束后,再将修改后的XML文件转换成关系数据库中的数 

据,从而完成了整个数据更新工作。 

有时人们需要在异构数据库间进行数据的移植,比如 

将一个Oracle数据库中的数据移植 ̄IJSQL Server中。存储 

数据的一方可以先将数据库中的数据转换成XML文件,然后 

对XML文件进行拷贝和传输,而需要数据的一方再将XML文 

件转换成数据库中的数据。这样就轻松地实现了异构数据 

库间的数据移植。 

4具体实现 

4.1利用XML实现可视化操作 

利用XML实现数据可视化操作的两个关键是通过操作树 

型视图自动生成XML文档和通过操作XML文档自动生成对应 

的树型视图。 

下面介绍用2DOM实现树型视图牛成XML文档的过程: 

该过程需要在对树视图进行编辑时能同时修改相应的 

x札文档,由于作者采用的是JTree进行树视图的生成,所以在 

tree上注册了TreeModelListener) ̄H TreeSelectionListener这 

100 

图2 XML可视化编辑实现流程 

作者实现XML文件生成的核心是addElement方法,该方 

法通过对每一个树结点进行解析生成相应的XML代码,并递 

归调用自身,从而实现整个树型视图对应的XML文档的生 

成。该方法对应的程序如下: 

pub1iC void addE1ement(Element element, 

DefaultMutableTreeNode node,DefaultTreeModel 

treeMode1) { 

int index=0: 

f 0 r ( i n d e x =0: i n d e x < 

treeMode1.getChiidCount(node): index++) 

{ 

D e f a u l t M u t a b l e T r e e N 0 d e c h i l d = 

(DefaultMutableTreeNode)treeMode1.getChild 

(node, index): 

if(child.getUSerObject( ) .toString 

().equalS( 属性 ))//对属性结点的处理 

for(int i=0:i<child.getChiidCount(): 

i++ 

DefaultMutableTreeNode attributeNode = 

(DefaultMutableTreeNode)treeMode1.getChi ld 

(child, i): 

String S=attributeNode.toString(): 

String attribute[]=new String[2]: 

attribute=getAttrAndValue(S)://自定义的方 

} 

} 

else if(chi id.getUserObject() .toString 

().equals( 内容 ))//对内容结点的处理 

{ 

DefaUltMutabl eTreeNOde contentNOde = 

(DefaultMutab1eTreeNode)treeMode1.getChi1d 

维普资讯

厂]堡璺垫 

(chi1d,0): 

string” 

String s=contentNode.toString(): 

Element.addContent(S): 

<element name= “地址”

“string”/>

“string” 

type= 

<element name=“电话”type= 

} 

else{//递归调用自身 

El ement chil dEl ement = new El ement 

</sequence> 

</comp l exType> 

</schema> 

(child.getUser0bject().toString()): 

element.addContent(chi1dE1ement): 

if(treeMode1.getChildCount(child)>0) 

addE1ement(childE1ement, chi1d,treeMode1): 

在这个Schema文件中,定义了图书元素、图书类型和 

出版社类型,图书类型包括书名、单价和出版社,而出版 

社类型又包括出版社名称、地址和电话。从这个文件也可 

} 

index =treeMode1.getIndex0fChiid(node, 

child): 

j 

作者仍然采用JDOM实现XML文档生成对应的树型视图, 

考虑到篇幅的问题,这里就不再进行赘述。 

4.2 XML和关系数据库相互转换的实现 

在关系数据库中,数据存储的结构是由关系模式决定 

的;而XML文档则用DTD或Schema文件来规定它的逻辑结 

构,一套有效的良好的基于DTD或者Schema的映射机制是用 

XML存储管理数据的基础。“ 考虑 ̄USchema相比DTD具有更强 

的复杂数据类型定义和数据结构描述功能,作者采用 

Schema来描述XML文档。 

4.2.1 XML文档转换成关系数据库的实现 

XML文档转换成关系数据库过程的关键在于解决描述 

XldL文档的Schema模式向关系模式的转换。然后就可以将解 

 

析XML文件得到的数据通过SOL语言存储到对应关系模式的 

二维表格中。 

个描述XML的Schema文档如下: 

<?xml version=“1.0”?> 

<schema xmlns = “http//vanv.w3.org/2OO1/XML 

Schema”> 

<element name=“图书”type=“pl:图书类 

型”/> 

<complexType name=“图书类型”> 

<sequence> 

<element name= “编号”type= 

“string” 

<element name= “书名”type= 

“string”/> 

<element name=“单价”type=“float” 

/><element name=“出版社”type=“pl:出 

版社类型”/> 

</sequence> 

</complexType> 

<complexType name=“出版社类型”> 

<sequence> 

<element name=“出版社代号”type= 

“string” 

<element name= “出版社名称”type= 

以看到Schema的数据及类型定义与关系数据模型有许多相 

似之处,也会很自然地将图书类型和出版社类型看成是两 

个表。 

两个表的关系模式分别为: 

图书类型(编号,书名,单价,出版社代号) 

出版社类型(出版社代号,出版社名称,地址,电 

话) 

通过将该Schema与关系模型进行对比,可以发现XML文 

档和关系数据库的映射关系,如表一如示 

l XML Schema 关系模型 

l cowol ̄xType 表格 

 lsm ̄leType 字段 

l基本类型 字段 

表1 XMLSchema与关系模型转换表 

所以,可以先建立一个基表对应于Schema的根元素, 

再根据根元素的子元素类型来建立对应的表格或字段,具 

体规则如上表如示。在接下来的各元素上,可通过递归调 

用该方法来实现整个Schema模式向关系模型的转换。 

递归算法描述如下: 

translate(Element当前根元素) 

{ 

if(当前根元素就是Schema文档的根元素) 

createNewTable(当前根元素名称): 

whi le(当前根元素有更多的子元素) 

{ 

当前元素=当前根元素的下一个子元素; 

if(当前元素的类型是基本数据类型当前元 

素的类型是simpleType) 

{ 

字段名=当前元素名称: 

字段类型=当前元素类型: 

} 

else if(当前元素的类型是complexType) 

{ 

createNewTable(当前元素名称); 

while(当前元素有更多的子元素) 

{ 

当前子元素=当前元素的下一个子元素; 

translate(当前子元素): //在此处递归调用 

translate方法,以当前结点为根结点进行转换 

r 

101 

\_

维普资讯

中国西部科技 2007・08 

) 

) 

5 结语 

该系统很好地实现了对XML文件的可视化操作,也成功 

通过调用translate(Schema文档根元素)就可以完成整 

解决了异构数据库间数据的移植,而在市场上这样的软件 

并不多见。同时,该系统能够支持对Access、SQL 

个XML Schema向关系模型的转换,转换完成后就可以将解析 

Schema描述的XML文档得到的数据转存到关系数据库上了。 

Server、MySQL和Oracle这四种主流数据库的连接和访问, 

反复测试后能达到满意的效果。再加上软件的易学易用 

性,该系统完全能够很好地满足需求。我们坚信,XML技术 

将在未来的技术领域中发挥着越来越重要的作用。 

参考文献: 

[1]耿祥义,张跃平.JAVA2实用教程(第二版)[i].北京:清华大 

学出版社,2004 

4.2.2关系数据库转换成XML文档的实现 

该过程就是XML文档转换成关系数据库的反向过程,在 

挨禁 。 

进行标准仡 

l 

根据裹撂确定 

对应的元素 

[2]杨甲森,王浩.用于数据交换的XML文档和关系数据库转换 

[J].计算机工程与设计,2006,27(5):857—859 

』 

字段的映射 

[3]龚红焱,刘奕明,陈涵生.XML与数据库结合技术的探讨 

[J].计算机工程,2005,31(4):114—116 

[4]王爱冬,张涛,董世兴.XML文档和关系数据库之间数据转 

换的实现[J].森林工程,2004,20(5),34-35:38 

l 

数据类型的映射 

妻 蓬篓 一 篓 篓 墨 蓬篓 塑 蹩 夔 燕 蕙童 

(上接第8 7页)Q的结果是这些独立的子查询的合并之后的 

结果。 

( ocA。))u(A2oo(A4 A。)) 

上述公式变形不但反映出如何将查询Q分解为几个简单 

连接优先策略的优点是并行性非常好,在带宽足够的 

情况下,可以得到非常快速的响应。缺点是忽略了这些子 

查询之间可能的联系,可能造成一些带宽上的浪费。例 

如,Q =A。ooA。和Q =A。ooA 两个子查询中,如果都分别采用了 

AioCA。和A。oCA 作为中间运算结果在网络中传输,而A。oCA。和 

查询的运算,同时也反映出这些简单查询(尤其是连接查 

询)是如何实现的。 

2.3查询优化小结 

GQP优化算法是分布式查询算法的核心部分。为了能够 

正确地分析复杂的查询要求,将分布式查询需求分为三个 

A.oCA 在很多情况下有很多相同的部分,这就造成了重复的 

数据传输。 

层次:原子查询、简单查询和复合查询。分布式查询算法 

设计的基本思路是将复合查询问题转化为简单查询问题, 

将简单查询问题转化为原子查询问题。 

2.2.2合并优先策略 

合并优先策略是指将复合查询尽量变形为先合并,再连 

接的形式。 

Q=(A,uA )oo(A uA )已经是这样的形式。在查询 

在实际算法设计中,要考虑数据传输量、响应时间、 

算法复杂程度、查询可靠性等等多个方面的因素,并不一 

定要追求某种“最优”算法,只要设计出的算法可靠、可 

算法中,首先并行执行简单查询Q =AI uA2和Q。=A uA ,然后 

再执行Q=Q,ooQ 。使用合并优先策略的优点是执行的子查询 

比较少,结构相对简单,但是由于最后才进行连接操作 

Q=Q ooQ。,因此执行Q 和Q 时很可能传输了一些对Q无用的数 

行、“较优”就可以满足绝大部分需要了。 

参考文献: 

[1] FRAGKISKOS PENTARIS and YAWLS IOANNIDIS,Query 

Optimization in Distributed Networks of Autonomous 

Database Systems, ACM Transactions on Database 

据。如果Q.和Q。的数据大多数都出现在Q中,采用合并优先 

策略是最佳的。 

Systems,June 2006,Vo1.31,No.2,Pages 537—583 

[2]SAKTI PRAMANIK and DAVID VINEYARDIEEE,OptimiZing Join 

Oueries in Distributed Databases,TRANSACTIONS ON 

SOFTWARE ENGINEERING, SEPTEMBER 1988,Vo1. 

可以继续通过公式的变形改进连接优先策略和合并优 

先策略不如意的地方。例如,在连接优先策略中如果要避 

14,No.9,Pages 427—482. 

免A oCA。和A,oCA。之间的重复数据传输问题,可以将查询变 

形为: 

Q:(AlooA3)U(AlooA )U(A ooA )U(A2ooA )= 

(A oo(A。UA ))U(A2ooA )U(A2ooA ) 

[3]邵佩英.分布式数据库系统及其应用[i].北京:科学出版 

社,2000 

[4]贾焰.分布式数据库技术[i].北京:国防工业出版社, 

2000 

[5]周龙骧.分布式数据库系统实现技术[i].北京:科学出版社, 

1998 

上述公式的变形表示A 与A 先合并以后再 ̄FIA1连接。继 

续对公式变形还可以反映 查询算法的一 细节: 

Q (Alo。(A3U A ))U

((Al 

 .

[6]赵葆华,王于同.快速局域网下分布式查询处理数据划分策略 

(A o。A。)U(A。o。A )= 

的研究[J].计算机工程与应用,2000,(4):22—24 

(A。U A ))o。(AU A ))U((A2oc A。)o。 

102 


本文标签: 数据 查询 进行 数据库 实现