XML数据存储到关系数据库毕业设计.docx

上传人:b****5 文档编号:6142333 上传时间:2023-01-04 格式:DOCX 页数:36 大小:729.80KB
下载 相关 举报
XML数据存储到关系数据库毕业设计.docx_第1页
第1页 / 共36页
XML数据存储到关系数据库毕业设计.docx_第2页
第2页 / 共36页
XML数据存储到关系数据库毕业设计.docx_第3页
第3页 / 共36页
XML数据存储到关系数据库毕业设计.docx_第4页
第4页 / 共36页
XML数据存储到关系数据库毕业设计.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

XML数据存储到关系数据库毕业设计.docx

《XML数据存储到关系数据库毕业设计.docx》由会员分享,可在线阅读,更多相关《XML数据存储到关系数据库毕业设计.docx(36页珍藏版)》请在冰豆网上搜索。

XML数据存储到关系数据库毕业设计.docx

XML数据存储到关系数据库毕业设计

摘要

随着Internet的发展和人们对数据标准性、平台无关性的要求越来越高,XML(ExtensibleMarkupLanguage)得到了广泛的应用,同时人们对于XML的存储方式提出了更高的要求。

本课题意在设计一种将XML数据存入关系数据库中的方法,并按照该方法开发一个XML数据装入关系数据库的软件。

本文首先对XML的基本知识进行介绍,随后讨论用关系数据库存储XML数据的原因,并对目前已经提出的一些XML文档在关系数据库中的存储方式进行研究讨论,在此基础上提出一个无模式的XML文档对于关系数据库的存储方法。

这个方法将XML数据分为文档、元素、属性、文本四种节点,并将这四种节点映射为数据库中四个关系表。

另外将DOM树中的元素节点关系映射为一个数据库关系表,这五个表是本课题中数据库设计的核心。

五个表中包含的属性信息要求方便于DOM接口和SAX接口两种方式访问。

提出存储方法后,我们将利用这种存储方法开发一个关系数据库中XML数据装入系统。

文章后半部分将详细说明该软件的需求分析、设计、具体开发细节以及测试。

该软件的测试结果验证了这种存储方法能够有效的将无模式的XML文档存入关系数据库。

关键词:

关系数据库、XML

 

Abstract

WiththedevelopmentofInternetandthepeople’shigherandhigherrequirementfordata’sstandardizationanditsindependentofplatform,XML(extensiblemarkuplanguage)iswidelyused,inthemeantimethehigherrequirementforthestorageofXMLdataisasked.

ThisresearchgroupdesignedamethodtostoreXMLdataintoRDB(RelationalDataBase)ofwhichthetechnologyhavebeenverymatureandwidelyused.ThenwedevelopedanapplicationthatcanstoretheXMLdataintoRDBusingthismethod.

AtfirstthisarticlewillintroducebasicalknowledgeofXML,andthendiscusswhystoreXMLdatausingRDB.Afterthatwe’llresearchanddiscussthesomemethodsforstoringXMLdataintoRDBthathavebeenputforward.Basedonthemwe’lldesignastoragemethodfromnon-schemaXMLdatatoRDB.WeclassifiedXMLdataasfourkindofnodessuchasDocument,Element,AtributeandText.ThesefournodesaremappedtofourtablesintheRDBandwemappedtheDOMTreeintoatabletoo.ThefivetablesisthecoreoftheRDBdesign.TheattributeinformationinvolvedinthetablesisrequiredthatbothDOMandSAXinterfacecanbeeasytogetinformationfromthetables.

Aftergivingthemethodwedesignedwe’lldevelopanapplicationthatcanstoringtheXMLdataintoRDBusingthatmethod.It’srequirementanalyse,designdetailsandtestresultwellbedescribedinthesecondhalfpartofthearticle.Thetestresultwillshowthatusingthestoragemethodwecanstoringthenon-schemaXMLdataintotheRDBeffectively.

Keywords:

RDB(RelationalDataBase),XML

 

 

1绪论

1.1课题背景及研究意义

XML(eXtensibleMarkupLanguage)是W3C于1998年提出的数据文件格式标准,它是SGML(StandardGeneralizeMarkupLanguage)的受限子集,但更简练易用。

自被提出以来就由于其标准性、可扩展性和半结构化等特征得到了各方面的关注和使用。

随着Internet的高速发展和人们对数据标准性、平台无关性的要求的提高,其应用也更加广泛。

目前XML文档的存储方式主要有三种:

1.作为普通文件存储于文件系统中

2.存储于专门为XML设计的XMLDB中

3.存储于关系数据库中

第一种方法由于文件系统在组织、管理、检索等各种数据服务功能上的固有不足而基本不被使用。

后两种方法各有优缺点,但由于目前关系数据库管理系统在各种应用中仍占主体地位,因此如何更加合理地将XML文档进行转换并存储到关系数据库中具有很大的研究价值。

本课题主要研究如何有效的将XML数据存储到关系数据库中,并设计一种可以尽量避免或简化上述问题的存储方法,用此方法开发一个关系数据库中XML数据装入系统以验证该方法的正确性和可行性。

1.2XML知识简介

这一节主要介绍XML的基本知识,包括XML概念、文档类型定义(DTD)、XML模式(Schema)、文档对象模型(DOM)、SAX(SimpleAPIforXML)接口等等。

1.2.1XML

XML即为可扩展的标记语言(eXtensibleMarkupLanguage)。

XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。

XML是标记语言。

理解XML,首先要理解标记。

先说说HTML的标记(Markup),通俗地讲,它就是一种用来给文本添加标记的语言。

在HTML里每个标志都是有确切含义的。

例如,在HTML中,标签〈B〉的含义是要求HTML浏览器将一段文本加粗表示,而标签〈CENTER〉的含义是告诉浏览器将这段文本在一行的中间显示。

而XML并非象HTML那样,提供了一组事先已经定义好了的标签,而是提供了一个标准,利用这个标准,你可以根据实际需要定义自己的新的置标语言,并为你的这个置标语言规定它特有的一套标签。

准确的说,XML是一种源置标语言,它允许你根据它所提供的规则,制定各种各样的置标语言。

XML有两个先驱——SGML和HTML,这两个语言都是非常成功的标记语言,SGML的全称是标准通用化标记语言,它从80年代初开始使用。

正如XML一样,SGML也可用于创建成千上万的标记语言,它为语法置标提供了异常强大的工具,同时具有极好的扩展性,因此在分类和索引数据中非常有用。

目前,SGML多用于科技文献和政府办公文件中。

SGML非常之复杂,其复杂程度对于网络上的日常应用简直不可思议。

不仅如此,SGML非常昂贵。

HTML免费、简单,而且它获得了广泛的支持。

它是一个非常简单的SGML语言,可以方便普通人的使用。

1996年人们开始致力于描述一个置标语言,它既具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。

W3C于1998年2月批准了XML的1.0版本,一个崭新而大有前途的语言诞生了。

XML具有以下优点:

1.XML具有自说明性。

XML能够应用于各种领域的原因,就是XML具有到目前为止其他方法所不具备的数据描述特点,控制信息不是采用应用软件的独有形式,而是采用谁都可以看得懂的标记形式来表现,所以XML最适合作为数据交换的标准,这也是XML受人关注的原因。

允许各种不同的专业(如音乐、化学、数学等)开发与自己的特定领域有关的标记语言。

这就使得该领域中的人们可以交换笔记、数据和信息,而不用担心接收端的人是否有特定的软件来创建数据。

2.XML具有通用性。

由于XML是非专有的并易于阅读和编写,就使得它成为在不同的应用间交换数据的理想格式.XML使用的是非专有的格式,不受版权、专利、商业秘密或是其他种类的知识产权的限制。

XML的功能是非常强大的,同时对于人类或是计算机程序来说,都容易阅读和编写。

因而成为交换语言的首选。

此外,相对于HTML,XML具有先天的优越性。

为了自己的浏览器增加一些特殊的显示效果,HTML加入了一些特殊的标记。

日益增多的标签不但使HTML越来越庞大,浏览器的开发越来越复杂,还降低了不同浏览器之间的兼容性。

尽管HTML的标签越来越多,其显示力却还远远不够。

如果你希望非常精确地表现一些你自己的数据,可能你需要一些现在在HTML中尚不存在的标签。

现在HTML内部结构的条理性越来越差。

你写的HTML文件,甚至是那些专门的所见即所得工具自动生成的HTML文件,可能在语法上会错误百出,不过没关系,浏览器照样能读它。

现在有了XML,你终于可以自由地制定你自己的置标语言,而不必再念念不忘微软、Netscape、W3C的首肯了。

实际上,现在许多行业、机构都利用XML定义了自己的置标语言。

1.2.2DTD和Schema

DTD是一种保证XML文档格式正确的有效方法,可以比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。

一个DTD文档包含:

元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。

DTD文件也是一个ASCII的文本文件,后缀名为.dtd。

例如:

myfile.dtd。

由于DTD存在不少缺陷,比方说:

DTD是基于正则表达式的,描述能力有限;DTD没有数据类型的支持,在大多数应用环境下能力不足;DTD的约束定义能力不足,无法对XML实例文档作出更细致的语义限制;DTD的结构不够结构化,重用的代价相对较高;DTD并非使用XML作为描述手段,而DTD的构建和访问并没有标准的编程接口,无法使用标准的编程方式进行DTD维护。

因此针对这些缺点,设计了XMLSchma。

XMLSchema如同DTD一样是负责定义和描述XML文档的结构和内容模式。

它可以定义XML文档中存在哪些元素和元素之间的关系,并且可以定义元素和属性的数据类型。

XMLSchema基于XML,没有专门的语法;XML可以象其他XML文件一样解析和处理;XMLSchema支持一系列的数据类型(int、float、Boolean、date等);XMLSchema提供可扩充的数据模型;XMLSchema支持综合命名空间;XMLSchema支持属性组。

1.2.3DOM

DOMDocument是以层次结构组织起来的节点,或信息片段,的集合。

这种层次结构允许开发者浏览树来查找特定信息。

通常,分析结构需要在完成任何工作之前装入整个文档并且装入层次结构。

由于DOM是基于信息的层次结构,因此它被称为是基于树的。

另一方面,DOM还提供了一个API,该API允许开发者为创建应用程序而在树的任何地方添加、编辑、移动或除去节点。

DOM基本的节点类型

XML中最常见的节点类型:

1.Node:

DOM基本的数据类型。

2.Element:

元素

3.Attr:

一个元素的属性。

4.Text:

文本

5.Document:

代表整个XML文档。

一个Document对象通常也被称为一棵DOM树(根)。

较不常见的节点类型:

CData、注释、处理指令和文档片段:

1.CData:

“字符数据”的缩写

2.注释:

注释包含有关数据的信息,通常应用程序会忽略它们。

3.处理指令:

PI是专门针对应用程序的信息。

4.文档片段:

为了形成良好的格式,文档只能有一个根元素。

有时,必须临时创建几组元素,这些元素不是满足需求所必要的。

下面文档片段:

SilverShowSaddle,16inch

825.00

1

PremiumCinch

49.00

1

对应DOM树(元素节点)如图:

 

文档片段的DOM树示例图

1.2.4SAX

读取和操纵XML文件的标准方法是DOM(“文档对象模型”)。

遗憾的是,这种方法需要读取整个文件并将它存储到树结构中,因而效率不高、缓慢,并且会过度使用资源。

对于极其大的文档,装入整个文档并对该文档进行解析会很慢且占用大量资源,所以要用其它方式来处理数据。

一些基于事件的模型,如SimpleAPIforXML(SAX),是工作在数据流之上,在数据流经过时对其进行处理。

SAX允许正在读取文档时处理该文档,这避免了在采取操作之前需要等待存储文档的所有内容,但它不允许开发者实际更改原始文档中的数据

SAX是由XML-DEV邮件列表的成员开发的,Java版本由DavidMegginson维护。

他们的目的是提供一种更自然的方法来使用XML,这种方法不会涉及到使用DOM的那种开销。

结果是基于事件的API。

解析器将事件(譬如,元素的开始或结束)发送给处理信息的事件处理程序。

然后,应用程序自己可以处理数据。

虽然原始文档保持不变,但SAX提供了操纵数据的方法,然后会将该方法导向另一个过程或文档。

对于SAX,没有官方的标准;万维网(W3C)或其它官方组织不维护SAX,但在XML社区中,它是一个事实上的标准。

SAX分析经过其的XML流。

考虑以下XML代码片断:

xmlversion="1.0"?

>

UNIX

color

一般情况下,SAX处理器分析这段代码将生成以下事件:

Startdocument

Startelement(samples)

Characters(whitespace)

Startelement(server)

Characters(UNIX)

Endelement(server)

Characters(whitespace)

Startelement(monitor)

Characters(color)

Endelement(monitor)

Characters(whitespace)

Endelement(samples)

1.3基于关系数据库的XML存储技术

本节将研究并讨论现有的基于关系数据库的XML存储方法。

1.3.1现存的基于关系数据库的XML存储技术

基于关系数据库的XML存储技术的核心是XML与关系数据库之间的数据映射技术,目前存在多种映射方法,根据是否使用XML模式可分为两类:

1.模式驱动映射

2.无模式映射

XML模式定义了XML文档的词汇表、逻辑结构和允许值,利用模式可以对XML实例文件的有效性进行验证。

模式驱动映射是以XML模式为基础的映射,包括DTD(文档类型定义)和XMLSchema两种方式,其广泛适用于电子商务、数据交换和系统集成等领域的面向数据处理的XML文档,如产品订单、发票、时刻表等。

他的优点是模式驱动映射的过程中不易丢失结构信息,能较好的保证数据的正确性和完整性。

现有的模式驱动映射方法很多,下一节将通过一个实例来介绍模式驱动映射是如何实现的。

由于模式驱动映射要对模式进行解析,其转换过程要比无模式映射复杂的多。

而且在实际应用中,尤其是广阔的互联网中,大多数的XML文档都没有DTD或Schema,或者DTD和Schema不易随文档保存,这是模式驱动映射面临的一个无法解决的困难,因此模式驱动映射适用于那些已经发展的比较规范的领域,而无模式映射技术的应用更为广泛。

因此作者最终选择设计一种无模式映射来完成本课题的任务,这将在文章的第二章中详细说明。

1.3.2一个模式驱动映射实例

这个实例的映射方法叫做对象-关系映射。

首先将XML模式转化为对象模型,然后再将对象模型映射为关系模型。

在讨论之前我们先介绍两个概念:

简单元素:

只包含文本,不包含属性和嵌套元素的元素

复杂元素:

有属性或包含嵌套元素的元素

下面讨论基于对象-关系模型的XML-RDB的基本映射原理,为了描述简单,XML模式采用DTD进行定义。

1)设有如下DTD:

ELEMENTA(B,C)>

ELEMENTB(#PCDATA)>

ELEMENTC(#PCDATA)>

模式—〉对象的转化:

复杂元素A—〉类A

简单元素B、C—〉A的成员变量

对象—〉关系的映射

类A—〉表A

B、C—〉表A中的列B、C

综上创建关系:

RA(PK_A,B,C),PK_A是RA的主键(它是自动生成的),列B和C的值是他们的PCDATA。

2)设有如下DTD:

ELEMENTA(B*,C,D)>

ELEMENTB(#PCDATA)>

ELEMENTC(E)>

ELEMENTD(#PCDATA)>

ELEMENTE(#PCDATA)>

这里采用外键捕获元素A和C及A和B之间的父子关系,因此可创建关系RA(PK_A,D),RB(PK_B,FK_AB,B)及RC(PK_C,FK_AC,E),其中FK_AB和FK_AC分别是RB和RC关于RA的外键。

RB的主键是(PK_B,FK_AB),RC的主键是(PK_C,FK_AC)。

根据关系理论:

在这个DTD中,A只允许出现一次,所以A和C是1:

1的关系,FK_AC可建立在RA和RC任一关系中(此处建立在RC中);B可出现多次,即A和B是1:

N的关系,FK_AB应建立在RB中。

假如A也可以出现多次,即A和B为M:

N的关系,则可创建关系RAB(FK_A,FK_B),其中FK_A和FK_B分别对应RA和RB的PK_A和PK_B。

3)对于复杂元素的属性和文本,处理方法与简单元素相同,作为复杂元素的属性列处理。

1.4作者的工作

本文工作就是设计一个XML数据到关系数据库的无模式映射方案,这将在文章的第二部分详细讲解。

然后利用这个方案开发一个关系数据库中XML数据装入系统,并利用这个软件测试该方案的有效性和性能,这是第三部分要叙述的内容。

1.5本章小结

本章阐述了课题背景及其研究意义,讲解了XML的基本概念和知识,研究讨论了现今基于关系数据库XML存储的主要方法并制定了下面需要完成的任务及相应的研究思路。

 

2无模式映射的设计

2.1方案设计要求

设计必须满足以下要求:

1.能够将无模式的XML数据按一定的结构存入关系表中

2.数据库设计要支持DOM和SAX两种接口访问

3.易于实现关系数据库到XML的反向转换

4.具有跨平台性

2.2设计思想

将XML文档中的数据信息全部存入关系表是最基本的要求,要满足这个要求,就要分析文档中的基本数据类型(元素,属性,文本等),将这些类型的节点映射为数据库实体集。

为了支持DOM和SAX两种接口访问,就需要分析这两种接口在访问XML文档时需要什么样的信息,这些信息一定要设计到数据库中。

比方说,DOM接口需要节点的父子关系,需要兄弟元素节点的顺序,需要节点的层数。

SAX接口需要元素的起始位置和结束位置,这些信息都需要存到数据库中,才可以方便两个接口对数据库的访问。

综上所述,数据库设计思路就是将文档中不同类型的节点作为数据库实体集,节点之间的关系作为联系进行初步设计,然后再进行数据库优化。

详细设计方案将在下一节介绍。

2.3方案详细设计

根据XML数据节点类型,分别将文档节点、元素节点、属性节点和文本节点映射为四个表:

DOCUMENT,ELEMENT,ATTRIBUTE,TEXT。

另外将元素节点之间的关系(父子,兄弟)映射为一张全局关系表—FULLRELATION。

对于CDATA数据,将其看作TEXT数据处理,存入TEXT表中。

而注释语句将被忽略。

2.3.1E-R图(实体集中只画主码)

数据库E-R图

2.3.2实体集和联系

1.DOCUMENT实体集:

文档主体

属性:

DOCID:

DOCUMENT唯一标识

URI:

文档路径

VERSION:

文档版本

ENCODING:

文档的字符码格式

2.ELEMENT实体集:

元素主体

属性:

ELEID:

元素的文档序(深度遍历DOM树的元素序号)

DOCID:

元素所在文档的ID

NAME:

元素名称

BEGIN:

元素在文档中的起始位置

END:

元素在文档中的结束位置

SEQUENCE:

同层同父亲元素的顺序

LAYER:

元素所在层

3.ATTRIBUTE实体集:

属性主体

ATTID:

属性唯一标识

ELEID:

属性所属元素ID

DOCID:

属性所属文档ID

NAME:

属性名称

VALUE属性值

4.TEXT实体集:

文本主体

TEXTID:

文本唯一标识

ELEID:

文本所属元素ID

DOCID:

文本所属文档ID

CONTENT:

文本内容

5.父子联系:

元素之间的父子关系—多个元素对应一个父亲

属性:

ELEID:

元素ID

DOCID:

元素所在文档ID

PARENTID:

元素父亲ID

2.3.3设计方法与策略

四个实体集中最重要且最复杂的就是元素(ELEMENT)实体集,由于存储要便于DOM和SAX两种接口访问,因此需要为元素添加除名称之外的属性,下面分别说明这些属性的设计思路。

BEGIN和END:

元素在文档中的起始和结束位置,这是为了实现SAX接口能过顺序访问文档而提供的属性,例如下面的文档,我们将在元素的开始标志的左边括号中标出Begin数,在元素的结束标志的右边括号中标出END数。

(1)

(2)

(3)TCP/IPIllustrated(4)

(5)Bill(6)

(7)Addison-Wesley(8)

(9)65.95(10)

(11)

(12)

(13)AdvancedProgrammingintheUnixenvironment(14)

(15)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1