
3.1 数据库操作
3.1.1 数据库设计
在数据库应用系统中数据库是核心,数据库的设计将很大程度上决定开发的成败。正确地设计表的结构和数据库才能准确地为用户提供信息并方便用户操作,从而提高用户的工作效率,起到事半功倍的作用。
数据库的设计步骤如下。
(1)分析数据需求,确定应用程序的功能。
综合各类用户提出的需求,确定所设计的应用程序的功能、应用范围和所需信息。本书将以人事工资数据库为例,根据各类管理人员的要求确定要创建的数据库可以存储所有的个人基本信息、工资信息、部门信息,以及工资变化信息等。
另外,数据库还要具有根据各种情况进行统计和查询的功能,如统计部门人数和职工工资,以及根据各种要求查询人事信息等。
(2)收集和规划数据。
根据所设计的应用程序的功能收集所要的数据,然后根据数据间的关系把数据划分成若干个相对独立的部分,每一部分存储在一个表中。笔者把人事工资数据库中的数据分为4类,即人事信息、工资信息、部门信息及增加工资信息,每一部分存储在一个表中,如表3-1~表3-4所示。
表3-1 人事信息表

表3-2 工资信息表

表3-3 部门信息表

表3-4 工资增加表

(3)设计表的结构。
确定数据库中的表和表的结构,即定义表中字段个数、字段名称、字段数据类型和字段宽度等。根据需求分析的结果进行数据库的概念设计和逻辑设计,如表3-5~表3-8所示。
表3-5 人事表RSB的结构

表3-8 增加工资表ZZ的结构

表3-6 工资表Gzb的结构

表3-7 部门代码表BMDM的结构

(4)确定表间关系。
为了方便程序设计与数据处理,把要处理的数据分成若干个相互独立的表。但在程序设计时表中的数据并不是独立的,有时只需要一个表中的数据,有时需要两个表中的数据,甚至是多个表中的数据。为此要求数据库中不同表中的数据能够按照一定的关系重新进行组合,即要创建表之间的联系。
(5)定义数据库的增强特性。
确定实体完整性规则、参照完整性规则、有效性检验和其他特性,具体实现方法后面再做介绍。
(6)优化设计。
如果设计的数据库有缺陷,便会导致数据难于使用和维护。因此确定所需的表、表结构和表间关系后应该仔细研究设计方案,以求设计精益求精。消除不必要的重复字段,减少冗余。
3.1.2 创建数据库
创建数据库的方法有多种。
1.通过菜单方式创建数据库
例3-1:在E盘RSGZK目录下创建人事工资RSGZK数据库。
操作步骤如下。

图3-1 “新建”对话框
(1)选择“文件”|“新建”选项,弹出“新建”对话框,如图3-1所示。
(2)选中“数据库”单选按钮,单击“新建文件”按钮,弹出“创建”对话框,如图3-2所示。

图3-2 “创建”对话框
(3)设定保存数据库文件的文件夹并输入数据库文件名,这里输入“RSGZK.dbc”。
(4)单击“保存”按钮,弹出“数据库设计器-Rsgzk”窗口,如图3-3所示;同时“数据库设计器”工具栏也变为有效状态。

图3-3 “数据库设计器-Rsgzk”窗口
注意:如果在命令或程序中未指定路径,系统会从默认的VFP 9.0的安装目录中读取和保存文件。为了不把自己的数据文件与VFP 9.0混在一起,最好创建一个自己的工作目录来存放数据文件,以避免在打开和保存数据文件时反复选择目录的麻烦。本书所设定的默认目录为E:\RSGZK。
2.通过命令方式创建数据库
格式:CREATE DATABASE [<数据库文件名>]
功能:创建一个数据库文件,若未指定数据库文件名,则弹出“创建”对话框,等待用户选中保存数据库文件的文件夹和输入数据库文件名。数据库文件的扩展名默认为“.dbc”。
例如:
CREATE DATABASE E:\教务管理
它的功能是在E盘创建一个名为“教务管理”的数据库。
注意:使用该命令创建数据库后打开的仅仅是数据库,并不打开“数据库设计器”窗口。如果要打开“数据库设计器”窗口,则在命令窗口中输入MODIFY DATABASE命令。
3.1.3 打开和关闭数据库
处理数据库之前应先打开数据库。
1.打开数据库
(1)菜单方式。
● 选择“文件”|“打开”选项,弹出“创建”对话框,如图3-4所示。

图3-4 “创建”对话框
● 在“保存在”下拉列表框中选择数据库文件所在的位置,在“保存类型”下拉列表框中选择文件类型为“数据库(*.dbc)”,然后选择数据库文件名。
● 单击“确定”按钮,弹出“数据库设计器”窗口,系统菜单中的“格式”菜单项变为“数据库”。
(2)命令方式。
格式:OPEN DATABASE [<数据库文件名>|? ] [NOUPDATE][ EXCLUSIVE|SHARED]
功能:打开指定的数据库。
说明如下。
● ? :系统弹出“打开”对话框。
● NOUPDATE:指定以只读方式打开数据库。
● EXCLUSIVE:指定以独占方式打开数据库。
● SHARED:指定以共享方式打开数据库。
例3-2:打开E盘RSGZK目录下的RSGZK数据库。
OPEN DATABASE E:\RSGZK\ RSGZK
注意:以这种方式打开的数据库不打开“数据库设计器”窗口。
如果需要在打开数据库的同时打开“数据库设计器”窗口修改数据库,则用以下命令:
MODIFY DATABASE [<数据库文件名>|? ]
2.关闭数据库
(1)菜单方式。
选择“文件”|“关闭”选项,关闭正在使用的数据库。
(2)命令方式。
格式1:CLOSE DATABASES
功能:关闭所有打开的数据库和数据表。
格式2:CLOSE ALL
功能:关闭所有打开的数据库和数据表,以及除主窗口之外的所有窗口。