本书详细介绍数据库的分析、设计、实现方法和过程。本书不仅涵盖普通数据库书籍中所没有讲到的数据库分析、设计和执行过程,还通过贯穿全书的实例描述数据库的创建、监控和调整的全过程。主要内容包括数据库的相关知识,数据库分析和设计技术、逻辑数据库设计方法学、物理数据库设计方法学等内容。另外,本书还增加了SQL和QBE、数据库管理和安全性以及数据库的现状和趋势等内容,使内容更为全面。本书既适合作为高等院校数据库课程的教材,也适合相关技术人员作为数据库分析、设计和开发的参考。\r\n
出版者的话\r\n专家指导委员会\r\n译者译\r\n前言\r\n第一部分 相关知识介绍\r\n 第1章 引言 \r\n 1.1 数据库系统使用示例 \r\n 1.2 数据库概述 \r\n 1.2.1 数据库 \r\n 1.2.2 数据库管理系统 \r\n 1.2.3 视图 \r\n 1.2.4 DBMS环境的组成 \r\n 1.2.5 DBMS架构 \r\n 1.3 DBMS的功能 \r\n 1.4 数据库设计 \r\n 1.5 DBMS的优缺点\r\n 1.6 本章小结 \r\n 复习题\r\n 第2章 关系模型 \r\n 2.1 数据模型 \r\n 2.2 术语 \r\n 2.2.1 关系数据结构 \r\n 2.2.2 关系表的属性 \r\n 2.2.3 关系键 \r\n 2.2.4 关系数据库的表示 \r\n 2.3 关系完整性 \r\n 2.3.1 空值 \r\n 2.3.2 实体完整性 \r\n 2.3.3 参照完整性 \r\n 2.3.4 业务规则 \r\n 2.4 关系语言 \r\n 2.5 本章小结 \r\n 复习题\r\n 第3章 SQL和QBE\r\n 3.1 结构化查询语言\r\n 3.11 SQL的目标\r\n 3.1.2 术语\r\n 3.1.3 书写SQL命令\r\n 3.2 数据操纵\r\n 3.2.1 简单查询\r\n 3.2.2 选择行\r\n 3.2.3 给结果排序\r\n 3.2.4 使用SQL的聚合函数\r\n 3.2.5 结结果分组\r\n 3.2.6 子查询\r\n 3.2.7 多表查询\r\n 3.2.8 INSERT、UPDATE和DELETE语句\r\n……\r\n第二部分 数据库分析与设计技术\r\n第三部分 逻辑数据库设计\r\n第四部分 物理数据库设计\r\n第五部分 第二个实例\r\n第六部分 数据库的现状和未来趋势\r\n附录\r\n术语表\r\n参考文献\r\n
随着计算机技术的飞速发展和信息管理领域的日益扩大,数据库技术得到了空前的发展,数据库技术的应用领域也日趋扩大和深入。数据库是用科学的方法管理和组织数据的技术,是计算机科学的一个重要分支。
本书主要讲述数据库设计方法学。全书由六个部分和五个附录组成。
第一部分由第1章~第5章组成,分别介绍关系数据模型、使用SQL和QBE查询数据、数据库系统开发生命周期以及数据库的管理和安全。
第二部分由第6章~第8章组成,介绍设计数据库首先要做的事情:事实发现,其中包括事实发现所使用的技术和方法,整理所发现的事实并建立数据库模型的方法以及如何在数据模型的基础上设计规范化的关系数据库表的方法。
第三部分由第9章~第11章组成,第9章全面概述本书使用的数据库设计方法学技术,并着重介绍方法学中步骤1中的任务—构建ER模型的方法,第10章介绍方法学中步骤2的任务,即如何将ER模型映射为关系数据库的表,第11章介绍高级ER建模技术。
第四部分由第12章~第16章组成,其中第12章介绍方法学中的步骤3,也就是物理数据库设计的第1个步骤,这个步骤中将逻辑数据库设计转换为目标DBMS支持的物理数据库设计。第13章介绍方法学中的步骤4,也就是物理数据库设计的第2个步骤,在该章中介绍如何分析和实现用户的事务以及如何选择合适的数据库文件的组织方式和索引以提高系统的性能。第14章介绍物理数据库设计的后两个步骤—步骤5和步骤6,内容包括如何设计用户视图以及如何设计数据库安全性机制。
第五部分由第17章和第18章组成,该部分通过第二个示例—宠物诊所的例子,再次演示了数据库方法学中逻辑数据库设计和物理数据库设计的各个步骤的使用。
第六部分由第19章组成,该章介绍一些高级数据库应用,讨论关系模型的局限性,介绍分布式数据库管理系统。面向对象数据库管理系统、对象关系数据库管理系统、数据仓库、联机分析处理和数据挖掘的主要概念,最后提出将数据库技术与Web技术集成起来的一些方法。
附录A介绍其他一些较常用的表示数据模型的方法。附录B对本书所介绍的数据库设计方法学中的步骤进行归纳和总结,便于读者快速参考和查阅。附录C介绍设计复杂数据库时可以先设计局部逻辑数据模型,然后再将这些局部模型合并为一个全局模型的方法。附录D介绍一些常用的数据库文件和索引的组织方式。附录E介绍15个常用应用领域的数据模型的建立,方便读者在解决类似问题时进行参考。
本书的作者从事过多年的数据库方面的工作,具有丰富的数据库设计和使用经验,因此本书的特点就是数据库技术与实际的应用的结合非常密切,弥补了现在很多数据库图书中理论知识介绍很丰富,但结合实际情况解决实际问题的介绍却不够丰富的缺点。由于本书的作者具有很丰富的数据库设计、开发和使用的经验,因此书中介绍的内容非常有效和实用,非常适合数据库设计人员使用。
本书的另一个特点就是将抽象、枯燥的数据库设计方法用一个很容易理解的例子贯穿起来,通过这个例子逐渐展开,直至使用完数据库设计方法学的全部步骤,因此容易激发读者的阅读兴趣,也能使读者更好地理解这些方法学的运用。在读者已经基本熟悉了这些方法学的过程之后,再举出第二个例子,第二个例子又一次完全用到了前边介绍的方法学步骤,使读者进一步加深对方法学的理解。此外,本书图文并茂,读者能很直观地理解数据库设计的概念和方法。
本书的第2版在第1版成功的基础之上,又添加了“SQL和QBE”、“数据库管理和安全性”以及“数据库的现状和未来趋势”方面的内容,并将第1版的第10章放在了第2版的附录C中,使全书的结构更加合理、条理更清晰。同时,对第1版大部章节的内容进行了调整,增加了一些新的知识,去掉了第1版中的一些过时的内容。尤其是在第2版中增加的第5章更强调了数据库安全的重要性,第19章客观地分析了当前数据库技术发展的几个方向。有利于读者对数据库技术有更全面的了解。
本书适合有一定数据库理论基础,又希望能将理论知识应用到实际使用过程中的读者阅读,尤其适合那些在设计数据库时不知从何下手或者经验不足的数据库设计新手阅读。本书可作为数据库理论知识的后续学习内容,也可作为高等院校数据库课程的教材或数据库设计和开发人员的数据库设计参考书。
本书由何玉洁负责组织翻译和审校,主要由何玉洁和黄婷儿完成,梁琦、崔晗、卢立能、何玉书、李迎等参加了本书部分章节的审校工作。
由于译者水平有限,在译校过程中难免出现疏漏和不妥之处,恳请读者批评指正。
何玉洁
2004年9月
Thomas M.Connolly是英国佩斯里大学计算技术与信息系统学部主任,该校拥有英国规模最大的IT学科。在产业界任职期间,他设计了世界上第一个商用可移植关系DBMS——RAPPORT,他因设计和开发配置管理工具LIFESPAN而获得英国软件杰出设计大奖。
CAROLYN E.BEGG毕业于爱丁堡大学,佩斯里大学讲师,研究兴趣包括信息系统、生物学领域数据库系统应用程序等。
背景
如今,数据库是信息系统的基本框架并且从根本上改变了许多公司和个人的工作方式。数据库技术经过多年的发展已经创造出更强大、更易用的数据库系统,使用户无需具备开发高效系统的知识便可创建数据库并实现其应用。目前的参考文献中,有许多优秀的、阐述数据库的部分发展生命周期的著作。然而,我们发现很少有书籍介绍数据库的分析、设计以及执行,并且很少有书籍采用专业和非专业读者都易懂的方式描述数据库的开发过程。
因此,本书的创作初衷是尽可能清楚地为读者解释如何分析、设计及实现数据库,包括从仅含几张表的简单数据库到包括数十至数百张表的大型数据库。实际上本书对进行理论研究的人士也非常有用,而且简单明了地阐述了数据库设计的方法学。
本书所介绍的用于关系数据库管理系统(当今商业应用中的主要系统)的方法学已经通过业界和学术界多年的检验。这种方法学分为两个阶段:
* 逻辑数据库设计阶段。在这个阶段,我们开发一个模型来描述所需要的内容,并忽略实现的细节。
* 物理数据库设计阶段。在这个阶段,我们确定如何在目标数据库管理系统(DBMS)实现这些需求,如Microsoft Access、Microsoft SQL Server、Oracle、DB2和Informix。
我们为每个阶段都提供了易学的步骤,缺乏经验的设计者可以按照所提供的步骤进行学习。此外,一些指导方针也可以用于完成这个学习过程。对于经验丰富的设计者,这种方法学更多地成为了一种框架或者检查列表,而其说明性则极少。
帮助理解数据库的设计
为了帮助读者应用方法学、理解重要的问题,我们提供了一个综合的工作示例,该示例是基于一家称为StayHome的录像出租公司,这个示例将贯穿本书始终。为更完善地补充方法学,我们在第17章和第18章中选取了另外一个名为Perfect Pets的宠物诊所作为示例。
为了帮助读者理解得更加深入,我们在附录E增加了数据库的解决方案(相应的SQL脚本包含在相应的Web站点上)。每个方案都有一个简短的介绍,读者可以参照这个介绍,在阅读样例之前试着自己进行数据库的设计。
常见的数据模型
在提供数据库设计经验的同时,附录E还提供了许多常见的且有用的数据模型。实际上,据统计约有1/3的数据模型包含了适用于大多数公司的公共结构,而其余的2/3则用于特殊产业或者特殊单位。因此,大多数数据库设计工作包含了重建那些被其他公司创建了多次的结构。这些具有特征性的模型也许并不能完全地满足你的公司的需求,但是,它们可以作为开发的起点,在此基础上,你可以建立更适合本公司特殊需要的模型。我们所提供的模型覆盖了以下的常见业务领域:
* 消费者订购。
* 库存控制。
* 资产管理。
* 项目管理。
* 课程管理。
* 人力资源管理。
* 工资管理。
统一建模语言
越来越多的公司正在采用标准化的方法。使用标准化的方法,他们可以选择一种特定的方法进行数据建模,并将这种方法贯穿于数据库开发过程的始终。本书采用一种常用于逻辑数据库设计的高级数据模型,这种模型是建立在实体-关系(ER)概念上的模型。目前,ER模型没有标准的表示法。大多数书籍在提及关系数据库管理系统(DBMS)的数据库设计时会用到以下两种传统的表示法之一:
* Chen氏表示法,它由代表实体的矩形和代表关系的菱形以及连接矩形和菱形的连线组成。
* Crow的Feet(标注)表示法,它由代表实体的矩形以及代表实体间关系的连线组成。连线一端的标注代表一对多的关系。
当今的CASE工具能很好地支持这两种表示法。但是,它们应用起来比较麻烦而且难以解释。在本书中,我们采用最新的面向对象建模语言中的类图表示法,这种建模语言称为UML(Unified Modeling Language,统一建模语言)。UML表示法结合了三种主要的面向对象设计的要素:Rumbaugh的OMT建模,Booch的面向对象分析和设计以及Jacobson的对象论。可以预计,UML将会成为一种标准,而且对象管理组(OMG)已经采用了UML作为对象方法的标准表示法。
我们相信这种表示法更易于理解和使用。
第2版新增内容
本书第2版对第1版进行了修订,增加了可读性,更新或扩展了现有的一些内容,并引入了一些新的内容。第2版中主要的变化包括:
* 新增一章介绍SQL(Structured Query Language,结构化查询语言)和QBE(Query-by-Example)。SQL和QBE是关系DBMS中最主要的两种语言。
* 新增一章介绍数据库管理和安全性。
* 改进了数据库涉及方法学。特别的,将用户视图从逻辑数据库设计中移到了附录中,以保持基本的方法学的简单性。
* 新增一章介绍数据库发展的趋势,讨论了高级数据库应用的需求以及为什么目前的关系数据库系统不能很好地适应这些需求,然后介绍了分布式数据库管理系统、数据复制、面向对象数据库管理系统、对象-关系数据库管理系统、数据仓库、联机分析处理(OLAP)和数据挖掘的概念,以及将数据库集成到Web环境中的方法。
* 在大多数章的最后通过提出一些问题对本章内容进行回顾,并在本书网站中提供一些回顾问题、练习、测试问题、幻灯片、数据库和附录E中常见数据模型的SQL脚本。
说明怎样执行一个设计
我们认为说明怎样将数据库设计转换为物理实现是非常重要的。在本书中,我们说明了如何用Microsoft Access 2002 DBMS实现第一个示例(名为StayHome的录像租借公司),第二个示例(名为Perfect Pets的宠物诊所)说明了如何在Oracle 9i DBMS中实现数据库设计。
本书的读者对象
哪些人应该阅读本书?我们试图以独立的方式编写这本书,但物理数据库设计是个例外,因为在这一部分,你应该很好地理解目标数据库管理系统是怎样运转的。我们的读者就是那些希望开发数据库的人,包括如下但并非仅仅如下所示的一些人:
* 信息模型设计者和数据库设计者。
* 数据库应用设计者和实现者。
* 数据库制造商。
* 数据和数据库管理者。
* 信息系统,商业IT以及专门从事数据库设计的学者。
* 数据库专业的学生,包括大学生和研究生。
* 希望设计并开发数据库应用的人。
本书的结构
本书共有六个部分和五个附录:
* 第一部分—相关知识介绍。在第1章和第2章,我们介绍了数据库管理系统和关系模型。第3章提供了数据库应用生命周期的概述。在第4章提供了数据库系统开发生命周期的概述,在第5章讨论了数据库管理和安全性。
* 第二部分—数据库分析与设计技术。我们在第6章讨论了数据库分析技术,说明了怎样用其中的一些技术来分析录像租借公司StayHome的需求。在第7章说明了怎样用UML画实体-关系(ER)图。怎样应用规范化规则的内容将在第8章中阐述。ER模型和规范化都是第三部分描述的数据库设计方法学中非常重要的技术。
* 第三部分—逻辑数据库设计。我们用循序渐进的方式描述了逻辑数据库设计的方法。第1步在第9章描述,在这一步,我们为StayHome录像租借公司创建一个ER模型。第2步在第10章介绍,在这一步,我们将ER模型映射为数据库的表集。为支持更复杂的数据库设计,我们在第11章提出了与增强ER建模有关的主要概念,这一章同时描述了如何将这些概念映射到表中。
* 第四部分—物理数据库设计。我们依然用循序渐进的方式描述物理数据库设计的方法。第3步在第12章介绍,这里我们为目标DBMS设计一些基本表。第4步在第13章介绍,这里我们选择文件的组织和索引。在第14章介绍第5步和第6步,我们考虑用户视图的设计以及安全性机制的设计,以防止数据被未授权访问。在第15章介绍步骤7,我们描述了如何引入受控的数据冗余以获得更好的数据库性能。最后,在第16章介绍第8步,我们监视并调整操作系统。正如我们刚刚提到的,我们将告诉你如何在Microsoft Access 2002中完成StayHome数据库系统的设计。
* 第五部分—第二个实例。第二个宠物诊所示例贯穿于第17章和第18章。我们将说明怎样在Oracle 9i中实现Perfect Pets 数据库的设计。
* 第六部分—当前和今后的一些发展趋势。在第19章,我们讨论了高级数据库应用的需求,以及为什么目前的关系数据库系统不能很好地适应这些需求,然后我们介绍了分布式数据库管理系统(DDBMS)、数据复制、面向对象数据库管理系统(OODBMS)、对象-关系数据库管理系统(ORDBMS)、数据仓库、联机分析处理(OLAP)和数据挖掘的概念,以及将数据库集成到Web环境中的方法。
* 附录。附录A说明了两种主要的ER表示法:Chen氏表示法和Crow的Feet表示法。附录B提供了方法学的总结以供参考。附录C提出了对基本逻辑数据库设计方法的扩展,这主要用于使用视图集成方法管理的有多个用户视图的数据库系统。附录D提供了一些文件组织和存储结构的背景知识,这主要用于帮助读者理解在第三部分提出的物理数据库设计方法学的一些概念。附录E提供了15个常见的数据模型。
教学风格
为使本书尽可能易读,我们采用了下述风格和结构:
* 在每章的开始都对本章目标有一个简单而清晰的描述。
* 在每章结束的小结部分,总结本章介绍的主要知识点。
* 在大多数章的最后有复习题。
* 所介绍的每个重要概念都有清晰的定义,并放置在一个定义框中。
* 一系列的注意和提示信息。
* 本书使用了大量的图来阐述和说明概念。
* 实践性很强。每一章都包含许多实用的例子来说明所包含的观点。
* 本书最后的术语表对于快速查找是非常有用的。
相应的教师指南和站点
根据Pearson Education的要求,读者可从网站上获得关于本书的一个全面的补充,其中包含大量的指导性的资源。附加的教师指南包括:
* 讲授建议。其中包括授课建议、授课提示,以及利用每章内容的学生项目思想。
* 解决方案。提供了所有复习题的答案示例。
* 测试题。测试题(类似于每一章最后的复习题)以及解决方案。
* 幻灯片(使用PowerPoint创建)。包含每一章的主要知识点、放大的图解、书中的表,以帮助教师授课并就本书的内容进行课堂讨论。
* StayHome数据库系统在Microsoft Access 2002中的实现。
* 创建PerfectPets数据库系统的SQL脚本,这个脚本可用于在许多关系DBMS中创建数据库,包括Oracle、Informix和SQL Server。
* 所有在附录E中定义的常用数据模型的SQL脚本,这些脚本可用来创建数据库系统的基本表集合。再强调一次,这些脚本可在许多关系DBMS中使用。
关于教师指南和本书可以在Pearson Education站点上找到,Pearson Education的网址是:
http://www.booksites.net/connbegg。
修正与建议
由于此类型的书籍难免存在错误,因此你的指正对本书以后的再版很重要。请把意见、改正和有建设性的建议发邮件至:thomas.connolly@paisley.ac.uk。
感谢
本书是作者在行业、研究、理论领域工作多年的成果,因此很难将那些直接或间接帮助过我们的人全部列出来。很多思想可能是在无意识的时候出现的,但一定是有意识的努力的结果。对于这些我们可能忽略了的人,我们在此表示歉意。但特别的感谢和特别的歉意首先必须送给我们的家人,因为在我们写书期间,他们一直被我们忽视、忽略。
我们首先要感谢Kate Brewin—我们的编辑,以及Mary Lince—我们的案头编辑,我们同时要感谢本书的审校者,他们提出了很多的评论、建议和意见。特别地,我们要提一下Stuart Anderson和Andy Osborn,他们对第1版进行了审校;Aurelie Bechina和Nick Measor,他们对第2版进行了审校;Willie Favero对两版都进行了审校。
我们还应该感谢我们的秘书Lyndonne MacLeod和June Blackburn,感谢他们这几年的帮助和支持。
Thomas M.Connolly
Carolyn E.Begg
Glasgow, May 2003