1、第第9章章 数据库应用程序开发数据库应用程序开发 9.1 数据库应用程序设计方法 9.2 数据库应用程序的体系结构 9.3 数据库与应用程序的接口 9.4 数据库应用程序开发9.1 数据库应用程序设计方法数据库应用程序设计方法 1.结构特性设计结构特性的设计是指数据库结构的设计。其结果是得到一个合理的数据模型,以反映现实世界中事物间的联系,它包括各级数据库模式(模式、外模式和内模式)的设计。返回首页返回首页 2.行为特性设计行为特性的设计是应用程序设计,包括功能组织、流程控制等方面的设计。其结果是根据行为特性设计出数据库的外模式,然后用应用程序将数据库的行为和动作(如数据查询和统计、事物处理及
2、报表处理)表达出来。返回本节返回本节9.2 数据库应用程序的体系结构数据库应用程序的体系结构 9.2.1 主机集中型结构 9.2.2 文件型服务器结构 9.2.3 二层客户/服务器(C/S)结构 9.2.4 三层客户/服务器结构返回首页返回首页9.2.1 主机集中型结构主机集中型结构 主机集中型结构的数据库应用系统一般在一台主机(大型计算机或小型计算机)带多台终端的环境下运行,这种结构在20世纪6070年代比较盛行。在这种结构的数据库应用程序中,数据库的存储、计算、读取与应用程序的执行,全部集中在后端的主机上执行。用户通过前端的终端输入信息传至主机处理,主机处理完成后将处理的结果返回到前端的终
3、端显示给用户。其结构如图9-2所示。返回本节返回本节9.2.2 文件型服务器结构文件型服务器结构 到了20世纪80年代,随着苹果计算机、IBM个人计算机的诞生,其开放性的结构、日渐平易近人的价格,以及愈来愈强的执行性能,已为一般企业所能负担,而文件型数据库应用程序也就在此时趁势崛起。在文件型数据库应用程序中,数据存放在文件型数据库中,如早期的dBaseIII,到今天的Access,就是一些拥有高知名度的文件型数据库。存放数据库文件的服务器作为文件服务器使用,应用程序的数据运算和处理逻辑则存放在前端的工作站中。其体系结构如图9-3所示。例如:在数据库中有一客户表,共有10,000条客户资料。现假
4、设想找出客户编号为00001的客户信息,则文件型数据库应用程序处理这个请求的方法是:(1)先把这10,000条客户数据从文件服务器通过局域网传至前端工作站。(2)前端工作站再从这10,000条客户数据中查找客户编号为00001客户信息。(3)查询作业结束后,再把这10,000条记录返回到文件服务器。返回本节返回本节9.2.3 二层客户二层客户/服务器(服务器(C/S)结构)结构 为了解决费用和性能的矛盾,客户/服务器(C/S)结构就应运而生了。该结构是由一组性能良好且稳定的主机来做数据库服务器,然后连上一群充当客户机的工作站而成。在这种结构中,数据库的管理由数据库服务器完成,应用程序的数据处理
5、,如数据访问规则、业务规则、数据合法性校验等则可能有两种情况:一是全部由客户机来完成,客户机向服务器传送的是结构化查询语言SQL;二是由客户机和服务器共同来承担,程序处理一部分在客户端以程序代码来实现,一部分在服务器端以数据库中的触发器或存储过程实现,客户机向服务器传送的是SQL或要进行处理的参数。其系统结构如图9-4所示 图图9-4客户客户/服务器结构服务器结构以同样要从10,000条客户数据记录中,找出客户编号为00001的客户信息,客户/服务器结构对这种请求的处理方式是:(1)前端客户机向后端数据库服务器发出请求。(2)数据库服务器在收到前端客户机的请求后,自客户表中找出编号为00001
6、的客户信息。(3)数据库服务器再把查询到的结果传至前端客户机。由于这种通信方式简单,软件开发起来容易,现在很多的应用软件都是基于这种二层的客户/服务器模式的,但这种结构模式的软件存在以下问题:伸缩性差。性能较差。重用性差。移植性差。返回本节返回本节9.2.4 三层客户三层客户/服务器结构服务器结构分离的目的是使客户机上的所有处理过程不直接涉及到数据库管理系统,分离的结果将应用程序在逻辑上分为三层:用户服务层:提供信息浏览和服务定位。主要是实现用户界面,并保证用户界面的友好性、统一性。业务处理层:实现数据库的存取及应用程序的商业逻辑计算。数据服务层:实现数据定义、存储、备份和检索等功能,主要由数
7、据库系统实现。图图9-5三层客户三层客户/服务器结构服务器结构三层结构的系统具有如下特点:(1)业务逻辑放置在中间层可以提高系统的性能,使中间层业务逻辑处理与数据层的业务数据紧密结合在一起,而无需考虑客户的具体位置。(2)添加新的中间层服务器,能够满足新增客户机的需求,大大地提高了系统的可伸缩性。(3)将业务逻辑置于中间层,从而使业务逻辑集中到一处,便于整个系统的维护和管理及代码的复用。一个基于Web的应用程序在逻辑上可能包含如下几层:1层,由Web浏览器实现的一个客户层的界面。2层,由Web服务器实现的一个中间层的任务分配机制。3层,由一些服务器端脚本实现的中间层服务。4层,由关系数据库实现
8、的数据层存储机制。图图9-6互联网应用程序结构互联网应用程序结构返回本节返回本节9.3 数据库与应用程序的接口数据库与应用程序的接口 9.3.1 ODBC 9.3.2 一致数据访问技术UDA(Universal Data Access)9.3.3 JDBC返回首页返回首页9.3.1 ODBC 1ODBC的体系结构 2管理数据源1ODBC的体系结构的体系结构ODBC的体系结构如图9-7所示,它由数据库应用程序、驱动程序管理器、数据库驱动程序和数据源四部分组成。(1)数据库应用程序。(2)驱动程序管理器(3)数据库驱动程序。(4)ODBC数据源。2管理数据源管理数据源(1)启动ODBC驱动程序管理
9、器。选择“我的电脑”“控制面板”“管理工具”,双击“数据源(ODBC)”图标打开ODBC数据源(驱动程序)管理器,如图9-8所示。(2)选择ODBC驱动程序。切换到“系统DSN”标签页,单击“添加(D)”按钮,将弹出如图9-9所示的对话框,选择数据源驱动程序SQL Server,单击“完成”按钮。(3)输入ODBC数据源名称,选择数据源的SQL服务器。在图9-10中,将数据源命名为LocalServer,服务器选择为local,单击“下一步”按钮。(4)登录身份配置。在图9-11中,选择登录到SQL Server的安全验证信息,选中“使用网络登录ID的Windows NT 验证”复选框,客户端
10、配置为默认值。(5)选择连接的默认数据库。如图9-12所示,将默认的数据库改为Northwind数据库(此数据库是安装SQL Server 2000时用于演示的示范数据库)。(6)在图9-13中,可以设置SQL Server的系统消息,如语言、货币、时间、数字格式以及日志等(一般保持默认设置即可)。图图9-8“系统系统DSN”选项卡选项卡图图9-9 “创建数据源创建数据源”对话框对话框图图9-10输入输入DSN的名称并指定的名称并指定SQL Server所在的服务器所在的服务器图图9-11选择选择SQL Server验证登录的验证登录的ID方式方式图图9-12更改默认的数据库更改默认的数据库图
11、图9-13SQL Server DSN配置对话框配置对话框图图9-14“ODBC Microsoft SQL Server 安装安装”对话框对话框返回本节返回本节9.3.2 一致数据访问技术一致数据访问技术UDA(Universal Data Access)1OLE DB 2ADO(ActiveX Data Object)3一致性访问技术的体系结构1OLE DB 继ODBC之后,微软又推出了OLE DB。简单地说,OLE DB是一种技术标准,目的是提供一种统一的数据访问接口。这里所说的“数据”,除了标准的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服务,以及主机系统中的
12、IMS和VSAM数据。OLE DB标准的核心内容就是要求为以上这些各种各样的数据存储(Data Store)都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。OLE DB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称。数据提供者:包含数据并将数据输出到其他组件中去。提供者大致分为两类:数据提供者和服务提供者。业务组件:利用数据服务提供者、专门完成某种特定业务信息处理、可以重用的功能组件。消费者:是使用OLE DB对存储在数据提供者中的数据进行控制的应用程
13、序。2ADO(ActiveX Data Object)ADO是OLE DB的消费者,与OLE DB 提供者一起协同工作。它利用低层OLE DB为应用程序提供简单高效的数据库访问接口,ADO封装了OLE DB中使用的大量COM接口,对数据库的操作更加方便简单。ADO实际上是OLE DB的应用层接口,这种结构也为一致的数据访问接口提供了很好的扩展性,而不再局限于特定的数据源,因此,ADO 可以处理各种OLE DB支持的数据源。3一致性访问技术的体系结构一致性访问技术的体系结构 一致性访问技术的体系结构即使用ADO和OLE DB获取数据的体系,结构如图9-16所示。从图中可以看出,应用程序既可以通过
14、ADO访问数据也可以直接通过OLE DB访问数据,而ADO则通过OLE DB访问底层数据。返回本节返回本节9.3.3 JDBC 1JDBC 的工作原理用JDBC开发Java数据库应用程序的工作原理如图9-17所示。2JDBC API组成部分JDBC API共分为两个不同的层:应用程序层是前端开发人员用来编写应用程序的;驱动程序层是由数据库厂商或专门的驱动程序生产厂商开发的。前端开发人员可以不必了解其细节信息,但是在运行使用应用程序层JDBC的程序之前,必须保证巳经正确地安装了这些驱动程序。具体来说,JDBC API包括5个组成部分,如图9-18所示。JDBC API包括包括5个组成部分个组成部
15、分 (1)驱 动 程 序 管 理 器(D r i v e r Manager)。(2)驱动程序(Driver)。(3)连接(Connection)。(4)语句(Statement)。(5)结果(ResultSet)。返回本节返回本节9.4 数据库应用程序开发数据库应用程序开发 下面就以此表为例,讲解数据库应用程序开发的过程。字段代码字段名称字段类型长度小数是否为空BOOKID书号char20 NOT NULLBOOKNAME书名varchar20 NOT NULLEDITER作者varchar8 NULLPRICE价格money NULLPUBLISHER出版社varchar20 NULLQT
16、Y库存数量int NOT NULLn假设在数据库设计的实施阶段,已在假设在数据库设计的实施阶段,已在SQL Server 2000下建立了下建立了“图图书管理系统书管理系统”BOOKSYS数据库,并在此数据库中建立了所有的表。数据库,并在此数据库中建立了所有的表。其中其中BOOK表的结构为:表的结构为:返回首页返回首页1用用VB6访问数据库访问数据库(1)启动VB6,新建一个标准工程,如图9-19所示。然后单击“打开”按钮。(2)在工程中引用ADO组件。(3)为工程加载MSFlexGrid控件。(4)设计图书查询窗体SelBook的界面,添 加 一 个 标 签 页 及 一 个MSFlexGri
17、d控件,如图9-22所示。(5)为图书查询窗体添加代码。在工程资源管理器中,选中SelBook窗体,在菜单栏单击“视图”“代码窗口”,进入SelBook窗体的代码设计状态,输入如下的代码(略)(6)在菜单栏上,单击“工程”“工程属性”,将弹出工程属性对话框,如图9-23所示。在启动对象下拉列表中选择SelBook。(7)编绎并运行该程序,运行结果如图9-24所示。图图9-19新建一个标准工程新建一个标准工程图图9-20引用引用ADO组件组件图图9-21加载加载MSHlexGrid控件控件 图图9-22图书查询窗体设计图书查询窗体设计图图9-23工程属性对话框工程属性对话框图图9-24图书查询运
18、行结果(图书查询运行结果(VB数据库应用程序)数据库应用程序)2用用Java访问数据库访问数据库下面同样以books表的查询操作为例,讲解Java通过JDBC API操作数据库的方法和步骤。程序代码(SelBook.java)如下:import java.sql.*;public class SelBook1 public static void main(String args)try /加载数据库驱动程序 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/连接数据库Connection conn=DriverManager.getConnection
19、(jdbc:odbc:SelBook,);/创建一个SQL语句Statement stmt=conn.createStatement();/查询books表,并将结果集放在结果集对象中ResultSet rs=stmt.executeQuery(select*from book);/下面的语句为输出查询结果 System.out.println(图书查询结果:);System.out.println(t图书号tt图书名ttt作者t价格t出版社ttt数量);while(rs.next()System.out.print(t+rs.getString(1);System.out.print(t+r
20、s.getString(2);System.out.print(t+rs.getString(3);System.out.print(+rs.getDouble(4);System.out.print(t+rs.getString(5);System.out.print(t+rs.getInt(6);System.out.println();conn.close();catch(Exception e)e.printStackTrace();运行上面的Java程序,得到图书查询的运行结果(Java数据库应用程序)。图书查询结果:返回本节返回本节小结小结 本章首先介绍了开发数据库应用程序的整个过
21、程,然后介绍数据库应用程序的4种体系结构,从最开始的集中式、到文件服务器方式,再到现在应用范围非常广泛的客户/服务器方式,以及目前日益兴起的基于B/S结构的多层客户/服务器结构。数据库应用程序需通过数据访问接口才能访问数据库,数据访问接口分为专用接口和通用接口两种。专用接口是每个数据库管理系统提供的专用数据访问接口。通用接口的思想是Microsoft提出的,通过这些通用接口,用户可以访问不同的数据库管理系统,这样极大简化和方便了用户对数据库的访问。本章的最后,通过两个流行数据库应用程序开发工具Visual Basic和Java,介绍了使用架构在OLE DB之上的ADO组件和JDBC提供的JDBC API访问数据库的方法,以使同学们建立起开发应用程序的基本思路。