数据库系统概念(原书第5版)
作者 : Abraham Silberschatz Henry F.Korth S.Sudarshan
译者 : 杨冬青 马秀莉 唐世渭
丛书名 : 计算机科学丛书
出版日期 : 2006-10-15
ISBN : 7-111-19687-2
定价 : 70.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 775
开本 : 16开
原书名 : Database Systems Concepts, Fifth Edition
原出版社: MH
属性分类: 教材
包含CD :
绝版 :
图书简介

本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书以前版本的中文版作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。

本书调整和新增内容:
  ●调整了第4版的讲授顺序。首先介绍SQL及其高级特性,使学生容易接受数据库设计的概念。
  ●新增数据库设计的专门讨论。
  ●彻底改写和更新了基于对象的数据库和XML的相关内容。
  ●重新组织数据挖掘和信息检索的内容,增加了对数据库系统PostgreSQL的实例研究。

本书特点:
  ●综合全面。涵盖了数据模型、关系模型、基于对象的数据库和XML、数据存储和查询、事务管理、数据库系统体系结构等方面的内容。
  ●直观易懂。采用直观的方式描述概念,以结构清晰的图示和示例代替形式化的证明。
  ●实用性强。以银行数据库实例生动地解释重要概念,通俗易懂。
  ●内容新颖。反映了数据库在设计、管理和使用方式等方面的变化及数据库概念方面的发展趋势。
  ●深入研究实例。提供四个领先的数据库系统PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server的实例研究。

图书特色

图书前言

数据库管理已经从一种专门的计算机应用发展为现代计算环境中的一个重要组成部分,因此,有关数据库系统的知识已成为计算机科学教育中的一个核心的部分。在本书中,我们讲述数据库管理的基本概念,这些概念涉及数据库设计、数据库语言、数据库系统实现等多个方面。
  本书可作为本科生三年级或四年级数据库入门课程的教科书,也可作为研究生一年级的教科书。本书不仅可以作为入门课程的基本教材,还可作为课程补充性或高级课程介绍性材料。
  我们仅要求读者熟悉基本的数据结构、计算机组织结构和一种高级程序设计语言,例如Java、C或Pascal。书中的概念都以直观的方式描述,其中许多概念都基于银行运营的例子加以阐释。本书包括重要的理论结果,但省略了形式化证明,取而代之的是用图表和例子来说明为什么结论是正确的。对于形式化描述和研究结果的证明,读者可以参考文献注解中列出的研究论文和高级教材。
  本书中所包括的基本概念和算法通常都基于当今的商品化或试验性数据库系统中所采用的概念和算法。我们的目标是在一个通用环境下描述这些概念和算法,没有与某个特定的数据库系统绑定。特定的数据库系统的细节将在第九部分“实例研究”中讨论。
  在本书第5版中,我们保持了前面版本的总体风格,同时扩展了前几版的内容和结构来反映数据库设计、管理和使用的方式所发生的变化。我们还考虑了数据库概念的教学方面的趋势,并在适当的地方做出了推动这种趋势的修改。在详细描述本书的内容之前,我们先重点谈谈第5版中增加的一些特性。
  较早介绍了SQL。许多讲课教师使用SQL作为课程项目的核心成分。为了给学生充足的时间做课程项目,尤其对于那些四学期制的大学和学院来说,尽早教授SQL非常重要。有了这个认识,我们在内容组织方面做了几个改动:
  1.把对实体-联系模型的介绍推迟到第二部分“数据库设计”中介绍。
  2.通过把关系演算推迟到第5章介绍,同时在第2章中保留对关系代数的介绍,使对关系模型的介绍更加自然流畅。
  3.较早用两章专门介绍SQL。第3章涵盖了SQL的基本特性,包括数据定义和操纵。第4章涵盖了一些高级特性,包括完整性约束、动态SQL和过程化结构。这章新的内容包括对JDBC介绍的扩展、SQL中的过程化结构、SQL中的递归以及SQL:2003中的新特性。这章还包括对授权机制的概要介绍;对授权机制的详细介绍推迟到第8章进行。
  这些改动使得学生在课程早期就可以开始写SQL查询,并且开始熟悉数据库系统的使用。这也可以使学生形成对数据库设计的直观印象,从而有利于本书第二部分关于设计方法学的教学。我们发现按这种组织结构讲解,学生更容易接受数据库设计的概念。
  新的部分(第二部分)专门讨论数据库设计。本书的第二部分包括三章内容,都致力于讨论数据库设计和数据库应用。其中第6章讨论实体-联系模型,该章包括了所有来自第4版相应章节(第2章)的材料,并做了一些重要的更新。我们还在第6章概要介绍了数据库设计的过程。愿意以EˉR模型作为课程开始的教师可以从这章开始,这样也不会丢失连贯性,因为我们已经力求避免对任何较前章节的依赖(除第1章外)。
  第7章是关于关系设计的,包括了第4版第7章中涵盖的材料,不过是以一种全新的、更可读的方式进行介绍。在介绍用函数依赖、多值依赖和规范化进行设计的正式方法之前,我们先用来自EˉR模型的设计概念来建立对整个关系设计问题的直观概览。这章还包括了新的一节,主要讲述当前数据库设计的一些问题。
  第二部分第8章是全新的一章,该章描述了数据库应用的设计和开发,包括Web应用、servlet、JSP、触发器以及一些安全问题。为了与日益增加的软件保护需要同步,关于安全问题的介绍比第4版扩展了很多。
  彻底改写和更新了基于对象的数据库和XML的相关内容。第三部分第9章关于对象数据库的讨论做了大量修改,该章重点讲解SQL的对象-关系特性,取代了第4版中用两章分别讨论面向对象数据库和对象-关系数据库。该章没有介绍学生比较熟悉的关于面向对象的介绍性材料,也没有介绍现已废止的ODMG标准的语法细节。然而,关于面向对象数据库的一些重要概念都保留了,包括关于在Java中增加持久性的JDO标准的材料。
  第三部分还包括了关于XML数据设计和查询的一章(第10章),这是从第4版的对应章彻底改写得来的。这一章包括对XML Schema和XQuery的更深入的描述,以及对SQL/XML标准的介绍,并给出了包括Web服务在内的更多的XML应用实例。
  重新组织了数据挖掘和信息检索的内容。数据挖掘和联机分析处理是目前核心的数据库应用———已经不再仅仅是“高级主题”了。因此,我们把这些主题的内容组织到新的部分———第六部分,其中包括关于数据挖掘与分析的一章,以及关于信息检索的一章。
  实例研究部分涵盖了PostgreSQL。PostgreSQL是近年来非常受欢迎的开源数据库系统。除了作为可以在其上建立数据库应用的平台以外,在强调数据库内核的课程中,PostˉgreSQL的源代码还可以用于研究和扩展。因此第九部分增加了关于PostgreSQL的实例研究,第4版中的三个实例研究(Oracle、IBM DB2以及Microsoft SQL Server)还保留,但进行了更新,以反映各个软件的最新版本。
  上面没有列出的内容,包括事务处理(并发与恢复)、存储结构、查询处理以及分布式和并行数据库也都分别对第4版中的相应内容进行了更新,尽管它们的整体结构大体上没有变化。对第5章关于QBE的内容进行了修改,删除了与任何实际应用都不对应的聚集和更新的语法细节,但保留了QBE的核心概念。
本书的组织
   本书组织成九个主要部分,以及三个附录(本书附录是在线内容,没有包含在纸质印刷版中。———编者注):
  引言(第1章)。第1章对数据库系统的性质和目标进行了一般性综述。解释了数据库系统的概念是如何发展的,各数据库系统的共同特性是什么,数据库系统能为用户做什么,以及数据库系统如何与操作系统交互。这一章还引入了一个数据库应用的例子:由多个分行组成的一个银行企业。这个例子用作贯穿全书的运行实例。
  第一部分:关系数据库(第2章至第5章)。第2章介绍了数据的关系模型,包括基本概念以及关系代数。该章还给出了对完整性约束的简要介绍。第3章和第4章重点介绍最具影响力的面向用户的关系语言———SQL。第3章给出了对SQL的基本介绍,而第4章则描述了SQL的一些更高级的特性,包括编程语言和支持SQL的数据库之间如何接口。第5章介绍其他的一些关系语言,包括关系演算、QBE和Datalog。
  这部分描述了数据操纵,包括查询、修改、插入和删除(假设已有一个模式设计)。关于模式设计的问题延迟到第二部分讲述。
  第二部分:数据库设计(第6章至第8章)。第6章给出了数据库设计过程的概要介绍,主要侧重于用实体-联系数据模型来进行数据库设计。实体-联系模型为数据库设计问题以及在数据模型的约束下捕获现实应用的语义时所遇到的问题提供了一个高层视图。UML类图表示也在这章讲述。
  第7章介绍了关系数据库设计理论。这章讲述函数依赖和规范化,重点强调提出各种范式的原因,以及它们的直观含义。这章以关系设计的概览开始,依赖于对函数依赖的逻辑蕴涵的直观理解。在完整描述函数依赖理论之前先介绍了规范化概念,函数依赖理论在第7章稍后部分讨论。教师可以只选用7.1节至7.3节这些较前面的章节,而不会丢失连贯性。不过,完整地讲授这一章将有利于学生对规范化概念形成较好的理解,从而诱导出函数依赖理论中一些较艰深的概念。
  第8章讲述了应用设计和开发。这章侧重于用基于Web的界面构建数据库应用。另外,这章还讲述了应用安全性。
  第三部分:基于对象的数据库和XML(第9章和第10章)。第9章介绍基于对象的数据库。该章讲述了对象-关系数据模型,该模型扩展了关系数据模型以支持复杂数据类型、类型继承和对象标识。该章还描述了用面向对象的编程语言来访问数据库。
  第10章介绍数据表示的XML标准,它正日益广泛地应用于复杂数据交换和存储。这一章还描述了XML的查询语言。
  第四部分:数据存储和查询(第11章至第14章)。第11章讨论磁盘、文件和文件系统结构。第12章介绍多种数据存取技术,包括散列和B + 树索引。第13章和第14章阐述查询执行算法和查询优化。这两章使用户能更好地理解数据库的存储和检索的内部机制。
  第五部分:事务管理(第15章至第17章)。第15章着重介绍事务处理系统的基本概念,包括事务的原子性、一致性、孤立性和持久性,以及可串行化概念。
  第16章重点讲述并发控制,并介绍了保证可串行化的几种技术,包括封锁、时间戳和乐观(有效性检查)技术。在这一章中还讨论了死锁问题。
  第17章讨论了在系统崩溃和磁盘故障情况下保证事务正确执行的主要技术。这些技术包括日志、检查点和数据库转储。
  第六部分:数据挖掘与信息检索(第18章和第19章)。第18章介绍了数据仓库的概念以及解释了什么是数据挖掘和联机分析处理(OLAP),包括SQL:1999中对数据挖掘和数据仓库的支持。第19章描述了用于查询文本数据的信息检索技术,包括在Web搜索引擎中使用的基于超链接的技术。
  第六部分使用了第一部分和第二部分的模型和语言概念,但并不依赖于第三部分、第四部分或第五部分。因此它可以很容易地被结合到侧重于SQL和数据库设计的课程上。
  第七部分:系统体系结构(第20章至第22章)。第20章介绍计算机系统体系结构,并描述了作为基础的计算机系统对于数据库系统的影响。在这一章讨论了集中式系统、客户-服务器系统、并行和分布式体系结构,以及网络类型。
  第21章探讨了各种并行技术,包括I/O并行、查询间并行和查询内并行以及操作间并行和操作内并行。这一章还讨论了并行系统设计。
  第22章讨论分布式数据库系统,在分布式数据库系统的环境下重新讨论数据库设计、事务管理、查询执行和优化问题。这一章还包括了故障时的系统可用性问题,并介绍了LDAP目录系统。
  第八部分:其他主题(第23章至第25章)。第23章讨论了性能评测标准、性能调整、标准化和遗产系统应用的转移。
  第24章讨论高级数据类型和新应用,包括时间数据、空间和地理数据、多媒体数据,以及移动式和个人数据库管理中的问题。
  最后,第25章讨论高级事务处理,包括事务处理监控器、事务工作流、电子商务、高性能事务系统、实时事务系统、长周期事务以及多数据库系统中的事务管理。
  第九部分:实例研究(第26章至第29章)。这一部分对四个领先的数据库系统进行实例研究,包括PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server。这几章中列举了上述每一种系统的独有特性,描述了它们的内部结构,提供了关于各个产品的丰富信息,帮助读者了解前面各部分描述的各种实现技术是如何使用到实际系统中的。这几章还包括了实际系统设计中的几个相关的方面。
  联机附录。虽然大多数新的数据库应用系统使用关系模型或面向对象模型,但网状的和层次的数据模型在一些遗产应用中也仍在使用。为了满足希望了解这些数据模型的读者的需要,我们给出了描述网状的和层次的数据模型的附录,分别为附录A和附录B。这两个附录只是联机提供(http://codex.cs.yale.edu/avi/dbˉbook/)。
  附录C描述了高级关系数据库设计,包括多值依赖理论、连接依赖、投影连接和域-码范式。这个附录是为希望更详细地研究关系数据库设计理论的读者以及希望在课程中这样做的教师准备的。这个附录同样只是联机提供。
第5版说明
   对于本书第5版的产生起指导作用的包括我们收到的关于前面几版的许多意见和建议,我们在耶鲁大学、利哈依大学、孟买印度理工学院讲授本课程的体会,以及我们对于数据库技术发展方向的分析。
  我们基本上是重写每一章,将较旧的内容修改为最新的内容,添加关于数据库技术当前进展的讨论,并改进学生难于理解的内容描述。现在每一章都有一个术语回顾,它可以帮助读者温习该章讨论的关键话题。我们还在大多数章后面增加了“工具”小节,提供与该章内容有关的软件工具的信息。我们还增加了新的练习以及更新了参考文献。
  在第5版中我们把习题划分成两部分:实践习题和习题。实践习题的解决方案在本书的网页可以公开得到。我们鼓励学生独立解决这些实践习题,然后用网页上的解决方案来检查自己的答案。其他习题的解决方案只有讲课教师能得到(参见下面的“教师注意事项”)。
  教师注意事项
   本书包括基本内容和高级内容,在一个学期内也许不能讲授所有这些内容。以“ ˇˇ ”符号标记的节为高级内容,如果愿意的话可以省略这些节,略过这些节也能保持内容的连续性。较难的习题(可以忽略)同样用符号“ ˇˇ ”标记了出来。
  可以用本书各章的不同子集来设计课程。以下列出一些推荐的安排:
  对于介绍性的课程,第4章的4.6节以后的章节可以忽略。
  如果学生在本课程中不使用关系演算、QBE或Datalog,可以不讲第5章。
  对于入门性课程来说,可以不讲第9章、第10章(XML)和第14章。
  我们对事务处理的讨论(第15章至第17章)和对数据库系统体系结构的讨论(第20章至第22章)都包括一章综述(分别为第15章和第20章)和后续的两章详细讨论。如果你计划把后续的详细讨论推迟到高级课程中去讲授,可以选择使用第15章和第20章,省略第16、17、21和22章。
  第18章和第19章涵盖了数据挖掘和信息检索,它们可以作为自学材料或从介绍性课程中删去。
  第23章至第25章更适合于高级课程,或学生自学。
  第26章至第29章的实例研究适合学生自学。
  Web主页和教学补充材料
   本书的WWW主页的网址是:
  http://codex.cs.yale.edu/avi/dbˉbook/
  该主页包括以下内容:
  本书所有各章的幻灯片
  实践习题的答案
  实验材料
  三个附录
  最新勘误表
  本书用户贡献的补充材料
  下列附加材料只对教师提供:
  包括书中所有习题的答案的教师手册包括额外习题的习题库
  关于如何得到教师手册的进一步信息,请发电子邮件到customer.service@mcgrawˉhill.com(国内教师请联系麦格劳-希尔教育出版公司教师服务中心(北京),联系方式见书后插页。———编者注)。在美国可以打电话800ˉ338ˉ3987。McGrawˉHill关于本书的网页是http://www.mhhe.com/engcs/compsci/silberschatz-bridge/index.mhtml。
与我们和其他读者联系
   我们已尽了最大的努力来避免在本书中出现排版错误、内容失误等。然而,与发布新软件类似,错误在所难免。在本书的WWW主页中有一个最新勘误表。如果你能指出尚未包含在最新勘误表中的本书的疏漏之处,我们将十分感激。
  我们很高兴能收到你对改进本书的建议,我们也很欢迎在本书主页上提供以下内容:例如程序设计练习、课程实习建议、联机实验室、个别指导以及讲课要点等,这些内容都能对其他读者很有帮助。
  请将电子邮件发到dbˉbook@cs.yale.edu。其他来信请寄到Avi Silberschatz,Department of Computer Science,Yale University,51Prospect Street,P.O.Box208285,NewHaven,CT06520ˉ8285USA。
   致谢
  使用本书前4版的大量学生提供了很多有用的意见,对于我们形成第5版帮助很大。此外,许多人口头或书面地与我们关于此书交换过意见,对本书提出过建议和评论。在此我们不可能一一列出,我们谨对下列人员致以特别的感谢:
  DePaul University的Hani AbuˉSalem,Grand Valley State University的Jamel R.Alsabbagh,Notre Dame University的Ramzi Bualuan,Omaha的University of Nebraska的Zhengxin Chen,SUNY Buffalo University的Jan Chomick,Harrisburg的Penn State Unive
rsity的Qin Ding,McMaster University的Frantisek Franek,Drexel University的Randy M.Kaplan,Uniˉversity of Central Florida的Mark Llewellyn,Western Illinois University的Marty Maskarinec,Brigham Young University的Yiu Kai Dennis Ng,Purdue University的Sunil Prabhakar,Old Dominion University的Stewart Shen,Foothill College的Anita Whitehall,University of Oreˉgon的Christopher Wilson,San Antonio的University of Texas的Weining Zhang,他们是本书的审阅者。他们的意见对于我们形成第5版帮助很大。
  Anastassia Ailamaki,Sailesh Krishnamurthy,Spiros Papadimitriou和Bianca Schroeder(Carnegie Mellon University),感谢他们编写了描述PostgreSQL数据库系统的内容。
  Oracle的Hakan Jakobsson,感谢他编写的关于Oracle数据库系统的内容。
  IBM的Sriram Padmanabhan,感谢他编写的关于IBM DB2数据库系统的内容。
  Microsoft的Sameet Agarwal,Jos A.Blakeley,Thierry D’Hers,Gerald Hinson,Dirk Myers,Vaqar Pirzada,Bill Ramos,Balaji Rathakrishnan,Michael Rys,Florian Waas和Michael Zwillˉing,感谢他们编写的关于Microsoft SQL Server数据库系统的内容。Jos Blakeley,感谢他还参与了第29章的调整和编辑。感谢Microsoft的C sar GalindoˉLegaria,Goetz Graefe,Kalen Delaney和Thomas Casey在前面版本编写关于Microsoft SQL Server的章节的贡献。
  Chen Li和Sharad Mehrotra,感谢他们给出关于JDBC和安全性的材料,这些材料对第8章的更新和扩展帮助很大。
  Valentin Dinu,Goetz Graefe,Bruce Hillyer,Chad Hogg,Nahid Rahman,Patrick Schmid,Jeff Storey,Prem Thomas,Liu Zhenming和N.L.Sarda,他们的反馈有助于我们准备第5版。
  Rami Khouri,Nahid Rahman和Michael Rys,感谢他们对本书第5版草稿的反馈。
  Raj Ashar,Janek Bogucki,Gavin M.Bierman,Christian Breimann,Tom Chappell,Y.C.Chin,Laurens Damen,Prasanna Dhandapani,Arvind Hulgeri,Zheng Jiaping,Graham J.L.Kemp,Hae Choon Lee,SangˉWon Lee,ThanhˉDuy Nguyen,D.B.Phatak,Juan Altˉmayer Pizzorno,Rajarshi Rakshit,Greg Riccardi,N.L.Sarda,Max Smolens,Nihil Sethi和Tim Wahls感谢他们指出第5版中的错误。
  Marilyn Turnamian,她做了很好的秘书工作,对于第5版的按时完成起了至关重要的作用。
  本书的出版人是Betsy Jones。主编是Kelly Lowery。项目编辑是Melinda D.Bilecki。项目经理是Peggy Selle。执行营销经理是Michael Weitz。营销经理是Dawn Bercier。封面图案绘制和封面设计是JoAnne Schopler。文字编辑是George Watson。校对是Judy Gantenbein。设计者是Laurie Janssen。索引制作者是Tobiah Waldron。
  本书的这一版是基于前4版写成的,我们再一次感谢帮助我们完成前4版的人们,包括R.B.Abhyankar,Don Batory,Phil Bernhard,Haran Boral,Paul Bourgeois,Phil Bohannon,Robert Brazile,Yuri Breitbart,Michael Carey,Soumen Chakrabarti,J.Edwards,Christos Faloutsos,Homma Farian,Alan Fekete,Shashi Gadia,Jim Gray,Le Gruenwald,Eitan M.Gurari,Ron Hitchens,Yannis Ioannidis,HyoungˉJoo Kim,Won Kim,Henry Korth(Henry F的父亲),Carol Kroll,Gary Lindˉstrom,Irwin Levinstein,Ling Liu,Dave Maier,Keith Marzullo,Fletcher Mattox,Sharad Mehrotra,Jim Melton,Alberto Mendelzon,Hector GarciaˉMolina,Ami Motro,Bhagirath Narahari,AnilNigam,Cyril Orji,Meral Ozsoyoglu,Bruce Porter,Jim Peterson,K.V.Raghavan,Krithi Ramamritham,Mike Reiter,Odinaldo Rodriguez,Mark Roth,Marek Rusinkiewic
z,Sunita Sarawagi,N.L.Sarda,S.Seshadri,Shashi Shekhar,Amit Sheth,Nandit Soparkar,Greg Speegle,Dilys Thomas和Marianne Winslett。
  Marilyn Turnamian和Nandprasad Joshi为第4版担任秘书工作,Marilyn还为第4版的封面设计准备了一份早期草稿。Lyn Dupr 编辑了第3版原稿,Sara Strandtman编辑了第3版的文字。Nilesh Dalvi,Sumit Sanghai,Gaurav Bhalotia,Arvind Hulgeri K.V.Raghavan,Prateek Kapadia,Sara Strandtman,Greg Speegle和Dawn Bezviner帮助我们准备前面几版的讲课教师参考手册。新的封面是前面四版封面的演进,最先向我们建议用船作为封面概念的一部分的是Bruce Stephan。
  最后,Sudarshan感谢他的妻子Sita的爱和支持,感谢他的儿子Madhur的爱。Hank感谢他的妻子Joan,孩子Abby和Joe的爱和理解。Avi感谢Valerie在本书修订期间的耐心和支持。
A.S.
H.F.K.
S.S.

封底文字

本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书以前版本的中文版作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。 本书调整和新增内容: 调整了第4版的讲授顺序。首先介绍SQL及其高级特性,使学生容易接受数据库设计的概念。 新增数据库设计的专门讨论。 彻底改写和更新了基于对象的数据库和XML的相关内容。 重新组织数据挖掘和信息检索的内容,增加了对数据库系统PostgreSQL的实例研究。 本书特点: 综合全面。涵盖了数据模型、关系模型、基于对象的数据库和XML、数据存储和查询、事务管理、数据库系统体系结构等方面的内容。 直观易懂。采用直观的方式描述概念,以结构清晰的图示和示例代替形式化的证明。 实用性强。以银行数据库实例生动地解释重要概念,通俗易懂。 内容新颖。反映了数据库在设计、管理和使用方式等方面的变化及数据库概念方面的发展趋势。 深入研究实例。提供四个领先的数据库系统PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server的实例研究。

作者简介

Abraham Silberschatz Henry F.Korth S.Sudarshan:Abraham Silberschatz: 在纽约州立大学石溪分校获得博士学位,现任新泽西州Murray Hill贝尔实验室信息科学研究中心副主席,ACM和额IEEE会员。他的研究方向包括操作系统、数据库和分布式操作系统。著有《操作系统概念》、《数据库系统概念》等。
Henry F.Korth: 于普林斯顿大学获得博士学位,现为美国里海大学教授,曾任贝尔实验室信息科学研究中心数据库原理研究室主任,ACM会员和IEEE高级成员。他的研究方向包括高性能数据库系统、实时数据库系统和XML数据库。
S.Sudarshan: 于威斯康星大学麦迪逊分校获得博士学位,现任印度理工学院(孟买)计算机科学与工程系副教授。他曾是AT&T贝尔实验室的技术人员。他的研究方向包括查询处理和优化、故障恢复和主存数据库。

译者简介

杨冬青 马秀莉 唐世渭:杨冬青: 1969年毕业于北京大学数学力学系数学专业,现任北京大学信息科学技术学院教授,博士生导师,网络与信息系统研究所副所长,数据库与信息系统研究室主任,中国计算机学会数据库专委会委员。多年来承担并完成973、863国家科技攻关、国家自然科学基金等多项国家重点科研项目;曾获国家科技进步二等奖、三等奖和多项省部级奖励;在国内外科技杂志及会议上发表论文百余篇,著译作十余部。目前的主要研究方向为数据库系统实现技术、Web环境下的信息集成与共享、数据仓库和数据挖掘、典型应用领域的数据库技术等。
马秀莉: 博士,1972年出生,2003年毕业于北京大学信息科学技术学院,获理学博士学位。先后参加过多项国家自然科学基金项目、国家重点基础研究发展规划(973)课题等科研项目及典型应用领域的应用研究项目;在国内外科技杂志及国际会议发表论文近20篇。主要研究领域为数据库系统实现技术、数据仓库、联机分析处理、数据挖掘等。
唐世渭: 1964年毕业于北京大学数学力学系计算数学专业,毕业后留校任教至今,现为北京大学信息科学技术学院教授,博士生导师,中国计算机学会数据库专委会副主任。多年来承担并完成973、863国家科技攻关、国家自然科学基金等多项国家重点科研项目;曾获国家科技进步二等奖、三等奖各1项;省部级科技进步奖多项;在国内外科技杂志及会议上发表论文百余篇,著译作多部。至今已培养硕士、博士、博士后60余名。目前,主要的研究方向为数据库系统、数据仓库和数据挖掘、Web环境下的信息集成与共享、典型应用领域的信息系统等

译者序

数据库系统是对数据进行存储、管理、处理和维护的软件系统,是现代计算环境中的一个核心成分。随着计算机硬件、软件技术的飞速发展和计算机系统在各行各业的广泛应用,数据库技术的发展尤其迅速,引人注目。有关数据库系统的理论和技术是计算机科学技术教育中必不可少的部分。《数据库系统概念》是一本经典的、备受赞扬的数据库系统教科书。其内容由浅入深,既包含数据库系统的基本概念、又反映数据库技术的新进展。本书被国际上许多著名大学所采用,并多次再版。
  我们先后将本书的第3版和第4版译成中文,由机械工业出版社分别于2000年初和2003年初出版发行。国内许多大学采用《数据库系统概念》作为本科生和研究生数据库课程的教材或主要教学参考书,收到了良好的效果。现在,我们又翻译了该书第5版。第5版保持了前几版的总体风格,同时,对内容进行了扩充,对结构进行了调整,以更好地符合数据库教学的需求,反映数据库设计、管理和使用方式的发展和变化。第5版的内容大体上可以分为四个部分。
  第1~10章讲述数据库系统的基本概念,包括对数据库系统的性质和目标的综述,对关系数据模型和关系语言的介绍,对数据库设计过程、关系数据库理论以及数据库应用设计和开发(包括Web应用和安全问题等)的详细讨论。这一部分还介绍了新型的数据库系统———对象-关系数据库,以及XML数据库设计和查询的相关内容,包括对XML Schema和XQuery更深入的描述,以及SQL/XML标准的介绍。
  第11~22章主要讨论数据库系统实现技术和数据管理与应用的深入话题,包括数据存储结构、数据存取技术、查询优化方法、事务处理系统的基本概念和并发控制、故障恢复技术;还包括在并行数据库系统和分布式数据库系统中所采用的一些主要策略和技术。这一部分还包括了对数据挖掘、联机分析处理和信息检索的较详细的介绍。
  第23~25章是一些高级话题,主要包括数据库性能调整和性能测试标准、遗产系统应用的转移、时间数据、空间和地理数据、多媒体数据、移动式和个人数据库管理等高级数据类型和新应用,以及事务处理监控器、事务工作流、电子商务、高性能事务系统、实时事务系统、长周期事务及多数据库系统中的事务管理等高级事务处理问题。
  第26~29章对PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server四个数据库系统进行实例研究,结合这几个具体系统来讨论前面各部分描述的各种实现技术是如何使用到实际系统中的。
  授课老师可根据需要适当裁剪前三部分内容作为本科数据库概论课程的教材或主要参考资料,或用于研究生的数据库课程教学,第四部分可作为帮助学生了解实际系统的补充材料。
  杨冬青、马秀莉、唐世渭组织并参加了本书的翻译和审校工作;参加翻译的还有陈冠华、帅猛、李双峰、李希婷、田枫、刘晓芳、周林宏、袁征、周沫等。
  限于译者水平,译文中疏漏和错误难免,欢迎批评指正。

译 者
2006年于北京大学

图书目录

第1章 引言 1
1.1 数据库系统的应用 1
1.2 数据库系统的目标 2
1.3 数据视图 3
1.3.1 数据抽象 4
1.3.2 实例和模式 5
1.3.3 数据模型 5
1.4 数据库语言 6
1.4.1 数据操纵语言 6
1.4.2 数据定义语言 6
1.5 关系数据库 7
1.5.1 表 7
1.5.2 数据操纵语言 8
1.5.3 数据定义语言 8
1.5.4 来自应用程序的数据库访问 9
1.6 数据库设计 9
1.6.1 设计过程 9
1.6.2 银行企业的数据库设计 10
1.6.3 实体-联系模型 10
1.6.4 规范化 11 
1.7 基于对象数据库和半结构化数据库 12
1.7.1 基于对象数据模型 12
1.7.2 半结构化数据模型 12
1.8 数据存储和查询 12
1.8.1 存储管理器 13
1.8.2 查询处理器 13
1.9 事务管理 13
1.10 数据挖掘与分析 14
1.11 数据库体系结构 15
1.12 数据库用户和管理员 17
1.12.1 数据库用户和用户界面 17
1.12.2 数据库管理员 17
1.13 数据库系统的历史 18
1.14 小结 19
术语回顾 20
实践习题 20
习题 20
文献注解 20
第一部分 关系数据库
第2章 关系模型 24
2.1 关系数据库的结构 24
2.1.1 基本结构 24
2.1.2 数据库模式 25
2.1.3 码 27
2.1.4 查询语言 28
2.2 关系代数基本运算 29
2.2.1 选择运算 29
2.2.2 投影运算 29
2.2.3 关系运算的组合 30
2.2.4 并运算 30
2.2.5 集合差运算 30
2.2.6 笛卡儿积运算 31
2.2.7 更名运算 33
2.2.8 关系代数的形式化定义 34
2.3 附加的关系代数运算 34
2.3.1 集合交运算 35
2.3.2 自然连接运算 35
2.3.3 除运算 36
2.3.4 赋值运算 37
2.4 扩展的关系代数运算 37
2.4.1 广义投影 38
2.4.2 聚集函数 38
2.4.3 外连接 39
2.5 空值 41
2.6 数据库的修改 42
2.6.1 删除 42
2.6.2 插入 42
2.6.3 更新 43
2.7 小结 43 
术语回顾 44
实践习题 44
习题 45
文献注解 46
第3章 SQL 47
3.1 背景 47
3.2 数据定义 48
3.2.1 基本域类型 48
3.2.2 SQL中的基本模式定义 48
3.3 SQL查询的基本结构 50
3.3.1 select子句 50
3.3.2 where子句 51
3.3.3 from子句 51
3.3.4 更名运算 52
3.3.5 元组变量 52
3.3.6 字符串运算 53
3.3.7 排列元组的显示次序 54
3.3.8 重复 54
3.4 集合运算 55
3.4.1 union运算 55
3.4.2 intersect运算 55
3.4.3 except运算 56
3.5 聚集函数 56
3.6 空值 58
3.7 嵌套子查询 59
3.7.1 集合成员资格 59
3.7.2 集合的比较 60
3.7.3 测试是否为空关系 60
3.7.4 测试是否存在重复元组 61
3.8 复杂查询 62
3.8.1 派生关系 62
3.8.2 with子句 62
3.9 视图 63
3.9.1 视图定义 64
3.9.2 用其他视图定义视图 65
3.10 数据库的修改 66
3.10.1 删除 66
3.10.2 插入 67
3.10.3 更新 68
3.10.4 视图的更新 69
3.10.5 事务 70
3.11 连接关系 ˇˇ 71
3.11.1 举例 71
3.11.2 连接类型和条件 72
3.12 小结 74
术语回顾 74
实践习题 75
习题 76
文献注解 77
第4章 高级SQL 79
4.1 SQL的数据类型与模式 79
4.1.1 SQL中内建的数据类型 79
4.1.2 用户定义类型 80
4.1.3 大对象类型 81
4.1.4 模式、目录与环境 81
4.2 完整性约束 82
4.2.1 单个关系上的约束 82
4.2.2 not null约束 82
4.2.3 unique约束 83
4.2.4 check子句 83
4.2.5 参照完整性 84
4.2.6 断言 86
4.3 授权 86
4.4 嵌入式SQL 87
4.5 动态SQL 90
4.5.1 ODBC 90
4.5.2 JDBC 92
4.6 函数和过程化结构 ˇˇ 95
4.6.1 SQL函数和过程 95
4.6.2 过程化结构 96
4.6.3 外部语言例程 98
4.7 递归查询 ˇˇ 99
4.7.1 使用迭代的传递闭包 99
4.7.2 SQL中的递归 100
4.8 高级SQL特性 ˇˇ 101
4.8.1 create table的扩展 102
4.8.2 关于子查询的更多内容 102
4.8.3 数据库更新的高级结构 103
4.9 小结 103
术语回顾 104
实践习题 104
习题 105
文献注解 106
第5章 其他关系语言 107
5.1 元组关系演算 107
5.1.1 查询的例子 107
5.1.2 形式化定义 109
5.1.3 表达式的安全性 109 
5.1.4 语言的表达能力 110
5.2 域关系演算 110
5.2.1 形式化定义 110
5.2.2 查询的例子 111
5.2.3 表达式的安全性 111
5.2.4 语言的表达能力 112
5.3 QBE 112
5.3.1 框架表 113
5.3.2 在单个关系上的查询 113
5.3.3 在多个关系上的查询 114
5.3.4 条件框 115
5.3.5 结果关系 116 
5.3.6 在Microsoft Access中的QBE 117
5.4 Datalog 118
5.4.1 基本结构 119
5.4.2 Datalog规则的语法 120
5.4.3 非递归Datalog的语义 121
5.4.4 安全性 122
5.4.5 Datalog中的关系运算 123
5.4.6 Datalog中的递归 124
5.4.7 递归的能力 125
5.5 小结 127
术语回顾 127
实践习题 127
习题 128
文献注解 129 
第二部分 数据库设计
第6章 数据库设计和EˉR模型 132
6.1 设计过程概览 132
6.1.1 设计阶段 132
6.1.2 设计选择 133
6.2 实体-联系模型 133
6.2.1 实体集 134
6.2.2 联系集 135
6.2.3 属性 137
6.3 约束 138
6.3.1 映射基数 138
6.3.2 码 139
6.3.3 参与约束 140
6.4 实体-联系图 140
6.5 实体-联系设计问题 144
6.5.1 用实体集还是用属性 144
6.5.2 用实体集还是用联系集 145 
6.5.3 二元联系集与n元联系集 146
6.5.4 联系属性的布局 147
6.6 弱实体集 147
6.7 扩展EˉR特性 149
6.7.1 特殊化 149
6.7.2 一般化 150
6.7.3 属性继承 151
6.7.4 一般化上的约束 151
6.7.5 聚集 153
6.7.6 可选择的EˉR符号 154
6.8 银行企业的数据库设计 155
6.8.1 EˉR设计的可选方案 155
6.8.2 银行数据库的数据需求 156
6.8.3 银行数据库中的实体集 156
6.8.4 银行数据库中的联系集 156
6.8.5 银行数据库中的EˉR图 157
6.9 转换为关系模式 158
6.9.1 强实体集的表示方式 158
6.9.2 弱实体集的表示方式 158
6.9.3 联系集的表示方式 159
6.9.4 复合属性和多值属性 160
6.9.5 一般化的表示方式 161
6.9.6 聚集的表示方式 161
6.9.7 银行企业的关系模式 162
6.10 数据库设计的其他方面 162 
6.10.1 数据约束和关系数据库设计 162
6.10.2 使用需求:查询和性能 163
6.10.3 授权需求 163
6.10.4 数据流、工作流 164
6.10.5 数据库设计的其他问题 164
6.11 统一建模语言UML ˇˇ 164
6.12 小结 166
术语回顾 167
实践习题 167
习题 169
文献注解 170
第7章 关系数据库设计 172
7.1 好的关系设计的特点 172
7.1.1 设计选择:更大的模式 172
7.1.2 设计选择:更小的模式 174 
7.2 原子域和第一范式 176
7.3 使用函数依赖的分解 176
7.3.1 码和函数依赖 177
7.3.2 BoyceˉCodd范式 178
7.3.3 BCNF和保持依赖 178
7.3.4 第三范式 180
7.3.5 更高的范式 182
7.4 函数依赖理论 182
7.4.1 函数依赖集的闭包 182
7.4.2 属性集的闭包 184
7.4.3 正则覆盖 185
7.4.4 无损分解 187
7.4.5 保持依赖 188
7.5 分解的算法 189
7.5.1 BCNF分解 189
7.5.2 3NF分解 191
7.5.3 BCNF和3NF的比较 192
7.6 使用多值依赖的分解 193
7.6.1 多值依赖 193
7.6.2 第四范式 194
7.6.3 4NF分解 195
7.7 更多的范式 196
7.8 数据库设计过程 196
7.8.1 EˉR模型和规范化 196
7.8.2 属性和联系的命名 197
7.8.3 为了性能解除规范化 198
7.8.4 其他设计问题 198
7.9 时态数据建模 198
7.10 小结 200
术语回顾 201
实践习题 201
习题 203
文献注解 203
第8章 应用设计和开发 205
8.1 用户界面和工具 205
8.1.1 表格和图形用户界面 205
8.1.2 报表生成器 206
8.2 数据库的Web界面 207
8.3 Web基础 208
8.3.1 统一资源定位符 208
8.3.2 超文本标记语言 208
8.3.3 客户端脚本和applet 209
8.3.4 Web服务器和会话 210
8.4 servlet和JSP 212
8.4.1 一个servlet的例子 212
8.4.2 servlet会话 213
8.4.3 servlet的生命周期 213
8.4.4 servlet支持 213
8.4.5 服务器端脚本 214
8.5 建立大型Web应用 215
8.5.1 构建Web界面 215
8.5.2 Microsoft ASP 215
8.5.3 提高应用程序性能 216
8.6 触发器 217
8.6.1 对触发器的需求 217
8.6.2 SQL中的触发器 218
8.6.3 何时不用触发器 220
8.7 SQL中的授权 221
8.7.1 权限的授予 221
8.7.2 在SQL中授权 222
8.7.3 角色 223
8.7.4 收回权限 224 
8.7.5 视图、函数和过程的授权 225
8.7.6 SQL授权的局限 225
8.7.7 审计追踪 226
8.8 应用系统安全性 226
8.8.1 加密技术 226
8.8.2 数据库中的加密支持 227
8.8.3 鉴定 228
8.8.4 保护应用程序 230
8.8.5 隐私 230
8.9 小结 231
术语回顾 232
实践习题 232
习题 233
项目建议 234
文献注解 235 
第三部分 基于对象的数据库和XML
第9章 基于对象的数据库 238
9.1 概述 238
9.2 复杂数据类型 238
9.3 SQL中的结构类型和继承 240
9.3.1 结构类型 240
9.3.2 类型继承 242
9.4 表继承 243
9.5 SQL中的数组和多重集合类型 244
9.5.1 创建和访问集合体值 245
9.5.2 查询以集合体为值的属性 245
9.5.3 嵌套和解除嵌套 246
9.6 对象标识和SQL中的引用类型 248
9.7 OˉR特性的实现 249
9.8 持久化程序设计语言 250
9.8.1 对象的持久化 251
9.8.2 对象标识和指针 251
9.8.3 持久对象的存储和访问 252
9.8.4 持久化C++系统 252
9.8.5 持久化Java系统 254
9.9 面向对象与对象-关系 255
9.10 小结 256
术语回顾 256
实践习题 257
习题 258
文献注解 259
第10章 XML 261
10.1 动机 261
10.2 XML数据的结构 263
10.3 XML文档模式 265
10.3.1 文档类型定义 266
10.3.2 XML Schema 268
10.4 查询和转换 270
10.4.1 XPath 270
10.4.2 XQuery 272
10.4.3 XSLT ˇˇ 276
10.5 XML应用程序接口 278
10.6 XML数据的存储 279
10.6.1 非关系的数据存储 279
10.6.2 关系数据库 279
10.6.3 SQL/XML 281
10.7 XML应用 283
10.7.1 存储复杂结构的数据 283
10.7.2 标准化数据交换格式 283
10.7.3 Web服务 284
10.7.4 数据中介 285
10.8 小结 285
术语回顾 286
实践习题 287
习题 287
文献注解 288
第四部分 数据存储和查询
第11章 存储和文件结构 292
11.1 物理存储介质概述 292
11.2 磁盘 294
11.2.1 磁盘的物理特性 294
11.2.2 磁盘性能的度量 295
11.2.3 磁盘块访问的优化 296
11.3 RAID 298
11.3.1 通过冗余提高可靠性 298
11.3.2 通过并行提高性能 299
11.3.3 RAID级别 300
11.3.4 RAID级别的选择 302
11.3.5 硬件问题 303
11.3.6 其他的RAID应用 303
11.4 第三级存储 304
11.4.1 光盘 304
11.4.2 磁带 304
11.5 存储访问 305
11.5.1 缓冲区管理器 305
11.5.2 缓冲区替换策略 306
11.6 文件组织 307
11.6.1 定长记录 308
11.6.2 变长记录 309
11.7 文件中记录的组织 310
11.7.1 顺序文件组织 310
11.7.2 多表聚类文件组织 311
11.8 数据字典存储 312
11.9 小结 313
术语回顾 314
实践习题 315
习题 316
文献注解 316
第12章 索引与散列 318
12.1 基本概念 318
12.2 顺序索引 319
12.2.1 稠密索引和稀疏索引 319
12.2.2 多级索引 320
12.2.3 索引的更新 321
12.2.4 辅助索引 322
12.3 B + 树索引文件 323
12.3.1 B + 树的结构 323
12.3.2 B + 树的查询 325 
12.3.3 B + 树的更新 326
12.3.4 B + 树文件组织 330
12.3.5 字符串上的索引 331
12.4 B树索引文件 331
12.5 多码访问 332
12.5.1 使用多个单码索引 333
12.5.2 多码索引 333
12.5.3 不唯一的搜索码 334
12.5.4 覆盖索引 334
12.5.5 辅助索引和记录重定位 334
12.6 静态散列 335
12.6.1 散列函数 335
12.6.2 桶溢出处理 337
12.6.3 散列索引 338
12.7 动态散列 339
12.7.1 数据结构 339
12.7.2 查询和更新 340
12.7.3 静态散列与动态散列比较 343
12.8 顺序索引和散列的比较 343
12.9 位图索引 344
12.9.1 位图索引结构 344
12.9.2 位图操作的有效实现 345
12.9.3 位图和B + 树 346
12.10 SQL中的索引定义 346
12.11 小结 347
术语回顾 348
实践习题 348
习题 350
文献注解 350
第13章 查询处理 352
13.1 概述 352
13.2 查询代价的度量 353
13.3 选择运算 354
13.3.1 基本算法 354
13.3.2 利用索引的选择 355
13.3.3 涉及比较的选择 356
13.3.4 复杂选择的实现 356
13.4 排序 357
13.5 连接运算 359
13.5.1 嵌套循环连接 360
13.5.2 块嵌套循环连接 360
13.5.3 索引嵌套循环连接 361
13.5.4 归并连接 362
13.5.5 散列连接 364
13.5.6 复杂连接 368
13.6 其他运算 368
13.6.1 去除重复 368
13.6.2 投影 368
13.6.3 集合运算 369
13.6.4 外连接 369
13.6.5 聚集 370
13.7 表达式计算 370
13.7.1 实体化 370
13.7.2 流水线 371
13.8 小结 374
术语回顾 374
实践习题 375
习题 376
文献注解 376
第14章 查询优化 378
14.1 概述 378
14.2 关系表达式的转换 379
14.2.1 等价规则 379
14.2.2 转换的例子 381
14.2.3 连接的次序 382
14.2.4 等价表达式的枚举 383
14.3 表达式结果集统计大小的估计 384
14.3.1 目录信息 384
14.3.2 选择运算结果大小的估计 385
14.3.3 连接运算结果大小的估计 386 
14.3.4 其他运算的结果集大小的估计 387
14.3.5 不同取值个数的估计 388
14.4 选择执行计划 388 
14.4.1 查询执行技术的相互作用 388
14.4.2 基于代价的优化 389
14.4.3 启发式优化 391
14.4.4 嵌套子查询的优化 ˇˇ 393
14.5 物化视图 ˇˇ 394
14.5.1 视图维护 394
14.5.2 增量的视图维护 395
14.5.3 查询优化和物化视图 397
14.6 小结 397
术语回顾 398
实践习题 399
习题 400
文献注解 400 
第五部分 事务管理
第15章 事务 404
15.1 事务概念 404
15.2 事务状态 406
15.3 原子性和持久性的实现 407
15.4 并发执行 408
15.5 可串行化 411
15.5.1 冲突可串行化 411
15.5.2 视图可串行化 ˇˇ 413
15.6 可恢复性 413
15.6.1 可恢复调度 414
15.6.2 无级联调度 414
15.7 隔离性的实现 414
15.8 可串行化判定 415
15.9 小结 416
术语回顾 417
实践习题 417
习题 417
文献注解 418
第16章 并发控制 419
16.1 基于锁的协议 419
16.1.1 锁 419
16.1.2 锁的授予 421
16.1.3 两阶段封锁协议 422
16.1.4 封锁的实现 ˇˇ 423
16.1.5 基于图的协议 424
16.2 基于时间戳的协议 426
16.2.1 时间戳 426
16.2.2 时间戳排序协议 426
16.2.3 Thomas写规则 427
16.3 基于有效性检查的协议 428
16.4 多粒度 429
16.5 多版本机制 431
16.5.1 多版本时间戳排序 431
16.5.2 多版本两阶段封锁 432
16.6 死锁处理 433
16.6.1 死锁预防 433
16.6.2 基于超时的机制 434
16.6.3 死锁检测与恢复 434
16.7 插入与删除操作 436
16.7.1 删除 436
16.7.2 插入 436
16.7.3 幻象现象 437
16.8 弱一致性级别 438
16.8.1 二级一致性 438
16.8.2 游标稳定性 438
16.8.3 SQL中的弱一致性级别 439
16.9 索引结构中的并发 ˇˇ 439
16.10 小结 441
术语回顾 443
实践习题 443
习题 445
文献注解 446
第17章 恢复系统 447
17.1 故障分类 447
17.2 存储器结构 447
17.2.1 存储器类型 447
17.2.2 稳定存储器的实现 448
17.2.3 数据访问 449
17.3 恢复与原子性 450
17.4 基于日志的恢复 450
17.4.1 延迟的数据库修改 451
17.4.2 立即的数据库修改 452
17.4.3 检查点 454
17.5 并发事务的恢复 455
17.5.1 与并发控制的交互 455
17.5.2 事务回滚 455
17.5.3 检查点 455
17.5.4 重启动恢复 456
17.6 缓冲区管理 456
17.6.1 日志记录缓冲 456
17.6.2 数据库缓冲 457 
17.6.3 操作系统在缓冲区管理中的作用 458
17.7 非易失性存储器数据丢失的故障 458
17.8 高级恢复技术 ˇˇ 459
17.8.1 逻辑undo日志 459
17.8.2 事务回滚 460
17.8.3 检查点 460
17.8.4 重启动恢复 460
17.8.5 模糊检查点 461
17.8.6 ARIES 461
17.9 远程备份系统 464
17.10 小结 465
术语回顾 467
实践习题 467 习题 468
文献注解 468 
第六部分 数据挖掘与信息检索
第18章 数据分析与挖掘 472
18.1 决策支持系统 472
18.2 数据分析和联机分析处理 473
18.2.1 联机分析处理 473
18.2.2 OLAP实现 476
18.2.3 扩展的聚集 477
18.2.4 排名 478
18.2.5 分窗 480
18.3 数据仓库工程 481
18.3.1 数据仓库的成分 481
18.3.2 数据仓库模式 482
18.4 数据挖掘 483
18.4.1 数据挖掘应用 483
18.4.2 分类 484
18.4.3 关联规则 488
18.4.4 其他类型的关联 489
18.4.5 聚类 490
18.4.6 其他类型的挖掘 491
18.5 小结 491
术语回顾 492
实践习题 493
习题 493
文献注解 494
第19章 信息检索 496
19.1 概述 496
19.2 使用术语的相关排级 497
19.2.1 使用TFˉIDF方法排级 497
19.2.2 基于相似性的检索 498
19.3 使用超链接的相关性 499
19.3.1 流行度排序 499
19.3.2 PageRank 500
19.3.3 其他的流行度度量 501
19.4 同义词、多义词和本体 502
19.5 文档的索引 503
19.6 检索的有效性度量 504
19.7 Web搜索引擎 504
19.8 信息检索和结构化数据 505
19.8.1 信息抽取 505
19.8.2 查询结构化数据 505
19.8.3 问题解答 506
19.9 目录 506
19.10 小结 507
术语回顾 508
实践习题 509
习题 509
文献注解 510 
第七部分 系统体系结构
第20章 数据库系统体系结构 512
20.1 集中式与客户-服务器体系结构 512
20.1.1 集中式系统 512
20.1.2 客户-服务器系统 513
20.2 服务器系统体系结构 514
20.2.1 事务服务器进程结构 514
20.2.2 数据服务器 515
20.3 并行系统 516
20.3.1 加速比和扩展比 517
20.3.2 互连网络 518
20.3.3 并行数据库体系结构 519
20.4 分布式系统 521
20.4.1 分布式数据库的一个例子 522
20.4.2 实现问题 522
20.5 网络类型 523
20.5.1 局域网 523
20.5.2 广域网 524
20.6 小结 525
术语回顾 525
实践习题 526
习题 527
文献注解 527
第21章 并行数据库 528
21.1 概述 528
21.2 I/O并行 528
21.2.1 划分技术 528
21.2.2 划分技术比较 529
21.2.3 偏斜的处理 530
21.3 查询间并行 531
21.4 查询内并行 531
21.5 操作内并行 532
21.5.1 并行排序 532
21.5.2 并行连接 533
21.5.3 其他的关系操作 536
21.5.4 操作的并行计算的代价 537
21.6 操作间并行 537
21.6.1 流水线并行 537
21.6.2 独立的并行 538
21.6.3 查询优化 538
21.7 并行系统设计 539
21.8 小结 540
术语回顾 540
实践习题 541
习题 541
文献注解 542
第22章 分布式数据库 544
22.1 同构和异构数据库 544
22.2 分布式数据存储 544
22.2.1 数据复制 544
22.2.2 数据分片 545
22.2.3 透明性 546
22.3 分布式事务 547
22.3.1 系统结构 547
22.3.2 系统故障模式 548
22.4 提交协议 548
22.4.1 两阶段提交 548
22.4.2 三阶段提交 551
22.4.3 事务处理的可选择模型 551
22.5 分布式数据库的并发控制 552
22.5.1 封锁协议 553
22.5.2 时间戳 555
22.5.3 弱一致性复制 555
22.5.4 死锁处理 556
22.6 可用性 557
22.6.1 基于多数的方法 558
22.6.2 读一个、写所有可用的方法 559
22.6.3 站点重建 559
22.6.4 与远程备份比较 559
22.6.5 协调器的选择 560
22.7 分布式查询处理 561
22.7.1 查询转换 561
22.7.2 简单的连接处理 561
22.7.3 半连接策略 562
22.7.4 利用并行性的连接策略 563
22.8 异构分布式数据库 563
22.8.1 数据的统一视图 563
22.8.2 查询处理 564
22.9 目录系统 564
22.9.1 目录访问协议 565
22.9.2 LDAP:轻便目录访问协议 565
22.10 小结 568
术语回顾 569
实践习题 570
习题 571
文献注解 572 
第八部分 其他主题
第23章 高级应用开发 574
23.1 性能调整 574
23.1.1 瓶颈的位置 574
23.1.2 可调参数 575
23.1.3 硬件的调整 575
23.1.4 模式的调整 577
23.1.5 索引的调整 577
23.1.6 使用物化视图 577
23.1.7 物理设计的自动调整 578
23.1.8 事务的调整 579
23.1.9 性能模拟 580
23.2 性能基准程序 580
23.2.1 任务集 580
23.2.2 数据库应用类型 581
23.2.3 TPC基准程序 581
23.2.4 OODB基准程序 582
23.3 标准化 583
23.3.1 SQL标准 583
23.3.2 数据库连接标准 584
23.3.3 对象数据库标准 585
23.3.4 基于XML的标准 585
23.4 应用系统移植 586
23.5 小结 586
术语回顾 587
实践习题 587
习题 588
文献注解 588
第24章 高级数据类型和新的应用 590
24.1 动机 590
24.2 数据库中的时间 590
24.2.1 SQL中的时间描述 591
24.2.2 时态查询语言 592
24.3 空间与地理数据 592
24.3.1 几何信息的表示 592 
24.3.2 设计数据库 593
24.3.3 地理数据 594
24.3.4 空间查询 595
24.3.5 空间数据的索引 596
24.4 多媒体数据库 599
24.4.1 多媒体数据格式 599
24.4.2 连续媒体数据 600
24.4.3 基于相似性的检索 600
24.5 移动计算和个人数据库 601
24.5.1 移动计算模型 601
24.5.2 路由和查询处理 602
24.5.3 广播数据 602
24.5.4 连接断开与一致性 603
24.6 小结 604
术语回顾 605
实践习题 605
习题 606
文献注解 606
第25章 高级事务处理 608
25.1 事务处理监控器 608
25.1.1 TP监控器体系结构 608 
25.1.2 使用TP监视器进行应用协调 610
25.2 事务工作流 611
25.2.1 工作流说明 612
25.2.2 工作流的故障原子性需求 613
25.2.3 工作流的执行 613
25.2.4 工作流的恢复 614
25.2.5 工作流管理系统 614
25.3 电子商务 615
25.3.1 电子目录 615
25.3.2 市场 616
25.3.3 订单结算 616
25.4 主存数据库 617
25.5 实时事务系统 618
25.6 长事务 619
25.6.1 不可串行化的执行 619
25.6.2 并发控制 620
25.6.3 嵌套事务和多级事务 620
25.6.4 补偿事务 621
25.6.5 实现问题 622
25.7 多数据库中的事务管理 622
25.7.1 两级串行化 623
25.7.2 保证全局串行化 624
25.8 小结 625
术语回顾 625
实践习题 626
习题 627
文献注解 627 
第九部分 实例研究
第26章 PostgreSQL 630
26.1 概述 630
26.2 用户界面 630
26.2.1 交互式终端界面 630
26.2.2 图形界面 631
26.2.3 编程语言接口 631
26.3 SQL变化和扩展 633
26.3.1 PostgreSQL类型 633 
26.3.2 规则和其他主动数据库特征 634
26.3.3 可扩展性 636
26.4 PostgreSQL中的事务管理 638
26.4.1 PostgreSQL的并发控制 639
26.4.2 恢复 644
26.5 存储和索引 644
26.5.1 表 645
26.5.2 索引 645
26.6 查询处理和优化 646
26.6.1 查询重写 646
26.6.2 查询规划和优化 647
26.6.3 查询执行器 647
26.6.4 触发器和约束 648
26.7 系统结构 648
文献注解 649
第27章 Oracle 650
27.1 数据库设计和查询工具 650
27.1.1 数据库设计工具 650
27.1.2 查询工具 651
27.2 SQL的变化和扩展 651
27.2.1 对象-关系特性 651
27.2.2 联机分析处理 652
27.2.3 触发器 652
27.3 存储和索引 652
27.3.1 表空间 653
27.3.2 段 653
27.3.3 表 653 
27.3.4 按索引组织的表 654
27.3.5 索引 654
27.3.6 位图索引 655
27.3.7 基于函数的索引 656
27.3.8 连接索引 656
27.3.9 域索引 656
27.3.10 划分 657
27.3.11 物化视图 658
27.4 查询处理和优化 658
27.4.1 执行方法 658
27.4.2 优化 659
27.4.3 SQL调优顾问 661
27.4.4 并行执行 661
27.5 并发控制与恢复 662
27.5.1 并发控制 662
27.5.2 恢复的基本结构 663
27.5.3 Oracle数据卫士 664
27.6 系统体系结构 664
27.6.1 专用服务器:内存结构 664
27.6.2 专用服务器:进程结构 665
27.6.3 共享服务器 665 
27.6.4 Oracle Real ApplicationClusters 665
27.7 复制、分布以及外部数据 666
27.7.1 复制 666
27.7.2 分布式数据库 666
27.7.3 外部数据源 666
27.8 数据库管理工具 667 
27.8.1 Automatic WorkloadRepository 667
27.8.2 数据库资源管理 667
27.8.3 Oracle Enterprise Manager 667
27.9 数据挖掘 667
文献注解 668 
第28章 IBM DB2UniversalDatabase 669
28.1 概述 669
28.2 数据库设计工具 670
28.3 SQL的变化和扩展 670
28.3.1 XML特性 670
28.3.2 数据类型的支持 671
28.3.3 用户自定义函数和方法 672
28.3.4 大对象 672
28.3.5 索引扩展和约束 672
28.3.6 Web服务 672
28.3.7 消息队列 673
28.4 存储和索引 673
28.4.1 存储体系结构 673
28.4.2 缓冲池 674
28.4.3 表、记录和索引 674
28.5 多维聚类 675
28.5.1 块索引 676
28.5.2 块映射 677
28.5.3 设计考虑 677
28.5.4 对现有技术的影响 677
28.6 查询处理和优化 677
28.6.1 存取方法 678
28.6.2 连接、聚集和集合操作 679
28.6.3 对复杂SQL处理的支持 679
28.6.4 多处理器查询处理特性 679
28.6.5 查询优化 679
28.7 物化的查询表 680
28.7.1 发送查询到MQT 680
28.7.2 MQT的维护 680
28.8 DB2中的自治特性 681
28.8.1 配置 681
28.8.2 优化 681
28.9 工具和实用程序 682
28.10 并发控制和恢复 683
28.10.1 并发与隔离 683
28.10.2 提交和回滚 683
28.10.3 日志和恢复 684
28.11 系统体系结构 684
28.12 复制、分布和外部数据 685
28.13 商务智能特性 686
文献注解 686
第29章 Microsoft SQL Server 687
29.1 管理、设计和查询工具 687 
29.1.1 数据库开发和可视化数据库工具 687
29.1.2 数据库查询和调整工具 687 
29.1.3 SQL Server ManagementStudio 690
29.2 SQL的变体和扩展 691
29.2.1 数据类型 691
29.2.2 查询语言增强 691
29.2.3 例程 692
29.3 存储和索引 693 
29.3.1 文件组 693
29.3.2 文件组中的空间管理 693
29.3.3 表 694
29.3.4 索引 694
29.3.5 分区 694
29.3.6 在线创建索引 694
29.3.7 扫描和预读 694
29.4 查询处理及优化 695
29.4.1 优化处理概述 695
29.4.2 查询简化 695 
29.4.3 重排序和基于代价的优化 696
29.4.4 更新计划 696
29.4.5 优化时的数据分析 697
29.4.6 部分搜索和启发式搜索 697
29.4.7 查询执行 697
29.5 并发与恢复 698
29.5.1 事务 698
29.5.2 封锁 698
29.5.3 恢复和可用性 699
29.6 系统体系结构 700
29.6.1 服务器的线程池 701
29.6.2 内存管理 701
29.6.3 安全 701
29.7 数据访问 702
29.8 分布式异构查询处理 702
29.9 复制 703
29.9.1 复制模型 703
29.9.2 复制选项 703
29.10 .NET中的服务器编程 704
29.10.1 .NET基本概念 704
29.10.2 SQL CLR宿主 705
29.10.3 可扩展性协定 706 
29.11 SQL Server2005中对XML的支持 707
29.11.1 本地存储和组织XML 708 
29.11.2 验证和标定XML数据类型 708 
29.11.3 查询和更新XML数据类型 708
29.11.4 XQuery表达式的执行 710
29.12 SQL Server服务代理 710
29.13 数据仓库和商务智能 712
29.13.1 SQL Server集成服务 712
29.13.2 SQL Server分析服务 713
29.13.3 SQL Server报表服务 714
文献注解 714
参考文献 716
索引 742

教学资源推荐
作者: [美] 内纳德·尤基克(Nenad Jukic;) 苏珊·维布斯基(Susan Vrbsky) 斯维特洛扎·奈斯特罗夫(Svetlozar Nestorov) 著
作者: 朱翠娥 曹彩凤 刘兴林 主编 董超俊 何国辉 主审 李敬民 全萍 司徒伟俊 张胜利 编著
作者: Hector Garcia-Molina, Jeffrey D.Ullman, Jennifer Widom
参考读物推荐
作者: 申德荣 寇月 聂铁铮 于戈 等编著
作者: (美)Donald K.Burleson
作者: Benjamin Rosenzweig; Elena Silvestrova Rakhimov
作者: (美)Len Silverston