1、第一章 数据库基础知识当今人类社会已进入信息化时代,计算机早已不仅仅是用于数值计算,而是更为广泛地应用于信息处理领域,因此,计算机在某种意义上已被人们称之为信息处理机。数据处理问题的特点是数据量大、类型多、结构复杂,同时,对数据的贮存、检索、分类、统计等处理的要求较高。为了适应这一需求,把数据从过去附属于程序的做法改变为数据与程序相对独立;对数据加以组织与管理,使之能为更多不同的程序所共享。这就是“数据库系统“的基本特点之一。由于数据库技术的出现,数据处理的成本大大降低,效率越来越高,可靠性不断增加,从而推动了计算机应用的普及。数据库系统有四个重要的组成部分,即经过组织,可供多方面使用的数据集
2、合数据库;支持数据贮存和数据操作的计算机系统;介于数据库和应用程序之间的数据库管理系统;提供给用户使用的各种数据库应用程序。本书介绍的是一个能在 Windows 操作系统环境下运行的 Visual FoxPro 6.0 数据库管理系统,以及如何建立数据库与编制 Visual FoxPro 6.0 应用程序的方法与技巧。1.1 计算机基础知识硬件操作数操管理系据系统库存统应用软件图 1-1 软、硬件的关系计算机系统包括两个部分,一部分是硬件系统,一部分是软件系统。硬件系统包括:存贮器、运算器、控制器、输入设备和输出设备五大部分。一台没有相应“软件”支持的计算机通常称为“裸机” 。一台裸机在功能上
3、往往很有局限,用户使用极不方便。所谓“软件”是指由计算机中完成一定功能的所有程序与数据的集合。软件能对硬件的功能加以扩充和完善。举例来讲,硬件本身只能识别由“0”和“1”组成的二进制代码,用户想要在裸机上输入一个数据,自己就得编写许多条指令组成的一段程序,而且,二进制代码难记难学,用户会感到十分不便。如果为裸机配上汇编程序、编译程序、操作系统、数据管理系统及应用程序等软件,那么输入一个数据,即使用户有更多更高的要求,也是非常容易实现的。图 1-1 反映了硬件软件之间的这种关系。数据库管理系统就是一种软件,用户通过它与计算机打交道,从而使得操纵数据变得极为方便与容易,大大减少了用户的工作量。1.
4、2 数据库的基本概念数据库技术是在 20 世纪 60 年代末兴起的一种数据管理技术。数据库在英语中称为 DataBase。1.2.1 数据库的发展数据管理指的是对数据的组织、编目、存贮、检索和维护等。它是数据处理的中心问题。随着计算机技术的发展,数据管理也经历了由低级向高级的发展过程。大体上,可以分为三过阶段:(1)人工管理阶段(五十年代中期以前)(2)文件管理阶段(五十年代后期至六十年代后期)(3)数据库系统阶段(七十年代初以后)早期的数据管理是以人工处理,通过人工对数据组织、编目、存贮、检索和维等工作,需要人对处理数据物理结构了解清楚,这个阶段耗时费力,工作量非常大。文件管理阶段与人工管理
5、阶段相比,由于它通过文件系统来管理和使用各种设备介质上的信息,把信息的逻辑结构映象成设备介质上的物理结构。这样就要以使用户不必过多地考虑物理细节,而将精力集中于算法。文件系统中的文件基本上是对应于一个或几个应用程序,或者说数据是面向应用的。它仍然是一个不具有弹性的无结构信息集合,存在以下几个方面的问题:(1) 冗余度大文件系统下的用户各自建立自己的文件,相互之间数据不能共享,造成数据大量重复存储。不仅浪费存储空间,更严重的是容易造成数据的不一致性。(2) 数据独立性差数据和程序相互之间的依赖仍较严重。(3) 数据无集中管理各个文件没有统一的管理机构,其安全性和完整性等无法得到保证。所有这些问题
6、,文件系统本身无法解决,这严重地阻碍了数据处理技术的民展,同时,也成为数据库技术产生的原动力和背景。于是数据库系统便应运而生,并在 20 世纪 60 年代末期诞生了第一个商品化的数据库系统美国 IBM 公司的 IMS 系统(Information Management System) 。数据库系统的目标首先就是克服文件系统的这些弊病,用一个软件来集中管理所有的文件,以实现数据的共享,保证数据的完整性、安全性。1.2.2 数据库系统的特点与文件系统比较,数据库系统有以下特点:1 数据的结构化在文件系统中,各个文件不存在相互联系。从单个文件来看,数据一般是有结构的;但是从整个系统来说,数据在整体上
7、又是没有结构的。数据库系统则不同,在同一数据库中的数据文件是有联系的,且在整体上服从一定的结构形式。2 数据共享共享是数据库系统的目的,也是它的重要特点。一个库中的数据不仅可为同一企业或机构之内的各个部门所共享,也可为不同单位、地域甚至不同国家的用户所共享。而在文件系统中,数据一般是由特定的用户专用的。3 数据的独立性在文件系统中,数据结构和应用程序相互依赖,一方的改变总是要影响另一方的改变。数据库系统则力求减小这种相互依赖,实现数据的独立性。虽然目前还未能完全做到这一点,但较之文件系统已大有改善。4 可控冗余度数据专用时,每个用户拥有并使用自己的数据,难免有许多数据相互重复,这就是冗余。实现
8、共享后,不必要的重复将全部消除,但为了提高查询效率,有时也保留少量重复数据,其冗余度可由设计人员控制。表 1.1 以对照表的的形式,列出了数据库系统与一般文件应用系统的主要性能差别。表 1.1 数据库系统与一般文件应用系统性能对照表序号文件应用系统数据库系统1文件中的数据由特定的用户专用库内数据由多个用户共享2每个用户拥有自己的数据,导致数原则上可消除重复。为方便查询允许少量据重复存储数据重复存储,但冗余度可以控制3数据从属于程序,二者相互依赖数据独立于程序,强调数据的独立性4各数据文件彼此独立,从整体看为“无结构”各文件的数据相互联系,从总体看是“有结构1.2.3 数据库系统的分代经过 30
9、 多年的发展,数据库系统分为三代,第一代为非关系型数据库系统,第二代为关系型数据库系统,第三代为对象关系型数据库系统。1 非关系型数据库系统非关系型数据库系统是对第一代数据库系统的总称,其中又包括层次型数据库系统和网状型数据库系统两种类型。这一代数据库系统具有以下的共同特征:(1) 采用“记录”为基本的数据结构。在不同的“记录型”(record type)之间,允许存在相互联系。图 1.2 显示了因联系方式不同而区分的两类数据模型。图(a)为“层次模型” ,其总体结构为“树型” ,在不同记录型之间只允许存在单线联系;图(b)为“网状模型” ,其总体结构呈网形,在两个记录之间允许存在两种或多于两
10、种的联系。前者适用于管理具有家族形系统结构的数据库,后者则更适于管理在数据之间具有复杂联系的数据库。(2) 论层次模型或网状模型,一次查询只能访问数据库中的一个记录,存取效率不高。对于具有复杂联系的系统,还需用户详细描述对数据的访问路径(称为存取路径) ,增加使用的麻烦。所以自关系数据库兴起后,非关系数据库系统已逐渐被关系数据库系统所取代,目前仅在一些大中型计算机系统中继续使用。ABEGCDFABCABCD(a)层次模型 (b)网状模型图 1-22 关系型数据库系统(relational database systems,简称RDBS)早在 1970 年,科德(E.F.Codd)就在一篇论文中
11、提出了“关系模型”(relational model)的概念。70 年代中期,国外已有商品华的RDBS 问世,数据库系统进入了第二代。80 年代后,RDBS 在包括 PC机在内的各型计算机上的纷纷实现,目前在 PC 机上使用的数据库系统主要是第二代数据库系统。与第一代数据库系统相比,RDBS 具有下列优点:(1) 采用人们常使用的表格作为基本的数据结构,通过公共的关键字段来实现不同二维表之间(或“关系”之间)的数据联系。关系模型呈二维表形式,简单明了,使用和学习都很方便,如图 1-3 所示。图 1-3 学生情况表(2) 一次查询仅用一条命令或语句,即可访问整个“关系”(或二维表) ,因而查询效
12、率较高,不像第一代数据库那样每次仅能访问一个记录。通过多表联合操作(也称为“多库”操作“,还能对有联系的若干二维表实现”关联“查询。3、 对象关型数据库系统(object-relational database systems, 简称 ORDBS)随着多媒体应用的扩大,对数库提出了新的需求,要求数据库系统能存储图形、声音等复杂的对象,并能实现复杂对象行为。将数据库技术与面向对象技术相结合,便顺理成章成为研究数据库技术的新方向,构成第三代数据库系统的基础。20 世纪 80 年代中期以来,对“面向对象的数据库系统(OODBS) ”和“对象关系数据库系统(ORDBS) ”的研究都十分活跃。1989
13、年和平部队 90 年先后发表了面向对象数据库系统宣言和第三代数据库系统宣言 ,后者主要介绍 ORDBS。一批代表新一代数据库系统的商品也陆续推出。由于 ORDBS 是建立在 RDBS 技术之上的,可以直接利用 RDBS 的原有技术和用户基础,所以发展比 OODBS 更顺利,正在成为第三代数据库系统的主流。根据第三代数据库系统宣言提出的原则,第三代数据库系统除应包含第二代数据库系统的功能外,还应支持正文、图象、声音等新的数据库类型,支持类、继承、函数/方法等丰富的对象机制,并能提供高度集成的、可支持客主客户机/服务器应用的用户接口。虽然 ORDBS 目前还处在发展的过程中,在技术和应用上都还有许
14、多工作要做,但已经显示出光明的发展前景,一些数据库厂商已经推出了可供实用的 ORDBS 产品。1.2.4 数据库系统的分类1987 年,著名的美国数据库专家厄尔曼(J.D.Ullman)教授在一篇题为数据库理论的过去和未来的论文中,把数据库理论概括为4 个分支:关系数据库理论,分布式数据库理论,演绎数据库和面向对象数据库。今天,关系数据库理论已愈趋成熟,在微机数据库系统中获得普遍的应用;ORDBS 已发展为第三代数据库系统的主流。其余两个分支分布式数据库和智能数据库也在近几年取得了不小的进展,扩大了应用范围。现将部分变化简述如下:1、单用户数据库和多用户数据库早期的微机数据库都是单用户系统,只
15、能供一人使用。随着局域网应用的扩大,供网络用户共享的多用户数据库开始流行。VFP 就是一种多用户数据库系统。在它以前,已有 Dbase , Foxbase+, FoxPro 等多用户数据库供微机用户选用。多用户数据库的关键是保证“并发存取”的正确执行。例如飞机订票系统充许乘客在多个售票点订票。当两们乘客在不同的售票点同时向某一航班订票时,若缺乏相应的措施,在数据库中可能仅反映一个乘客的订票,从而发生两人同订一票的错误。2.、集中式数据库和分布式数据库集中和分布,是对数据存放地点而言的。分布式数据库分散存储在网络的多个节点上,彼此用通信线路连接。例如,一个银行有众多储户。如果他们的数据存放在一个
16、集中式数据库中,所有的储户在存、取款时都要访问这个数据库,通信量必然很大。若改用分布式数据库,将众储户的数据分散存储在离各自住所最近的储蓄所,则大多数时候数据可就近存取,仅有少数据需远程调用,从而大大减少网上的数据传输量。对一个设计良好的数据库,用户在存取数据时不须指明怕存放地点。换句话说,它能使用户像对集中式数据库访问时一样方便。分布式数据库和多用户数据库都是在网络上使用的。但多用户数据库并非都是分布存储的。例如上述的飞机订票系统,其售票数据通常集中存放,并不分散存放在各个售票点上。3、传统数据库和智能数据库传统数据库存储的数据都代表已知的事实,智能数据库则除存储事实外还能存储用于逻辑推理的
17、规则。所以后者也称为“基于规则的数据库”例如,某智能数据库存储有“科长领导科员”的规则。如果它同时存有“甲是科长” 、 “乙是科员”等数据,它就能推理得出“甲领导乙”的新事实。随着人工智能不断走向实用化,对智能数据库的研究日趋活跃,演绎数据库、专家数据库和知识库系统,都属于智能数据库的范畴。它们的共同关键是逻辑推理,如果推理模式出了问题,就可能导致荒诞的结果。1.3 关系型数据库中表的关系根据两个表格连接方式的不同,关系数据库表之间的关系可分为 3种:一对一关系,一对多关系,多对多关系。下面分别介绍这 3 种关系:1)一对一的关系在一对一的关系中,两个数据表有一相同的字段数据,此字段是一个记录
18、对应一个记录的关系。也就是说,数据表 A 的一条记录在数据表 B 中只能有一条记录与之对应,而数据表 B 的一条记录在数据表 A 中也只能不一条记录与之对应。例如:一个人对应一个唯一的身份证号,即为一对一的关系。2)一对多关系在一对多关系中,数据表 A 的一条记录可以对应数据表 B 的多条记录,但数据表 B 的一条记录在数据表 A 中只能有一条记录与之对应。例如:一个班级对应多名学生,即为一对多关系。3)多对多关系在多对多关系中,数据表 A 的一条记录可以对应数据表 B 的多条记录,反之,数据表 B 的一条记录也可以对应数据表 A 的多条记录。例如:一个学生可以选多门课程,而同一门课程可以被多个学生选修,彼此的对应关系即是多对多关系。