1.2 数据库系统概述
1.2.1 数据库的基本概念和相关术语
在系统地介绍数据库的基本概念之前,这里首先介绍一些数据库最常用的术语和基本概念。
1.数据、信息与数据处理
在计算机应用中,数据处理和以数据处理为基础的信息系统占据着很大的比重。
人类的一切活动都离不开数据,离不开信息。在不同的领域里,信息的含义有所不同。一般认为信息是数据、消息中包含的意义。数据和信息有时可以混用,例如,数据处理也称为信息处理;有时必须分清,例如,不能把信息系统称为数据系统。
(1)数据(Data)
数据是一种符号序列,它的内容是事物特性的反映。数据是对现实世界的事物采用计算机能够识别、存储和处理的方式进行的描述,或者说是计算机化的信息。数据的概念在数据处理领域中得到不断的发展,目前数据不仅包括数字、字母、文字和其他特殊字符,而且还包括图形、图像、声音等多媒体数据。
在计算机中,为了存储和处理现实世界中的事物,就要抽出对这些事物感兴趣的特征组成一个记录来描述。例如,在员工档案中,如果人们最感兴趣的是员工的姓名、性别、年龄、籍贯、所在部门、进入公司的时间和薪水,那么可以这样描述:
(余颖,女,20,四川,销售部,2008,3000)
这里的员工记录就是数据。对于上面这条员工记录,了解其含义的人会得到如下信息:余颖是公司职员,女,20岁,四川人,2008年进入公司,月薪3000元。而不了解其语意的人则无法理解其含义。
(2)信息
信息是经过加工处理的数据,是人们消化理解了的数据,是数据的具体含义。数据与信息既有联系又有区别。数据是信息的符号表示或载体,而信息则是数据的具体含义,对数据的语义解释。而且同一数据也可能有不同的解释。数据一般都可以表示成某种信息,但并非任何数据都能包含对人们来说有用的信息。信息是抽象的,不随数据设备所决定的数据形式而变化;而数据的表现形式却具有可选择性。
信息是反映客观现实世界的知识,用不同的数据形式可以表示同样的信息。例如,同样的新闻可以通过报纸、电台和电视来报道,它的表现形式不同,但其信息的内容可以相同。
(3)数据处理
数据处理是指将数据转换成信息的过程。广义地讲,它包括对数据的收集、存储、加工、分类、检索、传播等一系列活动。狭义地讲,它是指对所输入的数据进行加工整理。基本目的是从大量、已知数据出发,根据事物之间的固有联系和规律,通过分析归纳、演绎推导等手段,提出对人们有价值、有意义的信息,作为决策的依据。数据的加工可以简单,也可以相当复杂。简单加工包括组织、编码、分类、排序等;复杂加工可以使用统计学方法、数学模型等对数据进行深层次的加工。
因此,可得:信息=数据+数据处理。
2.数据库的基本概念
数据库是什么呢?顾名思义,即存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。实质上,数据库就是一些存在了很长时间——常常是许多年的信息的聚集。通常意义下,“数据库”这个术语是指由数据库管理系统管理的数据集合。
(1)数据库
数据库(DB,Database)是指长期存储在计算机内的、有组织的、可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并为各种用户共享。
(2)数据库管理系统
了解了数据和数据库的概念,下一个问题就是如何科学地组织和存储数据,如何高效地获取和维护数据。完成这个任务的即是数据库管理系统(DBMS)。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,主要目标是使数据成为方便各种用户使用的资源,并提高数据的安全性、完整性和可用性。
DBMS一般具有如下功能:
① 数据定义功能,提供数据定义语言DDL(Data Definition Language),对各级数据模式进行精确定义。
② 数据操纵功能,提供数据操纵语言DML(Data Manipulation Language),可以对数据库中的数据进行追加、插入、修改、删除、检索等操作。
③ 数据库运行控制功能,提供数据控制语言DCL(Data Control Language),可以对数据库中的数据进行并发控制、数据的安全性控制、数据的完整性控制。
④ 数据组织、存储和管理功能,DBMS分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径。确定以何种文件结构和存取方式在存储级上组织这些数据,实现数据之间的联系。
⑤ 数据库的建立和维护功能,主要包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。这些功能通常是由一些实用程序或管理工具完成的。
数据库管理系统是数据库系统的一个重要组成部分。
(3)数据库系统
数据库系统是由数据库及其管理软件组成的系统,一般由数据库、数据库管理系统、数据库管理员(DBA)、用户和应用程序组成。一个数据库系统应该具有如下特征:
① 允许用户使用一种叫作数据定义语言的专用语言,建立新的数据库和指定它们的模式(schema)。
② 使用户能够用适当的语言查询数据和更新数据。
③ 支持存储大量的数据——G(109)字节以上,经过很长一段时间以后仍保证其安全,同时允许对数据库合法的查询和更新。
④ 控制多用户的同时访问,使得一个用户的访问不影响其他用户,保证同时访问不会损害数据。
上面介绍了与数据库相关的一些基本的、抽象的概念,接下来介绍一些具体概念。
(4)实体与表
在数据库系统中,一个实体就是一个人、一个地方、一个事件,或者一个我们将要为其收集数据的物体。客观存在并可相互区别的事物称为实体。比如,在学校中,学生、教师员工、课程等都是实体。学生可以组成一个实体集。一个实体集就是实体的一个特定集合。每个实体都有某些称为属性的特征。如学生实体可能包含以下属性:学生学号、姓名、性别、入学时间、专业方向等。每个属性必须恰当地命名,以便让用户能够知道它的内容,比如学生实体,属性姓名可以存储为STU_NAME,性别可以存储为STU_SEX。
表是二维结构,它包括行和列。一个表包括一组相关的实体——实体集。因此,术语实体集和表经常互换使用。表1.1列出了一个表的特征。
(5)关系列表和关系数据库
数据库是一个自描述的数据元素的集合以及这些元素之间的联系,数据库中表之间的关系是数据元素间的重要联系。
① 关系列表
关系数据库使用表来组织数据元素,每一个表对应于一个应用实体,而每行则代表实体的一个示例。例如,医院管理系统中医生实体对应数据库中的表Doctor,该表中的每一行则代表不同的医生。医生数据表的属性构成见表1-2。
表1.1 表的特征
表1.2 医生数据表的属性构成
联系通过将来自于一个表的行标识符(医生编号)出现在一个表示诊断的行中,从而建立了该诊断与这位医生之间的联系。诊断数据表的属性构成见表1.3。
表1.3 诊断数据表的属性构成
这种表之间通过属性进行联系,构成了关系列表,是关系数据库的一个基础。
② 关系数据库
1970年,IBM研究室的Ted Codd发表了一篇具有很大影响的关于关系数据库模型的论文,数据库系统发生了显著的变化。Codd提出数据库系统应为用户提供这样一种观点,即数据库系统是用一种称为“关系”的表来组织数据的。而在背后,可能有一个很复杂的数据结构,以保证对各种查询的快速响应。但与以前的数据库系统的用户不同,关系数据库系统的用户并不关心数据的存储结构,而是使查询能用很高级的语言来实现,从而大大提高了数据库开发人员的效率。
下面先对关系做一下简单介绍,增进读者对关系模型的了解,同时,我们给出一个SQL的例子,以便读者了解关系模型如何支持高级语言的查询。
【例1-1】关系就是表。表的各列以属性开始,属性是列的入口。表1.4是一个名为Doctor(医生)的关系,记录的是医生的信息。
表1.4 医生数据表
假设要查询李红的工资,SQL的查询语句如下:
SELECT 工资 FROM Doctor WHERE 医生姓名='李红';
1.2.2 数据库技术的产生和发展
数据库技术是应数据库管理任务的需要而产生的。数据管理是指对各种数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。人们借助计算机进行数据处理是从20世纪60年代开始的。
在应用需求的推动下,在计算机硬件、软件发展的基础上,数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。
1.人工管理阶段
在这一阶段(20世纪50年代中期以前),计算机主要用于科学计算。外部存储器只有磁带、卡片和纸带等,还没有磁盘等直接存取存储设备。软件只有汇编语言,尚无数据管理方面的软件,数据处理方式基本是批处理。这个阶段有如下特点:
① 计算机系统不提供对用户数据的管理功能。用户编制程序时,必须全面考虑好相关的数据,包括数据的定义、存储结构以及存取方法等。程序和数据是一个不可分割的整体。数据脱离了程序就无任何存在的价值,数据无独立性。
② 数据不能共享。不同的程序均有各自的数据,这些数据对不同的程序通常是不相同的,不可共享。即使不同的程序使用了相同的一组数据,这些数据也不能共享,程序中仍然需要各自加入这组数据,谁也不能省略。基于这种数据的不可共享性,必然导致程序与程序之间存在大量的重复数据,增加了数据管理的复杂性,浪费了存储空间。
③ 不单独保存数据。基于数据与程序是一个整体,数据只为本程序所使用,数据只有与相应的程序一起保存才有价值,否则就毫无用处。所以,所有程序的数据均不单独保存。
在人工管理阶段,程序与数据之间的一一对应关系可用图1.1表示。
图1.1 人工管理阶段应用程序与数据之间的对应关系
2.文件系统阶段
在这一阶段(20世纪50年代后期至60年代中期),计算机不仅用于科学计算,还用在信息管理方面。随着数据量的增加,数据的存储、检索和维护问题的解决成为紧迫的需要,数据结构和数据管理技术迅速发展起来。此时,外部存储器已有磁盘、磁鼓等直接存取的存储设备。软件领域出现了操作系统和高级软件。操作系统中的文件系统是专门管理外存的数据管理软件,文件是操作系统管理的重要资源之一。数据处理方式有批处理,也有联机实时处理。这个阶段有如下特点:
① 数据以“文件”形式可长期保存在外部存储器的磁盘上。由于计算机的应用转向信息管理,因此对文件要进行大量的查询、修改和插入等操作。
② 数据的逻辑结构与物理结构有了区别,但比较简单。程序与数据之间具有“设备独立性”,即程序只需用文件名就可与数据打交道,不必关心数据的物理位置。由操作系统的文件系统提供存取方法。文件组织已多样化,有索引文件、链接文件和直接存取文件等,但文件之间相互独立、缺乏联系。数据之间的联系要通过程序去构造。数据不再属于某个特定的程序,可以重复使用,即数据面向应用。文件结构的设计仍然是基于特定的用途。程序基于特定的物理结构和存取方法,因此程序与数据结构之间的依赖关系并未根本改变,对数据的操作以记录为单位。这是由于文件中只存储数据,不存储文件记录的结构描述信息。文件的建立、存取、查询、插入、删除、修改等所有操作,都要用程序来实现。
随着数据管理规模的扩大,数据量急剧增加,文件系统显露出一些缺陷:
① 数据冗余。由于文件之间缺乏联系,造成每个应用程序都有对应的文件,有可能同样的数据在多个文件中重复存储。
② 不一致性。这往往是由数据冗余造成的,在进行更新操作时,稍不谨慎,就可能使同样的数据在不同的文件中不一样。
③ 数据联系弱。这是由于文件之间相互独立、缺乏联系造成的。
文件系统阶段是数据管理技术发展中的一个重要阶段。在这一阶段中,得到充分发展的数据结构和算法丰富了计算机科学,为数据管理技术的进一步发展打下了基础,现在仍是计算机软件科学的重要基础。文件系统中的文件是为某一特定应用服务的,文件的逻辑结构对该应用程序来说是优化的,因此要想对现有的数据再增加一些新的应用会很困难,系统不容易扩充。一旦数据的逻辑结构改变,必须修改应用程序,修改文件结构的定义。应用程序的改变,例如程序改变不同的高级语言等,也将会引起文件的数据结构的改变。因此数据与程序之间仍缺乏独立性。可见,文件系统仍然是一个不具备弹性的无结构数据集合,即文件之间是孤立的,不能反映现实世界事物之间的内在联系。在文件系统阶段,程序与数据之间的关系如图1.2所示。
3.数据库系统阶段
现实世界是复杂的,反映现实世界的各类数据之间必然存在错综复杂的联系。为反映这种复杂的数据结构,让数据资源能为多种应用需要服务,并为多个用户所共享,同时为让用户能更方便地使用这些数据资源,在计算机科学中,逐渐形成了数据管理这一独立分支。计算机中的数据及数据的管理统一由数据库系统来完成。为此,数据管理技术进入数据库系统阶段。
数据库系统克服了文件系统的缺陷,提供了对数据更高级、更有效的管理。这个阶段的程序和数据的联系通过数据库管理系统(DBMS)来实现,如图1.3所示。
图1.2 文件系统阶段应用程序与数据之间的对应关系
图1.3 数据库系统阶段应用程序与数据之间的对应关系
概括起来,数据库系统阶段的数据管理具有以下特点:
(1)采用数据模型表示复杂的数据结构
数据模型不仅描述数据本身的特征,还要描述数据之间的联系,这种联系通过存取路径实现。通过所有存取路径表示自然的数据联系是数据库与传统文件的根本区别。这样,数据不再面向特定的某个或多个应用,而是面向整个应用系统。数据冗余明显减少,实现了数据共享。
(2)有较高的数据独立性
数据的逻辑结构与物理结构之间的差别可以很大。用户以简单的逻辑结构操作数据而无须考虑数据的物理结构。数据库的结构分成用户的局部逻辑结构、数据库的整体逻辑结构和物理结构三级。用户的数据和外存中的数据之间转换由数据库管理系统实现。
(3)数据库系统为用户提供了方便的用户接口
用户可以使用查询语言或终端命令操作数据库,也可以用程序方式操作数据库。
(4)数据库系统提供了数据控制功能
数据库系统提供了数据控制功能例如:
- 数据库的并发控制,对程序的并发操作加以控制,防止数据库被破坏,杜绝提供给用户不正确的数据。
- 数据库的恢复,在数据库被破坏或数据不可靠时,系统有能力把数据库恢复到最近某个正确状态。
- 数据完整性,保证数据库中数据始终是正确的。
- 数据安全性,保证数据的安全,防止数据的丢失、破坏。
数据库系统的目标是解决数据冗余问题,实现数据独立性,实现数据共享并解决由于数据共享而带来的数据完整性、安全性及并发控制等一系列问题。为实现这一目标,数据库的运行必须有一个软件系统来控制,这个系统软件称为数据库管理系统(DBMS)。数据库管理系统将程序员进一步解脱出来,就像当初操作系统将程序员从直接控制物理读写中解脱出来一样。程序员此时不需要再考虑数据是不是因为改动而造成不一致,也不用担心由于应用功能的扩充,而导致程序重写和数据结构重新变动。
综上所述,这三个阶段的特点及其比较如表1.5所示。
表1.5 数据管理的发展阶段
1.2.3 数据库系统的特点
与人工管理和文件系统相比,数据库系统具有如下特点:
(1)数据结构不是面向单一的应用,而是面向全组织
以医院管理为例,要想避免数据冗余和数据程序之间的依赖性,就要将医生和病人两类不同的数据之间彼此建立关系。当需要增加新的应用,比如药品管理,则只要再增加新的联系。这种思想只是数据库方法的雏形,从文件内部的记录的结构化,扩大到不同的文件记录之间建立一种联系。但是它还有局限性,因为它还是从应用的角度去看待数据,还应进一步从整个组织的数据结构考虑。假设所考虑的这个组织——医院,就还应该有医院科室信息、诊断信息、收费信息等。不同应用考虑的是整个数据集合的某个有用的子集,整个组织的数据是结构化的。这样描述数据时不仅描述数据本身,还要描述数据之间的联系。数据的结构化是数据库主要特征之一,这是数据库与文件系统的根本区别。至于这种结构化是如何实现的,则与数据库系统采用的数据模型有关。
(2)数据冗余小,易扩充
数据库从整体的观点来看待和描述数据,数据不再是面向某一应用,而是面向整个系统。这样就减小了数据的冗余,节约存储空间,缩短存取时间,避免数据之间的不相容和不一致。对数据库的应用可以很灵活,面向不同的应用,存取相应的数据库的子集。当应用需求改变或增加时,只要重新选择数据子集或者加上一部分数据,便可以满足更多更新的要求,也就是保证了系统的易扩充性。
(3)数据独立于程序
数据库提供数据的存储结构与逻辑结构之间的映像或转换功能,使得当数据的物理存储结构改变时,数据的逻辑结构可以不变,从而程序也不用改变,这就是数据与程序的物理独立性。也就是说,程序面向逻辑数据结构,不去考虑物理的数据存放形式。数据库可以保证数据的物理改变不引起逻辑结构的改变。数据库还提供了数据的总体逻辑结构与某类应用所涉及的局部逻辑结构之间的映像或转换功能。当总体的逻辑结构改变时,局部逻辑结构可以通过这种映像的转换保持不变,从而程序也不用改变,这就是数据与程序的逻辑独立性。举例来讲,在进行病人诊断信息管理时,医生等数据来自于数据的医生部分,病人信息来自于数据的病人部分,经过映像组成局部的诊断信息,由数据库维持这种映像。当总体的逻辑结构改变时,比如医生和病人数据的结构发生了变化,数据库为这种改变建立一种新的映像,就可以保证局部数据——诊断信息的逻辑结构不变,程序是面向这个局部数据的,所以程序就无须改变。
(4)统一的数据管理功能
统一的数据管理功能,包括数据的安全性控制、数据的完整性控制及并发控制数据库是多用户共享的数据资源。对数据库的使用经常是并发的。为保证数据的安全可靠和正确有效,数据库管理系统必须提供一定的功能来保证。
① 数据库的安全性是指防止非法用户的非法使用数据库而提供的保护。比如,不是医院的成员不允许使用医院管理系统,病人允许读取诊断信息但不允许修改诊断信息等。
② 数据的完整性是指数据的正确性和兼容性。数据库管理系统必须保证数据库的数据满足规定的约束条件,常见的有对数据值的约束条件。比如在医院管理系统中,数据库管理系统必须保证输入的收费值大于0,否则,系统发出警告。
③ 数据的并发控制是多用户共享数据库必须解决的问题。要说明并发操作对数据的影响,必须首先明确,数据库是保存在外存中的数据资源,而用户对数据库的操作是先读入内存操作,修改数据时,是在内存修改读入的数据复本,然后再将这个复本写回到外存的数据库中,实现物理的改变。
由于数据库的这些特点,它的出现使信息系统的研制从围绕加工数据的程序为中心转变到围绕共享的数据库来进行。便于数据的集中管理,也提高了程序设计和维护的效率。提高了数据的利用率和可靠性。当今的大型信息管理系统均是以数据库为核心的。数据库系统是计算机应用中的一个重要阵地。总之,数据库技术正是研究如何科学地组织和储存数据,如何高效地获取和处理数据。数据库技术是到目前为止发展成熟的数据管理的最新技术。