模块三 数据库设计
(4)一对多关联的建立
格式:SET SKIP TO [<别名1> [, <别名2>]…]
功能:以当前表为父表,以别名1,别名2,…为子表建立一对多关系。若无任何选项,取消一对多关系,而由SET RELATION建立的多对一关系仍存在。
边学边练 用命令建立一对多关系的应用。 SELECT 2 USE 选修
INDEX ON 学号 TAG T3 ADDITIVE SELECT 1
USE 学生专业
INDEX ON 学号 TAG T3 ADDI SELECT 1
SET RELATION TO 学号 INTO 选修 ADDI SET SKIP TO 选修 LIST
BROWSE FIELDS 学号, 姓名, B->课程号, B->成绩 CLOSE ALL
任务二 数据库
VFP中的数据库就是表的集合,是对数据库中的表及相关对象实行统一管理的一种工作环境。数据库的扩展名为.dbc,还有两个与它同时并存的文件,一个是数据库备注文件,扩展名为.dct,另一个是数据库索引文件,扩展名为.dcx。这三个文件供VFP使用,用户一般不能直接使用它们。
相关知识 1、数据库设计概述 数据库系统(DBS)
数据库应用系统简称为数据库系统(DataBase System,DBS),是一个计算机应用系统。它由计算机硬件、数据库管理系统、数据库、应用程序和用户等部分组成。如图3-28所示。
Page 31
Visual FoxPro 程序设计
图3-28 数据库系统的组成
(1)计算机硬件
计算机硬件(Hardware)是数据库系统赖以存在的物质基础,是存储数据库及运行数据库管理系统DBMS的硬件资源,主要包括主机、存储设备、I/O通道等。大型数据库系统一般都建立在计算机网络环境下。
为使数据库系统获得较满意的运行效果,应对计算机的CPU、内存、磁盘、I/O通道等技术性能指标,采用较高的配臵。
(2)数据库管理系统
数据库管理系统(DataBase Management System,DBMS)是指负责数据库存取、维护、管理的系统软件。DBMS提供对数据库中数据资源进行统一管理和控制的功能,将用户应用程序与数据库数据相互隔离。它是数据库系统的核心,其功能的强弱是衡量数据库系统性能优劣的主要指标。
DBMS必须运行在相应的系统平台上,在操作系统和相关的系统软件支持下,才能有效地运行。
(3)数据库
数据库(DataBase,DB )是指数据库系统中以一定组织方式将相关数据组织在一起,存储在外部存储设备上所形成的、能为多个用户共享的、与应用程序相互独立的相关数据集合。数据库中的数据也是以文件的形式存储在存储介质上的,它是数据库系统操作的对象和结果。数据库中的数据具有集中性和共享性。所谓集中性是指把数据库看成性质不同的数据文件的集合,其中的数据冗余很小。所谓共享性是指多个不同用户使用不同语言,为了不同应用目的可同时存取数据库中的数据。
数据库中的数据由DBMS进行统一管理和控制,用户对数据库进行的各种数据操作都是通过DBMS实现的。
(4)应用程序
应用程序(Application)是在DBMS的基础上,由用户根据应用的实际需要所开发的、处理特定业务的应用程序。应用程序的操作范围通常仅是数据库的一个子集,也即用户所需的那部分数据。
(5)数据库用户
用户(User)是指管理、开发、使用数据库系统的所有人员,通常包括数据库管理员、应用程序员和终端用户。数据库管理员(DataBase Administrator,DBA)负责管理、监督、维护数据库系统的正常运行;应用程序员(Application Programmer)负责分析、设计、开发、维护数据库系统中运行的各类应用程序;终端用户(End-User)是在DBMS与应用程序支持下,操作使用数据库系统的普通使用者。不同规模的数据库系统,用户的人员配臵可以根据实际情况有所不同,大多数用户都属于终端用户,在小型数据库系统中,特别是在微机上运行的数据库系统中,通常DBA就由终端用户担任。
任务描述 由第1章的对图书管理系统的分析,我们的项目需要创建数据库sf_books.dbc。新建立的数据库只是一个空的数据库,不仅没有数据,也不能输入数据。只有建立或添加了数据
32 Page 模块三 数据库设计
表和其他数据库对象,才能输入数据和实施其他数据库操作。在t_book表中我们想对单价进行限制即大于0,自由表是无法解决的,我们该如何解决?该数据库的t_book表与t_borrow表建立关联时,两表之间的增删改插操作相互之间怎样才能做到有效的控制?
子任务一 数据库Sf_books的建立、打开、关闭与删除
1、Sf_books数据库的建立 (1)用界面建数据库
单击文件菜单→新建(选数据库类型),或单击常用工具栏,新建按钮→新文件按钮,打开创建对话框,如图3.29所示→输入数据库名→保存。
图3.29创建对话框
(2)用命令
格式:CREATE DATABASE [<数据库名> | ?]
功能:创建由数据库名指定的数据库,若选?或不带任何参数,执行此命令时打开创建对话框,然后输入数据库名。
2、Sf_books数据库的打开 (1)用界面打开数据库
文件菜单→打开,见图3.30,选数据库→确定。
Page 33
Visual FoxPro 程序设计
图3.30打开对话框
(2)用命令 格式:OPEN DATABASE [<数据库名> | ?] [EXCLUSIVE | SHARED] [NOUPDATE] [VALIDATE] 功能:打开由数据库名指定的数据库。 说明:
①EXCLUSIVE 以独占方式打开数据库,与选打开对话框中复选框独占是等效的,所谓独占方式是指在同一时刻不允许其他用户使用数据库
②SHARED以共享方式打开与打开对话框中不选独占复选框是等效的,共享方式是指同一时刻允许其他用户使用数据库。
③NOUPDATE 以只读方式打开,与打开对话框中的选只读复选框等效。选此子句不能对数据库作任何修改,但不影响对此表的存取,若让数据库表也为只读,在用USE打开表时加NOUPDATE参数。
④VALIDATE 是检验数据库中的引用对象是否有效,如检查数据库表和索引是否可用。被引用的字段和索引表时是否存于表和索引中。
3、数据库的关闭
格式:CLOSE DATABASE [ALL]
功能:关闭当前数据库,及所有表。若选ALL子句,关闭所有打开的数据库和表。 4、数据库的修改
前面我们介绍过数据库在建立时同时产生*.dbc,*.dct,*.dcx三个文件,由于不能对这三个文件直接进行修改,因此采用的修改方法是:打开数据库设计器,逐一对库中相关对象进行修改操作,这包括对库中对象建立、修改和删除等。这些操作可以在数据库打开
34 Page 模块三 数据库设计
后,单击右键出现快捷菜单,或通过数据库菜单、数据库设计器工具栏完成。这将在后面逐一介绍。打开数据库设计器,可以通过前面介绍的打开数据库的方法来实现。除此之外我们再介绍一种打开数据库设计器的方法。
格式:MODIFY DATABASE [<数据库名> | ?] [NOWAIT] [NOEDIT]
功能:打开数据库设计器,让用户能够交互地修改当前使用的数据库。在修改数据库之前必须以独占方式打开数据库。
说明:
(1)选?显示打开对话框,可选要修改的数据库或输入数据库名。若省略[<数据库名>|?]子句与选?效果一样。
(2)NOWAIT 仅用于程序,打开数据库设计器后,程序继续执行。省略此参数,打开数据库后,设计的程序会暂停执行,待数据库设计器关闭后继续执行。
(3)NOEDIT 选此子句打开数据库设计器后,禁止对数据库进行修改。 5、删除数据库
格式:DELETE DATABASE <数据库名>|?[DELETE TABLES][RECYCLE]
功能:删除有数据库名指定的数据库,从磁盘上删除数据库,要求数据库必须是关闭状态。
说明:
(1)选[DELETE TABLES]子句是在删除数据库同时也从磁盘上将数据库表删除。 (2)选[RECYCLE]子句是将删除的数据库与表放入WIN回收站中。
边学边练 数据库操作的应用
CREATE DATABASE sf_books CLOSE DATABASE ALL OPEN DATABASE sf_books CLOSE DATABASE
MODIFY DATA sf_books CLOSE DATABASE
DELETE DATABASE sf_books
子任务二 数据库中的表
数据库中表有两个来源,一个来源是在数据库中建表,另一个来源是将自由表添加到数据库中,注意不可以将一个数据库中的表添加到另一个数据库中。
1、在数据库中建表,将自由表添加到数据库中 (1)在数据库中建表 ①用界面
Page 35