the_xml_文档到数据库数据转换研究guide_download_第1页
the_xml_文档到数据库数据转换研究guide_download_第2页
the_xml_文档到数据库数据转换研究guide_download_第3页
the_xml_文档到数据库数据转换研究guide_download_第4页
the_xml_文档到数据库数据转换研究guide_download_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2004年2月 第27卷 第1期 北 京 邮 电 大 学 学 报 Journal of Beijing U niversity of Posts and Telecommunications Feb. 2004 Vol . 27 No. 1 文章编号: 100725321(2004)0120084205 XML文档到数据库数据转换研究 邓 芳 (北京邮电大学 计算机科学与技术学院,北京100876) 摘要:探讨了XML文档到数据库数据转换的方法,结合实例分别给出了基于XML Schema的文 档到关系数据库和对象2关系数据库转换的方法,可以在基于XML的数据交换和集成中得以应 用 关 键 词: XML Schema;关系数据库;对象2关系数据库 中图分类号: TP30112 文献标识码: A Conversion from XML Documents to Database DEN G Fang (Computer Science and Technology School, Beijing U niversity of Posts and Telecommunications, Beijing 100876, China) Abstract: A method to convert extensible markup language(XML)documents to data stored in database is discussed. A example is given baesd on w hich w ays from XML Schema to relational and object2relational database are i mplemented. The w ays can be applied to data exchanging and integration. Key words: XML Schema; relational database; object2relational database 收稿日期: 2002207210 基金项目:国家自然科学基金项目(60242002) 作者简介:邓 芳(1972- ),女,副教授E2mail: dengfangbupt. edu. cn XML(extensible markup language)作为SGML的一个子集, 1998年成为W 3C推荐的 W eb上的数据表示和交换的标准XML以其简单性、 可扩展性、 互操作性、 开放性等特点受到 关注和欢迎,在很多方面得到应用,如设计行业领域置标语言、 进行文件保值、 数据交换、 支持 W eb应用的互操作和集成等,特别是在数据交换和互操作方面, XML以其显著的优势成为数 据交换、 存储的中介和工具1 在这方面,人们主要从两个不同的角度进行了研究:一个是 XML数据本身的表示、 存储和管理 2; 另一个是XML数据和数据库数据之间的转换3, 4 本 文主要从后一个角度进行探讨在研究XML数据与数据库之间进行转换中,常见的方法和方 向是 : (1) 根据XML DTD文档进行数据的转换 ; (2) 研究XML数据到关系数据库或对象数 据库之间的转换 本文在此基础上,主要从以下两个不同的方面进行讨论 : (1) 考虑以XML Schema文档进行数据转换 ; (2) 不仅考虑XML数据到关系数据库,也考虑到对象_关系数据 库的转换,因为后者目前在市场上比纯关系数据库或纯对象数据库应用更为广泛 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. 1 XML到关系数据库的数据转换 在XML数据转换到数据库中时,考虑到有可能还需要再从数据库导出,我们不仅保存数 据,还保存XML Schema中定义的元素间关系.作为元数据存储,类似于关系数据库中数据字 典存储内容 整个转换分为以下几步: (1)建立元数据字典 通过扫描Schema文件,XML Schema中主要定义了文档中能够使用的元素和属性,即文 档的信息结构,在这里元数据字典中用两张关系表EL EM EN T和A TTR I BU TE来存储信息 结构和属性定义 XML文档描述的半结构化数据中大都表现为某种图和树的结构,所以在元素关系表 EL EM EN T中将这种结构表现出来: EL EM EN T(NAM E, DA TA_TYPE, A TTR I BU TE_TYPE, PAREN T, F IRSTCH I LD, N EXT,ORDER,M I NOCCURS,MAXOCCURS) NAM E:元素名称; DA TA_TYPE:元素数据类型; A TTR I BU TE_TYPE:元素属性类型或属性; PAREN T:父元素名称,缺省为NULL ,如果最终值为NULL ,则说明此元素为某一 ROOT节点; F IRSTCH I LD:第一个子元素的名称,缺省为NULL ,如果最终值为NULL ,则说明此元 素为叶节点; N EXT:下一个兄弟元素的名称; ORDER:子元素是否严格遵循顺序,取值遵循Schema定义; M I NOCCURS,MAXOCCURS:元素值出现的次数,分别取0、1、 3 表示XML中可选子 元素、 “+” 型重复元素和 “3 ” 型重复元素 在A TTR I BU TE中存储类型定义的相关信息: A TTR I BU TE(NAM E,EL EM EN T_NAM E,DA TA TYPE,DA TAVALU ES, DEFALU T,REQU IED) 这里主要存储元素属性及属性类型的信息,表中各数据项和Schema中属性类型定义的 含义类似,不再详述 例:定义一个关于公司联系人的Schema文件: ? xm l version=“110”encoding=“GB2312”? Schema xm lns=“urn: schemas2m icrosoft2com: xm l2data” xm lns: dt=“urn: schemas2m icrosoft2com: datatypes” A ttributeType name=“公司”dt: type=“string” ? ElementType name=“姓名”dt: type=“string” ? ElementType name=“I D”dt: type=“string” ? ElementType name=“公司”dt: type=“string” ? ElementType name=“EMA I L”dt: type=“string” ? ElementType name=“电话”dt: type=“fixed. 1414” ? ElementType name=“街道”dt: type=“string” ? 58 第1期邓 芳: XML文档到数据库数据转换研究 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. ElementType name=“城市”dt: type=“string” ? ElementType name=“省份”dt: type=“string” ? ElementType name=“地址”content=“eltOnly”order=“seq” element type=“街道”? element type=“省份” ? element type=“城市” ? ?ElementType ElementType name=“联系人”content=“eltOnly” order=“seq” element type=“姓名” ? element type=“I D” ? element type=“公司” ? element type=“EMA I L” ? element type=“电话” ? element type=“地址”m inOccurs=“1” maxOccurs=“3 ” ? ?ElementType ElementType name=“联系人列表”content=“eltOnly” element type=“联系人” m inOccurs=“1” maxOccurs=“3 ” ? attribute type=“公司” ? ?ElementType ?Schema 我们扫描Schema文件,建立的EL EM EN T表如表1所示 表1 ELEM ENT表的内容 NAM E DATA _TYPE ATTR I BU TE _TYPE PARENTF IRSTCH I LD NEXTORDER M I NOCCURS MAXOCCURS 姓名StringNULL联系人NULLI DNULL11 I DStringNULL联系人NULL公司NULL11 EMA I LStringNULL联系人NULL电话NULL11 电话fixed. 14. 4NULL联系人NULL地址NULL11 街道StringNULL地址NULL城市NULL11 城市StringNULL地址NULL省份NULL11 省份StringNULL地址NULLNULLNULL11 地址NULLNULL联系人街道NULLseq13 联系人NULLNULL联系人列表姓名NULLseq13 联系人列表NULL公司NULL联系人NULLNULL13 表2 ATTRIBUTE表 NAM EELEM ENT_NAM EDATATYPEDATAVALU ESDEFALU TREQU IED 公司联系人列表StringNULLNULLYES (2)建立数据关系基表 可以根据上面所建立的元数据字典来建立数据关系基表,主要考虑树型结构,建立的步骤 如下: a)扫描EL EM EN T表及A TTR I BU TE表,为PAREN T为NULL的元素建立一张表, 表名为元素名称,包含数据项为其所有子元素及所包含属性; 68北 京 邮 电 大 学 学 报第27卷 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. b)如果子元素有取值为 “3 ”(值出现0次或多次)或 “+”(值出现1次或多次 ), 为子元素 建立一张表,它在原来父元素表中的属性名为 父表名_I D,并在子元素表中加上这一属性, 作为和父表的联系; c)重复上面的操作,直到所有的元素考虑完毕 根据上面的规则,可以建立以下3张关系表: 联系人列表(联系人列表_I D,公司 ); 联系人(联系人列表_ I D, 姓名, I D,公司, EMA I L ,电话,联系人_I D ); 地址(联系人_ I D, 街道,城市,省份) (3)数据导入 这一步只是数据填入的工作,扫描的是XML数据文件,根据数据文件中元素名称,找到 相应基表中的数据项,并把对应数据写入表中系统需要处理的是为表间关联的属性加上标识 值,可以是不断累加的编号 2 XML到对象-关系数据库的数据转换 对象2关系数据库是在成熟的关系数据库基础上发展起来的,以满足不断增长的,新的商 业应用的需求、 多媒体应用及迅速发展的W eb应用 具体方法是在关系数据库中增加对象的 特性和功能,并允许用户定义类和对象5 在增加了对象后,更容易表达这种XML文档所描 述的半结构化的数据 与关系数据库类似,也有同样的3步,每一步转换的内容不同 (1)建立元数据字典 建立关系表EL EM EN T 利用对象数据类型,元素基本信息对象element_infotype和属 性对象attribute_infotype为: CREATE TYPE attribute_infotype AS OBJECT( NAM Evarchar2(20), DATATYPEvarchar2(20), DATAVALU ESvarchar2(100), DEFALU Tvarchar2(20), REQU IED char) CREATE TYPE element_infotype AS OBJECT( NAM Evarchar2(20), DATA_TYPEvarchar2(20), ATTR I BU TE_TYPEattribute_info, ORDERvarchar2(20), M I NOCCURSint, MAXOCCURSint) CREATE TYPE attribute_info AS ARRAY(20)of attribute_infotype; 建立EL EM EN T表: CREATE TABLE ELEM ENT( BASE_I NFOelement_infotype, PARENTelement_infotype, F IRSTCH I LDelement_infotype, NEXTelement_infotype) 同样扫描Schema文件,将元素内容填入上面定义的表和对象等数据结构中即可 78 第1期邓 芳: XML文档到数据库数据转换研究 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. (2)建立数据关系基表 充分利用对象2关系数据库中对象类型表达,考虑XML文档一般构成的树型结构: a)为根节点建立一张基表,数据项由子节点(子元素)对象及其属性构成; b)为其它节点(子元素)建立对象类型,数据项由它的子节点(子元素)对象构成,如果子 节点为叶节点,则节点成为一数据项; c)如果子元素有取值为 “3 ”(值出现0次或多次)或 “+”(值出现1次或多次 ), 则为其创 建数组类型 根据以上规则建立以下数据关系基表和数据对象: CREATE TABLE联系人列表( 联系人 联系人_array, 公司 公司_type) CREATE TYPE联系人_array AS VARRAY(20)of联系人_ info; CREATE TYPE联系人_info AS OBJECT( 姓名 varchar2(20), I Dvarchar2(20), 公司varchar2(20), EMA I Lvarchar2(20), 电话number, 地址地址_array) CREATE TYPE地址_array AS VARRAY(20)of地址_info; CREATE TYPE地址_info AS OBJECT( 街道varchar2(20), 城市varchar2(20), 省份varchar2(20) CREATE TYPE公司_type AS OBJECT( 公司varchar2(20) (3)数据导入 扫描XML数据文档,根据建立的数据表来进行数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论