书城计算机数据库原理及Oracle应用
18254100000002

第2章 数据库系统概述

1.1 数据管理技术的发展历程

数据库是数据管理的最新技术,是计算机科学的重要分支。信息资源已成为各个部门的重要财富和资源,建立一个满足各级部门信息处理要求的信息系统成为一个企业生存和发展的重要条件。数据库的建设规模、数据库信息量的大小和使用频度已成为衡量国家信息化程度的重要标志。

本章先回顾数据管理技术的发展历程,然后介绍数据库中的主要概念、数据模型的种类和组成及数据库的体系结构,最后介绍数据库系统的几个组成部分,使读者对数据库技术的概况有所了解。

数据管理技术的发展与硬件、软件、计算机应用的范围有密切联系,数据管理大致经历了三个阶段:人工管理方式阶段、文件管理方式阶段、数据库管理方式阶段。

1.1.1 人工管理方式阶段

1.1.1.1 基本情况

20世纪50年代中期以前,计算机主要用于科学计算。硬件方面,外存储器只有卡片、纸带、磁带,没有像磁盘这样的可以随机访问、直接存取的外部存储设备。软件方面,没有专门管理数据的软件,数据由计算机或处理它的程序自行携带。数据处理方式基本是批处理。

1.1.1.2 人工管理的特点

(1)数据和程序不具有独立性

一组数据对应一组程序,这就使得程序依赖于数据,如果数据的类型、格式或者数据量、存取方法、输入输出方式等改变,程序则必须做相应的修改。

(2)数据不能共享

由于数据是面向应用程序的,在一个程序中定义的数据,无法被其他程序利用,因此程序与程序之间存在大量的重复数据。

(3)系统中没有对数据进行管理的软件,应用程序管理数据

数据管理任务包括物理结构、逻辑结构、存储结构、存取方法、输入输出方式等完全由程序设计人员自负其责,这就给应用程序设计人员增加了很大的负担。

(4)数据不保存

当时计算机主要用于科学计算,一般不需要将数据长期保存,只是在计算某一课题时将数据输入。

1.1.2 文件管理方式阶段

1.1.2.1 基本情况

20世纪50年代后期至60年代中后期,大量的数据存储、检索和维护成为紧迫的需求。数据处理方式有批处理,也有联机实时处理。程序与数据有了一定的独立性,程序与数据分开存储,有了程序文件和数据文件的区别。数据文件可以长期保存在外存储器上多次存取,如进行查询、修改、插入、删除等操作。数据的存取以记录为基本单位,并有多种文件组织形式,如顺序文件、索引文件、随机文件等。在文件系统的支持下,数据的逻辑结构与物理结构之间可以有一定的差别,逻辑结构与物理结构之间的转换由文件系统的存取方法来实现。数据与程序之间有一定的独立性,程序只需用文件名访问数据,不必关心数据的物理位置。这样,程序员可以集中精力在数据处理的算法上,而不必考虑数据存储的具体细节。

1.1.2.2 文件系统的特点

(1)数据共享性差、冗余度大

数据冗余是指不必要的重复存储,同一数据项重复出现在多个文件中。一个文件基本上对应一个应用程序,不同的应用程序有相同的数据时,也必须建立各自的文件,因此数据不能共享,产生冗余,浪费存储空间。同时由于重复存储,各自管理,造成数据的不一致性,给数据的修改和维护带来困难。

(2)数据独立性差

文件系统中的数据文件是为某一特定的应用而设计的,数据与程序相互依赖,如果改变数据的逻辑结构或文件的组织方法,必须修改相应的应用程序,反之也是。系统不容易扩充。文件系统仍然是一个不具有弹性的无结构的数据集合,文件之间是孤立的,不能反映现实世界之间的内在联系。

(3)由文件系统管理数据

由专门的软件即文件系统进行数据管理,文件系统把数据组织成相互独立的数据文件,利用“按文件名访问,按记录进行存取”的管理技术,可以对文件进行修改、插入、删除操作。文件系统实现记录内的结构性,但整体无结构。程序与数据之间由文件系统提供存取方法的转换,使应用程序与数据之间有一定的独立性。

(4)数据可以长期保存

由于计算机大量用于数据处理,数据需要长期保存在外部存储器上反复进行查询、修改、插入、删除等操作。

在文件系统阶段。

1.1.3 数据库管理方式阶段

1.1.3.1 基本情况

从20世纪60年代后期开始,需要计算机管理的数据量急剧增长,并且对数据共享的需求日益增强。这时硬件已有大容量的硬盘,硬盘价格下降,软件价格上升。在处理方式上联机实时处理要求更多,并提出分布式处理。为了解决数据的独立性问题,实现数据的统一管理,达到数据共享的目的,出现了数据库技术。

数据管理进入数据库管理阶段的标志是60年代末发生的三件大事:1968年,美国IBM公司推出层次模型的IMS(Information Management System)系统。1969年10月,美国数据系统语言协会(Conference On Data System Language,CODASYL)的数据库任务组(DataBase Task Group,DBTG)发表关于网状模型的DBTG报告,该报告建立了数据库技术的很多概念、方法和技术;1970年,美国IBM公司的E.F.Codd连续发表论文,提出关系模型,开创了数据库关系方法和关系理论的研究,奠定了关系数据库的理论基础。

从20世纪70年代以来,数据库技术得到迅速发展,开发了许多有效的产品并投入运行。数据库系统克服了文件系统的缺陷,提供了对数据更高级更有效的管理。

数据库是相关数据的集合。它不仅包括数据本身,而且包括关于数据之间的联系。为数据库的建立、使用和维护而配置的专门软件称为数据库管理系统(Database Management System,DBMS),它是在操作系统支持下运行的。目前较为流行的数据库管理系统包括:Oracle、Informix、SQL Server及微机上DBMS(dBASE、FoxBASE、FoxPro等)。数据库已成为各类信息系统的核心基础。

1.1.3.2 数据库管理的特点

(1)实现数据共享,减少数据冗余和不一致

数据库中存放通用化的综合数据,数据不再面向某一应用,而是面向整个系统,某一应用通常仅使用总体数据的子集。数据可以被多个用户、多个应用共享使用,减少数据的冗余,节约存储空间,可以避免由于数据冗余而造成不同应用对这些数据的修改不同而产生的数据不一致性。

在没有使用数据库技术时,由于数据不共享,给实际应用带来不便。如:火车售票系统,当没有使用数据库技术而数据不能共享时,会出现有的售票处某条线路车票已经售完,而另一售票处还余下很多同一线路的车票未售出的情况。若使用数据库完成订票的工作时,数据可以共享,顾客就可以在任意的售票处买到所需线路的车票。

(2)数据结构化并统一管理

数据库中的数据是有结构的,它是用某种数据模型表示出来的,这种结构既反映文件内数据之间的联系,也反映文件之间的联系。

在文件系统中,相互独立的文件的记录内部才是有结构的。传统文件的最简单形式是等长同格式的记录的集合。

前7项是任何员工必须所具有的而且是等长的,而后两项数据量的多少变化较大。建立员工档案文件时,记录的长度必须等于数据量最大的记录长度。这样对数据量较少的员工记录造成空间的浪费。因此可以用变长记录,即用主记录与详细记录相结合的形式建立文件。

这种结构可以节省存储空间,提高灵活性。但这种灵活性是对于一个应用程序而言,不是针对整个系统的,对别的应用来说,这种结构可能不合适,所以这样建立的文件有局限性。

在数据库系统中不仅要考虑数据结构是否适合某个应用程序,还应考虑是否适合整个组织。例如:员工管理系统不仅要考虑员工登记管理,还要考虑员工业绩管理、员工工资管理、员工培训管理等,应该系统地考虑数据的组织结构。在描述数据时不仅要描述数据本身,还要描述数据之间的联系。

文件系统尽管其记录内部已有了某些结构,但记录之间没有联系,而实现整体数据的结构化正是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。

(3)具有较高的数据独立性

数据独立性包括逻辑独立性和物理独立性。物理独立性指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的,即应用程序处理的只是数据的逻辑结构,当物理存储改变时,应用程序不用修改。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即数据的逻辑结构改变时,用户程序不用修改。数据独立性是由DBMS的二级映像功能来保证的。

在数据库系统中,DBMS提供映像功能,确保应用程序对数据结构和存取方法有较高的独立性。数据的物理存储结构与用户看到的逻辑结构可以有很大的差别。用户只以简单的逻辑结构来操作数据,无需考虑数据在存储器上的物理位置与结构。

(4)有统一的数据管理和控制功能

数据库作为用户与应用程序的共享资源,对数据的存取往往是并发的,即多个用户同时使用同一个数据库。数据库管理系统必须提供并发控制功能、数据的安全性控制功能、数据完整性控制功能和数据库恢复功能。

数据库安全性控制:是指保护数据以防止不合法的使用造成的数据泄密和数据破坏,每个用户只能按规定对某些数据以某种方式进行使用和处理。例如划分不同的用户权限,有的用户只能查询而不能修改数据,而有的用户却有修改权等。

数据完整性控制:是指数据的正确性、有效性和相容性,将数据控制在有效的范围内,并保证数据之间满足一定的关系。

并发控制:是指当多个用户进程同时存取、修改数据库数据时,必须有并发控制机制加以协调,以免相互干扰破坏数据完整性。

数据库恢复功能:是指在硬件故障、软件故障、操作员失误及故意破坏而造成数据库部分数据或全部数据丢失时,将数据库从错误状态恢复到某一已知的正确状态的功能。

综上所述,数据库是长期存储在计算机内有组织的大量共享数据的集合。它可以供各种用户共享,具有最小冗余度和较高数据独立性。DBMS在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用时进行并发控制,在发生故障后对系统进行恢复。

1.2 数据库与数据库管理系统的基本概念

1.2.1 数据库基本概念

1.2.1.1 数据与信息

数据(Data)是数据库中存储的基本对象,是指用符号记录下来的可以区别的信息。在计算机中可表示数据的种类很多,文字、图形、图像、声音等都是数据。为了了解世界,交流信息,人们在计算机中需要描述、存储和处理这些表现形式和内容都很复杂的数据。可以对数据做如下定义:描述事物的符号记录称为数据。描写事物的符号可以是数字,也可以是文字、图形、图像、声音等,即有多种表现形式,但它们都是经过数字化后存入计算机的。

信息(Information)是关于现实世界中事物的存在方式或运动形态的反映,是人们进行各种活动所需的知识。

数据是信息的载体,信息是被人们消化的数据。

1.2.1.2 数据处理

数据处理指将数据转换成信息的过程。广义地讲,数据处理包括对数据的收集、存储、传播、检索、分类、加工或计算、打印各类报表或输出各种需要的图形等一系列活动;狭义地讲,数据处理是指对所输入的数据进行加工整理。

1.2.1.3 数据管理

在数据处理的一系列活动中,数据收集、整理、组织、存储、维护、传播、检索、分类等操作是基本环节,这些基本环节统称为数据管理。

数据与信息之间的关系可以表示为:信息数据+数据处理。

1.2.1.4 数据库

数据库(Database,DB),可以直观地理解为存放数据的仓库,只不过这个仓库是在计算机的大容量存储器上,如硬盘就是一类最常见计算机大容量存储设备。数据必须按一定的格式存放,因为它不仅需要存放,还要便于查找。所以数据库是长期存储在计算机内有组织、可共享的数据集合。数据库中的数据具有较小的数据冗余,可供多个用户共享,具有较高的数据独立性和扩展性。

图书馆可视作一个数据库,书架对应表格,书籍对应原始数据,书名或作者名的目录卡片对应索引。

人们总是尽可能地收集各种各样的数据,然后对它们进行加工,目的是要从这些数据中得到有用的信息。在社会迅速发展的今天,人们接触的事物越来越多,反映这些事物的数据量也急剧增加,过去人们手工管理和处理数据,现在借助计算机存储和管理复杂的大量的数据,这样就可以方便而充分地利用这些宝贵的数据资源,数据库技术正是由于这一需求驱动而发展起来的一种计算机软件。

1.2.2 数据库管理系统

数据库管理系统(DBMS)作为数据库系统中管理数据的软件系统,是数据库系统的核心组成部分。对数据库的一切操作,包括定义、查询、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。

DBMS的主要目标是使数据成为方便用户使用的资源,易于为各类用户所共享,并增加数据的安全性、完整性和可用性。

DBMS具有下列功能。

1.2.2.1 数据定义功能

数据定义功能提供数据定义语言(Data Definition Language,DDL)或操作命令,用于对各级数据模式进行精确的描述。用户通过它可以方便地对数据库中的相关对象,如对数据库基本表、视图和索引等进行定义。

1.2.2.2 数据操纵功能

数据操纵语言(Data Manipulation Language,DML),实现对数据库的基本操作,如对数据库中数据的查询、插入、删除和修改。

数据操纵语言可以分为两类:一类是DML可以独立交互式使用,不依赖于任何程序设计语言,称为自含或自主型语言。另一类是宿主型DML,嵌入到宿主语言中使用。如嵌入到C程序设计语言中,在使用高级语言编写的应用程序中,需要调用数据库中的数据时,则要用宿主型DML语句来操纵数据。

1.2.2.3 数据库运行控制功能

数据库运行控制功能是DBMS的核心部分,DBMS必须提供并发控制功能、安全性控制功能、完整性控制功能、数据库的恢复功能、数据库的内部维护功能(如索引,数据字典的自动维护)等数据控制功能。

所有数据库的操作都要在这些控制功能程序的统一管理下进行,以保证数据安全性、完整性和多个用户对数据库的并发操作。

1.2.2.4 数据库的建立和维护功能

数据库的建立和维护功能包括:数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重新组织功能和性能监测、分析功能等。这些功能通常是由一些实用程序完成的,包括数据装载程序、备份程序、性能调整程序、文件重组程序等,它是数据库管理系统的一个重要组成部分。

1.2.2.5 数据库的存储管理功能

数据库的存储管理功能提供了数据库中数据和应用程序的一个界面,与磁盘中数据打交道的是操作系统的文件子系统。DBMS存储管理功能是把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。

1.2.2.6 数据字典

数据字典(Data Dictionary,DD)是存放数据库各级模式结构的定义,即对数据库结构的描述。这些数据是数据库系统中有关结构的定义信息,称为元数据。DD提供了对数据库数据描述的集中管理手段,对数据库的使用和操作都通过数据字典来进行。

在大型系统中,DD也可以单独成为一个系统。

1.2.2.7 数据通信功能

数据通信功能包括与操作系统的联机处理、分时处理和远程作业传输的相应接口等,这一功能对分布式数据库系统尤为重要。

1.2.3 数据库语言

数据库语言一般有两种:一种是交互式命令语言,它语法简明,可以独立使用;另一种是嵌入到某种程序设计语言中,如C,Fortran,Cobol,Pascal等,称为宿主型语言。DBMS对于交互式命令语言通常采用解释执行方式;对于宿主型语言提供以下两种方法。

(1)预编译方法

DBMS提供预处理程序对源程序进行扫描,识别数据库语言的语句并把它们转换成为主语言调用语句,以便主语言的编译程序能接受和执行它们。

(2)修改并扩充主语言编译程序方法(也称增强编译方法)

未来的数据库语言应该是将数据库语言与通用的程序设计语言相结合,除能对传统的数据库功能提供透明访问外,也应能支持面向对象的程序设计方法。

1.3 数据模型

人们经常以模型来刻画现实世界中的实际事物,地图、沙盘、航模都是具体的实物模型,它们会使人们联想到真实生活中的事物。模型是现实世界特征的模拟和抽象。数据模型(Data Model)就是这一类模型,它是现实世界数据特征的抽象,是表示实体类型及实体间联系的模型。

1.3.1 数据模型的概念和种类

数据库不仅要反映数据本身,而且要反映数据之间的联系,也就是事物之间的联系。在数据库中是用数据模型进行抽象、表示和处理现实世界中的数据和信息。现有的数据库系统都是基于某种数据模型的,因此了解数据模型的基本概念是学习数据库的基础。

在数据处理中,数据描述将涉及不同的范畴。从事务的特性到计算机中的数据表示,经历了三个领域:现实世界、信息世界和机器世界。

存在于人们头脑之外的客观世界,称为现实世界。信息世界是现实世界在人们头脑中的反映,人们把它用文字和符号记载下来。信息世界的信息以数据形式存储在机器世界中。从现实世界到机器世界的过程。首先将现实世界抽象为信息世界,即将现实世界中的客观对象抽象为某一种信息结构,这种信息结构并不依赖于具体的计算机系统,也不是某一种DBMS支持的数据模型,而是概念级模型。再将信息世界转换成机器世界,即把概念模型转换为计算机上某一DBMS支持的数据模型。

数据模型应满足三方面要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。根据数据模型应用的目的不同,可以将数据模型划分为两类:概念数据模型、结构数据模型。

1.3.2 概念数据模型

概念数据模型是按用户的观点对数据和信息建模,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构。这类数据模型主要用于数据库设计,是对现实世界的第一层抽象。

1.3.2.1 信息世界的几个概念

信息世界是现实世界在人们头脑中的反映,人们把它用文字和符号记载下来。信息世界中用到下列几个概念。

(1)实体

客观存在可以相互区别的事物称为实体。如:一个学生、一辆汽车等都是实体。

(2)实体集

性质相同的同类实体的集合称为实体集。如:所有学生是实体集。

(3)属性

实体有很多特性,每一个特性称为属性。每一个属性都有一个值域,其值可以是整型数、浮点数、字符串等。如:学生实体有学号、姓名、性别、年龄等属性,其中学号和年龄的值域为整型数,而姓名和性别的值域为字符串。

(4)实体标识符

能唯一标识每个实体的属性或属性集称为实体标识符或键。如:学生实体中的学号为实体标识符。

1.3.2.2 机器世界的几个概念

信息世界的信息以数据形式存储在机器世界中。机器世界中用到下列几个概念。

(1)字段

标记实体属性的命名单位称为字段或数据项,一个记录由多个字段组成。字段对应于信息世界的属性。字段的命名往往和属性名相同。如:学生记录由学号、姓名、性别、年龄等字段组成。

(2)记录

字段的有序集合称为记录,一个记录描述一个实体。记录对应于信息世界的实体。如:一个学生记录由学号、姓名、性别、年龄等字段组成。

(3)文件

同一类记录的汇集称为文件,文件对应于信息世界的实体集。

(4)关键码

能唯一地标识文件中每个记录的字段或字段集称为记录的关键码,关键码对应于信息世界的实体标识符。如:学生记录中的学号是关键码。

1.3.2.3 数据联系的描述

现实世界中,事物是相互联系的。这种联系必然要在信息世界中有所反映,即实体间的联系。实体的联系有两类:一类是同一实体集中各个实体之间的联系;另一类是不同实体集的各个实体之间的联系。不同实体集的两个实体间的联系有以下三类。

(1)一对一联系(1:1)

若对于实体集A中的每一个值,实体集B中至多有一个值与之联系,反之亦同,则称实体集A与实体集B之间是一对一的联系。

如:学校是一个实体集,校长也是一个实体集。每个学校只有一个校长,而每个校长只能在一个学校任职,则学校和校长两个实体集之间是一对一的联系。

(2)一对多联系(1:n)

若对于实体集A中的每个值,实体集B中可以有N个值(n≥1)与之联系,反之,若实体集B中的每个值,实体集A中至多有一个值与之联系,则称实体集A与实体集B之间是一对多的联系。

如:学校是一个实体集,学生是一个实体集,每个学校可以接收多个学生,而一个学生只能在一个学校(一般而言)就读,则学校和学生两个实体集之间是一对多的联系。

(3)多对多联系(m:n)

若对于实体集A中的每个值,实体集B中可以有n个值(n≥1)与之联系,反之,若实体集B中的每个值,实体集A中可以有m个值与之联系,则称实体集A与实体集B之间是多对多的联系。

如:学生与课程之间的联系就是一种多对多的联系。即一个学生可以选修多门课程,一门课程也可以被多个学生选修。但是,无论关系数据模型或非关系数据模型均不支持多对多联系,只支持一对一和一对多联系,但多对多联系可以转化为两个一对多联系。

1.3.2.4 概念数据模型的E-R图表示

概念模型是对信息世界建模,所以概念模型应该能够方便、准确地表示实体及实体间的联系。E-R(Entity-Relationship)模型是P.P.Chen于1976年提出的,主要从现实世界中抽象出实体及实体间的联系,用E-R图表示的数据模型。

E-R图是直观表示概念模型的工具,在E-R图中有四个基本成分:

矩形框:表示实体类型。

菱形框:表示实体间的联系。

椭圆形框:表示实体类型和联系类型的属性。关键码的属性,在属性名下划一横线。

直线:联系类型与其涉及的实体类型之间用直线连接,并在直线端部标上联系的种类(1:1,1:n,m:n)。

例如:为学生和课程管理设计一个E-R模型,主要包括学生的档案信息、课程信息、教师档案信息、学生选课信息的管理。学生档案信息中学号作为关键码,课程信息中课程号作为关键码,教师档案信息中教师号为关键码。其中一个学生可以选修多门课程,每一门课程也可以有多个学生选修,一个教师可以讲授多门课程,当每一门课程只能有一个教师讲。

首先确定实体类型。本问题有三个实体类型:学生、课程、教师。

然后确定联系类型。本问题有两个联系,一个是学生与课程之间的多对多(m:n)的选修关系,另一个是教师与课程之间的一对多(1:n)的任课关系。

再把实体类型和联系类型组合成E-R图。

接着确定实体类型和联系类型的属性。实体类型学生有属性(学号、姓名、性别、年龄、籍贯),课程有属性(课程号、课程名、学分),教师有属性(教师号、姓名、职称、年龄)。联系类型选课有属性(学号、课程号、成绩),任课有属性(教师号、课程号,上课地点,教室)。

最后确定实体类型的关键码,在属性名下划一横线。

E-R模型接近人的思维,容易理解,并与计算机无关。因此,E-R模型已经成为软件工程的一个重要设计方法。

1.3.3 结构数据模型

结构数据模型是直接面向数据库的逻辑结构,是现实世界的第二层抽象,这类模型涉及计算机系统和数据库管理系统。结构数据模型又可划分成层次数据模型、网状数据模型、关系数据模型、面向对象数据模型。现在用得最多的是关系数据模型,这类数据模型主要用于DBMS的实现。

1.3.3.1 数据模型的组成要素

数据模型可严格定义成一组概念的集合,这些概念精确地描述系统的静态特性、动态特性和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。

(1)数据结构

数据结构是所研究的对象类型的集合,这些对象是数据库的组成成分,一般可以分为两类:一类是与数据类型、内容、性质有关的对象,如网状模型中的数据项、记录,关系模型中的属性、关系等实体类型;另一类是与数据之间联系有关的对象,即实体间的联系。

数据结构是指对实体类型和实体间类型的表达和实现。数据结构是对系统静态性的描述。

(2)数据操作

数据操作是指对数据模型中各种对象所允许执行的所有操作的集合,包括操作及有关的操作规则。数据库中主要有检索和更新(包括插入、删除、修改)两大类操作。数据模型要定义这些操作的确切含义、操作符号、操作规则(如优先级别)及实现操作的语言。

数据操作是指对数据库的检索和更新(包括插入、删除、修改)两类操作的实现。数据操作是对系统动态特性的描述。

(3)数据的完整性约束条件

数据的完整性约束条件是完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的约束和依存规则,这些规则用来限定基于数据模型的数据库的状态及状态的变化,以保证数据库中数据的正确、有效和相容。

数据完整性约束给出了数据及其联系应具有的制约和依赖规则。

1.3.3.2 层次数据模型

用树状结构表示实体类型及实体间联系的数据模型称为层次模型。层次模型必须满足以下三个条件。

有且仅有一个结点无双亲,这个结点称为根结点,树中的结点是记录类型。

其他结点有且只有一个双亲。

上一层记录类型和下一层记录类型间联系是1:n联系。

在层次模型中,同一双亲的子结点称为兄弟结点(Twin或Sibling),没有子女结点的结点称为叶子结点。其中R1为根结点;R2和R3为兄弟结点,是R1的子女结点;R4和R5是兄弟结点,是R2的子女结点;R3和R4和R5为叶子结点。

历史上最典型层次模型的数据库管理系统是1986年由IBM公司推出的IMS。

层次模型对具有一对多层次联系的部门描述得非常自然、直观、容易理解,如现实世界中的家庭和组织机构关系等适合用层次模型表示。

层次模型的优点是查询数据很简便,无须设计特别的算法,因为查询路径是唯一的,查询效率高;缺点是只能表示1:N联系,无法描述事物间复杂的联系。同时由于树状结构层次顺序的严格和复杂,引起数据的查询和更新操作复杂。

1.3.3.3 网状数据模型

用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。

有向图中的结点是记录类型,有向边表示从箭尾一端的记录类型到箭头一端的记录类型间的1:n类型。将箭尾一端称为双亲结点,箭头一端称为子女结点。

允许有一个以上的结点无双亲结点。

一个结点可以有多于一个的双亲结点,也可以有多于一个的子女结点。

网状模型的典型代表是1969年DBTG报告提出的数据模型。

网状数据模型的优点是查询效率高,并能实现m:n联系(每个m:n联系可以分解成两个1:n联系)。相比于层次模型,网状模型适合于描述较为复杂的现实世界。缺点是由于数据结构太复杂,不利于用户掌握。同时在有向图中到达一个结点的路径有多条,因此应用开发者必须选择相对较优的路径来进行搜索以提高查询效率,这对应用开发人员的要求是较高的。

1.3.3.4 关系数据模型

关系模型(Relational Model)是数据库中所讨论的模型中最重要的模型。关系数据模型最早是在1970年美国IBM公司的研究员E.F.Codd提出的,他开创了数据库关系方法和关系数据理论的研究,为数据库技术奠定了理论基础。自20世纪80年代以来,计算机厂商推出的数据库管理系统的产品几乎都是支持关系模型的。

关系模型的主要特征是用二维表格结构表达实体集,用外键表示实体间的联系。在用户看来,关系模型中数据的逻辑结构(即数据结构)就是一张二维表。

下面以学生登记的基本信息表为例,介绍关系模型中的一些基本概念和过程。

1.关系模型的数据结构

2.关系模型的基本术语

关系模型:用二维表结构来表示实体及实体间联系的模型称为关系模型。

属性和值域:在二维表中的列(字段,数据项)称为属性(Attribute);列值称为属性值;属性值的取值范围称为值域(Domain)。

元组(Tuple)与关系:关系在二维表中的行(记录的值),称为元组;元组的集合称为关系;关系是随时间不断变化的,因为数据库中数据在不断更新。

主关键字(Primary Key)或主键:一个关系的某个属性或属性组合可以唯一地表示一个元组,在属性组合中去掉一个属性就不能唯一表示一个元组,则该属性或属性组合称为该关系的主关键字或主键。如在学生登记关系中,学号可以作为该关系的主关键字,但姓名不能作为主关键字,因为可能有相同名字的学生。

非主属性(Non Primary Attribute)或非码属性:关系中不组成主键的属性均为非主属性或非码属性。

外部关键字(Foreign Key)或外键:当关系中的某个属性或属性组合虽然不是该关系的关键字或只是关键字的一部分,但却是另一个关系的关键字,称该属性或属性组合为这个关系的外部关键字或外键。

3.关系数据模型的优缺点

关系数据模型的优点是有严格的数学基础,并且概念单一,所有实体和实体间的联系都用二维表格表示,具有更高的数据独立性和安全保密性。缺点是查询效率不高。

1.3.3.5 面向对象的数据模型

目前,关系数据库的使用已相当普遍。但是,现实世界中仍然存在许多含有复杂数据结构的应用领域,例如:图形数据等,关系模型在这方面的处理能力就显得力不从心。因此,人们需要更高级的数据库技术来表达这类信息。面向对象的概念最早出现在程序设计中,随后渗透到计算机领域的各个分支。面向对象的数据库是面向对象概念与数据库技术相结合的产物。

面向对象模型(Object Oriented Model)中最基本的概念是对象和类。

(1)对象(object)

对象是现实世界中实体的模型化,与记录的概念相仿,但比记录复杂。每一个对象有一个唯一的标识符,把状态和行为封装在一起,其中,对象的状态是该对象属性值的集合,对象的行为是在对象状态上操作的方法集。

(2)类(class)

将属性集和方法集相同的所有对象组合在一起,可以构成一个类。类的属性值域可以是基本数据类型,也可以是记录类型或集合类型。即类可以有嵌套结构。

面向对象的数据模型能完整地描述现实世界的数据结构,具有丰富的表达能力,但模型相对比较复杂,涉及的面较广,因此面向对象的数据库没有关系数据库普及。

1.4 数据库的体系结构

尽管数据库使用的数据库语言各异,操作系统不同,采用的结构数据模型相差甚大,但是绝大多数数据库系统从数据库管理系统的角度看都体现三级模式的结构特征。这是数据库管理系统内部的系统结构。

从数据库最终用户的角度看,数据库系统的结构又可以分为集中式结构、分布式结构、并行结构等,这是数据库系统外部的体系结构。

1.4.1 数据库系统的三级模式结构

1975年ANSI/X3/SPARC报告中提出了数据库的三级模式结构。数据库的三级模式结构由外模式、模式和内模式组成。

(1)外模式

外模式又称子模式或用户模式,它是模式的子集,是数据的局部逻辑结构,也是数据库用户看到的数据视图,是与某一应用有关的数据的逻辑表示。对应不同的应用,一个数据库有多个外模式。每个用户只能看到其外模式中的数据,不能看到其他数据,所以外模式可以保证数据的安全性。

DBMS提供了定义外模式的描述语言(外模式DDL语句)。

(2)模式

模式又称逻辑模式或概念模式,是数据库中全体数据的全局逻辑结构和特征描述,也是所有用户的公共数据视图。它与硬件环境、应用程序、开发工具等无关,一个数据库只有一个模式。

DBMS提供了定义模式的描述语言(模式DDL语句)。

(3)内模式

内模式又称存储模式,它是数据在数据库中内部表示,即数据的物理结构和存储方式的描述。一个数据库只有一个内模式。

DBMS提供了定义内模式的描述语言(内模式DDL语句)。

1.4.2 数据库的二级映像功能

数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使得用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储。为了能够实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式-模式映像、模式-内模式映像。这两层映像保证了数据库系统的逻辑独立性和物理独立性。

1.外模式-模式映像

模式描述了数据的全局逻辑结构,外模式描述了数据的局部逻辑结构,一个模式对应多个外模式。每一个外模式对应一个外模式-模式映像,外模式-模式映像定义了外模式与模式之间的对应关系。

外模式-模式映像定义在外模式的描述中。

2.模式-内模式映像

内模式描述的是数据的物理结构和存储方式,数据库中只有一个模式和一个内模式,所以模式-内模式映像也是唯一的,它定义了全局逻辑结构与存储结构之间的对应关系。

模式-内模式映像定义在模式的描述中。

1.4.3 两级数据独立性

数据独立性指应用程序和数据之间相互独立,不受影响。数据独立性又分逻辑独立性和物理独立性两级。

1.逻辑独立性

逻辑独立性是通过外模式-模式映像来实现的。外模式-模式映像定义了数据的全局逻辑结构和局部逻辑结构之间的对应关系。

当数据库的模式发生改变时(如:增加新关系、新属性、改变属性的数据类型等数据的全局逻辑结构发生变化),只需要改变各个外模式-模式的映像,可以使外模式保持不变。因为应用程序都是根据外模式编写的,外模式保持不变,则应用程序保持不变,从而保证数据和应用程序的逻辑独立性。

2.物理独立性

物理独立性是通过模式-内模式映像来实现的。模式-内模式映像定义了数据的全局逻辑结构和数据的存储结构之间的对应关系。

当数据库的存储结构发生了改变(如:存储数据库的硬件设备发生变化或存储方法变化时,引起内模式的变化),只需要修改模式-内模式映像,可以使模式保持不变。由于外模式是模式的子集,模式保持不变,外模式也保持不变,则根据外模式编写的应用程序也保持不变,因此应用程序可以不必修改,从而保证数据和应用程序的物理独立性。

数据的独立性是数据库系统的最基本的特征之一,采用数据库技术使得应用程序的维护工作量大大减轻,保证了应用程序的稳定性。

1.4.4 数据库操作过程

为了体现数据库三级模式的作用,现以一个应用程序从数据库中读取一个数据记录为例,说明用户访问数据时DBMS的操作过程,同时也具体反映数据库各部分的作用及它们之间的相互关系。

其中:

“1”代表应用程序A向DBMS发出读取数据的请求,同时给出记录名称和要读取的记录的关键字值;

“2”代表DBMS接到请求之后,利用应用程序A所用的外模式来分析这一请求;

“3”代表DBMS调用模式,进一步分析请求,根据外模式和模式映像,转换相应的定义,决定应读入哪些模式记录;

“4”代表DBMS通过内模式,将数据的逻辑记录转换为实际的物理记录;

“5”代表DBMS向操作系统发出读所需物理记录的请求;

“6”代表操作系统对实际的物理存储设备启动读操作;

“7”代表读出的记录从保存数据的物理设备送到系统缓冲区;

“8”代表DBMS根据外模式和模式的规定,将记录转换为应用程序所需的形式;

“9”代表DBMS把数据从系统缓冲区传送到应用程序A的工作区;

“10”代表DBMS向应用程序A发出请求执行的信息。

以上给出的应用程序A读取数据库中数据的一般步骤和过程,并体现了三级模式的作用。不同的DBMS其操作细节可能存在差异,但其基本过程会大体一致。至于其他的数据操作,如写入数据、修改数据、删除数据等,其步骤会有所变化,但总体上是十分相似的。

1.5 数据库系统

数据库系统(DataBase System,DBS)通常是指具有管理和控制数据库功能的计算机应用系统。DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即它是采用了数据库技术的计算机系统。因此,DBS包括数据库、硬件、软件和各类人员。

1.5.1 硬件

硬件是整个数据库系统的基础,包括中央处理器、内存、外存、输入输出设备、数据通道等硬件设备。由于一般数据库系统数据量很大,加之DBMS丰富的功能使得自身的体积就很大,因此整个数据库系统对硬件资源提出了较高的要求。这些要求如下:

有足够大的内存以存放操作系统、DBMS的核心模块、数据缓冲区和应用程序。

有足够大的直接存取设备存放数据(如磁盘),有足够的磁带或其他存储设备来进行数据备份。

要求计算机有较高的数据传输能力,以提高数据传输率。

1.5.2 软件

软件包括DBMS和操作系统、宿主语言、应用开发软件等相关的支持软件。

DBMS是数据库系统的核心软件,它实现数据库的建立、使用和维护,需要在操作系统支持下才能工作。

通常DBMS运行时都是基于某一操作系统,并通过操作系统来实现对数据的存取。

一般来讲,数据库管理系统的数据处理能力较弱,所以需要提供与数据库接口的高级语言及其编译程序,以便开发应用程序。这种高级语言称为数据库的宿主语言。

以DBMS为核心的应用开发工具。应用开发工具是系统为应用开发人员最终用户提供的高效率、多功能的应用生成器,第四代语言等各种软件工具,如报表生成系统、表格软件、图形系统等。它们为数据库系统的开发和应用提供了良好的环境和有力的支持。当前开发工具已成为数据库软件的有机组成部分。

为特定应用开发的数据库应用软件。数据库软件为数据的定义、存储、查询和修改提供支持,而数据库应用软件是对数据库中的数据进行加工和处理的软件,它面向特定应用,如基于数据库的各种管理软件、管理信息系统、决策支持系统和办公自动化等都属于数据库应用软件。

1.5.3 数据库

数据库是与某个特定组织各项应用有关的全部数据的集合。数据库通常由两部分组成:一部分是应用数据的集合,另一部分是关于各级数据结构的描述信息的集合。

数据是数据库基本组成内容,是对客观世界所存在的事物的一种表征,也是数据库用户操作的对象。数据是数据库系统,也是企业或组织的真正财富,数据应按照需求进行采集并有结构地存入数据库。由于数据类型多样性,数据的采集方式和存储方式也会有所不同。数据作为一种资源是数据库系统最稳定的部分,即硬件可能更新,甚至软件也可以更换,但只要企业或组织的性质不改变,数据将是可以长期使用的财富。

1.5.4 人员

参与分析、设计、管理、维护和使用数据库中数据的人员都是数据库系统的组成部分。他们都在数据库系统的开发、维护和应用中起到重要的作用。分析、设计、管理和使用数据库系统的人员主要是:数据库管理员(DataBase Adminitrator,DBA),系统分析员,应用程序员和最终用户。下面介绍他们各自的职责,并着重介绍数据库管理员的任务和职责。

1.5.4.1 数据库管理员(DBA)

数据库是整个企业或者组织的数据资源,因此企业或组织设立了专门的数据资源管理机构来管理数据库,DBA则是这个机构的一组人员,负责全面地管理和控制数据库系统。

安装和升级数据库服务器(如Oracle、Microsoft SQL Server),以及应用程序工具。

决定数据库中的数据内容和结构,即概念模式的定义:数据库中要存放哪些数据,是由系统需求来决定的。DBA应该参加或了解数据库设计的全过程,并与用户、应用程序员、系统分析员密切合作共同协商,搞好数据库设计。

决定数据库的存储结构和存储策略,即内模式的定义:DBA要综合各用户的应用要求,和数据库设计人员共同决定数据库的存储结构和存储策略以求获得较高的存储效率和存储空间利用率。

定义数据的安全性要求和完整性约束条件,即说明完整性约束条件和权限控制,负责确定各个用户对数据库的存取权限、数据的保密级别和完整性约束条件。

监控数据库的使用和运行,即确定备份与恢复的策略:DBA负责监视数据库系统的运行情况,及时处理运行过程中出现的问题。当系统发生某些故障时,数据库中的数据会因此遭到不同程度的破坏,必须在最短的时间内将数据库恢复到某种一致状态,并尽可能不影响或少影响计算机系统其他部分的正常运行。为此DBA要定义和实施适当的备份和恢复策略。

数据库的性能监视和优化,即性能调优。DBA负责在系统运行期间监视系统的存储空间利用率、处理率等性能指标,对运行情况进行记录、统计分析,根据实际应用环境,不断改进数据库设计。不少数据库产品都提供了对数据库运行情况进行监视和优化的实用程序,可以方便地使用这些实用程序来完成这些工作。

数据库的改进和重组,即概念模式的重组:在数据库运行过程中,大量数据不断插入、删除、修改,随着运行时间的推移,在一定程度上就会影响系统的性能。因此,要定期对数据库进行重新组织,以提高系统的性能。当用户的需求增加和改变时,还要对数据库进行较大改造,包括修改部分设计,修改数据库结构,实现对数据库中数据的重新组织和加工。

维护介质上的归档数据或者备份数据,备份和恢复数据库。

联系数据库系统的生产厂商,跟踪技术信息。

1.5.4.2 系统分析员

系统分析员是数据库系统建设期主要的参与人员,负责应用系统的需求分析和规范说明。他们要和用户相结合,确定系统的基本功能、数据库结构和应用程序的设计,以及硬软件配置,并组织整个系统的开发。所以系统分析员是一类具有领域业务知识和计算机知识的专家,他在很大程度上影响数据库系统的质量和成败。

1.5.4.3 应用程序员

应用程序员根据系统的功能需求负责设计和编写应用系统的程序模块,并参与对程序模块的测试和安装。

1.5.4.4 用户

这里的用户指最终用户(End User)。数据库系统的用户是有不同层次的,不同层次的用户其需求的信息及获得信息的方式也是不同的。一般可将用户分为操作层、管理层和专家层,他们通过应用系统的用户接口使用数据库。常用的接口方式有菜单驱动、表格操作、图形显示、随机查询和对数据库中的数据进行统计、分析。

操作层的用户通过应用程序的设计界面查询、修改数据库数据,这类用户经常使用数据库系统,是一般的操作员。

管理层的用户不常访问数据库,但每次访问数据库时往往需要不同的数据库信息,便于做决策。这类用户通常是企业的高中级管理人员。

专家层的用户熟悉数据库管理系统的各种功能,能够直接使用数据库语言访问数据库,可以自己编制应用程序。这类用户一般是企业的科技工作者。

小结

本章首先回顾数据库技术发展的三个阶段,介绍数据库系统的特点。详细地介绍数据库技术的基本概念,以及数据库管理系统的概念和基本功能。

数据模型是对现实世界进行抽象的工具。本章介绍概念数据模型和结构数据模型,以及如何用E-R图来描述概念模型,同时介绍组成数据模型的三个要素(数据结构、数据操作、完整性约束)及四种主要的结构数据模型(层次模型、网状模型、关系模型、面向对象的数据模型)。应该深刻理解关系模型和实体间的多种联系。

数据库体系结构分为三级:内模式、模式和外模式,这是对数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不关心数据在计算机中的存储,减轻了用户使用系统的负担。由于三级结构间存在着两级映像,因此保证了数据库系统具有较高的逻辑独立性和物理独立性。

最后介绍数据库系统的组成,读者应该了解数据库系统不仅是一个包含数据库和数据库管理系统的计算机系统,而是一个人-机系统,人的作用尤其是DBA的作用尤为重要。

本章的重点是数据库的体系结构和数据模型,以及数据库系统的组成。本章涉及数据库的概貌,初学时,有些概念不好理解,待学完全书后,再温习这些概念,才能对其有较深的理解。

习题

一、问答题

1.叙述文件系统与数据库系统的区别和联系。

2.什么是数据模型?数据模型的作用和三要素是什么?

3.数据库系统三级模式、两级映像是什么?

4.什么是关系模型?定义并解释下列术语。

关系,属性,元组,主键,外键,关系模式

5.什么是概念数据模型?定义并解释下列术语。

实体,实体集,属性,实体标识符,关键码,实体联系图

6.什么是数据库的逻辑独立性和物理独立性?为什么数据库系统具有数据与程序的独立性?

7.叙述数据库管理方式的特点。

8.数据库管理系统的主要功能有哪些?

9.叙述层次模型、网状模型、关系模型和面向对象模型的主要特点。

10.数据库系统由哪几部分组成?

11.DBA的职责是什么?

12.系统管理员、数据库设计员、应用程序员的职责是什么?

13.名词解释。

DB,DBMS,DBS,1:1联系,1:n联系,m:n联系,宿主语言,DDL,DML

二、综合题

1.某百货公司有若干连锁商店,每家商店经营若干商品,每家商店有若干职工,但每个职工只能服务于一家商店。

实体类型“商店”的属性有:商店编号、店名、店址、店经理。

实体类型“商品”的属性有:商品编号、商品名、单价、产地。

实体类型“职工”的属性有:职工编号、职工名、性别、工资。

在联系中应反映出职工参加某商店工作的开始时间;商店销售商品的月销售量。

试画出反映商店、商品、职工实体类型及其联系类型的E-R图,并将其转换成关系模式。

2.某工厂生产若干产品,每种产品有不同的零件组成,有的零件可用在不同的产品上。这些零件由不同的原材料制成,不同零件所用的材料可以相同。这些零件按所属的不同产品分别放在仓库中。试用E-R图画出此工厂产品、零件、材料、仓库的概念模型。

3.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中有的教授和副教授每人各带若干研究生;每个班级有若干学生,每个学生选修若干课程,每门课程可由若干学生选修。请用E-R图画出学校的概念模型。