Visual Basic作为应用程序的开发“利器”也表现在数据库应用程序的开发上,它良好的界面和强大的控件功能使数据库编程变得简单多了。但即便如此,数据库应用程序的开发仍然算得上是VB编程中的难点,这是因为你不仅要熟悉VB中关于数据库编程方面的知识(当然这是十分简单的)还要了解数据库的知识。所以我们先介绍一下数据库的基本知识,算是学习数据库编程前的热身运动吧!
一、热身运动
首先需要声明是,我们这里介绍的数据库知识都是指的关系数据库。所谓关系数据库就是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库。
不管表在数据库文件中的物理存储方式如何,它都可以看作一组行和列,与电子表格的行和列类似。在关系数据库中,行被称为记录,而列则被称为字段。下面是一个客户表的例子。
表1客户表 客户号姓名地址城市街道邮编
| 1723 Doe John 1234 Ffth Avenue New York NY 1004 3391 Smith Mary 9876 Myrtle Lavee Bosten MA 6078 3765 Blasel Mortimer 2296j River Road peoria IL 7011 |
此表中每一行是一个记录,它包含了特定客户的所有信息,而每个记录则包含了相同类型和数量的字段:客户号、姓名等等。
表是一种按行与列排列的相关信息的逻辑组,类似于工作单表。
字段数据库表中的每一列称作一个字段。表是由其包含的各种字段定义的,每个字段描述了它所含有的数据。创建一个数据库时,须为每个字段分配一个数据类型、最大长度和其它属性。字段可包含各种字符、数字甚至图形。
记录各个客户有关的信息存放在表的行,被称为记录。一般来说,数据库表创建时任意两个记录都不能相同。
键键就是表中的某个字段(或多个字段),它(们)为快速检索而被索引。键可以是唯一的,也可以是非唯一的,取决于它(们)是否答应重复。唯一键可以指定为主键,用来唯一标识表的每行。例如,在前面的例子中,客户标识号 (客户号)是表的主键,因为客户号唯一地标识了一个客户。 hot007.com
关系数据库可以由多个表组成,表与表之间可以以不同的方式相互关联。例如,客户数据库还可以有一个包含某个客户的所有定单的表。它只用“客户号”字段来引用该定单的客户,而不在定单表中的每项重复所有客户信息,如下表所示:
表2定货表定货客户号日期内容数量
| 14764 3391 2/23/94 27 $22.95 14932 3391 3/17/94 46 $9.57 15108 8765 2/15/96 27 $22.95 |
在这个表中,客户号字段引用了客户表中的客户号字段,从而把定单和客户联系起来了。可以看到,客户 3391 (Mary Smith)在 94年 2月 23日订购了 27项,在 94年 3月 17日订购了 46项。用来建立关系的键叫做外部键,因为它与“外部”表(客户表)的主键关联。
一对多和多对多关系上表中的关系类型叫做一对多关系,因为一个客户可以发出多个定单,而某个特定的定单只能是一个客户所发。也可以建立多对多的关系。例如,列出所有可以销售的项(存货)的盘存表:表3盘存表内容描述供给商费用盘存
文章来源于www.jc567.cn
| 27 Straw Hat Garden Supply Co. $14.00 50 46 Garden gloves Garden Supply Co. $4.50 75 102 hanging floral industries $6.00 137 |
从盘存表中,可以看到在客户和存货项之间存在多对多的关系。也就是说,一个客户可以订购多个存货项,而一个存货项又能够被多个客户订购。多对多关系是通过两个独立的一对多关系来定义的,公共的“多”表包含了两个其它表的外部键。在该例中,定货s表与盘存表(通过“内容”)与 Customer表(通过客户号)都相关联。通过这三个表,我们可以看到,Mary Smith (客户号 3391)订购了 Straw Hat (“内容” 27)和Garden Gloves (“内容” 46),而 Mary Smith (客户号 3391)和 Mortimer Blaselflatz (客户号 8765)都订购了Straw Hat (“内容” 27)。假如把客户表和盘存表的相关字段与定货表的“定货”字段联结起来,建立一个“关联”表,那么这个关系就更清楚了。表4关联表:按客户号和内容排序定货号客户号姓名内容描述
文章来源于www.jc567.cn
007网络教程网
| 14764 33391 Smith Mary 27 Straw Hat 14932 33391 Smith Mary 46 Garden Gloves 15168 8765 Blaselfatz Mortimer 27 Straw Hat |
规范化数据库设计者的任务就是组织数据,而组织数据的方法,应能消除不必要的重复,并为所有必要信息提供快速查找路径。为了达到这种目标而把信息分离到各种独立的表中去的过程,叫作规范化。
规范化是用许多指定的规则和不同级别的范式来进行规范的复杂过程。该过程的研讨已超出了本文的范围。但是,大多数简单数据库的规范化可以用下面简单的经验规则来完成:包含重复信息的表必须分成独立的几个表来消除重复。
例如,使学生和课程对应的学生数据库,包含了下表所示的信息。表5学生课程描述教授
文章来源于www.hot007.com
| 1 4 Introduction to Physiology Dawson 2 3 Applied Basketweaing Carruth 3 1 Physics for Short-定货 cooks Adms 4 2 Introduction to Physiology Dawsons |
假如有选学了十二门课程的 1000个学生,每门课程的说明和教师将显示100多次─对选了那门课程的每个学生都要重复一次。要避免这种低效率,应当把表分成两个独立的表来规范化,一个用来表示学生,另一个用来表示课程。学生课程
| 1 4 2 3 3 1 4 4 |
课程描述教授
| 1 Physics for Short-定货 cooks Adms 2 Counterculture Sociology Beckely 3 Applied Basketweaing Carruth 4 Introduction to Physiology Dawsons |
现在表被规范化了,所以,要改变特定课程的课程描述或“数据”,只要改变一个记录就可以了。以上是关于数据库的基本知识,这是学习数据库编程所必须的。虽然数据库技术作为一门学科,其深度和广度不是这点篇幅能描述的,但作为入门和简单数据库编程应该是足够了。
好了,下面我们就可以开始练练了。我们经常碰到数据库系统是登记系统,不管你是在单位,或是参加什么组织,登记是免不了的,而且它的结构比较简单,我们就以一个登记系统为例吧。分析一下该系统所涉及到的数据。 hot007.com
二、磨刀不误砍柴功
对于登记,要跟踪的信息包括:
●姓名 ●性别
●籍贯 ●年龄
●出生年月●单位
●地址 ●邮政编码
●电话 ●传真
当然,可以简单地创建一个表,使得上述的每个数据项对应一个字段。
现在需要给表指派主键,用以唯一标识每一条记录,在登记表中分别添加登记号作为唯一键,这样就保证数据库中的任两条记录都不同了。
对数据库作出以上分析后,我们就可以开始建立数据库了。 文章来源于www.jc567.cn
三、建营扎寨
在这里我们学习怎样建立数据库,首先需要确定要建立数据库的类型。在Visual Basic中通过数据访问控件或数据访问对象(DAO)可以访问下列数据库:
1. JET数据库,即Microsoft Access
2. ISAM数据库,如:dBase,FoxPro等
3. ODBC数据库,凡是遵循ODBC标准的客户/服务器数据库。如:Microsoft SQL Server、Oracle
一般来说,假如要开发个人的小型数据库系统,用Access数据库比较合适,要开发大、中型的数据库系统用ODBC数据库更为适宜。而dBase和FoxPro数据库由于已经过时,除非非凡的情况,否则不要使用。在我们的例子中,当然选用Access数据库了。建立Access数据库有两种方法:一是在Microsoft Access中建立数据库。点击“新建”按钮就可以建立新的表了。这里我们主要介绍第二种方法:使用可视化数据治理器,不需要编程就可创建数据库。可视化数据治理器是一个非常有用的应用程序,它是VB企业版和专业版附带的,在目录\..\DevStudio\vb\samples\Visdata下。
点击菜单“文件”项下“新建”子项“Microsoft ACCESS”子项的“版本7.0 MDB”项。在弹出窗口中输入新建数据库的名称“登记”:
文章来源于www.hot007.com
jc567.cn