1.1 数据库技术概论

计算机应用从科学计算进入数据处理是一个重大转折,数据处理是指对各种形式的数据进行收集、存储、加工和传播的一系列活动,其基本环节是数据管理。数据管理指的是对数据的分类、组织、编码、存储、检索和维护。数据管理方式多种多样,其中数据库技术是在应用需求的推动下,在计算机硬件、软件高速发展的基础上出现的高效数据管理技术。数据库系统在计算机应用中起着越来越重要的作用,从小型单项事务处理系统到大型信息系统,从联机事务处理(OLTP)到联机分析处理(OLAP),从传统的企业管理到计算机辅助设计与制造(CAD/CAM)、现代集成制造系统(CIMS)、办公信息系统(OIS)、地理信息系统(GIS)等,都离不开数据库管理系统。正是这些不断涌现的应用要求,又不断地推动了数据库技术的更新换代。

1.1.1 数据库技术的产生与发展

计算机的早期应用主要是科学计算,解决国防、工程及科学研究等方面的数值计算问题。然而在政府和企事业单位及人们日常生活中存在着大量必不可少的数据处理业务,例如,一个单位各类职工的基本情况、各行各业的统计报表、个人与家庭的收入和支出等,这些都是人们十分关注的资源,人们在使用这些资源时迫切需要高效的处理工具。

从20世纪60年代后期开始,计算机技术从科学计算迅速扩展到数据处理领域,随着数据处理的不断深入,数据处理规模越来越大,数据量也越来越多,数据处理成为最大的计算机应用领域。数据处理技术也不断完善,经历了人工管理、文件系统和数据库系统三个阶段。

1.人工管理阶段

计算机在其诞生初期,人们只是把它当作一种计算工具,主要用于科学计算,通常是在编写的应用程序中给出自带的相关数据,将程序和相关数据同时输入计算机。不同用户针对不同问题编制各自的程序,整理各自程序所需要的数据。数据的管理完全由用户自己负责,如图1.1所示。

图1.1 人工管理阶段程序与数据的关系

人工管理的特点如下。

·数据不能单独保存。数据与程序是一个整体不能分开,数据只供本程序所使用。

·数据无独立性。数据需要由应用程序自己管理,其逻辑结构与物理结构没有区别,数据的存储结构改变时,应用程序必须改变。

·数据冗余不能共享。不同程序拥有各自的数据,即使不同程序使用相同的数据,这些数据也不能共享,导致程序与程序之间大量的重复数据,容易造成不一致。

2.文件系统阶段

为了方便用户使用计算机、提高计算机系统的使用效率,以操作系统为核心的系统软件产生了,操作系统提供了文件系统的管理功能,用磁盘文件有效地管理计算机资源。

文件系统把数据组织成相互独立的数据文件。利用“按文件名访问,按记录存取”的管理技术,程序和数据分别存储为程序文件和数据文件。数据文件是独立的,可以长期保存在外存储器上多次存取。数据的存取以记录为基本单位,并出现了多种文件组织形式,如顺序文件、索引文件、随机文件等。

用户在设计应用程序时,只要按照文件系统的要求,考虑数据的逻辑结构和特征,以及规定的组织方式与存取方法,即可建立和使用相应的数据文件,而不必关心数据的物理存储结构。这简化了用户程序对数据的直接管理功能,提高了系统的使用效率。

这个阶段的数据管理虽然较人工管理有了很多改进,但仍具有如下不足。

·数据与程序缺乏独立性。数据文件系统自身不能提供数据的查询与修改功能,用户编写应用程序时必须清楚这些文件的逻辑结构,文件的逻辑结构改变时必须修改应用程序。

·数据的冗余和不一致性。由于不同应用程序对数据文件内容要求的不同,所设计的数据文件往往出现数据的重复冗余,浪费存储空间。在多个数据文件之间很容易造成数据的不一致性。

·数据的无结构性。数据文件之间是孤立的,文件中的数据往往只表示现实世界中单一事物的相关数据,而不反映现实世界事物之间的内在联系。

3.数据库系统阶段

面对信息社会中的大量数据及计算机技术的飞速发展,为了从根本上解决数据与程序的相关性,把数据作为一种共享的资源进行集中管理,为各种应用系统提供共享服务,数据库技术应运而生,使信息管理系统的重心从以加工数据的程序为中心转向以数据共享、统一管理为核心。与文件系统相比,数据库技术提供了对数据的更高级、更有效的管理,用户对数据库的访问必须在数据库管理系统的控制下,如图1.2所示。

图1.2 数据库系统阶段程序与数据的关系

随着计算机科学的不断发展,数据库技术大致上经历了三个发展时期。

第一时期:20世纪60年代的萌芽期

在这个时期,第三代电子计算机硬件产生了一次飞跃。中小规模集成电路已经作为计算机的主要器件,有了磁盘、磁鼓等直接存储设备,数据库的概念开始形成。随着计算机对信息处理的日益扩大,商品化的数据库系统出现了,在这一时期较有影响的如下。

·1964年美国通用电器公司Bachman等人开发成功了世界上第一个数据库管理系统(Integrated Data Store,IDS)。IDS可以为多个COBOL应用程序共享数据库,奠定了网状数据库的基础,并得到了广泛的应用。

·1968年网状数据库系统TOTAL开始出现并应用。

·1969年IBM公司推出了Mcgee等人开发的商品化的信息管理系统(Information Management System,IMS)层次数据库管理系统。

第二时期:20世纪70年代的发展期

这一时期出现了许多商品化的数据库系统。这些系统大多是基于网状和层次的。由于商品化数据库系统的出现和使用,数据库技术日益深入到了人们生产、生活的各个领域,使得数据库技术成为信息管理的基本技术。在这一阶段,关系数据库的基础理论逐渐充实,并开始出现了较完善的关系数据库系统。

·美国数据系统语言协会CODASYL的数据库任务组DBTG对数据库方法进行了深入的研究和讨论,于20世纪60年代末70年代初提出了一系列基于网状结构的DBTG报告,建立了若干权威性的观点,推动了数据库的发展。许多网状数据库都是DBTG模型的。

·1970年IBM公司圣何塞研究所的埃德加·弗兰克·科德(E.F.codd)发表了题为《大型共享系统的关系数据库的关系模型》的论文,开创了数据库的关系方法和关系规范化理论研究,为关系数据库技术奠定了理论基础。

·20世纪70年代中期,IBM公司圣何塞实验室在IBM 370系列机上研制了SYSTEM R关系型数据库管理系统,美国加州大学伯克利分校也研制了INGRES关系数据库管理系统,在关系数据管理系统的实施技术和性能方面做了大量的工作。

·1978年美国标准化组织发表了关于数据库系统结构的最终报告,即ANSI/X3SPARC建议,规定了数据库系统的总体结构和特征。

·1979年美国甲骨文公司推出了第一个商品化的关系数据管理系统V2.0。

第三时期:20世纪80年代的成熟期

这一时期大量的商品化关系数据库管理系统问世并被广泛地应用,如IBM公司相继推出了SQL/DS和DB2等商品化的关系数据库管理系统,INGRES也被商品化。关系数据库技术已经非常成熟并成为数据库的主流,几乎所有新推出的数据库管理系统都是关系型的,例如,较有影响的商品化的系统Sybase和Informix等。

随着计算机的出现和计算机网络的广泛应用,分布式数据库系统成为研究重点,并走向应用。1986年出现了分布式数据库管理系统INGRES/STAR和SQL STAR,其中SQL STAR是ORACLE公司推出的开放型分布式关系数据库系统。应当说,20世纪80年代是关系数据库的全盛年代。

经过了40年的发展,数据库技术仍然是当今十分活跃的研究领域,随着计算机的广泛应用,出现了许多新的应用和新的要求。人们开始发现关系数据库的不足和限制,开展了面向新的应用的数据库技术的研究。数据库技术与网络通信技术、面向对象技术、并行计算技术、多媒体技术、人工智能等技术相互渗透和结合,出现了如Web数据库、面向对象数据库、并行数据库、多媒体数据库和知识库等新的数据库技术,并且面向特定的应用领域,人们展开了时态数据库、工程数据库、主动数据库、空间数据库等技术的研究。可以说数据库技术已经进入了后关系数据库的时代。

数据库管理方式的优点如下。

(1)数据结构化

数据库是为多个应用目的服务的,是面向整个系统或组织的,具有整体的结构化。系统或组织的某个应用只涉及整个数据库的一部分数据。

数据库整体数据的结构化,是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。传统文件系统中的各个文件之间彼此是毫无联系的,要想实现应用程序对它们的交互访问是十分困难的。而在数据库中,数据是按照某种数据模型组织起来的,不仅文件内部数据彼此相关,而且文件之间在结构上也有机地联系在一起。描述数据时不仅描述数据本身,而且还描述数据之间的联系。例如,对于学生和课程,可以定义一个学习联系来描述学生与课程之间的关系。

(2)数据能够共享

数据共享的意义是多种应用、语言互相覆盖地共享数据集合。在数据库中,数据不再分属于各个应用程序,而是集中存放在数据库中。对于某个组织而言,除了有安全和保密等限制以外,数据库中的数据被整个组织所共享,大大提高了数据的使用价值。

(3)数据冗余度小,易扩充

由于数据是结构化的,数据的冗余度大大减小。除了一些必要的副本,数据的冗余度可降低到最小程度,既节约了存储空间,又避免了数据的不一致性。

在数据库中可以取整体数据的各种不同子集用于不同的应用系统,当应用需求改变或增加时,只要重新选取不同的子集或者加上一小部分数据便可满足新的需求,容易扩充。

(4)数据与程序的独立性较高

应用程序必须通过数据库管理系统访问数据库,数据库系统提供映像功能来保证应用程序对数据结构和存取方法有较高的物理独立性与逻辑独立性。

当数据存储结构改变时,通过数据的存储结构(物理结构)与逻辑结构之间的映像或转换功能,使得数据的逻辑结构可以不变,从而使应用程序可以不变。这就是数据与程序的物理独立性。

数据库对全部数据有一个整体的逻辑结构,一般情况下,某个应用所使用的数据是全体数据的子集,是根据数据子集的局部逻辑结构而编写的。数据库系统通常提供整体逻辑结构与某类应用所涉及的局部逻辑结构之间的映像或转换功能,当整体逻辑结构改变时,通过映像或转换功能,保持应用程序所涉及的局部逻辑结构不变,从而使应用程序可以不变。这就是数据与程序的逻辑独立性。

通常数据库系统配置了多种语言接口,应用程序可以使用不同的语言访问数据库。

(5)对数据实行集中统一控制

数据库系统提供统一的数据定义、插入、删除、检索以及更新等操作。由于数据库是系统的共享资源,各种用户可以同时使用数据库,因此说用户对数据的访问是并发的,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中同一个数据。这就要求数据库系统必须提供数据安全性控制、数据完整性控制和并发控制三个方面的功能。

1.1.2 基本概念

1.数据

数据是数据库中存储的基本对象。数据在大多数人头脑中的第一个反应就是数字。其实数字只是最简单的一种数据,是对数据的一种传统和狭义的理解。广义的理解应该是指对客观存在的事物的一种描述。数据的种类很多,如文字、图形、图像、声音、学生的档案记录、课程开设情况等都是数据。人们借助计算机和数据库技术可以科学地保存和管理这些复杂的数据,方便而充分地利用这些信息资源。

2.数据库

数据库(Database,DB),顾名思义,是存放数据的仓库。只不过这个仓库创建在计算机存储设备上,如硬盘就是一类最常见的计算机大容量存储设备。数据必须按一定的格式存放,以利于以后使用。

可以说数据库就是长期存储在计算机内、与应用程序彼此独立的、以一定的组织方式存储在一起的、彼此相互关联的、具有较少冗余的、能被多个用户共享的数据集合。在这里要特别注意数据库不是简单地将一些数据堆积在一起,而是把相互间有一定关系的数据,按一定的结构组织起来的数据集合。

3.数据库体系结构

为了有效地组织、管理数据,人们为数据库设计了一个严谨的体系结构,它是数据库的一个总的框架。尽管实际的数据库建立在不同的操作系统之上,支持不同的数据模型,使用不同的数据库语言,但是就其体系结构而言却是大体上相同的,包括了内模式、模式和外模式三级模式结构,如图1.3所示,这三级模式反映了看待数据库的三种不同的数据观点。

图1.3 数据库的三级模式结构

4.数据库管理系统

既然数据库能存放数据,那么数据库中的数据应该如何组织和存储,我们如何高效地获取和维护数据呢?这需要通过数据库管理系统实现。

数据库管理系统(DataBase Management System,DBMS)是位于用户与计算机操作系统之间的一个系统软件,由一组计算机程序组成。它能够对数据库进行有效的组织、管理和控制,包括数据的存储、数据的安全性与完整性控制等。

DBMS提供了应用程序与数据库的接口,使用户不必关心数据在计算机中的存储方式,能够方便、快速地建立、维护、检索、存取和处理数据库中的信息。

DBMS是数据库系统的核心,它的功能因具体的数据库系统不同可能有所不同,但一般都应该有以下几个方面的主要功能:数据定义功能、数据处理功能、数据库的运行控制与管理、数据库的建立和维护功能、数据通信接口。

5.数据库系统

数据库系统(Database System,DBS)是指在计算机系统中引入数据库后的系统,带有数据库的计算机系统硬件和软件层次如图1.4所示。

图1.4 软、硬件层次

在实际应用中,数据库系统通常由硬件平台、数据库、软件和相关人员等几部分内容构成。

(1)硬件平台及数据库

数据库是一组相互联系的若干文件的集合,其中最基本的是包含用户数据的文件(通常称为主文件)。用户数据按逻辑分类存储于数据库文件中,文件之间的联系由它们之间的逻辑关系决定,这种联系也要存储于数据库中。由于数据库系统数据量都很大,加之DBMS丰富的功能使得自身的规模也很大,因此,整个数据库系统对硬件资源提出了较高的要求,这些要求如下。

·有足够的内存运行操作系统和应用程序,装载DBMS核心模块,以及提供数据缓冲区。

·有足够的磁盘空间存储数据库和备份数据。

·系统有较高的I/O交换能力,以提高数据传送率。

(2)软件

数据库系统的软件主要包括以下几方面。

·数据库管理系统(DBMS)。

·支持DBMS运行的操作系统。

·具有数据库接口的高级语言及其编译系统,便于开发应用程序。

·以DBMS为核心的应用开发工具。

·为特定应用环境开发的数据库应用系统。

(3)人员

开发、管理和使用数据库系统的人员主要是:数据库管理员、系统分析员、数据库设计人员、应用程序员和最终用户。不同的人员涉及不同的数据抽象级别,具有不同的数据视图。

①数据库管理员(DBA)

要想成功地运转数据库,就要在数据处理部门配备管理人员——DBA。DBA必须熟悉企业全部数据的性质和用途,对用户的需求有充分的了解,对系统的性能非常熟悉,负责全面管理和控制数据库系统。DBA的具体职责包括以下几方面。

·决定数据库的内容和结构,参加数据库设计的全过程,并与用户、应用程序员、系统分析员密切合作,共同协商,做好数据库设计。

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

·定义数据的安全性要求和完整性约束条件,确定各个用户对数据库的存取权限、数据的保密级别和完整性约束条件,防止未授权用户查看修改数据。

·监控数据库的使用和运行,及时处理运行过程中出现的问题。比如系统发生各种故障或数据库遭到破坏时必须在最短时间内恢复正常,并且尽可能不影响计算机系统其他部分的正常运行。为此,DBA要定义和实施适当的备份和恢复策略,如周期性的转储数据、维护日志文件等。

·负责数据库的改进。在系统运行期间监视系统的存储空间利用率、处理效率等性能指标,对运行情况进行记录、统计分析,依靠工作实践并根据实际应用环境,不断改进数据库设计。

·负责数据库的重组重构。在数据库运行过程中,大量数据的不断插入、删除、修改会影响系统的性能,DBA要定期或按一定策略对数据库进行重组织,以提高系统的性能。当用户的需求增加或改变时,还要对内模式和模式进行修改。

②系统分析员和数据库设计员

系统分析员负责应用系统的需求分析和规范说明,要和用户及DBA相结合,确定系统的软硬件配置,并参与数据库系统的概要设计。数据库设计员负责数据库中数据的确定、数据库各级模式的设计,必须参加用户需求调查和系统分析,然后进行数据库设计。

③应用程序员

使用主语言和数据库语言设计和编写应用系统的程序模块,并进行调试和安装。

④用户

这里用户是指最终用户。通过应用系统的用户接口使用数据库。常用的接口方式有浏览器、图形显示、菜单驱动、表格操作、报表书写等,给用户提供简明、直观的数据表示。

1.1.3 数据模型

模型是现实世界中具体事物的模拟和抽象。例如,一张地图、一架航模飞机,都是具体的模型。数据库是某个企业、组织或部门所涉及数据的综合,它不仅要反映数据本身的内容,而且要反映数据之间的联系。由于计算机不可能直接处理现实世界中的具体事物,所以人们必须事先把具体事物转换成计算机能够处理的数据。

在数据库技术中,我们用数据模型(Data Model)的概念描述数据库的结构和语义,对现实世界的数据进行抽象。从现实世界的信息到数据库存储的数据以及用户使用的数据是一个逐步抽象的过程。根据数据抽象的级别定义了四种模型:概念数据模型、逻辑数据模型、外部数据模型和内部数据模型。一般,在提及时省略“数据”两字。这四种模型之间的相互关系如图1.5所示。

图1.5 四种模型之间的相互关系

数据抽象的过程,也就是数据库设计的过程,具体步骤如下。

第1步:根据用户需求,设计数据库的概念模型,这是一个“综合”的过程。

第2步:根据转换规则,把概念模型转换成数据库的逻辑模型,这是一个“转换”的过程。

第3步:根据用户的业务特点,设计不同的外部模型,给程序员使用,也就是应用程序使用的是数据库的外部模型。外部模型与逻辑模型之间的对应性称为映像。

第4步:数据库实现时,要根据逻辑模型设计其内部模型。内部模型与逻辑模型之间的对应性称为映像。

一般,第1步称为DB的概念设计,第2、3步称为DB的逻辑设计,第4步称为DB的物理设计。

下面对这四种模型分别进行详细的解释。

1.概念模型

表达用户需求观点的数据全局逻辑结构的模型,称为“概念模型”。这四种模型中,概念模型的抽象级别最高。

2.逻辑模型

表达计算机实现观点的DB全局逻辑结构的模型,称为“逻辑模型”。在选定DBMS软件后,就要将概念模型按照选定的DBMS的特点转换成逻辑模型。逻辑模型主要有层次、网状和关系模型三种。

①用树型(层次)结构表示实体类型及实体间联系的数据模型称为层次模型。树中的节点是记录类型,每个非根节点有且只有一个父节点。上一层记录类型和下一层记录类型之间的联系是1∶N联系。

②用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。有向图中的节点是记录类型,箭头表示从箭尾的记录类型到箭头的记录类型间联系是1∶N联系,一个M∶N联系可拆成两个1∶N联系。

③关系模型的主要特征是用二维表格表达实体集,它是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。

3.外部模型

表达用户使用观点的DB局部逻辑结构的模型,称为“外部模型”。外部模型是逻辑模型的一个逻辑子集,独立于硬件,依赖于软件,反映用户使用数据库的观点。

4.内部模型

表达DB物理结构的模型,称为“内部模型”,又称为“物理模型”,是数据库最低层的抽象。它描述数据在磁盘或磁带上的存储方式(文件结构)、存取设备(外存的空间分配)和存取方法,与硬件和软件紧密相连。

1.1.4 三层模式和两级映像

1.三层模式体系结构

在用户(或应用程序)到数据库之间,DB的数据结构有三个层次,分别为:外部模型、逻辑模型和内部模型。这三个层次要用DB的数据定义语言,定义后的内容称为“模式”,即外模式、逻辑模式和内模式。

(1)外模式是用户与数据库系统的接口,是用户用到的那部分数据的描述。外模式由若干个外部记录类型组成。

(2)逻辑模式是数据库中全部数据的整体逻辑结构的描述。它由若干个逻辑记录类型组成,还包含记录间联系、数据的完整性和安全性等要求。

(3)内模式是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。

2.两级映像

三层模式的数据结构可能不一致,即记录类型、字段类型的命名和组成可能不一样,因此需要三层模式之间的映像来说明外部记录、逻辑记录和内部记录之间的对应性。三层模式之间存在的两级映像如下。

(1)外模式/逻辑模式映像存在于外模式和逻辑模式之间,用于定义外模式和逻辑模式之间的对应性。这个映像一般是放在外模式中描述的。

(2)逻辑模式/内模式映像存在于逻辑模式和内模式之间,用于定义逻辑模式和内模式之间的对应性。这个映像一般是放在内模式中描述的。

1.1.5 关系型数据库系统

1970年6月,ACM图灵奖1981年得主、IBM公司的研究员埃德加·弗兰克·科德博士在他的论文《大型共享数据仓库的关系模型》(A Relational Model of Data for Large Shared Data Banks)中,最早提出了关系模型的理论,奠定了关系模型的理论基础。自此以后,关系模型成为一种最重要的数据模型。20世纪80年代后,关系数据库系统成为最重要、最流行、应用最广泛的数据库系统之一。

关系型数据库系统具有以下多种优点。

·关系模型具有严格的数学基础,具有一定的演绎功能,因而发展很快。目前,关系型数据库系统的理论与技术已经发展得非常成熟。

·关系模型概念单一,数据结构简单清晰,用户易懂易用。数据描述具有较强的一致性,各种实体及实体间的联系都可用关系来表达,对数据的检索结果也是关系。

·命令具有过程化性质。关系模型的存取路径对用户透明,简化了程序员和数据库开发人员的工作。

·具有更高的数据独立性和更好的安全保密性。

·支持数据的重构。

自关系模型理论提出后,关系型数据库系统的研究取得了巨大的成功。目前性能非常良好的关系型数据库系统不下上百种,较为成功的有SQL Server、Oracle、Sybase等。本书围绕着广为使用的关系型数据库系统SQL Server 2012展开讲述。