对象数据库十篇

时间:2023-03-18 17:03:54

对象数据库

对象数据库篇1

关键词:VB;ADO对象

中图分类号:TP30文献标识码:A 文章编号:1009-3044(2008)19-30011-02

Applying ADO Data Object to Accessing Database in VB

WANG Peng-yu

(Hebi College of Vocation and Technology,Hebi458030, China)

Abstract: At present, VB program design language is widely applied in database development. This article is mainly on the methods of ADO data object in accessing database.

Key words: VB; ADO

ADO(ActiveX Data Object)是当前应用最广泛的数据库访问技术,它提供了对OLE DB数据源的数据库应用程序级的访问功能。目前,许多C/S结构或B/S结构开发技术都支持ADO,使得应用开发模式统一到单一的ADO对象上来。ADO不仅支持本地数据源,而且具有远程数据服务功能,通过远程数据服务功能,可实现服务器到客户端或Web网页之间的数据传送。

与ADO Data控件类似,ADO对象用Connection对象选择数据库的类型与数据库,用Command对象与Recordset对象选择数据表与记录集,从而实现对数据库中数据表记录的处理。所不同的是,ADO Data是一个可视的控件,数据界面控件可通过其DataSource属性与ADO Data控件绑定,从而获取数据表中的记录数据。而ADO对象是用ADO模型中的类定义的对象,是通过编写程序代码实现ADO对象与数据库、数据表、数据记录的连接。

1 ADO对象模型

图1 ADO对象模型

2 用连接对象打开数据库

连接对象是用Connection类定义的对象,用于选择数据库类型、驱动程序与数据库,设置用户安全信息等,因此在使用连接对象打开数据库之前,必须先定义连接对象,然后才能用连接对象建立与数据库的连接。

2.1 定义连接对象

Dim As New ADODB.Connection

2.2 连接对象的属性和方法

(1)ConnectionString属性是一个连接数据库的字符串,用于提供数据库驱动程序、路径、数据库名、用户名、口令与安全等连接信息。

ConnectionString属性设置格式如下:

. ConnectionString =" DRIVER={SQL SERVER};SERVER=ServerName;UID=UserName;PWD=Password;DATABASE=DatabaseName"

(2)CommandTimeout属性用于限制连接数据库时间,属性赋值格式如下:

.CommandTimeout=连接时间

(3)Open方法用于打开数据库,其调用格式如下:

.Open [ConnectionString],[User ID],[Password]

说明:若连接对象的ConnectionString属性已赋值,则[ConnectionString],[User ID],[Password]可省略。

(4)Close方法用于关闭数据库,其调用格式如下:.Close

3 用记录集对象操作数据表

记录集对象是用RecordSet类定义的对象,然后用记录集对象的Open方法打开数据表,并对数据表中记录指针进行移动,用Addnew、Delete、Update方法可添加、删除、修改记录。完成对数据表的操作。

3.1 定义记录集对象

Dim As New ADODB.Recordset

3.2 记录集对象的方法

3.2.1 记录集对象的Open方法

.Open [Source] [ActiveConnection],[CursorType],[LockType],[Option]

各参数含义如下:

(1)Source:数据表或Select语句,用于选择指定的数据表。

(2)ActiveConnection:连接对象,用于连接数据表所在的数据库。

(3)CursorType:游标类型。

(4)LockType:记录加锁。

(5)Option:选项。

3.2.2 记录集对象的增、删、改方法

(1)Addnew方法:添加记录;

(2)Delete方法:删除记录;

(3)Update方法:修改记录。

3.2.3 记录集对象的指针移动方法

(1)MoveFirst方法:将记录指针移到首条记录;

(2)MovePrevious方法:将记录指针上移一条记录;

(3)MoveNext方法:将记录指针下移一条记录;

(4)MoveLast方法:将记录指针移到最后一条记录;

(5)Move n方法:将记录指针移动n条记录,当n>0向下移,当n

3.2.4 记录集对象的关闭方法Close

当记录集对象使用完毕后,应用Close方法关闭记录集对象,回收为记录集对象分配的内存空间。

4 用命令对象操作数据表

命令对象是用Command类定义的对象,用于存放SQL命令或存储过程,执行SQL命令或存储过程后可实现对数据库中指定数据表记录的查询、插入、替换与删除等操作。当要执行带有动态参数的Command命令时,需要使用参数对象(Parameter)。

4.1 定义命令对象

命令对象的定义格式为:Dim As New mand

4.2 命令对象的属性

(1)ActiveConnection属性:用于选择连接对象,使命令对象与数据库连接。

(2)CommandType属性:用于确定命令类型。

(3)CommandText属性:根据命令类型存放“数据表名”、“ SQL语句”、“存储过程名”、“文件名”等内容。

(4)CommandTimeout属性:用于限制命令执行时间。

4.3 命令对象的方法

Execute方法:用于执行命令,相当于Adodc控件的Refresh方法

5 程序示例

用ADO的三个对象完成下列工作:用连接对象打开数据库student;用记录集对象打开院系编码表(dept_code);用命令对象执行“删除院系编码为 '07' 的院系信息”的命令。

5.1 定义ADO的三个对象

Dim Con As New ADODB.Connection

Dim Cmd As New mand

Dim Rs As New ADODB.Recordset

5.2 配置Connection对象的连接属性并打开连接

Con.ConnectionString = " DRIVER={SQL SERVER};SERVER=127.0.0.1;UID=sa;PWD=;DATABASE=student"

Con.Open

5.3 打开RecordSet对象

Rs.Open "Select * From dept_code",Con

5.4 配置Command对象的连接属性和命令语句,最后执行

Cmd.ActiveConnection = Con

mandType = adCmdText

mandText = "Delete From dept_codeWhere deptcode='07'"

Cmd.Execute

参考文献:

[1] 柳青,刘渝妍,何文华.Visual Basic程序设计教程[M].北京:高等教育出版社,2002,2.

[2] 刘凤声.VB中用ADO对象访问数据库编程方法分析[J]. 微型电脑应用,2005,21(1):51-53.

对象数据库篇2

关键词:面向对象数据库;开源;Db4o

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)01-0140-02

The Research on the Object-oriented Database Db4o

CUI Jian-ming1, CHEN Guang-hui2

(1. Modern Education and Technology Center, Guilin University of Technology, Guilin 541004, China; 2.School of Information Science and Engineering, Guilin University of Technology, Guilin 541004, China)

Abstract: As the third generation object-oriented database, it can store large objects and advantages with a complex data structure, a database gradually win more customers to use, it's a new database which based with the engineering database and multimedia database. This paper describes the open source, object-oriented database, analyzing the advantages of Db4o by showing how its used with Java-based programming language. how to manipulate objects in the Db4o database was briefly discussed.

Key words: object-oriented database; open source; Db4o

1 关系型数据库与面向对象数据库比较

数据库的发展经历了三个阶段,第一阶段是层次和网状数据库,过程化程度很高,但是普通用户难以使用。第二阶段是关系数据库,它有着坚实的数学理论基础,主要以二维表为表现形式,与面向对象数据库相比,人们习惯的将上述两种数据库统称为传统数据库。

1.1 传统数据库的不足

随着应用领域的不断扩展,传统数据库的缺陷日渐凸显,主要表现在:①对客观世界里的复杂对象表现乏力:采用二维表表示数据及其关系,语义表示能力弱,不能完全表示客观世界复杂对象及数据之间深层含义和内在联系。②数据结构很难和行为相关联:客观世界里的对象一般有两个方面的内容:组成结构和行为。传统数据库把前者能很好的保存到数据库模式中,可是对后者的支持却不够理想。③抗阻失配:很难和高级程序设计语言做到无缝集成:开发必须同时使用数据库语言和程序开发语言进行配合操作,才能完成任务。难以做到及时发现错误和修改错误。

1.2 面向对象数据库的优势

面向对象作为一种新的方法学,将客观世界的一切实体模型化为对象,使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致,从而提高了软件开发的效率。与传统数据库相比,面向对象数据库有如下优势:①支持复杂的数据结构和类型;②实体都通过对象来表示;③将对象属性和对象行为封装在对象类中;④特殊的继承功能;⑤支持多态、重载;⑥滞后联编;⑦系统为每一个对象在内部生产一个唯一标识符等。

1.3 Db4o数据库的优点

Db4o数据库是一种由Db4objects开发研制的,可以基于Java、.Net以及Mono原生的性能卓越的纯面向对象的开源的数据库引擎。对于Java开发者来说,只要在ClassPath中添加Db4o.jar文件即可在开发环境中应用。Db4o与其他数据库相比,有如下的优点:①Db4o为开源软件;②Db4o是原生数据库,它是纯面向对象的数据库,直接使用编程语言来操作数据库;③最小限度的资源消耗;④高输入输出性能;⑤易于实现;⑥便于移植;⑦无“抗阻失调”;⑧提供了原生查询;⑨零管理等。

2 使用实例

下面用一个例子来阐释Db4o数据库如何在程序设计中使用的。实例语言采用Java语言,展示一个如何存储、更新、加载、删除一个只包含系统内置类型及字符串成员的简单对象实例,这里的对象是一个存储了顾客(Customer)的相关信息如姓名及年龄的类。

public class Customer {

private String _name = "";

private int _age;

public Customer (){}

public Customer (String name, Int age){

_name = name;

_age = age;}

Public Int getAge(){

return _age;}

public void setAge(int value){

_age = value;}

public String getName(){

return _name;}

public void setName(String value){

_name = value;}

public String toString(){

return "[" + _name + ";"+ _age + "]";}}

3 打开关闭数据库

使用Db4oEmbedded.openFile()函数打开或者新建一个Db4o数据库,Db4oEmbedded.openFile()需要一个参数作为特定路径的文件名,以此来获得特定的ObjectContainer实例,它就是操作Db4o的主要接口。操作代码如下:

ObjectContainer db = Db4oEmbedded.openFile("c:/complete.yap");

关闭ObjectContainer使用Close()函数,它会关闭数据库文件并释放其占用的系统资源。

4 在数据库中保存对象

保存一个对象需要调用Db4o的Store()方法,并为该方法传递要保存的对象作为参数。如下面的例子是要在数据库中保存名为“Gandhi”,年龄为79的顾客对象。代码如下:

db.store(new Customer("Gandhi",79));

db.store(new Customer("Lincoln",56));

5 对象的查询方式

Db4o提供了三种不同的查询数据的方法:(1)QBE:通过实例查询;(2)NQ:db4o原生查询;(3)SODA查询:一种通过数据库持久层进行的查询,查询语句被定义在字符串中,并通过持久引擎进行解释执行。其中NQ是Db4o推荐使用的查询方式。这是因为NQ方式提供了非常强大的查询功能,支持原生语言,也就意味着你可以使用Java来判断该对象是否符合条件,这是其他查询数据库无法比拟的。在有些情况下,Db4o将会将NQ翻译成SODA执行,以便获得更高的性能。下面将随着例子来演示一下这三种查询方式在程序开发中是如何操作的。

5.1 QBE 查询

当使用QBE查询时,需要为希望查询的数据创建一个对象模板,Db4o将会加载所有与模板类型相同而字段属性各异的所有对象,返回的结果存储在ObjectSet对象实例中。代码如下:ObjectSet result = (ObjectSet)db.queryByExample(new Customer ());

listResult(result);

特别值得指出的是:使用QBE方式查询是不支持高级查询表达式的,如AND和OR等。

5.2 NQ查询

使用NQ查询时,可以在程序开发的同时使用开发平台(如java)的语言对数据库进行查询,如果任何类中的字段或者类型无效的话,编译器将会给出错误提示信息,所以由这类问题导致的错误不会出现在程序的运行过程中。正因为如此,原生查询被称为安全查询。使用原生查询进行查询,代码如下:

List customers = db.query(new Predicate(){

public boolean match(Customer cust){

return cust.getName().equals("Gandhi");}

});

Customer cu = customers.get(0);

for (Customer customer : customers ){

System.out.println(customer);}

5.3 SODA查询

SODA的基本思想是建立一个查询图,该图可以被用来表达查询。由于这些图能很容易被程序分析或者遍历,所以能非常快速的得到查询结果。因为原生查询总是通过转换成(优化或不被优化)成SODA图实现。所以SODA是原生查询的基础。

Query query = db.query();

query.constrain(Customer.class);

Query valuequery = query.descend("_name");

valuequery.constrain("Gandhi");

ObjectSet results = query.execute();

while (results.hasNext()){

Customer cast = (Customer)results.next();

System.out.println(cast);}

6 更新对象

更新对象是指把对象更新后的值再次存入数据库中。程序代码如下所示:

ObjectSet result = (ObjectSet)db.queryByExample(new Customer ("Gandhi",79));

Customer cust = (Customer)result.next();

cust.setName("john");

db.store(cust);

更新对象时,一定要事先用查询进行检索,找到要更新的对象,然后才能更新,否则执行上述更新代码,数据库中将会插入一个新的对象,而不是对数据库中的对象进行更新。

7 删除对象

Db4o数据库中是调用Delete方法来删除对象。具体执行代码如下:

ObjectSet result = (ObjectSet)db.queryByExample(new Customer ("Gandhi",79));

Customer cust = (Customer)result.next();

db.delete(cust);

8 结束语

Db4o面向对象数据库以其支持更加复杂的数据类型、更简易的操作、更为简单安全的数据查询方式、避免了在数据库中保存数据时所产生的抗阻失配等缺点,逐步赢得企业和开发者们的支持。相信Db4o未来的应用领域将得到进一步的扩展。

参考文献:

[1] 王意洁.面向对象的数据库技术[M].北京:电子工业出版社,2005.

对象数据库篇3

关键词:面向对象;数据库开发;编程;计算机应用;信息系统

引言

当前关于数据库的应用系统,最主要的就是两层的结构,把关系数据库既作为存储机制,又作为管理工具。这样的系统最主要的设计就是数据库的设计,可以说实体及关联的设计与修改就是整个应用系统的开发过程。但是如果客户变动需求或者设计人员根本就没有搞清楚最主要的需求是什么,那么设计的程序将是难于使用的,一个微小的变动却使得设计者不得不大量的改变原码或推翻重做。关系数据库无法适应频繁变动的需求。这里应用新的方法去模拟难以捉摸的现实需求。

1 关系数据库的优势

当前用于存储数据的持久机制主要有文件系统、数据库系统(按数据模型分为层次型、关系型、网状型)。可以采用文件或电子表格存储数据,但运行业务时具有很大的局限性。对于非专业人士,尝试维护和管理分散的企业中的信息孤岛会遇到数据访问和准确性问题。性能(尤其是在客户需求的高峰时段)可能会降低至暂停状态。

关系数据库在这些方面强大得多,尤其在分析方面。关系数据库使能够以复杂、有意义的方式操作数据,从而可以检索到与特定条件相匹配的所有记录,交叉引用不同的表以及批量更新记录。在以下情况下,关系数据库是最好的选择:要输入(并经常更改)分散在业务中不同计算机上的多个电子表格或其他文件中的信息;数据(以及访问数据的用户数量)不断增加或更加难以使用、管理、保护,还会遇到性能问题;基于数据生成特定或常规报表以进行决策制定,但无法始终确保数据的准确、完整性。

2 数据库开发的对象思想

面向对象的理念是自发的,源自天然的。所以面向对象技术被设计得最遵循思维的自然方式。也就是说,用到的符号,术语,定义和每个人都相关。基于面向对象的分析和设计技术的这些特点,客户可以从始至终参与到系统的分析中去,参与到系统的设计。由于在讨论对象之间的交互作用时,大家使用同样的术语概念。客户还可以参与文档的创建和编写,因为他明确已有对象的含义。这样分析出来的设计绝对是符合需求易于客户使用及管理的。

另外加上面向对象技术方面的继承等技术,使得应用系统的的升级变的轻松。当今计算机硬件的飞速发展使得由于使用面向对象技术带来的速度效率问题变得越来越没那么重要了,而各个行业对于计算机的使用使得软件越来越复杂,清晰的分析和设计条理变成了更主要的问题,而面向对象是非常适合解决这个问题的。

3 应用面向对象的数据库开发

(1)系统分层  在数据库和客户端加入一个中间层,在这一层添加业务层和数据访问层,数据访问层与数据库交互为业务层提供数据服务。业务层为客户层提供经过分析及过滤筛选之后的对象及对象集合。

(2)面向对象分析和设计  分析需求中可能存在的潜在对象:对象是一个真实或抽象的元素项,它包含信息(即对象的属性)和处理对象的方法。任何对象都可包含其他对象,这些对象又可包含其他对象,直到系统中最基本的对象被揭示出来。仔细阅读需求说明书并在所有名词下画线,寻找于系统中的其他对象交互的实物,人员,地点、文件。寻找对象的属性及对象之间的关系:通过需求找出潜在的对象之后就是分析对象的关系及某个对象(类)应该具有的属性,面向对象的分析与设计的本质是我们用自然的观点去看待一个应用系统的实现。

(3)行数据库设计  要用面向对象思想进行数据库设计,因此应该选择实体主导型设计方法:设计应用系统结构;选择便于将应用程序与 DBMS 结合的DBMS体系结构,如RDBMS;根据应用程序使用的环境平台,选择适宜的DBMS(如Oracle)和开发工具(如PB)设计数据库,编写定义数据库模式的SQL程序;编写确保数据正确录入数据库的用户接口应用程序;录入数据库数据;运行各种与数据库相关的应用程序,以确认和修正数据库的内容。

用数据库作为应用系统中对象的持久机制,而对象之间的关系也就是相对于数据库设计部分的实体之间的关系,应该由应用系统的对象协调处理。就是把需求逻辑留在业务层去处理。

4 应用实例

4.1系统构想

设想这个是校园学生信息MIS系统。该MIS系统有几种验证方法,一、通过使用的和选择的学校。如果其在其学习的IP段的话,就认为是在宿舍上网,可认为是学生,将自动通过注册请求,系统发激活邮件;二、不符合第一种情况的话,看选择的注册方式如果是使用IP电话的话去根据选择的学校看填写的IP电话是否符合所在学校的IP段,如果符合的话,系统发激活邮件;三、选择学校邮箱注册,根据选择的学校和他填写的邮箱,如果域名符合就认为注册人为合法学生,系统发激活邮件;四、选择其他方式,通过人工方法去确认注册者的合法性。

以上是用户注册的过程,注册成功后,用户通过激活账户的链接,激活自己的账户,然后登陆,登陆成功后就可以使用注册用户可以使用的所有功能。管理员除可以拥有所有注册用户可以使用的功能外,还可添加学校宿舍及课程信息;编辑学校所在的IP段,查看所有用户的状态,进行活动管理,即添加、编辑活动,设定活动规则。

应用系统需要响应用户的操作;另应用系统还需要给出各种各样的排行;需要按照规则确定活动的获奖者等;需要记录用户的操作,以确定用户的积分;给登陆用户提示是否有人邀请成为朋友,是否有新的信件,是否有组织邀请加入;系统需要维护组织和组织成员之间的关系,即每个组织都有一些成员(合法用户分创建人、管理员和普通成员),创建人可以提升普通人员为管理员。

4.2数据库设计

这里对于设计数据库、处理与数据库的交互,需要从静态类图中设计到的对象分析出要持久化的对象,关系数据库在这里只是一个存储机制,不过用面向对象的思想设计的数据库是应用系统能够面向对象的基础。从系统组成得知需要存储注册用户的信息、博客的文章、博客和用户间的拥有关系、相册信息及照片信息、讨论主题、帖子信息、 组织信息、学校信息等。这里就不给出数据库设计的示例了,需要注意的是尽量应用对象之间的关系由类去处理即关联关系留在业务逻辑层处理,数据库专著于存储当然某些关联关系还是应该存储下来的,否则业务类也无从处理。在设计业务逻辑层时,将同一类的对象抽象封装为一个类。

用ownertype去存该comment是对什么对象进行的评论,而ownerID确定下来被评论对象的id。然后建立两个(或者更多视需求而定)视图,在加载评论时就可以直接从视图blog article comments中直接选择。当然在添加评论的操作是放在拥有他的类的方法中的。因此,就可以比较容易得到其拥有着的类型。

4.3数据库部署

整个系统分为三层,客户层、业务逻辑层及数据访问层,选择SqlServer2000作为数据库。项目使用asp.net作为开发平台,用c#作为开发语言,相应的使用IIS6.0作为WEB服务器。

本系统的两种角色注册用户和管理员用户的问题,在上面的类结构设计时,我让管理员继承的注册用户类,这样管理员就自然的拥有注册用户可以使用的所有权限,而它本身还可以拥有自己的权限,对学校的管理,对宿舍、专业及注册用户的管理。在页面类设计时采用这样的设计来确保使用页面的权限问题。设计三个类BasePage、BasePageForLogin、BasePageForAdmin,这三个类都继承自System.Web.UI.Page重载了Render方法,这样就可以为同一级别的页面(是指只能被某一级别用户浏览的一系列页面)绘制相同的导航条,使页面的风格统一化;BasePage类来作为未注册用户可以浏览的页面的基类, BasePageForLogin类作为只有注册用户才可以浏览页面的基类,BasePageForAdmin类作为只有管理员才可以浏览页面的基类。然后就可以在这些类的render方法中进行统一的权限设置及出错管理。

对象数据库篇4

关键词:微生物信息服务系统;对象模型;对象数据库

中图分类号: TP311 文献标志码:A

Microbiology information service system based on object deputy database

PENG Zhiyong1, HUANG Zeqian2, LIU Jun1, LI Yue1, XU Bo1

1. School of Computer, Wuhan University, Wuhan Hubei 430072, China;

2. State Key Laboratory of Software Engineering, Wuhan University, Wuhan Hubei 430072, China)

Abstract: A new approach for microbiology information management based on object deputy database was proposed. It used the object deputy model for data modeling. The common descriptive information of microbes was defined as the basic object. Microbial diversity and correlated information of microbes were modeled through deputy objects. A microbiology information service system based on our object deputy database was implemented. Advanced functions of the database could facilitate information management. Update propagation supports dynamic classification of data, object views could be used for schema evolution, and crossclass query provides efficient data retrieval. The experimental result shows that this approach outperforms the traditional ones.

Key words: microbiology information service system; object deputy model; object deputy database

0 引言

微生物是一类重要的、物种丰富的生物资源和基因资源,微生物菌种资源保藏肩负着管理微生物资源和保护生物多样性的重任,也是开展微生物研究的基础[1]。目前我国保藏有10万余株微生物菌种,分散在近30多个单位,现有的微生物菌种资源保藏与管理方法存在以下不足:1)信息化水平较低,各保藏单位信息交流不畅通;2)微生物菌种分散保藏,种类不全面,低水平重复;3)微生物信息检索方式落后,效率低下;4)新菌种资源信息收录不及时,难以实现高效共享。为解决上述问题,国家“十一五”规划提出建设资源丰富、面向社会开放的国家微生物菌种资源库和服务管理信息系统,实现微生物资源信息共享,进一步促进教学、科研与生产活动。

建设微生物信息系统的核心是建立微生物菌种资源数据库。国内外已存在各种不同的生物数据库,管理生物数据的方式主要有:平面文件、关系数据库、面向对象数据库与对象关系数据库[2]。平面文件通常用于存储基因序列,每一条数据记录对应一个文件,数据查询的结果也是文件形式[3]。采用平面文件管理生物数据存在的问题在于数据检索效率低,且检索结果不利于用户快速获取信息。关系数据库在生物学领域占据了重要的地位,许多生物数据库都是建立在关系数据库基础之上,然而大量的研究已经表明,关系模型并不适合管理复杂生物数据。由于难以建模数据间复杂的语义关系,采用关系数据库实现生物数据管理,数据库的模式通常较复杂、不直观,数据检索往往涉及到大量的关系连接操作,影响了数据查询的效率。与关系模型相比,面向对象模型提供丰富的语义且支持复杂数据类型定义,适合生物数据建模,因此部分生物数据库是基于面向对象数据库实现的。对象关系数据库在实现生物数据管理方面也具有相类似的优势,可以弥补传统关系数据库方式实现生物数据管理的不足。

虽然平面文件和传统的数据库能够用于建立微生物数据库,但是由于数据模型的限制,往往无法兼顾丰富语义建模、避免数据冗余、支持模式演化以及提供高效查询检索的需求。为此,本文提出一种基于对象数据库的微生物数据管理方法,并讨论了如何利用对象数据库来实现一个微生物信息服务系统。系统充分利用对象数据库在管理复杂生物数据方面的优势[4],可以方便地建模微生物数据间复杂的语义关系,并且避免数据冗余;可以有效地支持数据模式演化,确保系统具有良好的扩展性;可以利用跨类查询机制实现高效的数据检索。

1 对象数据库

对象模型[5]是在传统的面向对象数据模型中通过引入对象和类的概念而提出的一个新的数据模型,其核心在于“”的概念。在面向对象数据模型中,属性和方法封装在一个对象中,子对象可以继承父对象的属性和方法。面向对象数据模型的封装性,无法实现对象的分割和组合,缺乏柔软性;传统的面向对象数据模型也没有提供灵活的对象视图机制。在对象模型中,对象可以选择性继承源对象的部分或全部属性、方法,同时可以根据需要增加扩展属性和扩展方法的定义;对象继承的属性、方法定义有切换操作,对它们的引用都会通过切换操作切换到对源对象上相应属性、方法的引用;对象的模式由类定义,对象代数用于创建不同的类;源对象和对象之间通过双向指针链接,更新迁移机制建立在双向指针之上,用于保证源对象和对象间的语义一致性。对象模型提供了丰富的语义,对象可以扮演源对象的各种角色,也可以用于实现对象视图。通过对象可以灵活地实现对象的分割和组合,提供了柔软性。

基于对象模型,我们实现了对象数据库管理系统,并提供对象数据库语言[6]用于数据定义和操作。在对象数据库中,每个对象和对象都有唯一的对象标识符;对象继承的属性称为“虚属性”,并不占有实际的物理存储,其值通过定义在其上的切换操作计算得到;对任何对象或对象的更新都会触发更新迁移,确保对象间的关系保持语义一致性。对象数据库语言采用类似标准SQL的风格,包括对象数据定义语言和对象数据操作语言。数据定义语言提供了类和类定义功能,一共有四种不同的类定义方式,包括:SELECT类、UNION类、JOIN类、GROUP类。类通过在普通类上声明一个规则创建,在类上还可以进一步创建类,在模式上形成一个层次网。对象由系统根据规则自动派生或消除,除了对对象的创建和删除操作由对象更新迁移自动完成外,在数据操作语言中,对对象的操作与一般对象上的操作无异。

以上给出了一种定义微生物扩展关联信息的方式,对于其他类型的扩展关联信息,也可通过BMO的SELECT型类定义,其定义方式与SpecStrain类似。

通过以上方法定义扩展关联信息,可以确保系统具有良好的扩展性。与微生物资源相关联的扩展信息会随着时间发生变化,对于增加新类别的扩展关联信息,可以通过创建新的BMO的SpecAssociation类来实现;如果某个类别的扩展关联信息不再需要,只需要将该类别关联信息对应的SpecAssociation类删除即可,对系统其他信息管理不会发生影响。

2.2.4 建模举例

图1描述了一个简单的微生物数据库模型在对象数据库中的实现。在该例子中,基本微生物对象通过其属名和种名加词来表达,所有的基本微生物对象存储在基本对象类Microbe中,且每一个对象都有一个唯一的资源保藏编号(res_ID)。微生物菌种进一步被分为三类:细菌、古菌和食用菌,每一类菌种建模为Microbe的一个类,其属性除了从Microbe继承的微生物资源保藏编号外,涵盖了具体菌种的特性性状信息。在扩展关联信息建模方面,与微生物资源相关联的多媒体信息通过Microbe的类Multimedia来建模,而微生物资源的核心元数据则建模为Microbe的类MetaData。

图片

图1 一个简单微生物数据库

2.3 微生物数据检索

微生物数据库的核心是微生物资源性状信息。在一个微生物信息系统中,典型的微生物数据检索包括:微生物共性信息查询,微生物菌种特性信息查询,微生物完整信息(完整性状信息及各种扩展关联信息)查询。

对于微生物共性信息查询,可以通过对BMO进行检索得到待查询信息。对于微生物特性信息查询,可以通过对某个菌种的SpecStrain类进行检索得到待查询信息。例如,在图1中,要查询资源编号为003的古菌的“营养类型”,查询语句可以表示为:

程序前

SELECT trophic FROM Archaea WHERE res_ID=003;

程序后

需要注意的是,res_ID是从Microbe继承的虚属性,并不物理存储其值,这样可以避免数据冗余,当读取属性值时,通过切换操作读取其源属性的值。

如果需要查询微生物数据的完整信息,有别于传统数据库需要将多个表进行连接操作,我们可以利用对象数据库特殊的跨类查询机制实现查询。例如,在图1中,本文要查询所有细菌的完整信息,包括其所有性状信息、多媒体关联信息及其核心元数据,查询语句可以如下表示:

程序前

SELECT *, (bacterium->microbe).genus,

(bacterium->microbe).species,

(bacterium->microbe->multimedia).media_data,

(bacterium->microbe->metadata).keyword,

(bacterium->microbe->metadata).version

FROM bacterium;

程序后

3 微生物信息系统的实现

3.1 系统体系结构

基于上述方法,我们在国家科技基础条件平台建设的“教学实验用微生物资源整理、整合与共享试点平台”子项目中实现了一个微生物信息服务系统,该系统在统一菌种资源描述规范的基础上,将我国11所高校保藏的微生物菌株资源进行标准化整理、整合,最终实现微生物菌种资源的信息共享,其体系结构如图2所示。

系统以建设“教学实验用微生物菌种资源数据库”为核心进行开发,主要分为两部分:一是围绕保藏在全国11所高校的微生物菌种资源数据的数据采集功能;二是针对微生物菌种资源数据库的各种功能及服务。

图片

图2 微生物信息系统体系结构

“教学实验用微生物菌种资源数据库”涵盖的微生物菌种资源包括古菌、细菌、大真菌、食用菌等14个菌种,本文使用自行开发的对象数据库管理系统TOTEM实现“教学实验用微生物菌种资源数据库”。首先,将属于不同菌种的微生物数据根据微生物资源共性描述规范抽取为基本微生物数据存放在BMO中;其次,为14个菌种按照其特性的不同分别创建相应的菌种特性类,由此形成微生物资源的性状库。此外,扩展关联信息包括微生物资源核心元数据、菌种多媒体描述、微生物专利信息等,我们分别创建BMO的扩展关联信息类,以记录微生物资源不同类别的扩展关联信息。

如图2所示,微生物菌种资源数据库分为本地数据库和网络数据库两部分。在数据采集阶段,由研究领域富有经验的专家负责选取数据源条件好的单位,将其所保藏的微生物资源数据入库(本地数据库)。数据源提供者在本地数据库所存储的规范化数据在通过专家评审核对后,再由网络上传到网络数据库中。

3.2 数据采集层

数据采集层负责微生物数据采集,建立本地微生物资源数据库。该层的系统功能包括:数据规范化、数据录入、数据核对、数据、数据检索等。在微生物资源数据库的建设过程中,数据源的规范化非常重要,因此在数据准备阶段,需要根据各个菌种制定的规范将原始数据进行规范化,以保证数据质量。数据采集层提供不同菌种的格式转换程序将原始数据加工转化为规范化数据。数据录入本地数据库的流程包括数据选择、整理、编码、规范化、录入、核对等步骤。用户可以基于Web实现数据的录入和核对,系统还提供批量的数据录入程序将大数据量的规范数据导入到本地数据库中。数据功能将存储于本地数据库的微生物数据上传至网络服务器中,支持数据的选择性上传和断点续传,保证数据上传过程的鲁棒性。数据检索模块基于本地数据库所存储的数据,提供简单检索、复杂检索和逻辑检索等数据检索功能。

3.3 数据管理层

针对网络数据库――“教学实验用微生物菌种资源数据库”的数据管理层通过部署于网络服务器的系统实现,负责管理集成了11所高校涵盖14个菌种的教学实验用微生物菌种资源数据,实现采用了B/S体系结构,使用对象数据库TOTEM管理微生物菌种资源数据,Web服务器采用Apache,并用脚本语言PHP开发。系统除了数据库模块外,还包括用户管理模块、数据管理模块以及日志管理模块。

用户管理模块实现用户的注册、管理和认证等功能,其核心是基于角色的访问控制策略。日志管理模块处理用户浏览的记录,并把它们保存在日志文件中。数据管理模块提供数据的上传、复核、检索与统计分析等功能。

除了由数据采集层将数据由本地数据库上传至网络数据库外,数据提供者可以使用数据管理层的数据上传功能,通过Web页面向网络数据库上传微生物数据,并由数据约束性检查功能保证上传的数据符合相应的数据规范。领域专家还可以对网络数据库中的数据进行审核评价,数据复核功能可以对数据库数据进行检查和更新操作。通过系统的数据统计分析功能,可以随时了解数据库中的数据情况,提供基于数据源以及基于不同菌种的数据统计与分析操作。

数据检索功能实现数据的简单查询、复合查询和逻辑查询,用户既可以选择查询微生物菌种资源的性状信息,也可以查询诸如核心元数据、专利微生物信息等不同类别的关联信息。简单查询主要通过经常检索的数据项,如菌株保藏编号、属名、种名等进行检索。复合查询通过组合多个数据项进行数据检索。逻辑查询通过对多个数据项任意进行与、或、非运算检索数据。对于性状信息查询结果,既可以选择查看数据的概要信息,也可选择查看数据的详细信息,详细信息包括菌株的所有性状信息以及相关联的多媒体信息。此外,三种不同的数据查询功能都支持对数据结果进行二次查询,以精化查询结果。

3.4 数据服务层

数据服务层以数据空间[7]的形式,为用户提供个性化的数据管理服务。其功能包括数据空间管理,个性化数据扩展,数据共享。

用户可以根据自己的个性化需求,创建自己的个性化数据空间,系统会根据数据空间的模式定义,将微生物资源数据库中满足选择条件的微生物资源数据添加到数据空间中,当有新的微生物数据添加到微生物资源数据库中,系统也会将相应数据推送到用户数据空间中。数据空间实现了用户的个性化数据订阅。

个性化数据扩展包括数据自定义分类及数据自定义扩展。由于微生物的分类多样性,在现有数据库菌种分类方式的基础上,允许用户在数据空间中对数据进一步进行分类管理,例如将细菌数据分类为杆菌和球菌,并以不同的视图来查看数据空间数据。在现有数据模式定义的基础上,还可以在数据空间中实现数据模式演化,添加用户自定义数据。例如对数据空间中细菌数据模式扩展一个自定义属性,用以添加生物注释信息。

数据共享允许用户共享其自定义扩展数据,并允许用户跨数据空间查询其他用户数据空间的共享数据。例如不同用户都扩展了细菌注释信息并共享,且对相同的细菌数据添加了注释信息,那么在查询细菌性状信息时,还可以查看细菌的注释信息,并通过跨数据空间查询查看到其他用户对该数据的共享注释信息。

本文实现的微生物信息服务系统的操作界面如图3所示。右上方的区域为用户管理功能区域,可以修改个人信息,管理员还可进行用户管理操作。左边侧边栏为系统功能菜单选择域,除用户管理外的各功能操作都在这个区域中选择,图中展开的两个功能菜单分别是针对微生物数据管理的功能菜单以及针对数据空间管理的功能菜单。右侧的区域为具体的功能操作及信息显示区域,图3中显示的是查询微生物性状信息后的查询结果。

图片

图3 微生物信息系统界面

3.5 性能测试

为测试系统的性能,本文在对象数据库TOTEM和对象关系数据库PostgreSQL上分别实现一个微生物信息管理系统。前者使用本文提出的对象模型方法进行数据建模,而后者采用传统的关系模型进行数据建模。实验使用的服务器配置如下:4×P3 900MHz CPU,32GB内存容量,200GB硬盘,RedHat Enterprise Linux 4.0 操作系统,TOTEM 2.0 / PostgreSQL 8.1.2 数据库系统, Apache 2.0.54 + PHP 5.0.4 Web服务器。

测试时,逐渐增加系统中微生物菌种资源的数量(两个测试系统具有一样的微生物菌种资源),测试在不同数据规模下两个系统消耗存储空间的多少,以及通过复杂逻辑查询显示微生物详细信息所需的查询响应时间的长短,以此评价两个系统的优劣。实验结果分别如图4和图5所示。

图片

图4 存储空间实验结果

图片

图5 查询响应时间实验结果

从实验结果可以得出以下的结论:1)基于对象模型的微生物信息系统与基于关系模型的微生物信息系统消耗的存储空间基本相同,后者略占优势;2)在大数据量情况下,利用对象模型建立的微生物信息系统在查询响应时间方面要明显优于利用关系模型建立的微生物信息系统,且随着数据规模的增大,这种优势越是明显。

4 结语

本文在分析现有微生物数据库实现技术的基础上,提出了一种基于对象数据库的微生物数据管理方法,通过该方法开发实现了一个微生物信息服务系统。该信息系统中的微生物菌种资源数据库使用我们自行开发的对象数据库管理系统TOTEM实现,能支持数据的动态分类,提供高效的数据检索,避免产生数据冗余,具有较好的系统性能。该系统已经在全国11所高校中运行,建立了微生物菌种资源丰富的“教学实验用微生物菌种资源数据库”,整理、整合了我国11所高校科研机构所保藏的、涵盖14个菌种的微生物资源。

参考文献:[1] 李雁,郑从义. 微生物物种多样性的保护与其资源保藏[J]. 氨基酸和生物资源, 2003, 25(3): 4-6.

[2] BRY F,KROGER P. A computational biology database digest: Data, data analysis, and data management[J]. Distributed and Parallel Databases, 2003, 13(1): 7-42.

[3] BENSON D A, KARSCHMIZRACHI I, LIPMAN D J, et al. Genebank[J]. Nucleic Acids Research, 2000, 28(1): 8-15.

[4] PENG ZHIYONG, SHI YUAN,ZHAI BOXUAN. Realization of biological data management by object deputy database system[C]// Transactions on Computational Systems Biology V. Berlin: Springer Verlag, 2006:49-67.

[5] PENG ZHIYONG, KAMBAYASHI Y. Deputy mechanisms for objectoriented databases[C]// Proceedings of the IEEE 11th International Conference on Data Engineering. Washington, DC: IEEE Computer Society, 1995:333-340.

对象数据库篇5

关键词:面向对象;数据库;软件;分析

中图分类号:TP311.13 文献标识码:A 文章编号:1007-9599 (2011) 18-0000-01

Object-oriented Project Cost Database Software Model Analysis

Meng Zhongjie

(Wuhan Textile University Sun Campus,Wuhan 430011,China)

Abstract:Object-oriented software development based on reusable components from the system to develop this idea.It is not the system-defined functions for data and two separate parts,but the interaction of the system defined as a container for objects.Software development at the macro is a sequence in the micro is an iterative process,the progressive growth over time.

Keywords:Object-oriented;Database;Software;Analysis

前言:面向对象的需求工程经验表明需求不应依赖于技术,应把主要精力集中于将要开发的软件生命周期内的需求上。下图描述了将要开发的需求工程各部分之间的关系。其中方框表示构件,箭头表示驱动关系。包含在类职责协作(CRC)模型中的信息驱动会影响基本用例模型中的信息,反之亦然。从上图中首先可以看出需求工程是一个高度交互的过程;其次可看出需求工程面向对象需求比写“用例(USE CASE)”能反映出更多的需求。

一、业务简介

工程建设管理采用项目法人责任制、招投标制度、工程监理制、合同管理制。工程造价涉及项目整个生命周期,施工图初步设计阶段的施工概算、施工图阶段的施工预算、工程结束的工程结算、决算。特别在招投标阶段,如何拟定合理的工程报价更加决定一个施工企业的生存和经济效益。因此,一个更加有效、更加适用的造价管理软件必将为企业创造更多的机会。并且,该系统应该可以扩充,以企业财务管理、劳动工资管理等结合起来,成为一个企业MIS系统。

二、建立分析模型

(一)基本用例模型

用例模型描述的是外部执行者所理解的系统功能,即从用户角度描述系统功能,并指出各功能的操作者。首先,它描述了待开发系统的功能需求;其次,它将系统看作黑盒,从外部执行者的角度来理解系统;第三,它驱动了需求分析之后各阶段的开发工作。用例模型的主要构件是用例、角色和系统边界。

1.编制工程信息:确定工程设计单位、工程业主、施工单位、开竣工日期、编制人、审核人等基本工程概括信息。

2.套定额:根据工程规模、招投标要求等确定所采用的定额、工程取费费率,编制工程概预算。其中系统自动完成部分定额的调整,混凝土配合比的价格换算,根据预算自动提取人工、材料、机械,编制材料价差计算表,编制取费计算表,将表格转换为EXCEL格式等。

3.基本数据库管理:日常对定额库、材料库、价格库的查询、编辑。

(二)建立基本类模型

类是由具有相同属性、操作、关系的对象集合的总称。属性描述了类的基本特征,类可以有任意多个属性,也可以没有属性;一个实例对象都可以调用的,并可能影响该对象行为的实现。经过分析提炼,将本系统中对象归结为两类对象:基本数据库类和套定额子目类。基本数据库类包含:主材库类、定额库类、价格库类。

其中主材库类、定额库类、价格库类由基本数据库继承而来,定额库类定额单价依赖于主材库类和价格库类单价,因此存在依赖关系。套定额子目类与主材库类、定额库类、价格库类存在1-0..n关系。

(三)建立功能模型

功能模型表示系统的功能,它表明了系统中数据之间的依赖关系,以及有关数据的处理功能,一般由一组数据流图组成,用以表明数据的流动、外部的输入、进行的操作、内部的数据存储以及数据的输出。在本系统中根据前面的分析,从功能上把整个系统分成基本数据库维护、套定额(包括提取人、材、机,取费设置等)、打印输出(包括转换为EXCEL文件)三个模块。

1.从功能上将基本数据库维护模块分成新增和编辑两个部分。其中关键是对定额库人、材、机的统一编码,分部分类。

2.套定额模块是本系统核心模块,它的基本操作流程是设置动态费率,确定取费设置,选择合适的定额库、主材库,套定额计算,提取人工、材料、机械,进行材料价差计算,取费汇总计算等等。

3.打印输出为本系统重要功能模块,并且要求灵活、快捷。可以针对不同的需求选择打印区域。并且报表要有灵活性,使用户可以进行简单的格式设计,打印预览速度要快。具备将选定表格转换为EXCEL格式的功能,以方便用户的特别需求。

三、结论

目前工程概预算软件有很多种,由于是商业软件它要面对各种不同需求的用户,因此功能上虽然比较丰富,但是在应用上却有这样那样的缺点。通过对问题的分析,探讨需求模型,利用面向对象的方法编制软件,有效地解决了一系列问题。

参考文献:

[1]陈新安.面向对象的分析方法在数据库设计中的应用[J].计算机工程与应用,2000,5:52-55

[2]刘永真.面向对象数据库模型研究[J].科技资讯,2009,2:23-25

对象数据库篇6

关键词:ArcSDE技术;GIS技术;集成化管理;面对对象

中图分类号:TP311

随着城市规模不断的发展和壮大,建设市级综合资源的基础数据库已经成为必须。运用现代的数据库信息技术,面向对象集成化管理各级多源的空间数据。现在常采用的数据库管理技术有ArcSDE技术、GIS数据库、CAD平台、MapGIS、Maplnfo、SuperMap、Arcels等矢量数据格式、遥感影像数据、航空影像数据、卫星影像数据等。建设市级综合资源信息系统,不仅可以加快服务工作的信息化,提高日常的办公效率和市级政府的管理水平,同时,也对整个信息化和经济化的社会带来好的影响。这些年来,计算机技术、软件更新、硬件设施和空间信息技术的发展壮大,已经有大量的城市综合信息为市级政府提供支持和服务。城市综合信息数据库的建设也有很好的发展。在GIS技术不成熟之前,城市的信息数据是相分离的,空间数据和非空间数据不能集成在一起,因此对城市信息的收集和管理缺乏统一的认识。在GIS空间数据库技术成熟之后的今天,已经实现了空间数据库管理空间数据的可能性,集成空间数据与属性数据为一体整理存档在空间数据库管理系统中,早前出现的大量文件形式的数据存取难、多名使用者同时发送和数据远程共享等多方面的限制已经被解决。城市综合信息集成化空间数据库的建立为城市的管理和信息共享提供了可能,只有标准化、面对对象的、集成型的资源共享平台,才能更好的服务于城市建设和管理,综合应用一体化空间数据库管理各式各样的内容、格式、尺度、时间的空间数据,才是科学有效的城市综合信息数据库。在城市综合信息数据库中,基础的地理信息数据库是城市公用性最重要的数据库。能否建立一个健全的市级基础地理信息数据库,是检验一个城市的数字信息化程度的一个重要标准。为推动不同地理空间数据集的非重复采纳,避免浪费,调节地理空间数据的采用,对地理信息进行高效且经济的管理,需要建设地理基础信息数据库。国家测绘局提出的4D产品战略已经基本完成了全国范围内的1:5万、1:25万、1:100万的基础地理数据库的管理。我市与其他各省市正在按照国家的标准建立属于自己的基础地理数据库。本文结合我市基础地理数据库的建设开展研究,对如何建立面向对象的集成化数据库系统进行设计并实现。

1 城市地理数据特点

(1)地理数据类型。城市地理数据类型按数据的类型划分,有属性文件数据、空间图形数据、多媒体数据、相关的文档数据等内容。数字线划图是带有拓扑关系的用矢量描述的空间信息,同时还包含关系结构属性信息。涵盖的内容有居民居住地、政府部门所在区域、交通和管理网、水系统以及配套设施、地形地貌、街区名测量控制点等内容。此数据库的建立可以方便的用于城市规划建设、资源管理方面、商业规划等各个方面。也可以为某些专业信息系统提供空间定位系统。也可以生产关于地形图方面的产品。(2)地理空间数据的格式。地理空间图形数据的格式有多种多样,地理空间图形数据的测绘大多是在CAD平台的基础上,在地理空间数据中应该包括建成的GIS数据。另外地理空间数据还应该包含关于遥感的影像数据的处理,其中卫星影像数据和航空影像数据应包含在遥感的影像数据中。只有地理空间数据格式多种多样才能保证数据在应用中和共享方面的复杂多样。(3)地理空间数据的尺度。地理空间数据的尺度需求为多尺度的,同类型的地理空间要素要表现不同的性质在不同类型的尺度中。多尺度类型的数据可以更好更全面的表现基础地理数据库的业务差异和需求。在区县的地籍管理中,空间地理位置要求更高的精确度,常采用很大的比例尺作为空间数据尺度。(4)地理空间数据的时间。时间特性是基础地理空间数据库的一个重要的特点。地理空间数据在实践方面总处于变化之中,每次的变化都是用空间数据来更新体现。在地理空间数据库中,也经常要对过去的变化信息进行分析更新,以此提高判断的科学性和高效性。

2 数据库的设计思路

我市的基础地理空间数据库管理系统运用ArcSDE技术的建库模式,采用面对对象这一基本组件进行开发。运用工具VB和ArcObjects开发。用Oracle9i作为数据库的管理层面,Oracle9i的优点是大数据库支持可以实现安全以及完整性的控制要求,并且可兼容、可连接、可移植。空间数据引擎引用ArcSDE,该空间数据引擎与Oracle的结合实现了空间数据的大量存储管理。同时这两者的结合也是至今为止世界上最成熟稳定的空间数据管理技术,同样也是我市建设基础空间数据库的主要形式。

数据库管理系统的总体有以下几部分组成,有软硬件、网络环境、空间数据库、数据库的管理服务系统等,具体如一些工作站、服务平台、微型空间数据库、存储装置、网络设备等等。空间数据库则包括了数字线划图、数字栅格地图、数字高程模型、地名以及数字正射影像地图等数据库。数据库的管理系统中对服务系统的维护和使用是利用软件系统的开发实现的,譬如数据入库、处理、管理、维护、制图等。

我市地理基础空间数据库采用GeoDatabase数据模型,面向对象进行数据模型的组织,利用这个GeoDatabase数据模型定义不同的客户,因而为不同客户提供不同的且完整的数据平台。根据基础地理信息的数据结构与GeoDataBase的数据模型相结合,将空间数据库划分为五个等级:总库、分库、子库、逻辑层、物理层。总库通过命名Oracle数据库自定义为市基础空间数据库。分库命名也根据Oracle数据库自定义为1:25万为“250K”、1:5万为“50K”、1:1万为“10K”。每个分库在划分子库,命名为“DLG”为矢量数据库,“DOM”为数字正射影像数据库等。接下来是逻辑层和物理层,根据DLG数据库的要求,按每个逻辑层和Feature Class进行分层,ArcSDE中相对应Feature Class的命名规定为总库名+分库名+“_”+子库名+带号+“_”+逻辑层代码+“_”+物理层层代码。

多个空间的数据服务器应用系统一体化集成是地理空间数据库必须解决的问题,数据量特别庞大,且常用一台服务器进行管理,在数据的大量处理中必然会带来一定影响。所以可以将空间数据库进行多台服务器存放,服务器可分不同区域存放,分散空间数据库的方式是一种高效的管理途径。通过数据管理器对不同空间数据服务器的集成管理满足了大规模空间数据库应用系统的建设需要。

3 结束语

GeoStar的核心是面向对象的集成数据库的管理系统,它高效、适应性广、直观。已经应用在全国的基础地理信息系统上。本文介绍的利用ArcSDE技术和GIS技术,并且采用集成化管理影像、矢量和DEM三库集成的的空间数据为模型。

对市级基础地理数据库进行基础库管理系统的设计,已经在应用中,并且为“数字地球”的目标提供了一个可以实施的方案。

参考文献:

[1]潘瑜春,钟耳顺,梁军.基于空间数据库技术的地籍管理系统研究[J].地理研究,2003(02):237-244.

[2]万定生,张俐,吴红.中间件技术在汛情监视地理信息系统中的应用[J].计算机工程与科学,2003(01).

[3]张成才,孙喜梅,黄慧.SDE的实体――关系模型空间数据管理方式研究[J].计算机工程与应用,2003(02):199-201.

[4]周卫.Arc/Info的新型数据模型Geodatabase及其操作[J].计算机与地图,2001(05).

[5]ESRI.ArcGIS Hydro Data Model[Z].ESRI Press,2001.

[6]李家田,刘洪斌,武伟,等.基于SDE的土壤信息系统空间数据库的设计和构建[J].西南农业大学学报,2003(02).

对象数据库篇7

VisualBasic有着强大的数据库存取能力,不仅能够直接支持MsAccess数据库,而且通过其内部安装的ISAM驱动程序使它能间接支持FoxPro、dBASE等外来数据库。本文不仅从VB数据库体系结构的角度探讨了VB对这些外来数据库的支持,还结合了一些实例具体阐述了使用数据库存取对象变量的方法实现这些外来数据库的新建、库结构修改、显示及其运行环境设置。

关键词

VisualBasicAccess,外来数据库,数据库

正文

存取对象变量库结构作为一个功能较完备的Windows软件开发平台,VisualBasic专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(DataAccessObjectVariable),直接调用ODBC2.0API接口函数等三种访问数据库的方法。对其标准内置的MsAccess数据库,它可以提供不弱于专业数据库软件的支持,可以进行完整的数据库维护、操作及其事务处理。在VB中,将非Access数据库称为外来数据库。对于FoxPro、dBASE、Paradox等外来数据库。虽然借助VB的DataManager能够对这些数据库进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态中并不能从底层真正实现这些功能。本文从使用数据库存取对象变量的方法出发,实现了非Access格式数据库(以FoxPro数据库为例)的建新库、拷贝数据库结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据库支持不足的可行性。

一、VB数据库的体系结构具体的VB的数据库结构。

VB数据库的核心结构是所谓的MicroSoftJET数据库引擎,JET引擎的作用就像是一块"面板",在其上可以插入多种ISAM(IndexedSequentialAccessMethod,即索引顺序存取方法)数据驱动程序。JET引擎为Access格式数据库提供了直接的内部(build-in)支持,这就是VB对Access数据库具有丰富支持的真正原因。

VB专业版中提供了FoxPro、dBASE(或Xbase)、Paradox、Btrieve等数据库的ISAM驱动程序,这就使得VB能支持这些数据库格式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据库格式(前提是只需获得这些数据库的ISAM驱动接口程序)。

由上可见,MsJET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。实际上,在VB中从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL(DataDefinitionLanguage,即数据定义语言)和DML(DataManipulationLanguage,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。

从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及MsAccess数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据库格式及类型是相互独立的。即对FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非Access数据库的访问提供了最重要的方法。

二、使用非Access数据库时的参数设置及配置文件的参数读取如果在VB的程序中使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置(.INI)文件,在INI文件中可以对不同类型的数据库进行设置。如果找不到这个INI文件,将会导致不能访问数据库。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,VB的程序会在Windows子目录中去找和应用程序同名的INI文件。可以使用VB中的SetDataAccessOptions语句来设置INI文件。

SetDataAccessOptions语句的用法如下:SetDataAccessOptions1,IniFileName其中IniFileName参数指明的是INI文件的带路径的文件名。值得注意的是,当应用程序找不到这个INI文件时,或在调用OpenDataBase函数时对其Connect参数值没有设定为VB规定的标准值,如对FoxPro2.5格式设定为了"FoxPro;"(应为"FoxPro2.5;"),或者没有安装相应的ISAM驱动程序,则此时VB会显示一条错误信息"NotFoundInstallableISAM"。通常,INI文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序中自己生成。通常这种INI文件中有"[Options]"、"[ISAM]"、"[InstalledISAMs]"、"[FoxProISAM]"、"[dBASEISAM]"、"[ParadoxISAM]"等设置段,对于一个完整的应用程序则还应有一个属于应用程序自己的设置段如"[MyDB]”。可在其中设置DataType、Server、DataBase、OpenOnStartup、DisplaySQL、QueryTimeOut等较为重要的数据库参数,并以此限定应用程序一般的运行环境。WindowsAPI接口函数在Kernel.exe动态链接库中提供了一个OSWritePrivateProfileString函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。

在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。

设此应用程序的配置文件为MyDB.INI,则具体过程如下:FuntionGetINIString$(ByvalFname$,ByvalszItem$,ByvalszDeFault$)''''此自定义子函数实现INI文件内设置段内参数的读取DimTmpAsString,xAsIntegerTmp=String(2048,32)x=OSGetPrivateProfileString(Fname$,szItem$,szDefault$,Tmp,Len(Tmp),"MyDB.INI")GetINIString=Mid$(Tmp,1,x)EndFunction以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内DeclareFunctionOSGetPrivateProfileString%Lib"Kernel"Alias"GetPrivateProfileString"(ByValAppName$,ByValKeyName$,ByValkeydefault$,ByValReturnString$,ByValNumBytesAsInteger,ByValFileName$)DeclareFunctionOSWritePrivateProfileString%Lib"Kernel"Alias"WritePrivateProfileString"(ByValAppName$,ByValKeyName$,ByValkeydefault$,ByValFileName$)DeclareFunctionOSGetWindowsDirectory%Lib"Kernel"Alias"GetWindowsDirectory"(ByVala$,ByValb%)SubForm1_Load()DimstAsStringDimxAsIntegerDimtmpAsStringtmp=String$(255,32)''''

INI文件内为各种数据库格式指明已安装的相应ISAM驱动程序x=OSWritePrivateProfileString("InstallableISAMS","Paradox3.X","PDX110.DLL","MyDB.INI")x=OSWritePrivateProfileString("InstallableISAMS","dBASEIII","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("InstallableISAMS","dBASEIV","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("InstallableISAMS","FoxPro2.0","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("InstallableISAMS","FoxPro2.5","XBS110.DLL","MyDB.INI")x=OSWritePrivateProfileString("InstallableISAMS","Btrieve","BTRV110.DLL","MyDB.INI")x=OSWritePrivateProfileString("dBaseISAM","Deleted","On","MyDB.INI")''''指明INI文件的位置x=OSGetWindowsDirectory(tmp,255)st=Mid$(tmp,1,x)SetDataAc

cessOption1,st+"/mydb.ini"''''获得INI文件一些参数gwMaxGridRows=Val(GetINIString("MyDB.INI","MaxRows","250"))glQueryTimeout=Val(GetINIString("MyDB.INI","QueryTimeout","5"))glLoginTimeout=Val(GetINIString("MyDB.INI","LoginTimeout","20"))EndSub

三、数据存取对象变量对外来数据库编程的方法及其实例在VB专业版数据库编程的三种方法中,第二种-使用数据库存取对象变量(DAO)的方法最具有功能强大、灵活的特点。它能够在程序中存取ODBC2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot及Table记录集合对象;可以存储过程和查询动作;可以存取数据库集合对象,例如TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对数据库处理的大多数情况都非常适用。

由于VB中的记录集对象与所使用的数据库格式及类型是相互独立的,所以在非Access数据库中也可以使用数据库存取对象变量的方法。因而对FoxPro等外来数据库而言,使用数据库存取对象变量的方法同样也是一种最佳的选择。有一点需要注意的是,VB的标准版中仅能使用数据控件(DataControl)对数据库中的记录进行访问,主要的数据库存取对象中也仅有Database、Dynaset对象可通过数据控件的属性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的标准版中生成,所以使用数据存取对象变量的方法只能用VB3.0以上的专业版。

(一)、非Access数据库的新建及库结构的修改VB专业版中的数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其中表示数据库结构时可以使用下面的对象:

DataBase、TableDef、Field、Index,以及三个集合(Collection):TableDefs、Fields和Indexes。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。对于非Access数据库,大部分都是对应于一个目录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据库。而每一个非Access数据库文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。

对象数据库篇8

一、ASP数据库原理

ASP技术是通过后缀名为.asp的文件来实现的。当在浏览器Browser 中访问以后缀名为. asp的页面时,实际上就是向Web 服务器发送一个HTTP请求,Web服务器接收到请求后,调用相应的ASP引擎asp.dll来处理。若ASP脚本中含有访问数据库的请求,就利用ADO对象,调用ODBC驱动程序,连接后台数据库,执行ASP文档所指定的SQL指令,实现对数据库的操作,并将执行结果动态生成一个HTML页面返回Web服务器,然后与ASP文档中非脚本的HTML代码进行合并送给用户浏览器,工作原理如图所示。

因此客户端浏览器接收的是经WEB服务器执行后生成的一个纯粹的HTML文档,可被运行在任何平台上的浏览器所执行,同时由于ASP源程序是在服务器端执行,保证了ASP源程序代码的安全性。另外服务器仅仅是将执行结果返回给客户端浏览器,减轻了网络传输的负担,提高了交互的速度。

二、ASP主要内建对象

ASP提供了多个内置对象。常用的主要有5个对象,使用者无需了解对象的工作原理和设计方法,只要直接调用对象的属性和方法,就可完成Web应用程序的请求、响应、会话等基本功能。

Request对象:获取客户端通过HTTP请求传递过来的信息,包括通过表单传递的参数、用户认证的cookie信息等。

Response对象:实现服务器传递信息给用户。包括直接发送信息给浏览器、重定向浏览器到另一个URL地址或者设置cookie值。

Application对象:存贮一个应用程序中所有用户共享的信息,供所有用户共享。

Session对象:存贮一个用户在和服务器会话期间的信息。当用户在访问不同页面时,这些Session对象的变量一直被保存。

Server对象:提供对服务器上的方法和属性进行的访问。如创建ActiveX组件的实例、将虚拟路径映射到物理路径等等。

三、ADO组件的主要对象

ASP提供了多个内置的服务器端组件,使用这些组件可以快速有效地完成各种复杂的功能。其中最重要的一个是数据库访问组件ADO (Active Data Objects) ,可以在服务器中提供对数据库操作的强大功能。在ASP页面中可以调用ADO对象实现对数据库的操作, 它通过ODBC或者相应的数据库引擎,通过ADO与ASP 的结合, 可建立提供数据库信息的网页, 允许访问者在浏览器页面上查询、插入、更新和删除站点服务器的数据库信息。

ADO组件中我们使用最多的有三个主要对象,Connection对象、Command对象和Recordset对象。通过这三个对象用户可以很方便地建立数据库连接,执行SQL查询以及完成数据库访问等操作。

Connection对象:连接对象,主要用来建立并管理与数据库的连接,是WEB数据库与外界联系的唯一通道,只要建立了该对象,就可以重复地使用它对数据库进行查询、检索等操作。使用Connection对象的属性和方法可以用来打开和关闭数据库连接。

Command对象:命令对象,是ADO中专门负责对数据库执行命令和操作的对象,通过已建立的连接对数据库可提供灵活的查询,还可以对数据库进行添加、删除和更新数据。在运行Connection对象的命令时,已经隐含地创建了一个Command对象。

Recordset对象:记录集对象,主要用于表示访问数据库查询所返回的结果,通过它可实现对数据库中的数据的增、删、改等操作。

四、ASP开发WEB数据库

ASP是通过ADO来访问数据库,任何基于ODBC的数据库系统都能被ASP轻松访问。用ASP 结合ADO进行Web数据库开发,可按以下步骤实现:

1.连接数据库

在进行数据库的连接之前,必须首先调用Server对象的CreateObject 方法创建一个Connection对象的实例, 再使用Open 方法打开Connection对象与数据库之间的通道,实现数据源与ASP程序的连通。例如,Set conn = Server. Create.Object ("ADODB.Connection");Conn. open“数据库名”。

2.指定对数据库的操作命令

连接数据库后, 可对数据库操作, 如查询, 修改, 删除等, 这些都是通过SQL指令来完成的。例如要在数据库内的数据表中查询所有的记录,sqlStr = “select * from 数据表名。

3.显示结果

利用Connection对象Execute()方法返回的结果集自动创建一个Recordset对象,例如,Set RS = Conn. Execute(“SQL ”语句),然后利用Recordsets对象所提供的属性和方法显示查询结果。

对象数据库篇9

关键词: ASP;WEB数据库;打开

0 引言

在网络技术飞速发展的今天,基于网络的WEB数据库的操作成为了信息处理的核心,自从Microsoft推出ASP技术后,由于它在创建动态交互式站点上的强大功能及其代码编写的简便性、面向对象的设计,很快在Internet/Intranet网站上得到了广泛的应用,尤其是涉及到数据库操作的网站应用系统更是倾向于采用ASP技术.ASP成为许多计算机专业人士设计网站时的首选技术.本文简单讨论在ASP下数据库连接的相关知识.

1 基本原理

在ASP中,用来存取数据库的对象统称ADO对象(ActiveX Data Objects),这是一项容易使用并且可扩展的将数据库访问添加到Web页的技术,可以使用它去编写紧凑简明的脚本以便连接到ODBC(Open Database Connectivi-ty)兼容的数据库和OLE DB兼容的数据源.在ASP中,有7个对象,其中与数据库有关的主要有3种对象:Connection,Recordset和Command,其中Connection负责打开或连接数据库,Recordset负责存取数据表,Command定义对数据源进行操作的命令.如果只依靠这3个对象还是无法存取数据库的,还必须具有数据库存取的驱动程序:OLE DB驱动程序和ODBC驱动程序.对于任何一种数据库都必须有相对应的OLE DB驱动程序和ODBC驱动程序,ADO对象才能对数据库进行存取.ADO对象必须与各种驱动程序相结合才能存取各种类型数据库,不同的数据库需要不同的驱动程序.可以非常方便地在“控制面板”中“ODBC Data Source(32Bit)”中获得本机驱动程序的信息.

2 数据库连接

访问数据库信息的第一步是创建数据库源并和数据库源建立连接.ADO提供了Connection对象,可以使用该对象建立和管理应用程序和ODBC数据库之间的连接.Connection对象具有各种属性和方法,可以使用它们打开和关闭数据库连接,并且发出查询请求来更新信息.

要建立数据库连接,首先应创建Connection对象的实例.在实际应用中不同数据库的连接方法有所不同,它们需要建立不同的Connection,但如果建立Connection后,使用Recordset对象存取数据的方法却基本相似.以Test.mdb为例连接,基本步骤如下:

2.1 创建数据库源 数据库源名,即DSN(Data Source Name)是连接ODBC和数据库的桥梁,ODBC通过DSN来找到要访问的数据库.可以通过“32位ODBC”对其进行管理.

2.2 创建数据库链接 ASP文件中如果要访问数据,必须首先创建与数据库的链接,其语法如下:set Tconn= Server createObject (“ADOBD.CONNECTION”) /创建了链接对象TConn TConn.Open“dns”,“username”,“password” /打开链接

2.3 创建数据对象 RecordSet保存的是数据库命令结果集,并标有一个当前记录.sql=“SELECT*FROM test” /设置SQL语句Set RecordSet=TConn.Execute(sql) /创建并打开了对象,TConn是创建的链接对象Set RecordSet=TConn.Execute(sql) /将表test中的所有记录保存到RecordSet

对象数据库篇10

【关键词】面向对象数据库 信息化 关系数据库

随着计算机技术的不断发展,数据库技术已经成为计算机领域中不可缺少的一部分。关系模型以其自身的优势逐渐占据了主导地位,成为目前最重要也是应用最广泛的一种数据模型。但是,在计算机技术日新月异的发展过程中,数据库系统处理的已不仅仅是一些简单的数据类型,它还必须能够处理一些复杂的数据类型。在这种情况下,一种新型的数据模型—面向对象的数据模型问世了。本文就关系数据库和面向对象的数据库的性能和结合进行一些探讨。

一、关系数据库的特点分析

(一)数据模型

关系模型是建立在集合代数基础上的,具有坚实的理论基础。而关系模型包含的概念是关系、属性、记录等。关系模型用关系描述实体;它的基本特征是用二维数组表示所有实体,实体之间的联系也用关系来表示;

(二)数据库系统

(1)基本结构。关系数据库的基本结构是记录,一个记录包含若干条属性。

(2)支持的数据类型。关系数据库的基本数据类型包括整型、实型、字符串型、布尔型等,不允许用户增加新的数据类型。

(3)模式修改。关系数据库系统中,主要的模式修改有:创建或删除一个关系;在关系模式中增加或删除一个属性;在关系模式中修改完整性的约束条件。

二、面向对象数据库的特点分析

(一)数据模型

面向对象的数据模型是建立在面向对象的程序设计方法的基础上的。面向对象的数据模型使用了许多面向对象的概念。面向对象的数据模型不对每个实体一一定义,它只定义对象的类,根据类定义属性和方法。

(二)数据库系统

(1)基本结构。面向对象的数据库的基本结构是对象。对象与记录的概念类似,但内容要比记录复杂得多,每个对象由唯一的标识符把状态和行为封装起来。

(2)支持的数据类型。在面向对象的数据库中,它不仅包含关系数据库中的基本的数据类型,而且也可以包含用户自己定义的新类型。

(3)模式修改。面向对象的数据库系统中,主要的模式修改有:类集的改变;已有类的成分的改变;子类/超类成分的改变;查询操作:关系数据库的查询操作支持嵌套子查询、集合(交、并、差)查询等,查询是非导航式的。面向对象的数据库中,查询操作是在类上进行的,查询是导航式的。

三、关系数据库(RDB)向面向对象数据库(OODB)的转换

(一)RDB向OODB转换的可行性

关系数据库在简单大量数据的检索查询上占有优势,而面向对象数据库的优势在于对复杂数据对象的导航式访问。经过大量的研究和实践证明下面的两种方法是可行的:建立基于关系的面向对象数据模型;将关系数据模型与面向对象数据模型统一起来。

(二)RDB向OODB转换的思想

传统关系模型=(Sr,Ar) 其中Sr是关系的集合,Ar是关系代数;面向对象模型=(So,Ao) 其中So是对象的集合,Ao是对象集合的代数运算两者之间的不同之处在于Sr中的每个元素是关系,只有结构部分,而So中的每个元素是对象,不仅具有结构部分,还具有操作部分,而且对象具有封装性。具体完成从关系数据库向面向对象数据库转换思想如下:在关系模型基础上增加抽象数据结构,过程类型以及类型模式的继承性等。面向对象的方法是从抽象数据类型发展起来的,它主要是为了解决软件的复杂性和软件的结构问题。在两者的结合,这里强调数据完整性的问题。保证数据完整性的一个重要方法就是引入数据约束。

(三)RDB和OODB的前景分析

关系模型的数据结构简单,容易理解和掌握。对实体和实体之间的联系的描述简明、精确,给用户使用数据库提供了很大的方便。但是,它不能表示复杂的对象,也不具备定义复杂操作的能力。所以,根据目前数据库技术的发展趋势,关系模型还应扩充,与面向对象模型相结合,从而具有更强的功能和更广泛的应用领域。因此,关系数据模型仍然具有良好的发展前景。面向对象的数据模型由于可以表示复杂的数据类型,它能适用于一些关系模型不能适用的复杂应用领域,而且它对实体的描述比关系模型更加现实、自然、更加直观。因此,面向对象的数据模型比关系模型更具优势,更有发展潜力。

四、结语

RDB和OODB都有其各自的优势及应用领域,由于OODB模型的特点,还可以设计出更多的转换算法和集成更好的模型。对于将RDB与OODB更紧密的结合成真正的面向对象数据模型还需要更深入的探讨。

参考文献:

[1]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2000.

[2]钱雪忠,罗海驰,陈国俊.数据库理论及技术课程设计[M].北京:清华大学出版社,2009.

[3]范剑波.数据库理论与技术实现[J].西安电子科技大学出版社,2012.