前言背景在过去的30年中,数据库的研究带来了巨大的生产力,使得数据库系统成为软件工程领域最重要的成果。目前,数据库作为信息系统的基本框架,已从根本上改变了许多公司的运作方式。特别是在最近几年里,随着这项技术本身的发展,产生了一些功能更强大、使用更方便的系统。这使得数据库系统变得越来越普及,用户类型也越来越广泛。遗憾的是,正是由于数据库系统的简单性,许多用户有可能尚缺乏必要的知识,还不懂得如何开发正确且高效的系统,就开始创建数据库及其应用程序了。这样很可能导致所谓的“软件危机”(software crisis,有时也称为“软件抑郁”(software depression))的延续。
编写本书的最初动因是我们在工业界的工作经历,当时我们为新软件系统中数据库的设计提供咨询,间或也解决遗留系统中存在的种种问题。进入学术界后,我们从另一类用户—学生那里发现了类似的问题。因此,本书的目标就是给出一本教程,尽可能清楚地介绍数据库的基础理论,并给出一套既能为专业技术人员亦能为非技术人员所用的数据库设计方法学。
本书针对当前主流的商用产品—关系数据库管理系统(DBMS)给出的设计方法学,已在学术界和工业界测试和使用了许多年。它包括三个主要阶段:数据库的概念设计、逻辑设计和物理设计。第一个阶段在不考虑任何物理因素的前提下设计概念数据模型,得到的数据模型在第二阶段被细化为逻辑数据模型,细化过程主要是去除在关系系统中无法表示的结构。在第三阶段,逻辑数据模型被转换成针对目标DBMS的物理设计,物理设计阶段主要考虑如何设计存储结构和访问方法,以便有效并安全地访问存储在辅存中的数据库。
该方法学按阶段被分为一系列步骤。对于缺少经验的设计者,最好按步骤进行设计,这里所提供的指南可帮助你完成整个过程。对于有经验的设计者,该方法学的指导作用显然会弱化,但经常可用于开发框架和检查列表。为了帮助读者学习使用上述方法学并理解其要点,整个方法学的描述中始终贯穿一个完整的DreamHome案例研究。附录B还给出了另外三个案例,供读者自行研究。
UML(统一建模语言)越来越多的公司都在规范各自的数据建模方法,即选择一种特定的建模方法并在整个数据库开发项目中始终如一地使用它。一种在数据库概念设计和逻辑设计阶段较为通用的高级数据模型是ER(实体-联系)模型,这也是本书采用的模型。由于当前还没有表示ER模型的标准方法,因此大部分书籍在描述关系DBMS的数据库设计时,常常使用下述两种表示方法之一:
Chen氏表示方法,即用矩形表示实体,用菱形表示联系,用线段连接矩形和菱形。
Crow Feet(鸦爪)表示方法,仍用矩形表示实体,用实体间的连线表示联系,在一对多联系连线的多端有一个鸦爪标记。
当前,这两种表示方法都有计算机辅助软件工程(CASE)工具。然而,它们都难于使用和解释。本书的较早版本曾使用Chen氏表示方法,而在随后培生教育出版集团进行的一次问卷调查中,比较一致的意见是应该使用最新的称为UML(Unified Modeling Language,统一建模语言)的面向对象建模语言。UML表示方法结合了面向对象设计三大流派的成分:Rumbaugh的OMT建模语言,Booch的面向对象分析和面向对象设计,以及Jacobson的Objectory。
换用表示方法主要有以下三个原因:(1)UML正成为一种工业标准,例如,对象管理组(OMG)已经采纳UML作为对象方法的标准表示方法;(2)UML表达清楚并易于使用;(3)UML目前已被学术界用于面向对象分析与设计的教学,在数据库模块的教学中也使用UML将会更加一致。因此,在这个版本中,我们将采用UML的类图作为ER模型的表示方法。读者将会发现这种表示方法更加容易理解和使用。
第6版的更新之处扩展了第3章“数据库的结构与Web”,增加了云计算。
修改了第21章“数据管理中的职业、法律与道德问题”。
增加了“数据仓库与时态数据库”(31.5节)。
每章后增加了新的思考题和习题。
修改了与SQL相关的章节,全面反映2011年公布的新标准SQL:2011。
修订了第26章“复制与移动数据库”。
修改了关于Web-DBMS集成和XML的章节。
与Oracle相关的内容一律修改为针对Oracle 11g。
读者对象本书可作为本科生数据库管理或数据库设计的导论性教材,也可作为研究生或高年级本科生相关课程的教材,学时可分为一到两个学期。通常信息系统、商业IT或计算机科学等专业都包含这类课程。
本书还可以作为一些IT专业人士的参考书,如系统分析和设计人员、应用程序开发人员、系统程序员、数据库从业人员及独立的自学者。随着当今数据库系统的广泛使用,这些专业人士可能来自于需要数据库的任何类型的公司。
读者在学习关于物理数据库设计的第18章和关于查询处理的第23章之前,如果对附录F中介绍的文件组织和数据结构相关概念有清楚的了解,那么将会有所帮助。理想的情况是这些背景知识已从前导课程中获得。如果不具备这个条件,则可以在开始数据库课程后,学完第1章立即学习附录F。
如果读者已经掌握了一门高级编程语言,比如C,那么在学习附录I的嵌入式与动态SQL和28.3节的ObjectStore时会更有成效。
突出特点(1)为数据库逻辑设计和概念设计提供了易用、逐步指导的方法学,该方法学基于广泛采用的实体-联系模型并将规范化作为验证技术。此外,通过一个完整的案例研究来说明如何使用这套方法学。
(2)为数据库物理设计提供了易用、逐步指导的方法学,包括:逻辑设计到物理实现的映射,文件组织方法的选择,适合应用程序的索引结构,以及何时引入可控冗余。此外,通过一个完整的案例研究来说明如何使用这套方法学。
(3)用独立的章节来讲解以下三个主题:数据库设计阶段在整个系统开发生命周期中的位置与作用;如何使用实况发现技术来获取系统需求;如何将UML用于整个方法学。
(4)每章都采用清晰且易于理解的表述方法,如突出显示定义,明确给出各章学习目标,在各章最后进行小结。通篇使用了大量示例和图表来说明概念。来自现实生活的DreamHome案例研究贯穿全书,另外还给出若干案例供学生选作课程实践题目。
(5)扩充了下列最新的正式标准及事实标准:结构化查询语言(SQL),举例查询(QBE),面向对象数据库的对象数据管理组(ODMG)标准。
(6)利用三章的篇幅,以教程式风格介绍SQL标准,包含交互式和嵌入式SQL。
(7)专设一章讨论IT和数据库中的职业、法律与道德问题。
(8)全面讨论了与分布式DBMS和复制服务器相关的概念和问题。
(9)全面介绍了基于对象的DBMS中的一些概念和问题。回顾了ODMG标准,介绍了在最新公布的SQL版本SQL:2011中出现的各种对象管理机制。
(10)扩展了作为数据库应用平台的Web部分的内容,并给出多个Web数据库访问的代码示例。具体包括容器管理持久性(CMP)、Java数据对象(JDO)、Java持久性API(JPA)、JDBC、SQLJ、ActiveX数据对象(ADO)、ADO.NET和Oracle PL/SQL Pages(PSP)。
(11)介绍了半结构化数据及其与XML的关系,扩展了XML的内容和相关术语,包括XML Schema、XQuery、XQuery数据模型和形式语义。还讨论了在数据库中集成XML,以及为发布XML而在SQL:2008和SQL:2011中所做的扩展。
(12)全面介绍了数据仓库、联机分析处理(OLAP)和数据挖掘。
(13)全面介绍了用于数据仓库数据库设计的维度建模技术,并且通过一个完整的案例来演示如何使用该方法进行数据仓库数据库设计。
(14)介绍了DBMS系统实现的有关概念,包括并发技术和恢复控制、安全以及查询处理和查询优化。
教学方法在开始撰写本书之前,我们的目标之一就是写一本让读者容易接受和理解的教材,而不管读者具备怎样的背景知识和经验。根据我们使用教材的经验以及从很多同事、客户和学生中吸收的意见,实际上存在若干读者喜爱和不喜爱的设计特性。考虑到这些因素,本书决定采用如下的风格和结构:
在每章的开头明确说明该章的学习目标。
清楚定义每一个重要的概念,并用特殊格式突出显示。
通篇大量使用图表来支持和阐明概念。
面向实际应用:为了做到这点,每章都包含了许多实际有效的示例以说明所描述的概念。
每章最后配有小结,涉及该章所有主要的概念。
每章最后配有思考题,问题的答案都可以在书中找到。
每章最后配有习题,教师可用其测试学生对章节内容的理解,自学者也可进行自测。全部习题的答案可以在原书配套的教辅资源“教师答案手册”中找到。
教辅资源适用于本教材的教辅资源包括:
课程PPT。
教师答案手册,包括所有课后思考题和习题的答案示例。
其他资源的配套网站:www.pearsonhighered.com/connolly-begg。
上述资源仅提供给在www.pearsonhighered.com/irc上注册过的教师。请与当地的销售代表联系。
本书结构第一部分背景本书的第一部分介绍数据库系统和数据库设计。
第1章引入数据库管理的概念。主要阐述了数据库前身,即基于文件的系统之不足及数据库方法所具备的优势。
第2章总览数据库环境。主要讨论了三层ANSI-SPARC体系结构的优点,介绍了目前最通用的数据模型,列出了多用户DBMS应提供的各种功能。
第3章考察各种多用户DBMS结构,讨论了数据库领域不同类型的中间件。分析Web服务,它能为用户和SOA(面向服务的结构)提供新型的业务服务。该章简要描述分布式DBMS和数据仓库的结构,后面还将详细讨论。该章还给出一个抽象DBMS的内部结构以及Oracle DBMS的逻辑结构和物理结构,这一部分内容在数据库管理初级课程中可以略去。
第二部分关系模型与语言本书的第二部分介绍关系模型和关系语言,即关系代数和关系演算、QBE(举例查询)和SQL(结构化查询语言)。这部分还介绍了两种非常流行的商用系统:Microsoft Access和Oracle。
第4章介绍当前最流行的数据模型—关系模型背后的概念,这是最常被选作商用标准的模型。具体安排是首先介绍术语并说明其与数学上的关系的联系,然后讨论关系完整性规则,包括实体完整性和引用完整性。这一章最后概述视图,第7章还将进一步讨论视图。
第5章介绍关系代数和关系演算,并