XML数据存储到关系数据库毕业设计.docx
- 文档编号:6142333
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:36
- 大小:729.80KB
XML数据存储到关系数据库毕业设计.docx
《XML数据存储到关系数据库毕业设计.docx》由会员分享,可在线阅读,更多相关《XML数据存储到关系数据库毕业设计.docx(36页珍藏版)》请在冰豆网上搜索。
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.文档片段:
为了形成良好的格式,文档只能有一个根元素。
有时,必须临时创建几组元素,这些元素不是满足需求所必要的。
下面文档片段:
对应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"?
>
一般情况下,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)
(5)
(7)
(9)
(11)
(12)
(13)
(15)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XML 数据 存储 关系 数据库 毕业设计