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 |
此表中每一行是一个记录,它包含了特定客户的所有信息,而每个记录则包含了相同类型和数量的字段:客户号、姓名等等。 表 是一种按行与列排列的相关信息的逻辑组,类似于工作单表。 字段 数据库表中的每一列称作一个字段。表是由其包含的各种字段定义的,每个字段描述了它所含有的数据。创建一个数据库时,须为每个字段分配一个数据类型、最大长度和其它属性。字段可包含各种字符、数字甚至图形。 记录 各个客户有关的信息存放在表的行,被称为记录。一般来说,数据库表创建时任意两个记录都不能相同。 键 键就是表中的某个字段(或多个字段),它(们)为快速检索而被索引。键可以是唯一的,也可以是非唯一的,取决于它(们)是否允许重复。唯一键可以指定为主键,用来唯一标识表的每行。例如,在前面的例子中,客户标识号 (客户号) 是表的主键,因为客户号唯一地标识了一个客户。 关系 数据库可以由多个表组成,表与表之间可以以不同的方式相互关联。例如,客户数据库还可以有一个包含某个客户的所有定单的表。它只用“客户号”字段来引用该定单的客户,而不在定单表中的每项重复所有客户信息,如下表所示: 表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 盘存表 内容 | 描述 | 供应商 | 费用 | 盘存 | 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 关联表:按客户号和内容排序 定货号 | 客户号 | 姓名 | 内容 | 描述 | 14764 | 33391 | Smith Mary | 27 | Straw Hat | 14932 | 33391 | Smith Mary | 46 | Garden Gloves | 15168 | 8765 | Blaselfatz Mortimer | 27 | Straw Hat |
规范化 数据库设计者的任务就是组织数据,而组织数据的方法,应能消除不必要的重复,并为所有必要信息提供快速查找路径。为了达到这种目标而把信息分离到各种独立的表中去的过程,叫作规范化。 规范化是用许多指定的规则和不同级别的范式来进行规范的复杂过程。该过程的研讨已超出了本文的范围。但是,大多数简单数据库的规范化可以用下面简单的经验规则来完成:包含重复信息的表必须分成独立的几个表来消除重复。 例如,使学生和课程对应的学生数据库,包含了下表所示的信息。 表5 学生 | 课程 | 描述 | 教授 | 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多次─ 对选了那门课程的每个学生都要重复一次。要避免这种低效率,应当把表分成两个独立的表来规范化,一个用来表示学生,另一个用来表示课程,如表6,表7所示。
| | 课程 | 描述 | 教授 | 1 | Physics for Short-定货 cooks | Adms | 2 | Counterculture Sociology | Beckely | 3 | Applied Basketweaing | Carruth | 4 | Introduction to Physiology | Dawsons |
| 表6 | | 表7 |
现在表被规范化了,所以,要改变特定课程的课程描述或“数据”,只要改变一个记录就可以了。 以上是关于数据库的基本知识,这是学习数据库编程所必须的。虽然数据库技术作为一门学科,其深度和广度不是这点篇幅能描述的,但作为入门和简单数据库编程应该是足够了。 好了,下面我们就可以开始练练了。我们经常遇到数据库系统是登记系统,不管你是在单位,或是参加什么组织,登记是免不了的,而且它的结构比较简单,我们就以一个登记系统为例吧。分析一下该系统所涉及到的数据。
二、磨刀不误砍柴功
对于登记,要跟踪的信息包括: ● 姓名 ● 性别 ● 籍贯 ● 年龄 ● 出生年月 ● 单位 ● 地址 ● 邮政编码 ● 电话 ● 传真 当然,可以简单地创建一个表,使得上述的每个数据项对应一个字段。 现在需要给表指派主键,用以唯一标识每一条记录,在登记表中分别添加登记号作为唯一键,这样就保证数据库中的任两条记录都不同了。 对数据库作出以上分析后,我们就可以开始建立数据库了。 <  
1/2 1 2 下一页 尾页 |