计算机应用研究
APPLICATION RESERCH OF COMPUTERS
2000  Vol.17　No.1　P.84-86




一种基于Web技术的网络数据库系统的设计
惠晓实　王凯航　陆舟　谢璨
摘 要 介绍一种基于Web技术的网络数据库系统的设计，详细描述了系统结构，网络数据库解决方案，系统设计，程序设计和网络数据库的运行等几个方面。
关键词 网络数据库 Web ODBC ASP/ADC
　　在电子商务中，从制造业到零售业和服务业都表现为对Internet上数据库应用的急剧增长。消费者跟踪，销售广告和市场行为的实现等都将使用一个Web浏览器作为客户端。但由于在Web服务器中，信息以文本或图象文件的形式进行存储，所以Web查询速度很慢、检索机制很弱，尤其是基于内容和基于结构的检索。它不像Sybase、Oracle、Informix等专用数据库系统，能对大批量数据进行有序的、有规则的组织与管理，只要给出查询条件便能很快得到查询结果。但Web的亲切界面和广泛流行，尤其是它的通过Internet可以进行远程查询和维护的功能，又是这些数据库系统所无法比拟的。因此，利用Internet中Web的超文本，超链接功能查询数据库成为人们的愿望。若能把Web技术与数据库技术有机地结合在一起，必能大大扩展Web功能，也可充分利用原来这些数据库系统中宝贵的信息资源，把两者的优点集于一体，使Internet同时具有超文本功能和数据库功能，将使信息系统的性能得到很大的提高。网络化的信息交换是各种数据交互的结果，大量的基于网络的数据库正是这种网络化信息社会的基础。因此，基于Web的网络数据库系统，将成为电子商务和网络信息交换的基础工具。
1 系统结构
基于Web的网络数据库系统由一个Web浏览器作为用户界面、一个数据库服务器用作信息存储和一个连接两者的Web服务器组成，如图1所示。Web软件将数据陈述简化并且标准化，DBMS(数据库管理系统)则组织和标准化数据的接收和存储。这即增强了数据库访问的途径，也是管理Web节点的改进方法。用户唯一需要在机器上安装的程序是Web浏览器，并且唯一需要学会使用的也是Web浏览器。用户通过Web页上显示的表格和数据库进行交互操作。典型的交互操作包括读取页、单击链接、在列表框中进行选择以及查询和输入数据域。从数据库获取的信息能以文本、图象、表、图形或者多媒体对象的形式在Web页上显示。

图1　基于Web的数据库系统的基本结构
　　Web和数据库这两种技术，各自有其自己的优点。Web具有用户界面的定义非常简单，关于定义数据的说明性语言非常完美，允许巨大传输量的传输协议非常健壮等优点。而数据库系统的优点是它具有清晰定义的数据模型，存储和获取数据的健壮的方法，发展用户界面和应用程序逻辑的软件工具，强大的授权和安全机制，以及控制事务和维持数据完整性的有效途径等。设计基于Web的网络数据库系统正是要结合两种技术的优点。
　　我们设计的基于Web的网络数据库系统，是一种能够适应电子商务的通用的查询和数据库维护系统。但是，在具体开发时，我们选择了一个具有具体目的的实用的商务系统进行开发，使得设计的系统从一开始就具有实用性。目前设计的系统是为了在一个WWW网站上实现本地区和全国的电脑软硬件的Web查询，远程维护和在线定购等功能。从更远的角度讲，这是电子商务应用中的一个雏形，在此基础上，其可扩展性将为建立一个商业上的强大交互式网站提供模型。这其中最关键的问题是查询的速度和数据更新的速度。影响查询速度的有两个方面：一个是网络的速度；一个是数据库查询的效率。数据的更新速度依靠于管理员的工作。只有解决了这两个问题，这个商情发布和定购系统才有实际意义。
2 网络数据库解决方案
　　目前存取网络数据库的解决方案主要有：
　　(1)CGI：通用网关接口CGI是当前较为常用的一种技术。CGI标准允许选择使用多种不同语言来编写动态Web文档，这些语言包括FORTRAN、C等编译语言和Perl、TCL、UNIX Shell等解释语言。传统的CGI有很多缺点：如不易开发、修改成本高、功能有限、不易纠错和不具备事物(Transaction)的功能。尤其是它采用多进程，对每一个请求都要启动一个新进程去处理。在用户访问高峰期，大量的进程会耗掉大量的系统资源，使网站表现出响应时间延长，处理缓慢的情况。
　　(2)ISAPI：(Internet Server API)，由Microsoft提出，作为一种服务器编程接口标准，以DLL等程序库的方式，可减少一些CGI中的限制，尤其是多进程的问题，为扩展CGI提供了一些好处。
　　(3)NSAPI：(Networks Server API)，由Netscape提出，与ISAPI类似，针对Netscape服务器。
　　(4)Script语言：目前存取网络数据库的解决方案趋向于在服务器端运行简单的Script脚本语言、结构化查询语言SQL命令与标准HTML代码，通过ODBC驱动程序，连接到各种数据库，运行SQL命令，即可存取网络数据库。所谓的疟居镅源包括普通的标准HTML模板、扩充的HTML模板，以及使用一种Script语言来控制HTML模板和SQL命令。
　　(5)Java：来自Sun Microsystems公司，是当前风靡世界的网络语言。Java是一种强劲的、结构合理、安全简单、面向对象、分布式、多线程和动态的网络开发语言。通过Java各种有效的数据库API和使用JDBC的驱动程序，用户能开发出与众多数据库服务器产品相匹配的应用程序和Applet。
　　我们选择ASP/ADO技术进行网络数据库系统的开发。
　　ASP/ADO是由Microsoft开发的新技术，是完整的网络数据库解决方案，正逐步流行起来。它具备以下特点：
　　(1)编程简单。ASP使用脚本语言，直接嵌入到HTML中，不需要编译和连接即可直接运行。脚本语言的特性是简单易学，而且编辑和调试起来非常方便。
　　(2)管理方便。Script语言都嵌入到网页语言HTML中，使Script和HTML的开发一次性完成，管理起来非常方便。其它的技术与HTML是分离的，而且它们与HTML的编写是两个完全不同的过程。
　　(3)支持广泛。ASP通过ActiveX Data Object技术实现数据库存取功能。它可通过ODBC驱动程序，连接多种数据库，包括FoxPro，dBase，MSSQL Server，Oracle，Informix，DB2等主要商用数据库。
　　(4)可扩充性。ASP除了支持VBScript和JavaScript外，还能以插件的形式支持第三方语言，如PERL、TCL等。此外，ASP还可通过ActiveX Server Components (ActiveX服务器元件)来扩充功能。可利用Visual Basic，Visual C++，COBOL等程序设计语言来开发这些ActiveX Server Components。
　　　(5)面向对象。
　　(6)与浏览器无关。所有的浏览器都支持ASP。因为脚本是服务器上而不是在客户端运行，传送到浏览器上的Web页是在Web服务器上生成的，所以不必担心浏览器能否处理脚本，Web服务器已经完成了所有脚本的处理，并将标准的HTML传输到浏览器。而且由于只有脚本的结果返回到浏览器，所以服务器端脚本不易复制。用户看不到创建他们正在浏览的页的脚本命令。他们看到的只是标准的HTML。
　　ASP通过后缀名为.asp的文件实现，浏览器从Web服务器上请求.asp文件时，ASP脚本开始运行。然后Web服务器调用ASP，ASP全面读取请求的文件，执行所有脚本命令，并将动态产生的Web页传送给浏览器。
　　ASP的运行环境是Microsoft的IIS(Internet Information Server/Windows NT)或PWS(Personal Web Server/Windows 95/98)两种Web Server，再装上Active Server Pages。当然这也是ASP的一大局限，但由于NT平台的市场占有率的迅速增长和ASP的上述特点，ASP技术正逐步流行起来。
　　Windows NT Server包括IIS，在IIS3.0中提供了三种服务：WWW、Gopher、FTP，WWW服务为客户浏览器提交Web页，并允许客户访问.asp文件。我们直接安装使用最新的IIS4.0版本，因为它具有更强更高的Web管理机能和安全性。
　　在数据库方面，关系数据库(DBMS)现在已取代它之前的层次型和网状型数据库，而成为数据库的主流，结构式查询语言(SQL)是关系型数据库查询中运用最广泛的一种语言，是一种能很好地操纵和访问数据的语言。SQL语句还可以被嵌入到另一种语言中，从而使其具有数据库存取功能。SQL还是一种交互式查询语言，允许用户直接查询存储数据，利用这一交互特性，用户可以在很短的时间内回答相当复杂的问题。我们采用标准的SQL-92作为数据库查询语言。
　　同时，我们采用Microsoft SQL Server 6.5作为数据库服务器。这是一个可伸缩的，高性能的关系数据库管理系统，它专为客户/服务器环境而设计。它的开放式的系统体系结构，强大的管理工具和内置数据复制功能为发布信息解决方案提供了一个卓越的平台。
　　综上所述，我们使用的一系列开发工具和环境如下。
　　操作系统：Windows NT 4.0
　　Web服务器：IIS 4.0
　　数据库服务器：Microsoft SQL Server 6.5
　　开发工具：Visual InterDev，FrontPage 98，Visual J++6.0
3 系统设计
　　将系统的使用者分为四类：网络管理员，公司，注册用户和一般用户。网络管理员负责整个网站数据库的维护，其职权包括管理使用者的使用权限和密码以及对各个数据库等进行维护和管理；公司可以通过远程输入更新本公司信息发布的内容并查询本公司的定购表单。注册用户拥有定购的、查询购物帐单和获得每日最新行情通知的权利。一般用户只具有浏览商情和查询报价的权利。
　　客户数据采集是系统的一项重要功能，本系统通过注册采集客户数据：一般用户可通过填写注册表成为注册用户，而网络管理员对注册表的数据进行核对，从而获得用户的数据同时赋予其注册用户密码和权限。
　　数据库包括五个表。
　　Corbtab表存储公司和系统管理员的信息和权限。Corp-id是公司代号，Corp-city、Corp-name、Corp-address、Corp-connect分别是所在城市、公司名、地址和联系，Corp-password是管理员和公司的密码，remark是备注。identify是使用权限，网站管理员为“9”是终极权限，可管理和修改所有的表，而公司的权限低于“9”，可管理本公司的数据库。本表的主关键字是Corp-id。
　　Hardware表存储硬件的信息，“hardware.Corp-id=corptab-Corp-id”建立了hardware表和corptab的关系。Hard-category、Hard-brand、Hard-spec、offer分别为硬件的种类、品牌、型号和价格。由于电脑硬件价格的行情变化迅速，所以设立Date为硬件价格的日期。Timestamp是本表的主关键字，代表硬件的产品序列号。
　　Software表存储软件的信息，“software.Corp-id=corptab-Corp-id”建立了software表和corptab的关系。Soft-category、Soft-brand、Soft-made、offer分别为软件的种类、名称、制作公司和价格。因电脑软件价格的行情相对稳定，不设立date标志。同样，Timestamp是本表的主关键词，代表软件的产品序列号。
　　Customer表存储注册用户信息，Cust-id、Cust-name、Cust-prof、Cust-card、Cust-address、Cust-phone、Cust-email、Cust-password分别为用户的ID、姓名、职业，身份证号码、住址、电话、E-mail、密码，timestamp是用户注册时间。本表的主关键词是Cust-id。
　　Ordertab表存储定购单信息，通过“ordertab.cust-id=customer.cust-id”、“ordertab.productID=hardware. timesta”“ordertab.productID=hardware.timestamp”与customer表和hardware、software表建立联系。ProductID是定购产品的编号，Order-number、Date是定购数量和定购日期。
4 程序设计
　　(1)建立数据库连接，设立连接属性。
　　使用ASP的Server.CreateObject方法创建ADODB.Connection和ADODB.Recordset对象的实例。接着，使用脚本语言的变量分配指令为对象实例命名Conn和RS。值得注意的是，在使用完后，要使用Conn.close关闭数据库。
　　(2)准备Sql查询语句，确定查询条件。
　　根据用户的查询条件确定SQL语句，然后使用Source属性记录SQL说明，使用Open方法传送，这种方法可以得到最优化的性能。用循环语句顺次下移光标来输出数据。使用RS.EOF是否为真判断光标是否到底。用各列数据组成查询选单，用户可用选单确定查询条件。
　　(3)修改数据库。
　　根据用户的增加、修改、删除要求确定相应的SQL语句。然后使用执行完成数据库的操作。
　　(4)密码检查。
　　有的页面要求密码才能进入。则check程序根据用户输入的用户名从数据库中取出密码，再与用户输入的密码进行比较。如果不正确，就显示警告页面。正确的用户名和密码存入Session中。进入要求密码的页面，则它会从Session和数据库中取出用户名和密码进行校验，否则就转到起始页面。这样可以避免有人用页面名直接申请页面。另外，就是退出时要使用注销退出，这样可以清除Session和Cooke中的数据，以免被人利用。
　　(5)定购表。
　　用户可以使用CheckBox复选框来选择定购产品。通过产品序列号来唯一确定和标识产品，定购单存在Session("ProductLink")中，使用变量SUM来计算定购产品的数量和总价。用户可以修改定购数量和退回定购。定购单存入ordertab表中，可以在定购历史中查询。
　　(6)将查询结果分页显示。
　　将数据库中所有符合查询条件的记录一次性的都读入recordset中，存放在内存中，然后通过ADORecordset对象所提供的几个专门支持分页处理的属性：PageSize(页大小)、PageCount(页数目)以及AbsolutePage(绝对页)来管理分页处理。每页设置为可显示十列。
5 运行网络数据库
　　网络数据库运行的方法，分为以下两步：
　　(1)运行网络服务器和建立虚拟目录，在IIS中点取“虚拟目录”下的“／_private”目录，以编辑该虚拟目录的物理路径和目录名，通常“／_private”的物理路径为“C:\Inetpub\wwwroot”，该目录是系统默认的WWW发布根目录，然后，将.asp文件复制到“:\Inetpub\wwwroot”目录下。最后，要注意将该虚拟目录的访问权限选择为“执行”、“脚本”，为了安全，最好不要设为读取。
　　(2)建立数据源名称，选择ODBC驱动程序和数据库文件。利用ASP的DatabaseAccess组件通过ADO连接并操作Web数据库的方法有DSN和DSN-less两种：
　　。DSN(Data Source Name数据源名称)：建立一个系统数据源名称，在ODBC的事件管理器中，添加你的数据库文件为ystem DSNＴSP程序中用<%connstr="DSN"%>指定DSN。
　　。DSN-less：是另一种通过在ASP文件里直接指定数据库文件所在位置，而无需建立DSN的方法。由于许多公司没有自己的WEB服务器，他们的网站往往是存放在远端的虚拟服务器上，因此要建立和修改DSN的设置比较麻烦。而使用DSN-less方法直接指定远端数据库所在位置恰恰解决了这一问题，方法如下：
<%connstr="DBQ="+server.mappath("database/source.mdb")+";
DefaultDir=;DRIVE R={Microsoft Access Driver (*.mdb)};DriverId=25;
FIL=MS Access;ImplicitCommit Sync=Yes;MaxBufferSize=512;
MaxScanRows=8;PageTimeout=5;Safe Transactions=0;
Th reads=3;UserCommitSync=Yes;" %>
　　在指定了想要连接的数据库后，就可以通过以下方法连接并打开数据库：
<% Set Conn=Server.CreateObject("ADODB.Connection")Conn. Open constr
%>
6 总结
　　基于Web的网络数据库系统是电子商务发展的基础。ASP/ADO技术是一项较新并在迅速发展成熟的技术，它正迅速取代传统CGI的地位，成为网络数据库和动态交互式网站的流行技术。现在ASP已经可以运行在其它非NT平台上了。要在非NT平台上开发并运行ASP应用程序我们可以依赖于一套名为InstantASP的第三方软件。这套由Halcyon软件公司开发的软件使得无需再重复开发原有ASP应用程序即可以将它运行在任何操作平台上。这就使ASP真正成为了一种跨平台的Internet、Intranet或Extranet应用程序。InstantASP不仅提供了ASP的运作环境，而且它将ActiveX组件和Enterprise Java Beans或者CORBA-compliant objects组合起来，从而使ASP有了更为广泛的应用。它同样提供了通过ADO接口访问连接各种数据库，并生成动态页面的强大功能。对于开发者而言可以使用编程语言或工具如：Visual Basic，JavaScript，VBScript，C++，Java，HTML，Delphi，Visual InterDev等来进行开发。
惠晓实（华中理工大学光电子工程系 武汉 430074）　
王凯航（华中理工大学光电子工程系 武汉 430074）　
陆舟（华中理工大学光电子工程系 武汉 430074）　
谢璨（华中理工大学光电子工程系 武汉 430074）
参考文献
1，周世雄. NT网络数据库速成杓剖道中国铁道出版社, 1998年
2，张卫民, 黄瑞芳, 卢宇彤. Java语言及应用. 清华大学出版社, 1996年
3，Curt Lang Jeff Chow著. 周之英, 田金兰等译. WEB网和INTRANET上的信息出版技术. 电子工业出版社, 1998年
收稿日期：1999年8月3日
