前 言
数据库技术诞生于20世纪60年代,它以方便计算机用户管理大量数据为目标,研究数据在计算机内的组织、存储、加工和处理的理论和方法。数据库技术以E.F.Codd提出的关系模型和关系代数为基础,建立起关系数据库理论,逐步发展出关系数据库产品,成为数据管理的有力工具。从20世纪80年代中期起,数据库应用开始在我国起步,从基于dBASE的财务管理系统开始,到各企业的综合信息管理系统,数据库技术进入了全面、深入的应用阶段。
随着信息技术的不断发展和进步,各种信息系统逐步成为支撑各行业甚至整个社会正常运行的重要基础。数据库技术也面临新的挑战,主要体现在以下几个方面: 首先,计算机网络尤其是互联网技术和应用的飞速发展,使数据库应用从单机走向网络,数据管理从集中式管理转向分布式管理;第二,传统数据库以关系模型为理论基础,而随着应用的不断延伸,各种半结构化数据、非结构化数据的管理也成为必然,对数据模式提出了更多的要求;第三,数据规模的扩大,不同类别的应用,如OLTP、OLAP、数据仓库到数据中心等使TB规模的数据库成为常事。为应对这些挑战,近些年来,数据库领域中涌现出许多新的研究成果,也开发出许多新的数据库产品,数据库应用也在不断深化,延伸到越来越多的应用领域。
数据库领域研究成果的广泛应用,使得数据库技术成为高等学校计算机专业的核心课程。ACM的计算机专业课程体系CC2005中,把计算机专业划分为计算机科学(CS) 、计算机工程(CE) 、软件工程(SE) 、信息技术(IT) 、信息系统(IS) 5个方向,而在其中每个方向,数据库都占有重要的地位。本教材参考CC2005课程体系和我国高等学校计算机教学指导委员会编制的核心课程教学实施方案,覆盖了课程体系中数据库技术的知识点,并结合数据库应用的实例,力图让读者在掌握数据库基本理论的同时,能对开发数据库应用系统有一个比较全面的认识,并在教学过程中进行基本的实践。
本书紧密结合数据库应用的现实需求,介绍数据库管理系统DBMS的基本概念,分析数据存储和管理的基本策略、数据索引的建立和查找算法,并介绍了事务的概念和实现机制,对当前数据库前沿技术如XML数据库等也有所涉及,最后,综述了数据库应用系统的基本开发方法和过程,并分别用Java和.NET开发环境给出了一个简化的选课系统的实现示例。全书以Oracle数据库为教学对象,理论和实践相结合,力图为读者全面展示数据库系统的基本概念和实现技术,以及数据库管理方法和应用系统开发的基本过程。本书可作为应用型计算机专业本科学生数据库课程的教材,也可用作计算机专业工作人员在从事数据库应用时的参考书。
本书各章节主要内容如下所示。
第1章: 数据库系统概述
本章简要介绍数据管理技术所经历的人工管理、文件管理和数据库管理的三个发展阶段,重点描述了数据库管理系统DBMS的组成和结构,说明了数据库应用系统的计算模式,最后,对本书所用的Oracle数据库做了总体说明。
第2章: 数据模型
数据库管理系统的目标是通过对数据的管理,支持对现实世界中各种应用的管理、分析和预测。现实世界的各种应用是纷繁复杂的,数据模型就是要对复杂的现实世界中的数据进行抽象,即仅保留与管理目标直接相关的数据,在计算机中建立一个能反映现实世界数据的使用情况的模型。本章给出了数据模型的概念和常用的几种模型,并对其中的实体-关系模型(ER模型)和关系模型进行了详细介绍。
第3章: 关系数据库语言SQL与PLSQL
SQL是当前使用关系数据库的标准语言,它既能对其中的数据进行操作(查询、增加、修改和删除),也能对关系数据库本身进行定义和维护(创建关系表、维护索引等),是学习和使用关系数据库的主要手段之一。本章对SQL的特点、各种查询功能进行了详细描述,并给出了具体实例。PLSQL是Oracle对SQL进行的扩充,把SQL的数据操纵能力和过程语言的数据处理能力相结合,弥补SQL本身对数据结果集处理能力的不足,并可实现与其他高级语言的嵌套使用。
第4章: 数据库设计
数据库设计的任务是根据应用系统的功能需求,为应用系统建立一个结构合理、使用方便、运行高效、与需求吻合的数据库。其核心是要在对应用系统运行规律准确刻画和描述的基础上,完成数据库设计的需求分析、概念设计、逻辑设计、物理设计、实现与维护等5个阶段的工作,本章具体描述了每个阶段的主要任务和一般设计方法。
第5章: 数据库存储技术
数据管理的基础是数据的存储,数据存储技术直接影响数据库功能的实现和性能的提高。本章讨论了多种数据记录存储结构,以及数据文件中记录的不同组织方式,包括堆文件组织、顺序文件组织、散列文件组织、簇集(clustering)文件组织、B+树文件组织等。建立数据索引是提高数据库性能的必要手段,本章还讨论了不同的索引对数据访问性能的影响以及各自的特点。 第6章: 事务管理与并发控制
数据库事务指构成单一逻辑工作单元的一系列操作,这些操作必须全部成功完成,才可以更新数据库中的数据。事务是数据库管理系统保证数据库的语义完整性,简化数据库错误恢复,提高应用系统可靠性的重要支撑技术。本章讨论了事务的ACID特性,以及这些特性的具体实现方法,同时讨论了支持多用户同时访问数据库的并发控制方法、死锁处理等技术。
第7章: 数据库管理与维护
正确的设计和高效的实现是数据库应用系统正常运行的前提,而数据库管理和维护是应用系统能发挥作用的基础和保障,其任务是通过数据库管理员对数据库系统的日常维护管理,保证数据的安全性、正确性、一致性和可靠性。另外,还需要对数据库运行状态进行监控和优化,动态规划存储空间的使用,以使数据库系统能适应数据量的增长和性能的提高。本章以Oracle数据库为例,详细讨论了数据管理和维护的主要工作。
第8章: 分布式数据库
计算机网络技术的发展,使数据库技术从传统的集中处理方式走向了网络时代,分布式数据库也应运而生。它以数据的物理分布性和全局数据逻辑统一性为特点,为数据的异地处理及相关的应用问题提供了很好的解决方案,广泛应用于跨地域、企业级的数据处理中。本章介绍了分布式数据库的主要特点和一般结构,并讨论了Oracle分布式数据库的实现及其支持的操作,说明了它的透明性。
第9章: XML数据库基础
XML是一种专门为Internet设计的标记语言,它为Internet上不同应用程序之间进行数据交换提供了标准。由于其在对半结构化数据的表示、存储、处理和传输方面的独特优势,XML数据在互联网上得到了广泛的应用。XML数据库主要研究对XML文档数据的管理技术,是当前数据库技术的发展前沿。本章介绍了XML数据的特点,以及XML数据管理的基本要求与实现。
第10章: 数据库应用系统分析与设计
数据库应用系统的开发是一项复杂的工程,也是数据库技术应用的关键。应用系统的开发与运行应遵循软件工程的一般原则。本章介绍软件工程中系统分析设计的典型方法,分析了数据库应用系统的结构,叙述了数据库应用系统的开发过程,并详细说明了各开发阶段的主要工作。
第11章: Java语言数据库编程
网络技术的飞速发展使数据库应用系统逐步进入网络环境中,Java是当前流行的网络应用开发语言和平台。本章首先简单介绍Java语言和Java环境下数据库应用系统开发的一般过程,然后,以一个简化的选课系统为实例,从需求分析开始,经过系统逻辑设计、物理设计等过程,最后,给出了该系统的主要功能模块的具体实现。
第12章: .NET平台数据库编程
.Net平台是微软公司推出的网络应用开发环境。本章对其做了简单的介绍,同样以第11章的选课系统为例,给出了.Net环境下各功能模块的具体实现。
本书全面介绍了数据库技术的核心内容,并结合实例给出了设计开发数据库应用系统的一般过程,内容比较丰富,教学时可根据课时的多少进行适当的取舍,如课时比较紧张,可将第8章、第9章内容作为课外阅读材料,根据具体的实验环境选择第11章或12章其中一章进行讲授。数据库系统是一门实验性较强的课程,在教学过程中安排一定的教学实验是必需的,实验可以用书中的实例作为基础,适当扩充一些如用户管理等的功能来完成。
虽然本书的作者都具有数据库方面的研究、开发经历,对数据库技术有一定的掌握和见解,但限于时间和水平均有限,书中肯定还存在一些不足之处,敬请读者不吝指正。
作 者2011年4月于清华园