Visual FoxPro
1
V
i s u a l
F
o x P r o
Visual FoxPro
2
1.1 数据管理技术的发展
1.2 数据库系统
1.3 数据模型
1.4 关系数据库
1.5 Visual FoxPro系统简介
Visual FoxPro
3
1.1 数据管理技术的发展
1.1.1 数据与数据处理
1.数据和信息
数据 是人们用于记录事物情况的物理符号。为
了描述客观事物而用到的数字、字符以及所有能输
入到计算机中并能被计算机处理的符号都可以看作
数据。有两种基本形式的数据:数值型数据、字符
型数据。此外,还有图形、图像、声音等多媒体数
据。
Visual FoxPro
4
信息 是数据中所包含的意义。通俗地讲,信息
是经过加工处理并对人类社会实践和生产活动产生
决策影响的数据。
数据 与 信息 既有区别,又有联系。 数据 是表示
信息的,但并非任何数据都能表示信息,信息 只是
加工处理后的数据,是数据所表达的内容。另一方
面 信息不随 表示它的 数据形式 而改变,它是反映客
观现实世界的知识,而 数据 则具有 任意性,用不同
的数据形式可以表示同样的信息。
Visual FoxPro
5
2,数据处理
数据处理是指将数据转换成信息的过程。它包
括对数据的收集、存储、分类、计算、加工、检索
和传输等一系列活动。其基本目的是从大量的、杂
乱无章的、难以理解的数据中整理出对人们有价值、
有意义的数据(即信息),作为决策的依据。
Visual FoxPro
6
1.1.2 数据管理技术
1,人工管理阶段
20世纪 50年代中期以前,计算机主要应用于科
学计算,数据量较少,一般不需要长期保存数据。
硬件方面,没有磁盘等直接存取的外存储器。软件
方面,没有对数据进行管理的系统软件。在此阶段,
对数据的管理是由程序员个人考虑和安排的,他们
既要设计算法,又要考虑数据的逻辑结构、物理结
构以及输入输出方法等问题。程序与数据是一个整
体,一个程序中的数据无法被其他程序使用,因此
程序与程序之间存在大量的重复数据。数据存储结
构一旦有所改变,则必须修改相应程序。应用程序
的设计与维护负担繁重。
Visual FoxPro
7
2,文件系统阶段
20世纪 50年代后期至 60年代后期,计算机
开始大量用于数据管理。硬件上出现了直接存
取的大容量外存储器,如磁盘、磁鼓等,这为
计算机系统管理数据提供了物质基础。软件方
面,出现了操作系统,其中包含文件系统,这
又为数据管理提供了技术支持。
文件系统提供了在外存储器上长期保存数
据并对数据进行存取的手段。文件的逻辑结构
与存储结构有一定区别,即程序与数据有一定
的独立性。数据的存储结构变化,不一定影响
到程序,因此程序员可集中精力进行算法设计,
并大大减少了维护程序的工作量。
Visual FoxPro
8
文件系统使计算机在数据管理方面有了长足的
进步。时至今日,文件系统仍是一般高级语言普遍
采用的数据管理方式。然而当数据量增加、使用数
据的用户越来越多时,文件系统便不能适应更有效
地使用数据的需要了,其症结表现在 3个方面:
( 1) 数据的冗余度大 。 由于数据文件是根据应
用程序的需要而建立的,当不同的应用程序所需要
使用的数据有许多部分相同时也必须建立各自的文
件,即数据不能共享,造成大量重复。这样不仅浪
费存储空间,而且使数据修改变得非常困难,容易
产生数据不一致,即同样的数据在不同的文件中所
存储的数值不同,造成矛盾。
Visual FoxPro
9
( 2) 数据独立性差 。 在文件系统中,数据和
应用程序是互相依赖的,即程序的编写与数据组
织方式有关,如果改变数据的组织方式,就必须
修改有关应用程序。这无疑将增加用户的负担。
此外,数据独立性差也不利于系统扩充、系统移
植等开发推广工作。
( 3) 缺乏对数据的统一控制管理 。 在同一个
应用项目中的各个数据文件没有统一的管理机构,
数据完整性和安全性很难得到保证。数据的保护
等均交给应用程序去解决,使得应用程序的编制
相当繁琐。
较好地解决文件系统存在的问题,正是数据
库系统的目标。
Visual FoxPro
10
3,数据库系统阶段
20世纪 60年代后期,计算机在管理中应用规模
更加庞大、数据量急剧增加,数据共享性更强。硬
件价格下降,软件价格上升,编制和维护软件所需
成本相对增加,其中维护成本更高。这些成为数据
管理在文件系统的基础上发展到数据库系统的原动
力。
在数据库系统中,由一种叫做数据库管理系统
( DBMS,Database Management Systems)的系统
软件来对数据进行统一的控制和管理,从而有效地
减少了数据冗余,实现了数据共享,解决了数据独
立性问题,并提供统一的安全性、完整性和并发控
制功能。
Visual FoxPro
11
数据库是在数据库管理系统的集中控制之下,
按一定的组织方式存储起来的、相互关联的数据集
合。在数据库中集中了一个部门或单位完整的数据
资源,这些数据能够为多个用户同时共享,且具有
冗余度小、独立性和安全性高等特点。
Visual FoxPro
12
数据库技术的发展先后经历了层次数据库、网
状数据库和关系数据库。层次数据库和网状数据库
可以看作是第一代数据库系统,关系数据库可以看
作是第二代数据库系统。自 20世纪 70年代提出关系
数据模型和关系数据库后,数据库技术得到了蓬勃
发展,应用也越来越广泛。但随着应用的不断深入,
占主导地位的关系数据库系统已不能满足新的应用
领域的需求。正是实际中涌现出的许多问题,促使
数据库技术不断向前发展,涌现出许多不同类型的
新型数据库系统。
Visual FoxPro
13
下面概要性地作一些介绍。
( 1)分布式数据库系统。分布式数据库系统
( Distributed Database System)是在集中式
数据库基础上发展起来的,是数据库技术与计
算机网络技术、分布处理技术相结合的产物。
分布式数据库系统是地理上分布在计算机网络
不同结点,逻辑上属于同一系统的数据库系统,
能支持全局应用,同时存取两个或两个以上结
点的数据。
Visual FoxPro
14
( 2)面向对象数据库系统。面向对象数据库系统
( Object-Oriented Database System)是将面向对象
的模型、方法和机制,与先进的数据库技术有机地
结合而形成的新型数据库系统。它从关系模型中脱
离出来,强调在数据库框架中发展类型、数据抽象、
继承和持久性。它的基本设计思想是,一方面把面
向对象语言向数据库方向扩展,使应用程序能够存
取并处理对象,另一方面扩展数据库系统,使其具
有面向对象的特征,提供一种综合的语义数据建模
概念集,以便对现实世界中复杂应用的实体和联系
建模。因此,面向对象数据库系统首先是一个数据
库系统,具备数据库系统的基本功能,其次是一个
面向对象的系统,针对面向对象的程序设计语言的
永久性对象存储管理而设计的,充分支持完整的面
向对象概念和机制。
Visual FoxPro
15
( 3)多媒体数据库系统。多媒体数据库系统( Multi-
media Database System)是数据库技术与多媒体技
术相结合的产物。在许多数据库应用领域中,都涉
及到大量的多媒体数据,这些与传统的数字、字符
等格式化数据有很大的不同,都是一些结构复杂的
对象。
Visual FoxPro
16
( 4)数据仓库。信息技术的高速发展,数据库应用
的规模、范围和深度不断扩大,一般的事务处理已
不能满足应用的需要,企业界需要在大量信息数据
基础上的决策支持,数据仓库( Data Warehouse)
技术的兴起满足了这一需求。数据仓库作为决策支
持系统( Decision Support System)的有效解决方
案,涉及 3方面的技术内容:数据仓库技术、联机
分析处理( On-Line Analysis Processing,OLAP)
技术和数据挖掘( Data Mining)技术。
Visual FoxPro
17
1.2.1 数据库系统的组成
数据库系统是把有关计算机硬件、软件、数据
和人员组合起来为用户提供信息服务的系统。因此,
数据库系统是由计算机系统、数据库及其描述机构、
数据库管理系统和有关人员组成,是由这几个方面
组成的具有高度组织性的总体。
1,硬件
数据库系统对计算机硬件的要求除要求 CPU的
处理速度高、内存容量大以外,还要求有足够的外
存空间以存储数据库中的数据。
1.2 数据库系统
Visual FoxPro
18
2,软件
数据库系统中的软件包括操作系统、数据库
管理系统及数据库应用系统等。
数据库管理系统是数据库系统的核心软件之
一。它提供数据定义、数据操作、数据库管理、
数据库建立和维护以及通信等功能。
数据库应用系统是指系统开发人员利用数据
库系统资源开发出来的,面向某一类实际应用的
应用软件系统。它分为两类:
( 1) 管理信息系统。 这是面向机构内部业务
和管理的数据库应用系统。
( 2) 开放式信息服务系统。 这是面向外部、
提供动态信息查询功能,以满足不同信息需求的
数据库应用系统。
Visual FoxPro
19
3,数据库
数据库系统中的数据库是按一定法则存储在计
算机外存储器中的大批数据。它不仅包括描述事物
的数据本身,而且还包括相关事物之间的联系。
数据库中的数据往往不是像文件系统那样,只
面向某一项特定应用,而是面向多种应用,可以被
多个用户、多个应用程序共享。其数据结构独立于
使用数据的程序,对于数据的增加、删除、修改和
检索由系统软件进行统一的控制。
无论是哪一类信息系统,从实现技术角度而言,
都是以数据库技术为基础的计算机应用系统。
Visual FoxPro
20
4,数据库系统的有关人员
数据库系统的有关人员主要有 3类:最终用户、
数据库应用系统开发人员和数据库管理员( DBA:
Database Administrator)。最终用户指通过应用
系统的用户界面使用数据库的人员,他们一般对数
据库知识了解不多。数据库应用系统开发人员包括
系统分析员、系统设计员和程序员。系统分析员负
责应用系统的分析,他们和用户、数据库管理员相
配合,参与系统分析;系统设计员负责应用系统设
计和数据库设计;程序员则根据设计要求进行编码。
数据库管理员是数据管理机构的一组人员,他们负
责对整个数据库系统进行总体控制和维护,以保证
数据库系统的正常运行。
Visual FoxPro
21
1.2.2 数据库的三级模式结构
为了有效地组织、管理数据,提高数据库
的逻辑独立性和物理独立性,人们为数据库设
计了一个严谨的体系结构,数据库领域公认的
标准结构是三级模式结构,它包括外模式、模
式和内模式。
Visual FoxPro
22
美国国家标准协会( ANSI,American
National Standards Institute)的数据库管理系统
研究小组于 1978年提出了标准化的建议,将数据
库结构分为 3级:面向用户或应用程序员的用户级、
面向建立和维护数据库人员的概念级、面向系统
程序员的物理级。用户级对应外模式,概念级对
应模式,物理级对应内模式,使不同级别的用户
对数据库形成不同的视图。所谓视图,就是指观
察、认识和理解数据的范围、角度和方法,是数
据库在用户“眼中”的反映,很显然,不同层次
(级别)用户所“看到”的数据库是不相同的。
Visual FoxPro
23
1.模式
模式又称概念模式或逻辑模式,对应于概念
级。它是由数据库设计者综合所有用户的数据,按
照统一的观点构造的全局逻辑结构,是对数据库中
全部数据的逻辑结构和特征的总体描述,是所有用
户的公共数据视图(全局视图)。它是由数据库系
统提供的数据模式描述语言( DDL,Data
Description Language)来描述、定义的,体现、
反映了数据库系统的整体观。
Visual FoxPro
24
2.外模式
外模式又称子模式,对应于用户级。它是某个
或某几个用户所看到的数据库的数据视图,是与某
一应用有关的数据的逻辑表示。外模式是从模式导
出的一个子集,包含模式中允许特定用户使用的那
部分数据。用户可以通过外模式描述语言(外模式
DLL)来描述、定义对应于用户的数据记录(外模
式),也可以利用数据操纵语言( DML,Data
Manipulation Language)对这些数据记录进行。外
模式反映了数据库的用户观。
Visual FoxPro
25
3.内模式
内模式又称存储模式,对应于物理级。它是数
据库中全体数据的内部表示或底层描述,是数据库
最低一级的逻辑描述,它描述了数据在存储介质上
的存储方式和物理结构,对应着实际存储在外存储
介质上的数据库。内模式由内模式描述语言(内模
式 DLL)来描述、定义,它是数据库的存储观。
在一个数据库系统中,只有惟一的数据库,因
而作为定义、描述数据库存储结构的内模式和定义、
描述数据库逻辑结构的模式,也是惟一的,但建立
在数据库系统之上的应用则是非常广泛、多样的,
故对应的外模式不是惟一的,也不可能惟一。
Visual FoxPro
26
1.2.3 数据库系统的特点
1,数据共享
数据共享是指多个用户可以同时存取数据
而不相互影响,数据共享包括以下三个方面:
所有 用户可以同时存取数据;
数据库 不仅可以为当前的用户服务,也可以为
将来的新用户服务;
可以使用 多种语言完成与数据库的接口。
Visual FoxPro
27
2,减少数据冗余
数据冗余就是数据重复, 数据冗余既浪费存
储空间, 又容易产生数据的不一致 。 在非数据库
系统中, 由于每个应用程序都有自己的数据文件,
所以数据存在着大量的重复 。
数据库从全局观念来组织和存储数据, 数据
已经根据特定的数据模型结构化, 在数据库中用
户的逻辑数据文件和具体的物理数据文件不必一
一对应, 从而有效地节省了存储资源, 减少了数
据冗余, 增强了数据的一致性 。
Visual FoxPro
28
3,具有较高的数据独立性
所谓数据独立是指数据与应用程序之间的彼
此独立, 它们之间不存在相互依赖的关系 。
在数据库系统中, 数据库管理系统通过映像,
实现了应用程序对数据的逻辑结构与物理存储结
构之间较高的独立性 。 数据库的数据独立包括两
个方面:
( 1) 物理数据独立:数据的存储格式和组织方法
改变时, 不影响数据库的逻辑结构, 从而不影响
应用程序 。
( 2) 逻辑数据独立:数据库逻辑结构的变化 ( 如
数据定义的修改, 数据间联系的变更等 ) 不影响
用户的应用程序 。
Visual FoxPro
29
4,增强了数据安全性和完整性保护
数据库加入了安全保密机制, 可以防止对
数据的非法存取 。 由于实行集中控制, 有利于
控制数据的完整性 。 数据库系统采取了并发访
问控制, 保证了数据的正确性 。 另外, 数据库
系统还采取了一系列措施, 实现了对数据库破
坏的恢复 。
Visual FoxPro
30
1.3.1 实体及其联系
1.实体
从数据处理的角度看,现实世界中的客观
事物称为实体,它可以指人,如一个教师、一
个学生等等,也可以指物,如一本书、一张桌
子等。它不仅可以指实际的物体,还可以指抽
象的事件,如一次借书、一次奖励等等。它还
可以指事物与事物之间的的联系,如学生选课、
客户订货等。
1.3 数据模型
Visual FoxPro
31
一个实体可有不同的属性,属性描述了实体某
一方面的特性。例如,教师实体可以用教师编号、
姓名、性别、出生日期、职称、基本工资、研究方
向等属性来描述。每个属性可以取不同的值,对于
具体的某一教师,其编号为 10121、姓名为张衡梨、
性别为男、出生日期为 1963年 9月 7日、职称为教授、
基本工资为 678元、研究方向为网络信息系统,分
别为上述教师实体属性的取值。属性值的变化范围
称作属性值的域。如性别这个属性的域为(男,
女),职称的域为(助教,讲师,副教授,教授)
等等,由此可见,属性是个变量,属性值是变量所
取的值,而域是变量的变化范围。
Visual FoxPro
32
由上可见,属性值所组成的集合表征一个实体,
相应的这些属性的集合表征了一种实体的类型,称
为实体型,例如上面的教师编号、姓名、性别、出
生日期、职称、基本工资、研究方向等表征“教师”
这样一种实体的实体型。同类型的实体的集合称为
实体集。
在 Visual FoxPro中,用“表”来表示同一类实
体,即实体集,用“记录”来表示一个具体的实体,
用“字段”来表示实体的属性。显然,字段的集合
组成一个记录,记录的集合组成一个表。相应于实
体型,则代表了表的结构。
Visual FoxPro
33
2.实体间的联系
实体之间的对应关系称为联系,它反映了现实
世界事物之间的相互关联。例如,图书和出版社之
间的关联关系为:一个出版社可出版多种书,同一
种书只能在一个出版社出版。
实体间的联系是指一个实体集中可能出现的每
一个实体与另一实体集中多少个具体实体存在联系。
实体之间有各种各样的联系,归纳起来有 3种类型:
Visual FoxPro
34
( 1)一对一联系( 1:1)。如果对于实体集 A中的每一
个实体,实体集 B中有且只有一个实体与之联系,
反之亦然,则称实体集 A与实体集 B具有一对一联系。
( 2)一对多联系( 1:n)。如果对于实体集 A中的每
一个实体,实体集 B中有多个实体与之联系,反之,
对于实体集 B中的每一个实体,实体集 A中至多只有
一个实体与之联系,则称实体集 A与实体集 B有一对
多的联系。
( 3)多对多联系( m:n)。如果对于实体集 A中的每
一个实体,实体集 B中有多个实体与之联系,而对
于实体集 B中的每一个实体,实体集 A中也有多个实
体与之联系,则称实体集 A与实体集 B之间有多对多
的联系。
Visual FoxPro
35
1.3.2 数据模型
数据模型是对客观事物及其联系的数据描述,
反映实体内部和实体之间的联系。由于采用的数
据模型不同,相应的数据库管理系统也就完全不
同。在数据库系统中,常用的数据模型有层次模
型、网状模型和关系模型 3种。
Visual FoxPro
36
层次模型用树形结构来表示实体及其之间的联系。
在这种模型中,数据被组织成由“根”开始的
“树”,每个实体由根开始沿着不同的分支放在不
同的层次上。树中的每一个结点代表实体型,连线
则表示它们之间的关系。根据树形结构的特点,建
立数据的层次模型需要满足两个条件:
( 1)有一个结点没有父结点,这个结点即根结点。
( 2)其他结点有且仅有一个父结点。
Visual FoxPro
37
层次模型具有层次清晰、构造简单、易于实现
等优点。但由于受到如上所述的两个条件的限制,
它可以比较方便地表示出一对一和一对多的实体联
系,而不能直接表示出多对多的实体,对于多对多
的联系,必须先将其分解为几个一对多的联系,才
能表示出来。因而,对于复杂的数据关系,实现起
来较为麻烦,这就是层次模型的局限性。
采用层次模型来设计的数据库称为层次数据库。
Visual FoxPro
38
2.网状模型
网状数据模型用以实体型为结点的有向图来表
示各实体及其之间的联系。其特点是:
( 1) 可以有一个以上的结点无父结点。
( 2) 至少有一个结点有多于一个的父结点。
由于树形结构可以看成是有向图的特例,所以
网络模型要比层次模型复杂,但它可以直接用来表
示“多对多”联系。然而由于技术上的困难,一些
已实现的网状数据库管理系统(如 DBTG)中仍然
只允许处理“一对多”联系。
Visual FoxPro
39
在以上两种数据模型中,各实体之间的联系是
用指针实现的,其优点是查询速度高。但是当实体
集和实体集中实体的数目都较多时(这对数据库系
统来说是理所当然的),众多的指针使得管理工作
相当复杂,对用户来说使用也比较麻烦。
Visual FoxPro
40
3.关系模型
关系模型与层次模型和网状模型相比有着
本质的差别,它是用二维表格来表示实体及其
相互之间的联系。在关系模型中,把实体集看
成一个二维表,每一个二维表称为一个关系。
每个关系均有一个名字,称为关系名。
虽然关系模型比层次模型和网状模型发展
得晚,但是因为它建立在严格的数学理论基础
上,所以是目前比较流行的一种数据模型。自
20世纪 80年代以来,新推出的数据库管理系统
几乎都支持关系模型,本书讨论的 Visual
FoxPro就是一种关系数据库管理系统。
Visual FoxPro
41
1.4.1 关系模型
1.关系模型的基本概念
( 1)关系
一个关系就是一张二维表,通常将一个没有重
复行、重复列的二维表看成一个关系,每个关系都
有一个关系名。在 Visual FoxPro中,一个关系对应
于一个表文件,其扩展名为,dbf。
( 2)元组
二维表的每一行在关系中称为元组。在 Visual
FoxPro中,一个元组对应表中一个记录。
1.4 关系数据库
Visual FoxPro
42
( 3)属性
二维表的每一列在关系中称为属性,每个
属性都有一个属性名,属性值则是各个元组
属性的取值。在 Visual FoxPro中,一个属性
对应表中一个字段,属性名对应字段名,属
性值对应于各个记录的字段值。
( 4)域
属性的取值范围称为域。域作为属性值
的集合,其类型与范围具体由属性的性质及
其所表示的意义确定。同一属性只能在相同
域中取值。
Visual FoxPro
43
( 5)关键字
关系中能惟一区分、确定不同元组的属性或属
性组合,称为该关系的一个关键字。单个属性组成
的关键字称为单关键字,多个属性组合的关键字称
为组合关键字。需要强调的是,关键字的属性值不
能取“空值”,所谓空值就是“不知道”或“不确
定”的值,因而无法惟一地区分、确定元组。
( 6)候选关键字
关系中能够成为关键字的属性或属性组合可能不
是惟一的。凡在关系中能够惟一区分、确定不同元
组的属性或属性组合,称为候选关键字。
Visual FoxPro
44
( 7)主关键字
在候选关键字中选定一个作为关键字,称为该
关系的主关键字。关系中主关键字是惟一的。
( 8)外部关键字
关系中某个属性或属性组合并非关键字,但却
是另一个关系的主关键字,称此属性或属性组合为
本关系的外部关键字。关系之间的联系是通过外部
关键字实现的。
( 9)关系模式
对关系的描述称为关系模式,其格式为:
关系名(属性名 1,属性名 2,…,属性名 n)
关系既可以用二维表格描述,也可以用数学形式
的关系模式来描述。一个关系模式对应一个关系的
结构。在 Visual FoxPro中,也就是表的结构。
Visual FoxPro
45
2.关系的基本特点
在关系模型中,关系具有以下基本特点:
( 1)关系必须规范化,属性不可再分割。
规范化是指关系模型中每个关系模式都必须满足一
定的要求,最基本的要求是关系必须是一张二维表,
每个属性值必须是不可分割的最小数据单元,即表
中不能再包含表。
( 2)在同一关系中不允许出现相同的属性名。 Visual
FoxPro不允许同一个表中有相同的字段名。
( 3)关系中不允许有完全相同的元组,即冗余。
Visual FoxPro
46
( 4)在同一关系中元组的次序无关紧要。 也就是说,
任意交换两行的位置并不影响数据的实际含义。
( 5)在同一关系中属性的次序无关紧要。 任意交换两
列的位置也并不影响数据的实际含义,不会改变关
系模式。
以上是关系的基本性质,也是衡量一个二维表格是
否构成关系的基本要素。在这些基本要素中,有一
点是关键,即属性不可再分割,也即表中不能套表。
Visual FoxPro
47
3.关系模型的优点
( 1)数据结构单一。
关系模型中,不管是实体还是实体之间的联系,
都用关系来表示,而关系都对应一张二维数据表,
数据结构简单、清晰。
( 2)关系规范化,并建立在严格的理论基础上。
关系中每个属性不可再分割,构成关系的基本规
范。同时关系是建立在严格的数学概念基础上,
具有坚实的理论基础。
( 3)概念简单,操作方便。
关系模型最大的优点就是简单,用户容易理解和
掌握,一个关系就是一张二维表格,用户只需用
简单的查询语言就能对数据库进行操作。
Visual FoxPro
48
1.4.2 关系数据库
以关系模型建立的数据库就是关系数据库
( RDB,Relational Database)。关系数据库中包
含若干个关系,每个关系都由关系模式确定,每个
关系模式包含若干个属性和属性对应的域,所以,
定义关系数据库就是逐一定义关系模式,对每一关
系模式逐一定义属性及其对应的域。
一个关系就是一张二维表格,表格由表格结构
与数据构成,表格的结构对应关系模式,表格每一
列对应关系模式的一个属性,该列的数据类型和取
值范围就是该属性的域。因此,定义了表格就定义
了对应的关系。
Visual FoxPro
49
在 Visual FoxPro中,与关系数据库对应的
是数据库文件(,dbc文件),一个数据库文件
包含若干个表(,dbf文件),表由表结构与若
干个数据记录组成,表结构对应关系模式。每
个记录由若干个字段构成,字段对应关系模式
的属性,字段的数据类型和取值范围对应属性
的域。
一个关系模型的实际例子:学生 –选课 –课
程关系模型。
Visual FoxPro
50
学生管理数据库中的表
Visual FoxPro
51
表之间的关系
Visual FoxPro
52
1.4.3 关系运算
1.选择
选择运算是从关系中查找符合指定条件元组的
操作。以逻辑表达式指定选择条件,选择运算将
选取使逻辑表达式为真的所有元组。选择运算的
结果构成关系的一个子集,是关系中的部分元组,
其关系模式不变。
选择运算是从二维表格中选取若干行的操作,
在表中则是选取若干个记录的操作。在 Visual
FoxPro中,可以通过命令子句 FOR <逻辑表达式 >、
WHILE <逻辑表达式 >和设置记录过滤器实现选
择运算。
Visual FoxPro
53
2.投影
投影运算是从关系中选取若干个属性的操作。
投影运算从关系中选取若干属性形成一个新的关系,
其关系模式中属性个数比原关系少,或者排列顺序
不同,同时也可能减少某些元组。因为排除了一些
属性后,特别是排除了原关系中关键字属性后,所
选属性可能有相同值,出现相同的元组,而关系中
必须排除相同元组,从而有可能减少某些元组。
投影是从二维表格中选取若干列的操作,在表
中则是选取若干个字段。因 Visual FoxPro允许表中
有相同记录,如有必要,只能由用户删除相同记录。
在 Visual FoxPro中,通过命令子句 FILEDS <字段
表 >和设置字段过滤器,实现投影运算。
Visual FoxPro
54
3.联接
联接运算是将两个关系模式的若干属性拼接成
一个新的关系模式的操作,对应的新关系中,包含
满足联接条件的所有元组。联接过程是通过联接条
件来控制的,联接条件中将出现两个关系中的公共
属性名,或者具有相同语义、可比的属性。
联接是将两个二维表格中的若干列,按同名等
值的条件拼接成一个新二维表格的操作。在表中则
是将两个表的若干字段,按指定条件(通常是同名
等值)拼接生成一个新的表。
在 Visual FoxPro中,联接运算是通过 JOIN命令
和 SELECT – SQL命令来实现的。
Visual FoxPro
55
1.4.4 关系的完整性约束
关系完整性是为保证数据库中数据的正确性和
相容性,对关系模型提出的某种约束条件或规则。
完整性通常包括实体完整性、参照完整性和用户定
义完整性(又称域完整性),其中实体完整性和参
照完整性,是关系模型必须满足的完整性约束条件。
Visual FoxPro
56
1.实体完整性
实体完整性是指关系的主关键字不能取“空值”。
一个关系对应现实世界中一个实体集。现实世界中
的实体是可相互区分、识别的,也即它们应具有某种
惟一性标识。在关系模式中,以主关键字作惟一性标
识,而主关键字中的属性(称为主属性)不能取空值,
否则,表明关系模式中存在着不可标识的实体(因空
值是“不确定”的),这与现实世界的实际情况相矛
盾,这样的实体就不是一个完整实体。按实体完整性
规则要求,主属性不能取空值,如主关键字是多个属
性的组合,所有主属性均不得取空值。
Visual FoxPro
57
2.参照完整性
参照完整性是定义建立关系之间联系的主关键字与
外部关键字引用的约束条件。
关系数据库中通常都包含多个存在相互联系的关系,
关系与关系之间的联系是通过公共属性来实现的。所
谓公共属性,它是一个关系 R(称为被参照关系或目
标关系)的主关键字,同时又是另一关系 K(称为参
照关系)的外部关键字。如果参照关系 K中外部关键
字的取值,要么与被参照关系 R中某元组主关键字的
值相同,要么取空值,那么,在这两个关系间建立关
联的主关键字和外部关键字引用,符合参照完整性规
则要求。如果参照关系 K的外部关键字也是其主关键
字,根据实体完整性要求,主关键字不得取空值,因
此,参照关系 K外部关键字的取值实际上只能取相应
被参照关系 K中已经存在的主关键字值。
Visual FoxPro
58
3.用户定义完整性
实体完整性和参照完整性适用于任何关系型数
据库系统,主要是对关系的主关键字和外部关键字
取值必须有效做出的约束。用户定义完整性则是根
据应用环境的要求和实际的需要,对某一具体应用
所涉及的数据提出约束性条件。这一约束机制一般
不应由应用程序提供,而应由关系模型提供定义并
检验。用户定义完整性主要包括字段有效性约束和
记录有效性约束。
Visual FoxPro
59
1.5.1 Visual FoxPro系统的发展
1983 年, 美国 Ashton-Tate 公司 ( 1992 年被
Borland公司收购 ) 推出了 dBASEⅡ 关系型数据库
管理系统, 1984年 6月又推出了 dBASEⅢ, 随后又
推出改进型产品 dBASEⅢ Plus,功能一代比一代
强 。 dBASE由于使用方便, 性能优越, 被誉为
,大众数据库,, 在微机数据库中占有统治地位 。
但是 dBASE仍然存在着不少缺点, 如速度慢, 人
机界面差, 不带编译器, 命令和函数有限等等 。
1.5 Visual FoxPro系统简介
Visual FoxPro
60
美国 Fox Software公司正是看到了 dBASE在性
能和速度上存在的不足,也预见到了微机数据库系
统应用的巨大潜力,推出了与 dBASE全兼容的
FoxBASE+,其速度和功能都优于 dBASE。
FoxBASE+ 1.0版于 1987年 2月问世,仅隔 5个月又推
出了 2.0版,其最高版本是 1988年 7月推出的 2.1版。
Visual FoxPro
61
1995年 6月,Microsoft公司推出了 Visual
FoxPro 3.0版,接着又很快推出 Visual FoxPro 5.0及
其中文版,1998年发布了可视化编程语言集成包
Visual Studio 6.0。本书介绍的 Visual FoxPro 6.0
(中文版)就是其中的一员。它是可运行于
Windows95/98,Windows NT平台的 32位数据库开
发系统,能充分发挥 32位微处理器的强大功能,是
直观易用的编程工具。
Visual FoxPro
62
1.5.2 Visual FoxPro 6.0的特点
1.大大加强了查询与管理功能
Visual FoxPro采用了目前先进的 Rushmore快速
查询技术,使 Visual FoxPro能快速查询到所需记录,
查询响应时间成指数倍减少,极大地提高了查询的
效率。 Visual FoxPro提供的项目管理器,可供用户
对所开发项目中的数据、文档、源代码和类库等资
源进行集中管理,提高了开发与维护效率。
Visual FoxPro
63
2.引入了数据库表的概念
从 dBASE到 FoxPro,每一个数据库文件(使
用,bdf作扩展名)都是独立存在的。库文件之间的联
系,只能在使用时由用户在编程中用命令来表达。
Visual FoxPro改变了这一传统的做法,在定义库文
件(在 Visual FoxPro中改称为表)时,就将它们区
分为属于某一数据库的“数据库表”( Database
Table)和不属于任何数据库的“自由表”( Free
Table)两大类。对所有的数据库表,在建表时就同
时定义它与数据库内其他表之间的关系。这就使
Visual FoxPro建立的库表更加符合数据库的实际,
也方便了用户随后对这些表的引用。
Visual FoxPro
64
3.扩充了对 SQL语言的支持
SQL语言是由 IBM公司开发的关系数据库语言,
其后成为关系数据库的标准语言,其查询语句不仅
功能强大,而且使用灵活。在 Visual FoxPro 6.0中,
SQL语言的命令已扩充到了 8条,加强了 Visual
FoxPro语言的功能。
4.提供了多种可视化设计工具
Visual FoxPro 6.0提供了向导( Wizard)、设计
器( Designer)和生成器( Builder) 3类可视化设
计工具,能帮助用户以简单的操作,快速完成各种
查询和设计任务。
Visual FoxPro
65
5.面向对象的程序设计
Visual FoxPro一方面继续使用传统的面向过程
的程序设计,另一方面还支持面向对象的程序设计。
允许用户对“对象”( Object)和“类”( Class)
进行定义,并编写相应的代码。由于 Visual FoxPro
预先定义和提供了一批基类,用户可以在基类的基
础上定义自己的类和子类,从而利用类的继承性。
从而减少编程工作量,加快软件开发过程。
Visual FoxPro
66
6.提供 OLE功能
OLE是 Object Linking and Embedding(对象
链接与嵌入)的缩写,是 Microsoft公司开发的重要
技术。通过这种技术,Visual FoxPro可与其他应用
软件共享数据,实现应用集成。例如在不退出
Visual FoxPro环境的情况下,用户就可在 Visual
FoxPro的表单(或窗体)中链接其他软件中的对象,
直接对这些对象进行编辑。在通过必要的格式转换
后,用户可以在 Visual FoxPro与其他软件之间进行
数据的传输。 Visual FoxPro 6.0还能提供自动的
OLE控制,用户借助于这种控制,甚至能通过
Visual FoxPro的编程来运行其他软件,让它们完成
诸如计算、绘图等功能,实现应用的集成。
Visual FoxPro
67
7.支持网络应用
Visual FoxPro既适用于单机环境,也适用于网
络环境。
其网络功能主要包括:支持客户/服务器结构,
既可访问本地计算机,也支持对服务器的浏览。对
于来自本地、远程或多个数据库表的异种数据,
Visual FoxPro可支持用户通过本地或远程视图访问
与使用,并在需要时更新表中的数据;在多用户环
境中,Visual FoxPro还允许建立事务处理程序来控
制对数据的共亭,包括支持用户共享数据,或限制
部分用户访问某些数据等。