XML与关系数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XML与关系数据库

前面我们讲到了XML的数据存取机制,从一个较高的层面上分析了数据存取的多种方式。作为其中的一种,数据库的数据存取机制似乎倍受青睐,但我们并未对此作比较深入的探讨,这一节里我们对XML与数据库的关系进行更进一步的详细分析。

我们知道,关系数据库提供了对于大批量数据的有效存储管理和快速信息检索、查询的功能。从体系结构上看,数据库技术的发展历经了网络型数据库、层次型数据库、关系数据库、面向对象数据库。虽然面向对象数据库融入了面向对象技术,但是到目前为止,在各个领域使用最广的还是关系数据库。关系数据库管理系统(RDBMS)采用二维表格作为存储数据的模型,如下图10-1所示,

字段字段字段

图10-1 关系数据库二维表

表格由行和列组成,一般情况下,列被称作“字段”,用于表示组成数据有效信息的属性,而行则用于指示一条完整的数据记录。由于数据间的相关性可以通过表与表之间关键字(外键)来关联,由此产生了“关系”类型数据库的由来。

关系数据库有自己的查询语言——结构化查询语言(Structured Query Languag e,SQL)。SQL最初由IBM提出,后经不断发展,已于1986年成为业界标准并被广泛采用。SQL 是非过程性的。当SQL语句传送到数据库服务器后,服务器返回满足条件的结果或结果集(视具体查询项目而定)。一般情况下,大多数支持SQL 的服务器系统均采用客户/服务器架构,现在又发展到更为先进的分布式处理架构。这样一来,SQL服务器既可以接收客户应用程序发送的查询请求,也可以接收其他服务器的查询请求,这些服务器可能是其他SQL服务器,也可以是XML服务器。

就数据存储而言,关系型数据库已经是相当成熟的应用,从80年代商用产品出现至今,早已深入企业储存及数据应用的核心。相较之下,XML部分技术尚且在发展阶段。关系型数据库是透过详细定义和控制结构化数据的方式,达到数据增、删、查询的目的。因此它是以字段数据型态的精确定义,将数据以列的方式一笔笔储存,再透过数据表之间的互相关联,建构出数据和数据结合后的复杂结果,因此

企业在日常营运可以仰赖这种方式来储存数据。但是,定义好的关系型数据库一旦要修改字段,牵动的范围相当大,既会影响到过去的数据,也会影响到其它相关联的数据表。因此它在变动的弹性上较小。然而由于企业内产生的数据并非总是这么规矩,一旦遇到非结构化的数据型态,关系型数据库便显得左右支绌,施展不开手脚。相对而言,由于XML是以阶层式的树状结构作为储存架构,通过元素(Eleme nt)和属性(Attribute)来包含数据,再利用XML schema控制数据的正确性。这种架构特性,让XML随时可以新增字段,只要吻合XML schema的定义,字段便可以弹性置入。此外,XML透过元素和属性描述数据,以及不需转译编码的文字型态,让它可以不受操作系统和应用程序的限制,在数据交换上相当容易进行,而且它的内容除了可以被人类解读之外,也能被机器或应用程序所辨读。鉴于这些X ML的优势,可以解决关系型数据库在应用及储存上的不足,因此传统数据库大厂纷纷在关系数据库的基础上推出支持XML的方式。

关系型数据库在支持XML上大致有三种方式:一种是把xml文件原封不动的存储在关系数据库的字段里面(严格的说这不是一种新的支持方式,而是关系数据库天生就有的功能。);另一种是将XML的树状结构数据拆解成数成关系型数据库的之后再存入数据库,一旦需要存取时,再通过组合,还原成XML文件;还有一种则是保留XML原有的运作方式,又称之为原生XML数据库,原生型数据库的做法则是保留阶层式的XML格式存进数据库,并且利用XML的树状节点特性,进行查询节点数据或新增、删除数据。实际应用中,第一种方式的应用环境将受到一定限制,因为关系数据库不能很好地处理大容量的结构化的信息和文本数据;第二种方式,因为关系型数据库并不能很好地支持层次、顺序、包含等在结构化置标语言中十分本质的关系,所以在开发中也仍有很多问题要解决;由于XML本身是档案型的数据储存方式,在安全管理的机制上并没有良善的处理方式,只要一旦储存在数据库中,就可以享有数据库本身的安全机制。这样看来原生XML数据库似乎更受欢迎。

但相较之下,关系型数据库在技术的成熟度上,查询速度上都是更有效率的数据处理方式,在目前是处于主导地位。如非必要,在需要XML与数据库进行数据交换的时候,使用“将XML的树状结构数据拆解成数成关系型数据库”的方式即可,因此本节里我们不再讨论使用关系数据库来存储XML文档,也不再讨论原生XML数据库,而是重点关注如何将XML的树状结构数据拆解成数成关系型数据库的型态,进而达到XML数据与关系数据库之间的数据交换,下面通过一个实例来了解这样常用数据交换方式。在该实例的开发过程中我们侧重于JSP功能实现与X ML数据文件的使用,对于网页的显示的样式的修饰,在这里没有做太多的要求。数据库使用MYSQL。

本实例是让用户输入要查询的客户的姓名信息,提交后自动根据用户输入的信息从数据库里提取相关的记录组装成XML文件存储起来,最后把存储好的XML 文件内容发送给查询用户。

首先新建一个数据库,名称为kehu,它存储公司的是客户信息。它包含一个表

名为kehus,此表共有三个字段组成:id、name、add、tel,它们分别记录客户的序号、姓名、地址和电话等信息(在这个实例中需要预先向kehus表加入客户信息记录若干条)。其次创建第一个显示视图文件view.html,用来收取用户输入信息,打开记事本输入下列代码:

在tomcat的webapps文件夹下新建一个站点Example,将view.html保存在Ex ample文件夹下,打开IE浏览器,在地址栏里输入“http://localhost:8080/Example/v

iew.html”,单击【转到】会显示如图10-2所示窗口。check()函数是对表单的简单验证,即输入不能为空,如果为空会显示如图10-3所示窗口。

图10-2 客户端视图图10-3 JavaScript 验证如果用户输入的值符合要求,那么这个值就会被提交到model1.jsp来处理。下面创建另外一个页面model1.jsp。打开记事本,输入如下例10-2所示代码。

相关文档
最新文档