




免费预览已结束,剩余40页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XML和数据库,为什么使用数据库?数据和文档的对比以数据为中心的文件以文档为中心的文件数据(Data)、文件(Documents)和数据库(Databases)存储和获取数据传输数据将文档结构映射成数据库结构-以模板驱动的映射-以样式驱动的映射数据类型,空值(Null),字符集设置和其他所有的类似集-数据类型-二进制数据-空值(Null)-字符集设置-处理指令(ProcessingInstructions)-存储(StoringMarkup)从数据库的结构生成DTDs和逆反过程存储和获取文件(Documents)内容管理系统和关系数据库,为什么需要数据库?,当你考虑到要使用XML和数据库时的第一个要问你自己的问题应该是:为什么我需要使用数据库?我需要使用何种数据库?你是需要显示数据?你是需要一个保存你主页的空间?数据库在电子商务运用程序中时把XML当做数据传输格式传送吗?这些问题的答案都将直接影响到你对数据库和中间件(如果使用了的话)的选择。,需要何种数据库?,假设你是把XML做为一种数据传输格式使用在你的电子商务运用程序中。那么意味着你需要传输的数据格式将主要是具有高度规范结构,那么在XML中的那些自己的编码规范对你而言并不重要了,这样你的兴趣就仅仅是在数据上而不是在这些数据如何物理存储在文档中了。如果你的运用程序关系简单,那么一个关系数据库和数据传输中间件将能够满足你的需求;如果关系庞大和复杂,那么你就需要一个完全支持XML的开发环境了。从另一方面来说,假设你是要实现从杂散的XML文件中创建一个网站的功能。你不仅需要管理这个网站,你还要提供给用户查询其中内容的功能。这时你的文件的格式将是高度的不规范,而实体的使用对你来说变得很重要,因为这些文件的结构是网站的基本功能需求。在这个例子中,你就需要一些nativeXML数据库而不是普通的关系数据库,执行解释、XML实体使用和支持查询语言(例如XQL)。,一、我们的相遇并非偶然,其实我已偷偷观注你许久,才选择合适的地方让你对我的印象深刻,目的就是让你像我一样爱上你,而且是一辈子的在一起。二、人类的感情是微秒,在遇见你的那一刻,我的内心慢慢发生变化,如情不自禁的傻乐,偶尔像个孩子般的撒娇,这些都是爱上你的表现,亲爱的!我爱你!三、经历这么多,原以为再也不会相信爱情,但直到认识你的这一天,所有的观念都会改变,我确定自己还需要被爱,还需要有一个人呵护着。四、你的过去我来不及参与,但今后的每一分每一秒我都不会错过,你只要答应给我这个机会,我会让你成为我最爱的女人,亲爱的!我真的好爱好爱你!五、感性一面告诉自己,我好像真的爱上你,我要走进你的世界里,而理性的一面,又在提醒着我,爱情不单单是两个的事情,我需要时间考虑,可爱上你,我没办法再理性下去。六、不想再隐瞒心中的想法,爱情来了本应该好好面对,不管你是否愿意接受我的表白,但今天不做,我会后悔一辈子,亲爱的!嫁给我吧!七、我也不知道从什么时候,你完全占据我的心,无论是工作中,还是休闲中,你总像个顽皮的小孩,打乱我的平静生活,现在该是你付责任的时候,呵呵我爱你!八,数据vs文档,在大多数情况下,判断是否采用数据库的最重要的因素是你使用数据库是用来保存数据呢还是保存文件?如果你想保存数据,你需要的数据库则主要是面向数据存储的,例如一个关系数据库或者一个面向对象的数据库,或者也可以是一个在数据库和XML文档之间传递数据的中间件。从另一个角度来说,如果你想存储文件,你需要一个专门设计用来存储文件的内容管理系统。虽然可以把文件保存在关系数据库或者面向对象的数据库中,但你会发现你的工作经常是在重复实现一个内容管理系统中的功能而已。简单说,虽然一个内容管理系统通常是建立在一个面向对象数据库或者关系数据库的顶层,但是如果只是把一个内容管理系统当做数据库来使用被证明是失败的。你是否需要存储数据或者文件经常取决与你的XML文件。原因是XML文件分为两类:数据为中心和文档为中心。,数据为中心的XML文件,书架上有书,书有书名、作者(可以有多个)、价格(可以不同)、出版社。作者包括姓名、地址、E-Mail(可选)。出版社包括地址、邮编、E-Mail(可选)。,数据为中心的xml文件,ABCIndustries123MainSt.ChicagoIL60609981215Turkeywrench:Stainlesssteel,one-piececonstruction,lifetimeguarantee.9.9510Stuffingseparator:Aluminum,one-yearguarantee.13.275,数据为中心的xml文件,文档为中心的XML文件,以文档为中心的文件表现出来的特点是:不规范的结构,大量的原始数据(就是说,最小的独立数据单元是包含有混合内容的元素级或者本身就是一个文档),和大量混合内容。其中同类型元素和PCDATA出现顺序是非常重要的。,文档为中心的文件主要为“人消费”。,重要通知,TurkeyWrenchFullFabricationLabs,Inc.Likeamonkeywrench,butnotasbig.Theturkeywrench,whichcomesinbothright-andleft-handedversions(skyhookoptional),ismadeofthefineststainlesssteel.TheReadi-griprubberizedhandlequicklyadaptstoyourhands,eveninthegreasiestsituations.Adjustmentispossiblethroughavarietyofcustomdials.Youcan:OrderyourownturkeywrenchReadmoreaboutwrenchesDownloadthecatalogTheturkeywrenchcostsjust$19.99and,ifyouordernow,comeswithahand-craftedshrimphammerasabonusgift.,文档为中心的xml文件,数据(Data)、文件(Documents)和数据库(Databases),事实上,数据为中心和文档为中心的XML文件之间的区别并不是很清晰。例如,虽然一个数据为主的文件(例如一张发票),也有可能包含大量的不规范结构的数据,例如发票的描述部分。而一个以文档为主的文件(例如用户手册),也可能包含有规范的数据结构(通常是元数据metadata),例如作者名和再版日期。除了这些,你用来判断是否是两者中其一的另外一个重要特点是你是对数据还是对文档感兴趣,这也将决定你要采用什么样的系统。要存储和获取数据,你可以使用一个数据库(通常是关系数据库,面向对象数据库或树状结构数据库)和中间件,或你也可以使用XML服务器(你可以把它看成是将数据库和中间件捆绑在一起)。要保存文档,你将需要一个内容管理系统。,存储和获取数据,数据的类型可以在数据为主的文件的原始定义或者从数据库中的字段类型中得到。前者的例子是你想把数据库中的数据保存成XML文件放到网站上;后者的例子是你需要把大量的数据保存到关系数据库中。根据你的具体需求,你需要的软件或者是把XML数据读入到数据库或者是把数据库中的数据输出到XML文件,或者两者都支持。,转录数据(一),当将数据保存在数据库中,它经常需要抛弃与文档信息有关的大量内容,例如它的名称和DTD,同时还有它的物理结构,例如实体的定义和使用、属性值和相同类型元素的出现顺序,还有二进制数据的存储方式(是经过Base64编码的还是没有经过编码的实体或者其他方式),CDATA的内容和其他编码信息。简单而言,当从数据库中获取信息时,最后生成的XML文档结果可能不包含任何CDATA或者实体引用(除非预先定义了实体lt(就是符号),amp(left:20px#i2top:30px;left:30px,实例(二),Content-Type:multipart/related;boundary=-partseparator-partseparatorContent-Type:text/smilContent-ID:smil-message.-partseparatorContent-Type:application/jpegContent-ID:test.jpeg数据-partseparatorContent-Type:application/gifContent-ID:test2.gif数据-partseparator,XML和二进制数据(三),CDATA方法,只是一种理论方法,实际中并不常用。编码转换的方法不失为一种较好的解决方法,但对于大数据量的数据而言,并不是一种非常有效的方法,编码和解码是要有代价的,MIME方法被广泛用于图象处理和多媒体的解决方法。对于关系数据库,这几种方法都被证明是有可能存在问题的,因为大家都知道当保存和获取二进制数据到数据库中的规则是非常严格的,这样对中间件将有可能导致问题。另外,并没有一种标准的符号用来说明一个XML文档中的元素包含有Base64编码数据,从而中间件可能根本就不能够识别这种编码。最后,还有可能有些中间件在将数据存储入数据库的过程中根本就会忽略没有编码实体中的符号或者Base64编码中的元素。所以,如果对你而言,二进制数据非常重要的话,请千万要确认你的中间件是否支持二进制数据。,从数据库的结构生成DTDs,下面的过程(已经简化过的)就是从一个XML文档到关系数据库中生成DTD的:对每一种包含有元素或者混合内容的元素类型,新建立一个table和一个主关键字段。对混合内容中的每一个元素,建立一个分开的table,在其中保存PCDATA,通过主关键字连接到父表中。对于元素类型中每个有单一数值的属性和只包含有PCDATA内容的子元素类型在该table中新建立一列(字段)。如果子元素类型或者属性是可选的,让该字段允许为空。对于每个有多值的属性或者多仅含有PCDATA内容的子元素类型,再建立一个分开的table来保存他们的值,通过它们的父表的主关键字连接到父表。对于每个子元素,这些子元素本身还有元素或者混合内容,使用父表中的关键字将父元素表连接到子元素表中。,从数据库的结构生成XML,对每个table,新建一个元素。对表中的每列,建立一个属性或者只含PCDATA的子元素。对每个包含有在主键/外键关键字关系中主键值的列,新建一个子元素。不幸的是,在这些过程中存在许多缺陷。例如,其中没有实现对数据类型的预先定义和在DTD中没有实现对列长度的预先定义的方法。因为任何的预先定义,例如通过读一个示例文档,当读取其他“类型”的文档或者其他文档中包含有超过字段长度内容的文档时,就会发生错误。(解决这个问题的办法时使用XMLschema文档中数据类型定义)简单来说,当从一个关系结构中生成DTD时,是没有办法预先判断子元素“应该”出现的顺序或者类似数据库中的行标识。尽管有这些陷,根据数据库结构生成DTDs的软件能够给我们带来了一个很好的开端,特别是对与那些非常庞大和复杂的系统。,存储和获取文档(Documents),文件格式可以是XML,当然也可以是其它格式,例如RTF,PDF,或者SGML,然后由它们转换成XML,(有关由数据插入到一个模板中来建立文件,可以参考3.1结束部分的讨论)。于是,如果你使用XML文件,你就需要一种存储文件和从XML文档中获取文件的方法,就象当初把其它格式的文件转换成XML文件格式一样。,对于简单的文件集,文件系统或者一些版本控制系统(例如运用在软件版本控制中的系统)也许就能够满足需求了。但是,如果你有一个复杂的文件集,你就需要一个内容管理系统。(内容管理系统是相对与文件管理系统的,它主要表现在这种系统通常允许你把你的文件分割成不连续的内容块,例如例子,程序,章节或者其他选项,而不是把将每个文件统一成一个整体进行管理。还不仅仅如此,还例如如何协调多个合作者同时对同一个文件进行工作的情况,它允许你依据当前已经存在的文件组成部分中完全合成成一个新的文件。,内容管理系统和关系数据库,因为关系数据库系统的广泛使用,所以这个字眼“将XML文件保存到数据库中”很多人都等同与内容管理系统,许多人都认为将XM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 2 He worked in an office .教学设计-2025-2026学年小学英语五年级下册外研版(一起)
- 2025签订合同授权书范本
- 第4课 集字临摹练习(二)说课稿-2025-2026学年小学书法西泠版六年级上册-西泠版
- 2025电竞赛事品牌合作合同
- 2025商业银行借款合同范本
- 2025年浙江公务员考试试题真题
- 2025年的物流配送服务合同
- 高中历史 第8课 欧洲的殖民扩张与掠夺说课稿 岳麓版必修2
- 化肥厂化肥进口管理制度
- 2025年上海市租房租赁合同范本
- 五牌一图制作
- 【大班幼儿叙事能力的培养策略11000字(论文)】
- 医院物业司梯礼仪服务标准
- 商务礼仪情景模拟实训试题参考
- 喀斯特地貌(全套课件)
- 《上海市奉贤区小区机动车停放管理工作调查报告》4300字
- 水中总氯的测定方法确认实验报告(HJ586)
- 国家开放大学《现代汉语专题》章节自测参考答案
- 老舍《我的母亲》 中职课件
- 分段函数-完整版获奖课件
- 信访人的权利、义务和禁止行为告知书
评论
0/150
提交评论