




已阅读5页,还剩46页未读, 继续免费阅读
(计算机系统结构专业论文)基于rdbms的xml数据存储.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 x m l 的强大功能使得其在诸多领域得到广泛应用,如实现分布式异构 系统间的互操作,异构数据库间的数据交换等。但是由于商业中所使用 的x m l 数据异常庞大,如果不经过任何处理而直接对其进行查询,效率 将会非常低下。而关系数据库在这一方面具有强大的优势,所以x m l 的 未来和关系数据库是密不可分的,数据库的成熟技术和优越的性能为x m l 提供了基础。如何将x m l 与关系数据库相结合也成为学术界的一大研究 热点。 本课题的目标是研究如何将x m l 存储到关系数据库,从而实现利用 关系数据库来对x m l 数据进行查询。在文中,我们详细地讨论了目前研 究中非常流行的o r 映射( 对象一关系映射) 方法,在对该方法进 行细致认真的分析之后,提出了一种新的思路,即采用彻底分割的 思想将x m l 文档存储到r d b m s , 并通过实现的原型系统 “m y x m l d b ”来进行验证。验证结果表明,采用彻底分割将x m l 文档存储到r d b m s 这一思路是完全可行和成功的。 本文提出的彻底分割的思路确保了从数据库还原出来的x m l 文 档和存入数据库之前的x m l 文档完全一致,这种一致性在商业应 用中具有重要价值,对推动x m l 的应用具有重要意义。 关键词x m l ;关系数据库;o r 映射;彻底分割 a b s t r a c t t h ep o w e r f u lf u n c t i o no fx m lm a k e si ts e l fus e dw i d e l yi n m a n y k i n d so f f i e l d s ,f o re x a m p i e ,i nr e a l iz i n g i n t e r o p e r a t i o n o f d i f f e r e n tk i n d so f s y s t e m sa n dd a t ae x c h a n g ea m o n gh e te r o g e n e o u s d a t a b a s e s ,e t c h o w e v e r ,i nb u s i n e s s ,t h ev 0 1 t i m eo fx m ld a t ai s v e r yh u g e ,i fw eq u e r yi n f o r m a t i o nf r o mi td i r e c t l yw i t h o u ra n y t r e a t m e n t ,t h ee f f i c ie n c yw i l lb ev e r y1 0 w ,w h i l et h er e l a t i o n a l d a t a b a s eisg o o da tt h is s od a t a b a s eis i m p o r t a n tt ot h ef u t u r e o fx m l x m lc a nt a k e a d v a n t a g e o f h i g hp e r f o r m a n c e a n dm a t u r e t e c h n 0 1 0 9 yo fd a t a b a s e ,a n dh o wt oc o m b i n et h ed a t a b a s ea n dx m l isah o t s p o ti nc o m p u t e rs c i e n c er e s e a r e h t h is s u b j e c ti s c o n e e r n e dw i t hh o wt os t o r ex m ld o e u m e n ti n t h er e l a t i o n a ld a t a b a s e ,a n d t h r o u g h i tw ec a ne n h a n e et h e p e r f o r m a n c eo fq u e r y i n gx m l i nt h ea r t ic l e ,w ed is c u s s t h em o s t p o p u l a rs 0 1 u t i o nn a m e d0 一rm a p p i n gi nd e t a i1s a n dan e ws o i u ti o n isc o m eu p t h en e ws 0 1 u t i o nis s t o r i n gx m l d o c u m e n ti nd a t a b a s e t h r o u g hd i v i d i n gi tc o m p le t e l y a n dw ei m p l e m e n t a p r o t o t y p e t o v e r i f y t h ei d e a t h er e s u l to fe x p e r i m e n tc o n v i n c e dt h a t o u r s 0 i n t i o nisv i a b l ea n ds u c c e s s f t l l t h es 0 1 u t i o nm e n t i o n e di nt h ea r t ic 1e g u a r a n t e e st h a tt h e r e t r ie v e dx m ld o c u m e n tf r o md a t a b a s eisc o m p l e te l yt h es a m ea st h e x m ld o c h m e n tb e f o r es t o r i n g w h ic h isa g r e a t v a l u ei nb u s i n e s s a n da n i m p o r t a n tp r o m o t i o no fa p p l i c a t i o no fx m l k e y w o r dx m l ;r e l a t i o n a ld a t a b a s e ;0 一rm a p p i n g ;c o m p l e t ed i v i s i o n 华南理工大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进 行研究所取得的研究成果。除了文中特别加以标注引用的内容 外,本论文不包含任何其他个人或集体已经发表或撰写的成果作 品。对本文的研究做出重要贡献的个人和集体,均己在文中以明 确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:、i 甓1日期:知。酗年6 月k 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规 定,同意学校保留并向国家有关部门或机构送交论文的复印件和 电子版,允许论文被查阅和借阅。本人授权华南理工大学可以将 本学位论文的全部或部分内容编入有关数据库进行检索,可以采 用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密口,在年解密后适用本授权书。 本学位论文属于 不保密口。 ( 请在以上相应方框内打“4 ”) 作者签名:哨鹃 导师签名:桃汛l 日期:劢口华年6 ,月r 日 日期:z p 啦年f 月心日 第一章绪论 1 1 背景知识 1 1 1 什么是x m l 第一章绪论 x m l 是e x t e n s i b l em a r k u pl a n g u a g e 的简写,是种扩展性标识语言。像 h t m l 一样,它同样依赖于描述一定规则的标签和能够读懂这些标签的应用处理 工具来发挥它的强大功能,但x m l 比h t m l 的功能要强大得多。x m l 的核心是置 标,“置标”的一个精确定义是:就数据本身的信息对数据进行编码的方法。 x m l 实质上是一种定义语言,由一系列法则组成,任何人、任何行业都可遵 循这些法则,定义各种标识来描述信息中的所有元素,然后通过一种被称为分 析程序的小型程序进行处理,使信息能“自我描述”。x m l 的一个重要特点是它 的结构性,即它可以方便有效地表示结构化数据,这就使得x m l 可以作为表示 和存储数据的手段。 下面是一段x m l 示例文档,用来表示某人的信息: 张三( 姓名 0 0 1 a 公司 z h a n g 1 6 3 c o m ( 电话 ( 0 2 0 ) 6 2 3 4 5 6 7 8 五街1 2 3 4 号 广州市 广东 5 1 0 0 0 0 其中类似 , 的语句就是自己创建的标记( t a g s ) 。 x m l 的制定目标如下 1 x m l 可以在互联网上直接使用,同时与s g m l 兼容,并且支持各种不同的 应用方式。 兰要翌三奎兰三兰鎏圭兰垒鎏苎 2 x m l 文件和处理x m l 文件的应用程序应该容易编制。 3 x m l 文件应该具有良好的可读性,并且比较清晰。 4 用x b i l 设计新的置标语言应该方便快捷。 1 1 2x h l 的优势 x m l 仿佛充当着自由宣言的角色,它打破了标记定义的垄断,将网上世界变 为一个更加自由民主的世界。 如果没有x m l ,要想定义一个置标语言并推广利用它是何等困难。一方面, 如果制定了一个新的语言而期望它能生效,需要把这个标准提交给相关的组织, 例如w 3 c ,等待它接受并正式公布这个标准,经过几轮的评定、修改、再评定、 再修改,等到置标语言终于熬到成为一个正式推荐标准,可能几年的时间都已 匆匆而过了。另一方面,为了让这套标记得到广泛应用,必须为它配备浏览工 具。现在有了x m l ,可以自由地制定自己的置标语言,而不必再念念不忘微软、 n e t s c a p e 、w 3 c 的首肯了。 x m l 最大的好处在于它允许各个组织、个人建立适合自己需要的标记库,并 且,这个标记库可以迅速地投入使用。因为各个不同的行业可能会有一些独特 的要求。比如说,化学家需要化学公式中的一些特殊符号,建筑设计图纸中需 要某些特制的标记,音乐家需要音符,这些都需要单独的标记。实际上,现在 许多行业、机构都利用x m l 定义了自己的置标语言。 除此之外,x m l 还有以下一些优势: x m l 遵循严格的语法,它要求标记配对、嵌套,而且还要求严格遵守d t d 的规定。 x m l 便于不同系统之间信息的传输,当今的计算机世界中,不同企业、不同 部门中存在着许多不同的系统。操作系统有n t 、u n i x ,数据库系统有s q ls e r v e r 、 o r a c l e 等,要想在这些不同的平台、不同的数据库软件之间传输信息,不得不 使用一些特殊的软件,非常之不便。现在有了x m l ,各种不同的系统之间可以采 用x m l 作为交流媒介。x l d l 不但简单易读,而且可以标注各种文字、图像甚至二 进制文件,只要有x m l 处理工具,就可以轻松地读取并利用这些数据,使得x m l 成为一种非常理想的网际语言。 x m l 具有较好的保值性,x m l 的保值性来自它的先驱之s g m l 语言。 s g m l 是一套有着十几年历史的国际标准,它最初设计的一大目标就是要为文件 提供5 0 年以上的寿命。s g m l 和x m l 不但能够长期作为一个通用的标准,而且很 容易向其它格式的文件转化。 2 第一章绪论 1 1 3 数据库系统 数据库系统是一个可实际运行的存储、维护和为应用系统提供数据的软件 系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和 数据管理员组成。其软件主要包括操作系统、各种宿主语言,实用程序以及数 据库管理系统。数据库是以一定的组织形式存放在计算机存储介质上的相互关 联的数据的集合。这些数据为多个应用服务,独立于具体的应用程序。数据库 由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系 统进行。数据库管理系统是一种系统软件,它的主要功能是维护数据库并有效 地访问数据库中任意部分数据,对数据库的维护包括保持数据的完整性、一致 性和安全性。数据管理员负责创建、监控和维护整个数据库,使数据能被任何 有权使用的人有效使用。 目前存在三种数据库系统:第一代,非关系型数据库系统,6 0 年代末问世, 包括层次型和网状型。第二代,关系型数据库系统( r d b s ) ,7 0 年代中期问世, 现已被成熟的运用于商业,它使用的标准语言是结构化查询语言( s q l ) 。关系 型数据库( r d b ) 是将两种以上性质不同的表,经过关联,作为一个整体的数据 来处理,以快速达到数据查询与整合的目的。r d b m s 的核心部分是查询。在本文 中我们主要讨论这种数据库系统。第三代,对象一关系数据库系统( o r d b s 、 o o d b s ) ,8 0 年代中期至今,它以一种面向对象语言为基础,增加数据库的功能, 目前还处于发展阶段。 数据库适合记录大量数据,可进行读取、插入、删除、更新与快速查询。 1 1 4 当前的研究状况 x m l 虽然有众多优点,它也具有查询功能,但在对海量数据的查询方面性能 欠佳,而关系数据库在这方面却有突出表现,在下一节将通过一个实验来验证。 如何解决这一问题。一种比较自然的想法是采用数据库对x m l 数据进行存 取和操作、将半结构化数据转化为结构化数据,通过查询数据库来提取,综合 和分析x m l 文档的数据。这样不仅可利用相对成熟的数据库技术,而且也代表 了未来网络发展的趋势。于是,如何利用关系数据库来提高对海量x m l 数据的 查询性能成为当前研究的一个热点。 实质上,解决这一问题的关键是如何在关系数据库中存储x m l 数据。目前, 国内外在这一方面的研究状况如下: 对x m l 这种半结构化数据的存储,查询和管理方面的研究 直接映射到面向对象数据库 将x m l 数据映射到关系数据库,在这个方向上主要有一下几种做法: 1 n x d ( n a t i v ex m ld a t a b a s e ) 根本设计目的是为存储和处理x m l 文档,其基本存储单元是x m l 文档。通过在原文档的基础上建立 3 华南理工大学工学硕士学位论文 - - l i l _ - _ - l _ - - _ l _ l - _ l - i _ - - _ _ _ _ _ _ - _ _ _ _ _ _ l _ _ _ _ _ - _ l i _ _ - _ _ - i l _ _ _ _ - 相应的索引来提高检索效率。 2 x e d b ( x m l e n a b l e dd a t a b a s e ) 基本存储单元是x m l 文档中的 数据,通过增加一个映射层来管理x m l 数据的存储。可以从数据 库中动态生成x m l 文档,但不能保证与当初的原始文档完全符合。 3 h x d ( h y b r i dx 碡ld a t a b a s e )根据具体的要求和应用、既可做 n a t i v ex m ld a t a b a s e ,又可做x m l e n a b l e dd a t a b a s e 。 1 2 课题意义 首先我们通过一个实验来比较x m l 查询和数据库查询。 试验的平台是:o r a c l e 数据库,m i c r o s o f tj a v a 虚拟机运行于p e n t i u m4 6 6 p c 上。 实验方法如下:一方面使用j a v a 语言,利用m i c r o s o f t 的m s x m l 包对一个 存储名单的x m l 文件进行查询和插入等操作,另一方面将x m l 类比于数据库中 的一张表,使用关系数据库进行查询和插入等操作。 下面是试验结果。 操作o r a c 1e s o l * p l u s m s x m l j a v a i n s e r t1 0 0r e c o r d s 1 秒1 - 2 秒 d e l e t e1 0 0r e c o r d s 1 秒1 - 2 秒 u p d a t e 1 0 0r e c o r d s 1 秒i - 2 秒 s e l e c t 1 秒卜2 秒 表1 关系数据库和x m l 处理1 0 0 条记录时的性能比较 操作o r a c l e s o lp l u sm s x m l j a v a i n s e r t1 0 0 0r e c o r d s卜2 秒1 7 秒 d e l e t e1 0 0 0r e c o r d s1 - 2 秒2 2 秒 u p d a t e1 0 0 0r e c o r d s卜2 秒 2 2 秒 s e l e c t 1 秒2 2 秒 表2 关系数据库和x m l 处理1 0 0 0 条记录时的性能比较 从上表可以看出,x m l 在处理规模稍大的数据时比关系数据库系统要慢很 多。设想在一个w e b 站点上,这样的响应速度肯定是无法接受的。当然,在对 x m l 文档每次操作前要将其装载,这将花费一定的时间,但总体来说,x m l 文档 不适于处理较大规模的数据。 x m l 文档与关系数据库系统相比,应该说,它的一个优势是它存储数据的形 式是可读的,即人可以直接阅读和编辑x m l 文档,而数据库中的表不通过数据 库管理系统是无法访问的。所以,x m l 文档适合于在编辑器中人工编辑,而在一 个由许多用户并发地访问且可能修改的环境中,性能会成为严重的问题。很显 4 第章绪论 然,这正是数据库技术所擅长的场合。 通过这个实验我们可以看出x m l 的不足之处,所以将x m l 存储到关系数据 库后,我们可以取长补短,充分发挥关系数据库的在数据处理性能上优辨,来 弥补x m l 的不足使得x m l 在商业中得到更为广泛的应用。 1 3 课题研究内容 本课题重点解决如何将x m l 数据有效地存储到关系数据库( r d b m s ) ,以 达到提高x m l 数据处理性能地日的。整个课题地研究主要分为以下两个阶段: 在开始阶段主要研究了当前在将x m l 数据存储到r d b m s 方面较为流行的 一种方法一一o r 映射,在研究和分析该方法的过程中,发现了该方法的一些 不足之处。在课题的后期阶段,提出了一种新的解决思路一一彻底分割存储, 通过这种思想,我们成功地解决了在o r 映射中出现的问题。 1 4 论文的主要内容 本文第二章详细讨论和分析了 数据存储到r d b m s 的优缺点。 第三章提出了一种新的思路 r d b m s 。 0 一r 映射,并且指出了通过0 一r 映射将x m l 采用彻底分割的思想将x m l 存储到 第四章详细论述了原型系统m y x m l d b 的设计模块和实现细节。 第五章通过一个具体的x m l 文档实例来验证该系统的可行性,以及它的不 足和待改进之处。 最后给出了论文的结论。 第二章t a b i e - - b a s e d 映射和0 - r 映射 2 1 t a b i e - - b a s e d 映射 t a b l e b a s e d 映射将x m l 文档视为一个表或表的集合,x m l 文档的结构必 须是如下之一: ( t a b l e r o w ) c c o l u m n n r o w ) r o w c o l u m n 一1 ) c o l u m n 一1 c o l u m n n r o w ) t a b l e ) 或者 t a b l e1 ) ( r o w ) c o l u m n 一1 c o l u m n n ( r o w ) ( r o w ) c o l u m n 一1 t a b l ea d d d e e e cde ( b ) 一一一 一一一一一一 ( b (j) ( c f f f ( c ) c c cd d de e e ( d g g g f f f g g g h h h e h h h 2 20 一r 映射 0 - - r 映射,即对象一关系映射( o b j e c t r e l a t i o n a lm a p p i n g ) ,分为两步 执行。首先,将x m ld t d 映射成对象模式,然后再将对象模式映射成关系模式。 在这里,先给出一个名为s a l e s o r d e r 的x m l 文档,以后小节里的一些细节 描述我们会以它为例。下面是该文档的内容: s a l e 自0 r d e r 1 2 3 4 ( n u m b e r ( c u s t o m e r g a l l a g h e ri n d u s t r i e s ( c u s t o m e r 2 9 1 0 0 0 工t e mn u m b e r = ”1 ” 1 0 9 5 ( p r i c e ) ( i t e m 张三 它的d t d 定义如下 在x m l 所描述的置标语言中,d t d 便提供了语法规定,以便给各个语言要素 赋予一定的顺序。为了说明特定的语法规则,d t d 采用了一系列正则式,语法分 析器将这些正则式与x m l 文件内部的数据模式相匹配,从而判别一个文件是否 8 第二章t a b l e b a s e d 映射和o - r 映射 i i i i l _ _ _ - - _ _ l l - _ - l - l _ l l _ _ - _ l - _ _ l _ l _ i l _ l - l _ _ l i i - _ _ _ _ 1 1 日l i _ e _ l _ - l e _ t _ l l _ l l l 一 是有效的。匹配被严格执行,因此,如果x m l 文件中有任何信息不符合d t d 的 规定。都不会通过。 2 2 2 将x m ld t d 映射到对象模式 在讨论映射前,我们首先要明确这里所说的对象是针对d t d 而言的,而不 是指d o m ( 文档对象模型) 中的对象。 实际上,x m l 文档中的元素类型就是数据类型,只含有p c d a t a 内容的元素 类型被称为简单元素类型,这个术语来自于w 3 cx m l 模式。这种元素含有简单 数据值,等同于面向对象编程语言中的标准数据类型( s c a l a rd a t at y p e ) 。属 性类型也是简单类型。 含有子元素、混合内容或属性的元素类型被称为复杂数据类型,这个术语 也是来自于w 3 cx m l 模式。这种元素含有结构型的值,等同于面向对象编程语 言的类( c l a s s ) 或c 语言中的结构( s t r u c t ) 。注意,一个含有空内容和属性 的元素仍为复杂元素,因为属性提供了结构的域,它相当于p c d a t a 元素。 o r 映射首先将简单类型映射成标准数据类型。比如s a l e s o r d e r 文档中的 元素类型c u s t o m e r 可能会被映射为s t r i n g ,而元素类型p r i c e 会被映射为 f l o a t 。然后,将复杂类型映射成类,元素内容中的每个子元素被映射成类的属 性。如果元素中包含复杂类型的予元素,则将其对象的引用或指针作为类的属 性。 映射的的最后一步是将x m l 的元素属性映射成类的属性,其数据类型由元 素属性的数据类型决定。实际上,元素属性等同于x m l 内容模型中的元素类型。 例如,下面的映射将简单元素类型b ,d ,e 和属性f 全部都映射成s t r i n g , 将复杂元素类型a 和c 映射成类a 和c 。元素a ,c 的元素内容和元素属性被映 射为a ,c 的类的属性。a 和c 内容模型中的b ,d ,e 被映射成s t r i n g 类型属性, 元素属性f 也被映射成s t r i n g 类型属性。a 的内容模型中的c 元素被映射成c 对象的指针类型属性,因为元素类型c 被映射成类c 。 d t d 一一= 一= = ( ! e l e m e n ta ( b ,c ) fc d a t a # r e q u i r e d ( ! e l e m e n tc ( # p c d a t a ) ) c l a b sc ( = ;) s t r i n gd : 9 = ; 一 。 最。一 兰要登三盔兰三兰堡圭兰竺笙兰 ! e l e m e n t e ( # p c d a t a ) s t r i n ge 如果同一个子元素在不同的父元素中出现了两次,则映射过程中,子元素 也要被分别映射。 u 1 。d = ;i i i = = = = = = = = = ;= ;l = = = = # t = = ;= l = = = = = = = = = = = ( 1 e l e m e n tc h a p t e r ( t i t l e s e c t i o n + ) ) ( ie l e m e n tt i t l e ( # p c d a t a ) le l e m e n ts e c t i o n # p c d a t a lpl b i i ) ) c 1 a 目目e s = = ;= = e = = = = = = = c l a s s c h a p t e r f = s t r i n g t i t l e : s e c t i o n 【l 目e c t i o n s : ) c l a s sa p p e n d i x ( s t r i n g t i t l e j s e c t i o n 】8 e c t i o n s ; 还有一点要注意的是,简单元素类型和属性并不是只能映射成s t r i n g 类型, 比如说,s a l e s o r d e r 文档中的元素类型q u a n t i t y 可以被映射成整型。当从d t d 映射到对象时,究竟映射成何种数据类型需要人工干预。 2 2 3 将对象模式映射到关系模式 在这一节中我们将讨论如何将类映射成关系( 数据库中的表) ,将标准属性 映射成列,而当属性为复杂类型的指针或引用时,被映射成关系中的主键或外 键。例如: c 1 a b 日e s c l a s sa s t r i n gb : cc := 2 s t r i n gf , ) c l a s 8c ( s t r i n gd j s t r i n ge ; j t a b l e 8 ;= = l i l j l i l l t a b l ea : c 0 1 i m nb c 0 1 u m ncf k c o l u m nf t a b l ec : =c 0 1 u m nd c o l u m ne c o l u m ncp k l o 第二章t a b l e b a s e d 映射和o - r 映射 上面的表是通过主键( c c p k ) 和外键( a 一f k ) 来进行连接的。因为父子 元素的关系是一对一的,主键可以在任何一个表中。如果关系是一对多的,主 键必须在关系的一边。比如,如果一个s a l e s o r d c r 元素包含多个i t e m 元素,那 么主键必须在s a l e s o r d e r 表( t h ep a r e n t ) 内。但是,如果每个i t e m 元素包含一 个p a r t 元素。则主元素必须在p a r t ( t h ec h i l d ) 表中,因为一个p a r t 可以包含在 多个i t e m 中。 主键列作为映射的一部分被生成,如c _ p k 列,或者一个已存在的列或列的 集合被用来作主键。比如,s a l e s o r d e r 元素类型含有n u m b e r 子元素,这个子元 素就能被作为主键。 如果主键列被作为映射的一部分被创建,它的值将由数据库或数据转换软 件产生。这将带来一些问题,因为当由数据库产生的主键再转换到x m l 文档时, 相对x m l 文档来说变得毫无意义。因此,当将数据从关系数据库转换回x m l 文档时,我们有时会忽略主键,但这样做会导致我们失去一些关联信息。 在映射的过程中,命名是可以改变的,例如,d t d ,对象模式和关系模式 可以使用不同的名字。比如,下面的d t d 使用了和映射类不同的名字: d t dc 1 a e 8 e 8 ;= l e l l t 口0 = t = = = = = = = 2 ! e l e m e n tp a r t ( n u m b e r ,p r i c e ) ) c l a s sp a r t c l a s s l e l e m e n tn u m b e r ( # p c d a t a ) = = ) s t r i n gn u m b e r p r o p ; f l o a t p r i c e p r o p 7 对象和关系中的命名也可以不同,如下: c l a s sp a r t c l a s s s t r i n gn u m b e r p r o p ; f l o a t p r i c e p r o p ; t a b l ep r t : 哪c 0 1 u m np r t n u m c 0 1 u m np r t p r 工c e 还有一点要注意的是,映射过程中的对象是概念意义上的,也就是说,当 在x m l 文档和关系数据库之间传递数据时,没有必要去实例化类。 华南理工大学工学硕士学位论文 - - _ l _ _ - - - _ l _ - i _ _ l _ _ _ - - 一i i l _ _ _ _ - _ _ _ _ _ _ _ - _ _ l - _ i _ _ _ _ _ _ _ _ _ - l _ _ - _ - - l j _ e j _ - _ 2 2 4 映射复杂类型模型 到目前为止,我们所见的内容模型相对简单。在这一节中我们将讨论复杂 内容模型,例如: 复杂内容模型的映射比较复杂,在这里我们将讨论一些比较常见的映射。 1 映射选择项 映射选择可以允许属性和列为n u l l 。例如: d t d = ;i i i = = = = = = = = ;= = t 日= = = = ( ! e l e m e n ta b ic ) ) ! e t , i i i m e n rc( d e ) 将对象模式映射成数据库模式如下 c l a 8 8 e 8 = = = = = = = = = = = = = = = = = = ;= = l c l a s ba ( s t r i r i gb j i g u l l a b l e c c : 4 u 1 1 a b l e ) c l a s 8c s t r i n gd : s t r i n ge , c l a $ g e 8 = = = 一= ;= 1 2 = = = = = = = = = = = l = c l a f t b a ( s t :r i n gb :n u l l a b l e 1 2c7 l q u l l a b l e c 1 a 8 8cf s t r i n gd : s t t i n 9 e : t a b l e 8 = = 2 = = = = = = = = = = ;= = = # = = = e = = = = t a b l ea : ( 2 0 l u m nb t , l u l1 a b l e c o l u m n c f k n u 3 1 a b l e t a b l ec : c o l u m l ld n o t n u l l a b l e c o l l l m r len o tn u l l a b l e c o l u m nc _ p k n o tn u l l a b l e 让我们来看看符合上面d r d 的x m l 文档的映射过程 第二章t a b l e b a s e d 映射和o r 映射 x m l o b j e c t b t a b l e g a ) b ) b b b ! e l e m e n tc ( # p c d a t a ) c 1 a 8 8 e g ;= = = = = = 2 = = = = = = t a b l e 目 t a b l ea : 。a )c 0 1 u m nb 1 c 0 1 u m nb 2 c o l u m nb 3 c o l u m nc 当重复的元素个数不能确定时,可能数量会很大,我们就会将重复子元素 映射成单独的一个表,该表和父表通过主键和外键来进行关联,主键通常在父 表中。例如: d t d c l a s s e s t a b l e s = = = 口i = i ,j = 一= = 一一= 一= = ( 1 e l e m e n ta ( b + ,c ) c l a s sa(table a : s t r i n g c , c o l u m nc ) t a b l eb : c o l u m na _ f k c 0 1 u m nb 3 映射可选子元素 对于“? ,和“毒j ,的映射类似于前面的讨论豹映射可选项,例如: 1 3 吣钟 g g a h h 8 r r 乳 乳 lc 华南理工大学工学硕士学位论文 - _ - _ - - _ _ _ _ _ _ _ _ _ _ - _ _ _ - - - i _ _ _ _ _ _ i _ _ _ _ _ l _ - _ _ l _ - _ l _ _ _ l _ - _ _ i l _ _ _ - l l - _ - _ _ d t d 一;= 一一= = le l e m e n t 丑( 抖p c d a t a ) j e l e m e n td ( e ,f ) 将对象模式映射到数据库模式: c 1 a b 8 e 8 t l = = = = = = ;= = = = = = ;l i i l = = # c l a s sa s t r i n gb :l q u l l a b l e s 七r i n gc j n u l 1 a b l e d d7 n u l l a b l e ) c l a s 8df s t r i n ge f s t r i n gf ; 注意,表c 中的列不能为n u l l , 有相应的行。 复杂内容模型的映射还有很多, c l a 自8 e 8 = = t = = = = = = = = j 口= = = = = = = = c l a s da ( s t r i r l gb :n u l l a b l e s t r i n gc :l q u l l a b l e dd j n u l l a b l e c l a 8 ed s t r i n ge i s t r i r i gf , ) t a b l e 8 = = = l i t = t = = = = = = = = = ;i z t a b l ea : c 0 1 u m nb n u l l a b l e c o l u m no n u l l a b l e c o l u m ndf k n u l l a b l e t a b l ed : c o l u m nen o tn u l l a b l e c o l u m nfn o tn u l l a b l e c o l u m n d p k n o tn u l l a b l e 因为在a 中没有c 子元素,在c 表中将没 在这里我们只讨论一些比较常见的映射。 2 3t a b ie - - b a s o d 映射和0 - r 映射的优缺点 t a b l e b a s e d 映射的优点很明显,它非常简单。因为x m l 文档结构和表的 结构非常相近,所以开发这种映射比较容易。 但这种映射也存在很大的缺点:首先,它不能应用于所有的x m l 文档,它 只适用于x m l 文档的子集。其次,它在映射前改变了x m l 文档的结构,并且无 1 4 釜三耋:! := ! :璧堑翌! :! 鉴型 法对原来的x m l 文档结构进行保存,这样,会导致一部分信息的丢失,这样会 使得从数据库中还原回来的x m l 文档与原始文档大相径庭。 t a b l e b a s e d 映射通常被中间件用来作一些x m l 文档与关系数据库之间的 数据传输。它的功能较弱,只能作一些简单的应用。 o r 映射比t a b l e b a s e d 映射功能上要强得多,它可以适用于几乎所有的 x m l 文档。 虽然o r 映射功能强大,但也存在着一些缺点:首先,o - r 映射过程复杂, 开发一个完整的o r 映射工作量很大,要考虑很多因素,如x m l 文档的多种结 构所带来的影响使得对每一种结构都要有相应的映射方法。其次,它也有一个 和t a b l e b a s e d 映射相同的问题,从数据库中还原回来的x m l 文档与原始文档 仍然不能完全吻合,即难以按原样从数据库中还原x m l 文档。参见下图: 2 4 本章小结 x m l 文档# 1 与# 2 不完全相同 图2 1x m l 文档还原 在这一章中,我们讨论了t a b l e b a s e d 映射和o r 映射。t a b l e b a s e d 映射将x m l 文档视为一个表或表的集合,它对x m l 文档的结构要求严格,因此 在映射前,需要使用x s l 进行结构转换。由于转换后的x m l 文档与表的结构相 近,所以映射工作比较简单,映射的速度也比较快。 o r 映射比较复杂,分为两步执行。首先,将x m ld t d 映射成对象模式, 然后再将对象模式映射成关系模式。这种映射可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国深圳市服装行业发展监测及市场发展潜力预测报告
- 护士企业编制面试题库含答案详解(突破训练)
- 押题宝典期货从业资格之《期货法律法规》模考模拟试题及参考答案详解
- 2025年度汽车金融贷款授信合同借款
- 2025年体育场馆汽车停车位租赁与赛事服务合同
- 2025版私家车买卖合同及车辆上牌服务协议
- 2025大闸蟹加盟店产品研发合同范本大全
- 2025版电商品牌授权代理销售合同书
- 2025版水电站工程监理合同书
- 2025年智慧社区房产代理销售服务合同
- GB/T 3836.4-2021爆炸性环境第4部分:由本质安全型“i”保护的设备
- GB/T 20801.6-2020压力管道规范工业管道第6部分:安全防护
- GB/T 19355.2-2016锌覆盖层钢铁结构防腐蚀的指南和建议第2部分:热浸镀锌
- GA/T 1163-2014人类DNA荧光标记STR分型结果的分析及应用
- 蒸汽发生器设计、制造技术要求
- 全套课件-水利工程管理信息技术
- 施工员钢筋工程知识培训(培训)课件
- 《阿房宫赋》全篇覆盖理解性默写
- 学校体育学(第三版)ppt全套教学课件
- 住建部《建筑业10项新技术(2017版)》解读培训课件
- NCStudioGen6A编程手册
评论
0/150
提交评论