1.1 数据库系统概述
人类的社会活动离不开数据处理,所谓数据处理包括对数据的收集、存储、加工、分类、排序、检索、传播等一系列工作。处理数据的目的是为了管理好数据,使之成为对决策有用的信息。数据库技术就是针对数据管理的计算机学科的一个重要分支,并随着计算机技术的发展而逐渐发展和完善起来。
1.1.1 数据管理技术的发展
数据管理技术与计算机硬件、软件及计算机应用的发展有着密切的联系,主要经历了人工管理、文件系统和数据库系统三个阶段。
1.人工管理阶段
20世纪50年代中期以前,计算机主要用于科学计算。当时计算机的外存只有纸带、卡片、磁带,没有磁盘等直接存取的存储设备,并且缺少必要的操作系统及数据管理软件的支持。所以,这一阶段数据管理的特点如下。
① 数据不具有独立性,数据与程序不可分割,当数据结构发生变化后,对应的程序也必须做相应的修改。
② 数据不能长期保存,只是在需要计算某一题目时将数据输入,处理完成后就释放。
③ 没有专门的数据管理软件,数据的存储结构、存取方式、输入/输出方式均由程序员设计完成。
人工管理阶段应用程序与数据之间的对应关系可用图1-1表示。
图1-1 人工管理阶段应用程序与数据间的关系
2.文件系统阶段
20世纪50年代后期至60年代后期,计算机不仅用于科学计算,而且还大量用于信息管理。这时,硬件上已有了硬盘、磁鼓等直接存取设备。软件方面,操作系统中已经有了专门的文件系统来管理外存中的数据文件。这一阶段数据管理的特点如下。
① 程序和数据分开存储,数据可以以文件的形式独立地存放在外存中。
② 出现了专门的软件(文件系统)对数据文件进行存取、修改、插入和删除等操作管理,程序员不必关心数据在存储器上存储的物理细节以及与外存交换的过程。
③ 文件系统仍然存在着这样一些问题:数据没有完全独立,文件系统中的文件还是为某一应用程序服务的;由于数据文件相互独立,数据文件之间缺乏联系,造成了数据冗余度大;由于相同数据的重复存储,数据不能集中管理,给数据的修改、维护带来了困难,容易造成数据的不一致性。
文件系统阶段应用程序与数据之间的对应关系如图1-2所示。
图1-2 文件系统阶段应用程序与数据间的关系
3.数据库系统阶段
20世纪60年代后期以来,计算机用于信息管理的规模和领域更加庞大,数据量急剧增加,数据共享和集中管理的需求越来越强烈,从而推动了数据库技术的发展。硬件方面有了大容量的外存储器,软件方面研制了专门的数据库管理系统。数据库系统阶段主要特点如下。
① 面向整个系统组织数据,实现数据共享,允许多个应用程序和多个用户存取数据库中的数据。
② 减少了数据的冗余度,既减少了存储空间和存取时间,又可避免数据之间的不相容性和不一致性。
③ 具有较高的数据和程序的独立性,包括物理独立性和逻辑独立性两个方面。其中,物理独立性是指当数据的存储结构改变时,数据的逻辑结构可以不改变,从而程序也不必改变;而逻辑独立性则是指当数据的总体逻辑结构改变时,可以保持局部逻辑结构不变,程序员根据局部逻辑结构编写的应用程序也无须改变。
④ 有统一的数据控制功能,有较高的数据安全性、完整性,实现并发控制。
⑤ 提供数据排序、统计、分析、制表等多种数据操作。
数据库系统阶段应用程序与数据之间的对应关系可用图1-3表示。
图1-3 数据库系统阶段应用程序与数据间的关系
1.1.2 数据库系统
数据库系统是一个存储介质、处理对象和管理系统的集合。数据库系统通常由计算机硬件及相关软件、数据库、数据库管理系统及用户四部分组成。
1.数据库
数据库(DB,Data Base)是人们为解决特定的任务,按一定的结构和组织方式存储在外存储器中的相关数据的集合。它具有最小的数据冗余,可供多个用户共享,独立于具体的应用程序。
2.数据库管理系统
数据库管理系统(DBMS,Data Base Management System)是在操作系统支持下工作的操纵和管理数据的系统软件,是整个数据库系统的核心。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法建立、修改和查询数据库,并提供对数据的排序、统计、分析、制表等功能。
3.计算机硬件及相关软件
数据库系统是建立在计算机系统之上的。在硬件方面,它需要基本的计算机硬件(主机和外设)支持;在软件方面,需要操作系统(Windows、UNIX、Linux等)、各种宿主语言(Visual C++、Visual Basic等)和一些数据库辅助应用程序等。
4.用户
数据库系统的用户通常有3种:一是对数据库系统进行日常维护的数据库管理员,二是用数据操纵语言和高级语言编制应用程序的程序员,三是使用数据库中数据的终端用户。
1.1.3 概念数据模型
数据库设计的过程是,根据人们要解决的问题,首先分析出与问题有关的实体及其属性,再分析出各实体之间的关系(概念数据模型),然后按照数据库管理系统所能支持的数据模型形成数据库(逻辑数据模型)。这里先讨论概念数据模型。
信息世界是客观事物(现实世界)在人脑中的反映,客观事物在信息世界中称为实体,反映实体之间联系的模型称为实体模型或概念模型。
1.实体及实体间的联系
客观事物之间都存在着联系,这是由事物本身的性质所决定的。例如,在学校的教学管理系统中有教师、学生和课程,教师为学生授课,学生选修课程并取得成绩;在企业的销售系统中有职工和商品,职工销售商品,并取得销售业绩;等等。
(1)实体(Entity)
客观存在并且可以相互区别的事物称为实体。实体通常指可以触及的具体事物,如一个职工、一名学生、一件商品、一本书等;实体也可以指抽象事件,如一次销售、一次借阅或一场足球比赛。
(2)属性(Attribute)
实体具有的特性称为属性。例如,学生的学号、姓名、年龄,商品的名称、类别、单价等。属性用类型(Type)和值(Value)来表征,每个属性都有值域(Domain)。
(3)联系(Relationship)
在现实世界中,事物内部及事物之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系。
(4)实体集(Entity Set)
性质相同的同类实体的集合称为实体集,例如所有职工、全体学生等。
2.实体联系的类型
根据联系的实际情况,可以将实体间的联系归纳为3种类型。
(1)一对一联系(1:1)
如果实体集E1中的每一个实体只能与实体集E2中的一个实体有联系,反之亦然,则称实体集E1与实体集E2是一对一的联系,表示为1:1。例如,一个职工对应一张照片,一张照片一定是某个职工的。
(2)一对多联系(1:n)
如果实体集E1中的每一个实体能与实体集E2中若干个实体有联系,而实体集E2中每一个实体至多与实体集E1中的一个实体有联系,则称实体集E1与实体集E2是一对多的联系,表示为1:n。例如,一名学生对应多门课程成绩,一个成绩只能对应某一名学生;一个职工可能有多笔销售业务,而一笔销售业务一定属于某一个职工。
通常,将一对多关系中的实体集E1称为“父”方或“一”方,实体集E2称为“子”方或“多”方。一对多关系是关系数据库中最常见的联系类型。
(3)多对多联系(m:n)
如果实体集E1中的每一个实体能与实体集E2中若干个实体有联系,而实体集E2中的每一个实体也能与实体集E1中若干个实体有联系,则称实体集E1与实体集E2是多对多的联系,表示为m:n。例如,一名学生可以选若干门课程学习,而每门课程也可以有多名学生选择;一个职工可以销售多个商品,而每一个商品也可以有多个职工销售。
3.概念模型的表示方法
概念模型是对信息世界的建模,表示方法很多,其中最为常用的是实体-联系方法(Entity-Relationship Approach)。该方法用E-R图来描述概念模型。E-R图的基本组成元素有实体、属性和联系等。
① 实体:用矩形框表示,实体名称写在框内。
② 属性:用椭圆形表示,框内注明属性的名称,属性与实体之间用实线连接。
③ 联系:用菱形框表示实体间的相互关系,框内注明联系的名称。应当注意的是,联系本身也是一种实体,也可以有属性。
④ 连线:用无向连线来连接实体与属性、实体与联系、联系与属性,在进行实体与联系连接时应标明对应关系,即1:1,1:n,m:n。图1-4给出了职工、销售、商品实体集之间的3种联系的E-R图。
图1-4 实体集间的3种联系
1.1.4 逻辑数据模型
数据库中的数据是按照一定的结构和组织方式存放的,这种结构用数据模型来表示。数据模型(也称逻辑数据模型)是现实世界数据特征的抽象。设计一种数据模型要根据应用系统中所涉及的数据性质、内在联系、管理要求等来组织。目前,比较流行的数据模型有3种,即按图论理论建立的层次结构模型和网状结构模型,以及按关系理论建立的关系结构模型。数据库通常分为层次式数据库、网络式数据库和关系式数据库3种。而不同的数据库是按不同的数据结构来联系和组织数据的。
1.层次模型
层次模型也称树状模型,实质上是一种有根结点的定向有序树,如图1-5所示,其模型结构具有如下特点:
① 有且仅有一个结点无父结点,称为根结点,其层次最高;
② 一个父结点向下可以有多个子节点,一个子结点向上有且仅有一个父结点。
树根与枝点之间的联系称为边,树根与边之比为1:N,即树根只有一个,树枝有N个。各结点之间是一种“一对一”或“一对多”的关系。
图1-5 层次模型示意图
2.网状模型
广义地讲,任意一个连通的基本层次联系的集合为网状模型,如图1-6所示,其特点如下:
① 可以有一个以上的结点无父结点(如R1、R2、R4);
② 至少有一个结点有多于一个以上的父结点。
图1-6 网状模型示意图
3.关系模型
关系模型是目前最流行的一种逻辑数据模型。1970年,IBM公司的研究员E.F.Cold首次提出了数据库系统的关系模型,为关系模型数据库技术奠定了理论基础。由于他的杰出贡献,1981年,E.F.Cold荣获计算机界最负盛名的ACM图灵奖。
关系模型是以二维表格来表示实体集中实体之间的联系的。关系模型中,一张二维表称为一个关系,并给它赋予一个名称,称为关系名。关于关系模型数据库的基本知识将在1.2节中进行较详细的介绍。