本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书以前版本的中文版作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。
数据库系统概念(原书第6版)
Database System Concepts Sixth Edition
Abraham Silberschatz耶鲁大学 Henry F. Korth利哈伊大学 S. Sudarshan印度理工学院 著
杨冬青 李红燕 唐世渭 (北京大学) 等译
封底:
数据库领域的殿堂级作品
夯实数据库理论基础,增强数据库技术内功的必备之选
对深入理解数据库,深入研究数据库,深入操作数据库都具有极强的指导作用!
本书是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。我国也有多所大学采用本书作为本科生和研究生数据库课程的教材和主要教学参考书,收到了良好的效果。
第6版保持了前5版的总体风格,同时对内容进行了扩充,对结构进行了调整,以更好地符合数据库教学的需求和反映数据库设计、管理与使用方式的发展和变化。具体更新内容如下:
调整了内容组织结构,将SQL内容提前,并集中进行介绍。
采用一个新的模式(基于大学的数据)作为贯穿全书的运行实例。
修订和更新了对数据存储、索引和查询优化以及分布式数据库的涵盖。
修订了E-R模型、关系设计和事务管理等内容。
扩充了关于应用开发和安全性的素材。
本书配套网站(http://www.db-book.com)提供的教辅资源包括:
书中各章的教学课件。
实践练习的答案。
未放入纸版书中的四个附录(高级关系数据库设计、其他关系查询语言、网状模型、层次模型)。
实验素材(包括大学模式和习题中用到的其他关系的SQL DDL和样例数据,以及关于建立和使用各种数据库系统和工具的说明书)。
最新勘误表。
前:
作者简介
Abraham Silberschatz
于纽约州立大学石溪分校获得博士学位,现为耶鲁大学计算机科学Sidney J. Weinberg教授,计算机科学系主任,曾任贝尔实验室信息科学研究中心副主任。他是ACM Fellow 和 IEEE Fellow,曾获得IEEE Taylor L. Booth 教育奖、 ACM Karl V. Karlstrom 杰出教育者奖、ACM SIGMOD 贡献奖和IEEE 计算机学会杰出论文奖。他的研究兴趣包括操作系统、数据库系统、存储系统、网络管理和分布式系统。
Henry F. Korth
于普林斯顿大学获得博士学位,现为利哈伊大学计算机科学与工程系Weiseman教授,曾任贝尔实验室数据库原理研究中心主任。他是ACM Fellow 和 IEEE Fellow,是VLDB 10年贡献奖的获得者。他的研究兴趣包括为现代计算架构(多核、多线程、多级缓存)设计的数据库算法、基于Web的大型数据仓储、实时数据库系统和并行系统。
S. Sudarshan
于威斯康星大学麦迪逊分校获得博士学位,现为印度理工学院计算机科学与工程系教授,曾为贝尔实验室数据库研究组技术人员。他的研究兴趣包括查询处理和优化、关系数据和图结构数据的关键字查询,以及构建和测试数据库应用系统的工具。
译者简介
杨冬青
1969年毕业于北京大学数学力学系数学专业,现任北京大学信息科学技术学院教授,博士生导师,中国计算机学会数据库专委会委员。多年来承担并完成973、863、国家科技攻关、国家自然科学基金等多项国家重点科研项目,曾获国家科技进步二等奖、三等奖和多项省部级奖励,在国内外杂志及会议上发表论文百余篇,著译作十余部。目前主要研究方向为数据库系统实现技术、Web环境下的信息集成与共享、数据仓库和数据挖掘等。
李红燕
1999年毕业于西北工业大学计算机科学与工程系计算机应用专业,获工学博士学位,现任北京大学信息科学技术学院教授,博士生导师,中国计算机学会数据库专委会委员。多年来承担并完成多项国家自然科学基金课题以及医疗、移动通信等典型应用领域内的应用研究项目,在国内外学术期刊及会议上发表论文90余篇,出版学术专著和教材各1部。目前主要研究方向为数据库系统与智能信息系统、数据仓库与数据挖掘、业务流程控制、云数据管理等。
唐世渭
1964年毕业于北京大学数学力学系计算数学专业,毕业后留校任教至今,现为北京大学信息科学技术学院教授,博士生导师,中国计算机学会数据库专委会委员,中国软件行业协会数据库及应用软件分会理事长。多年来承担并完成973、863、国家科技攻关、国家自然科学基金等多项国家重点科研项目,曾获国家科技进步二等奖、三等奖各1项,省部级科技进步奖多项,在国内外杂志及会议上发表论文百余篇,著译作多部。目前主要研究方向为数据库系统、数据仓库和数据挖掘、Web环境下的信息集成与共享、典型应用领域的信息系统等。
数据库管理已经从一种专门的计算机应用发展为现代计算环境中的一个重要成分,因此,有关数据库系统的知识已成为计算机科学教育中的一个核心的部分。在本书中,我们讲述数据库管理的基本概念。这些概念包括数据库设计、数据库语言、数据库系统实现等多个方面。
本书可作为本科生三年级或四年级数据库入门课程的教科书,也可作为研究生一年级的教科书。除了作为入门课程的基本内容外,本书还包括了可作为课程补充或作为高级课程介绍性材料的高级内容。
我们仅要求读者熟悉基本的数据结构、计算机组织结构和一种高级程序设计语言,例如Java、C或Pascal。书中的概念都以直观的方式加以描述,其中的许多概念都基于我们大学运行的例子加以阐释。本书中包括重要的理论结果,但省略了形式化证明,取而代之的是用图表和例子来说明为什么结论是正确的。对于形式化描述和研究结果的证明,读者可以参考文献注解中列出的研究论文和高级教材。
本书中所包括的基本概念和算法通常是基于当今的商品化或试验性的数据库系统中采用的概念和算法。我们的目标是在一个通常环境下描述这些概念和算法,而没有与某个特定的数据库系统绑定。特定的数据库系统的细节将在第九部分“实例研究”中讨论。
在本书第6版中,我们保持了前面版本的总体风格,同时对内容和结构进行了扩展来反映数据库设计、管理和使用的方式所发生的变化。我们还考虑了数据库概念的教学方面的趋势,并在适当的地方做出了推动这种趋势的修改。
本书的组织
本书组织成十个主要部分:
综述(第1章)。第1章对数据库系统的性质和目标进行了一般性综述。我们解释了数据库系统的概念是如何发展的,各数据库系统的共同特性是什么,数据库系统能为用户做什么,以及数据库系统如何与操作系统交互。我们还引入了一个数据库应用的例子:包括多个系、教员、学生和课程的一个大学机构。这个应用作为贯穿全书的运行实例。这一章本质上是诱导性、历史性和解释性的。
第一部分:关系数据库(第2章至第6章)。第2章介绍了数据的关系模型,包括基本概念,诸如关系数据库的结构、数据库模式、码、模式图、关系查询语言和关系操作等。第3~5章主要介绍最具影响力的面向用户的关系语言——SQL。第6章介绍形式化的关系查询语言,包括关系代数、元组关系演算和域关系演算。
这部分描述了数据操纵,包括查询、修改、插入和删除(假设已有一个模式设计)。关于模式设计的问题延迟到第二部分讲述。
第二部分:数据库设计(第7章至第9章)。第7章给出了数据库设计过程的概要介绍,主要侧重于用实体-联系数据模型来进行数据库设计。实体-联系模型为数据库设计问题,以及我们在数据模型的约束下捕获现实应用的语义时所遇到的问题提供了一个高层视图。UML类图表示也在这一章中讲述。
第8章介绍关系数据库设计理论。这一章讲述函数依赖和规范化,重点强调提出各种范式的动机,以及它们的直观含义。这一章以关系设计的概览开始,依赖于对函数依赖的逻辑蕴涵的直观理解。这使得规范化的概念可以在函数依赖理论的完整内容之前先作介绍。函数依赖理论将在本章中稍后部分讨论。教师可以只选用81节至83节这些较前面的章节,而不会丢失连贯性。不过,完整地讲授这一章将有利于学生对规范化概念形成较好的理解,从而诱导出函数依赖理论中一些较艰深的概念。
第9章讲述应用设计和开发。这一章侧重于用基于Web的界面构建数据库应用。另外,这一章还讲述了应用安全性。
第三部分:数据存储和查询(第10章至第13章)。第10章讨论存储设备、文件和数据存储结构。在第11章中介绍多种数据存取技术,包括B+树索引和散列。第12章和第13章阐述查询执行算法和查询优化。这两章使用户能更好地理解数据库的存储和检索的内部机制。
第四部分:事务管理(第14章至第16章)。第14章着重介绍事务处理系统的基本概念,包括原子性、一致性、隔离性和持久性。它还提供了用于保证这些特性的方法的一个概述,包括封锁和快照隔离性。
第15章重点讲述并发控制,并介绍保证可串行化的几种技术,包括封锁、时间戳和乐观(有效性检查)技术。在这一章中还讨论死锁问题,并介绍保证可串行化的其他方法,特别是详细讨论广泛使用的快照隔离方法。
第16章讨论在系统崩溃和存储器故障情况下保证事务正确执行的主要技术。这些技术包括日志、检查点和数据库转储。被广泛使用的ARIES算法也在这里做了介绍。
第五部分:系统体系结构(第17章至第19章)。第17章介绍计算机系统体系结构,并描述了作为基础的计算机系统对于数据库系统的影响。在这一章中讨论了集中式系统、客户-服务器系统、并行和分布式体系结构。
在第18章关于并行数据库的讨论中,我们探讨了各种并行技术,包括I/O并行、查询间并行和查询内并行,以及操作间并行和操作内并行。这一章中还讨论了并行系统设计。
第19章讨论分布式数据库系统,在分布式数据库系统的环境下重新讨论数据库设计、事务管理、查询执行和优化问题。这一章还包括了故障时的系统可用性问题,并介绍了异构分布式数据库、基于云的数据库和分布式目录系统。
第六部分:数据仓库、数据挖掘与信息检索(第20章和第21章)。第20章介绍数据仓库和数据挖掘的概念。第21章描述用于查询文本数据的信息检索技术,包括在Web搜索引擎中使用的基于超链接的技术。
第六部分使用了第一部分和第二部分的模型和语言概念,但并不依赖于第三部分、第四部分或第五部分。因此它可以很容易地结合到侧重于SQL和数据库设计的课程中。
第七部分:特种数据库(第22章和第23章)。第22章介绍基于对象的数据库。该章讲述了对象-关系数据模型,该模型扩展了关系数据模型以支持复杂数据类型、类型继承和对象标识。该章还描述了用面向对象的编程语言来访问数据库。
第23章介绍数据表示的XML标准,它正日益广泛地应用于复杂数据交换和存储。这一章还描述了XML的查询语言。
第八部分:高级主题(第24章至第26章)。第24章讨论应用开发中的高级话题,包括性能调整、性能评测标准、数据库应用测试和标准化。
第25章介绍空间和地理数据、时间数据、多媒体数据以及移动和个人数据库管理中的问题。
最后,第26章讨论高级事务处理。这一章的内容包括事务处理监控器、事务工作流、电子商务、高性能事务系统、实时事务系统和持续长时间的事务。
第九部分:实例研究(第27章至第30章)。在这一部分我们对四个领先的数据库系统进行实例研究,包括PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server。这几章中列举了上述每一种系统的独有特性,描述了它们的内部结构,提供了关于各个产品的丰富的有用信息,帮助读者了解前面各部分描述的各种实现技术是如何使用到实际系统中的。这几章中还包括实际系统设计中的几个有趣的方面。
第十部分:附录(附录A~附录E)。我们提供5个附录,包括一些历史性的和高级的内容;这些附录只在本书的Web站点(http://wwwdbbookcom)中联机提供。只有附录A(详细的大学模式)例外,它给出了我们的大学模式的细节,包括完整的模式、DDL和所有的表。这个附录出现在纸质版本中。
附录B(高级关系数据库设计)描述了高级关系数据库设计,包括多值依赖理论、连接依赖、投影连接和域-码范式。这个附录是为希望更详细地研究关系数据库设计理论的读者,以及希望在课程中这样做的教师准备的。这个附录同样只是联机提供,就在本书的网站上。
附录C(其他关系查询语言)描述其他的关系查询语言,包括QBE Microsoft Access和Datalog。
虽然大多数新的数据库应用系统使用关系模型或对象-关系模型,但网状的和层次的数据模型在一些遗留应用中也仍然在使用。为了满足希望了解这些数据模型的读者的需要,我们给出了描述网状和层次的数据模型的附录,分别为附录D(网状模型)和附录E(层次模型)。
第6版
对于本书第6版的产生起指导作用的包括我们收到的关于前面几版的许多意见和建议,我们在耶鲁大学、利哈依大学、孟买印度理工学院讲授本课程的体会,以及我们对于数据库技术发展方向的分析。
我们用一个大学的例子替换了原先的银行企业的运行例子。这个例子与学生相关,不仅有助于他们记住这个例子,而且更重要的是,使他们能够更深地洞察所需进行的各种设计决策。
我们重新组织了这本书,将我们关于SQL的介绍都集中在一起,放在本书的开头部分。第3章、第4章和第5章对SQL进行完整的介绍。第3章给出该语言的基础,而将更高级的特性放在了第4章。在第5章中,我们介绍从通用的程序设计语言访问SQL的JDBC和其他方法。我们介绍触发器和递归,最后讨论联机分析处理(OLAP)。入门性的课程可以选择只包括第5章的某些节,或者将一些节延迟到讲过了数据库设计之后再讲,这样也不失连续性。
除了这两个主要的改变外,我们修订了每一章中的素材,对旧的素材进行更新,增加对于数据库技术的新的发展的讨论,并且改进学生难于理解的那些内容的描述。我们还增加了新的练习并更新了参考文献。具体的改变如下。
较早介绍了SQL。许多讲课教师使用SQL作为课程实习的核心成分(访问我们的网站wwwdbbookcom以参考示例课程实习)。为了给学生充足的时间做课程实习,尤其对于那些四学期制的大学和学院来说,尽早教授SQL非常重要。有了这个认识,我们在内容组织方面做了几个改动:
□ 用新的一章(第2章)介绍关系模型,放在SQL之前,打下概念基础,而不使学生迷失在关系代数的细节中。
□ 第3章、第4章和第5章详细介绍SQL。这几章还讨论不同的数据库系统支持的变体,从而当学生在实际的数据库系统上执行查询时会少遇到一些问题。这几章涵盖了SQL的所有方面,包括查询、数据定义、约束说明、OLAP和从各种语言(包括Java/JDBC)内部使用SQL。
□ 形式语言(第6章)推迟到SQL之后,而且可以略掉不讲,而不会影响其他章的顺序。只有在第13章关于查询优化的讨论依赖于第6章介绍的关系代数。
新的数据库模式。我们采用了一个新的模式作为贯穿全书的运行实例,基于大学的数据。对于学生来说,这个模式比以前的银行模式更加直观和有意义,而且在数据库设计的章节中展示了更复杂的设计权衡。
对学生的亲手实践提供了更多的支持。为了推动学生跟着我们的运行实例进行实践,我们在附录A中列出了大学数据库的数据库模式和样例的关系实例,并在用到大学实例的各个章中也进行了说明。另外,在我们的Web站点http://wwwdbbookcom上,提供了对于整个例子的SQL数据定义语句,以及建立我们的样例关系实例的SQL语句。这鼓励了学生直接在一个实际的数据库系统中去运行样例查询,并且试着去修改这些查询。
修订了对ER模型的涵盖。我们修改了第7章中ER图的符号表示,以使得它与UML更兼容。这一章还充分利用了新的大学数据库模式来描述更复杂的设计权衡。
修订了对关系设计的涵盖。第8章的风格现在更具可读性,它在阐述函数依赖理论之前提供了对函数依赖和规范化的一个直观的理解,其结果是理论的动机更清晰了。
扩充了关于应用开发和安全性的素材。第9章包括了关于应用开发的新的素材,以反映该领域的快速变化。特别地,扩展了关于安全性的介绍,包括它在当今紧密互联的世界中的至关重要性,并重点强调了抽象概念外的实际问题。
修订和更新了对数据存储、索引和查询优化的涵盖。对第10章进行了新技术方面的更新,包括对闪存的更多的讨论。
更新了第11章对B+树的讨论,以反映实际的实现,包括对批量载入的介绍,并且对陈述方式也进行了改进。第11章中B+树的例子修改成了n=4,以避免(不切实际的)n=3时发生的空结点的特殊情况。
第13章中有关于高级查询优化技术的新的素材。
修订了对事务管理的涵盖。第14章全面涵盖了入门性课程中的基础知识,而高级的细节在第15章和第16章中介绍。我们扩展了第14章,以涵盖数据库用户和数据库应用开发人员所面对的事务管理的实际问题。这一章还包括了对第15章和第16章所讨论话题的扩展的综述,以确保即使略掉第15章和第16章,学生仍能对并发控制和恢复的概念有基本的了解。
第14章和第15章现在包括了对当今被广泛支持和使用的快照隔立性的详细介绍,对于使用它的潜在风险也做了介绍。
第16章现在对基本的基于日志的恢复进行了简化的描述,进一步介绍了ARIES算法。
修订和扩充了对分布式数据库的涵盖。我们现在涵盖了云数据存储,它在商业应用中正日益受到极大的重视。云存储为企业提供了改进成本管理和增加存储可扩充性的机遇,特别是对于基于Web的应用。我们分析了这些优点,也指出了可能的缺点和风险。
我们原来在高级事务处理这一章中讨论多数据库,现在对它更早地进行了介绍,作为分布式数据库这一章中的一部分。
推迟了对对象数据库和XML的介绍。虽然面向对象的语言和XML在数据库的范围之外被广泛使用,但在数据库中的使用仍然有限,这使得它们对于高级课程或作为入门性课程的补充材料更适合一些。因此这些话题在本书中向后移了,放到了第22章和第23章。
QBE、Microsoft Access和Datalog放在联机附录中。这些话题原来是“其他关系语言”这一章中的一部分,现在放在联机附录C中了。
上面没有列出的所有话题都在第5版的基础上做了更新,虽然相对地它们的总体组织没有改变。
回顾材料和习题
每一章都有一个术语回顾表,还有一个总结,这可以帮助读者回顾这一章中涵盖的关键话题。
练习划分成两部分:实践习题(practice exercise)和习题(exercise)。实践习题的解答在本书的Web站点公开发布。我们鼓励学生独立解决这些实践习题,然后用Web站点上的解答来检查自己的答案。其他练习题的解答只有讲课教师能得到(参看下面的“讲课教师注意事项”以获取如何得到题解的信息)。
许多章的末尾有一个“工具”节,它提供与该章的话题相关的软件工具的信息;这些工具中的一些可以用于实验室练习。大学数据库和习题中用到的其他关系的SQL DDL和样例数据在本书的Web站点可以得到,也可以用于实验室练习。
讲课教师注意事项
本书包括基本内容和高级内容,在一个学期内也许不能讲授所有这些内容。我们以符号“**”把某些节标记为高级内容,如果愿意的话可以省略这些节,而仍能保持内容的连续性。较难的(可以忽略的)练习同样用符号“**”标记出来了。
可以用本书各章的不同子集来设计课程。某些章也可以用不同于本书中的顺序来讲授。我们列出一些可能的安排如下:
第5章可以跳过或推迟到后面讲,而不失连续性。我们期望大多数的课程至少511节较早地讲授,因为JDBC很可能会是学生实习的一个有用工具。
第6章可以在第2章之后、讲SQL之前讲。也可以把这一章从入门性的课程中省略掉。
我们建议如果课程中讲查询处理的话,那么把61节也包括在课程中。但是,如果学生在课程中不使用关系演算的话,那么62节和63节可以省略。
如果教师愿意的话,第7章可以在第3章、第4章和第5章之前讲,因为第7章完全不依赖于SQL。
第13章可以从入门性的课程中省略掉,而对于其他任何章的讲授都没有影响。
我们对事务处理的讨论(第14章至第16章)和对系统体系结构的讨论(第17章至第19章)都包括一章综述(分别为第14章和第17章)和后续的两章详细讨论。如果计划把后面几章推迟到高级课程中去讲授,可以选择使用第14章和第17章,省略第15章、第16章、第18章和第19章。
第20章和第21章介绍数据仓库、数据挖掘和信息检索,它们可以用作自学材料或从入门性课程中删去。
对于入门性课程来说,可以不讲第22章和第23章。
第24章至第26章涵盖高级应用开发,空间、时间和移动数据,以及高级事务处理,更适合于高级课程或学生自学。
第27章至第30章的实例研究适合学生自学。或者,这几章可以用作课堂上讲的前面那些章的概念的实例。
基于本书的样例课程提纲可以在本书的Web站点找到。
Web站点和教学补充材料:
本书的Web站点的网址是:http://wwwdbbookcom
该站点包括以下内容:
本书所有各章的幻灯片
实践习题的答案
五个附录
最新勘误表
实验素材,包括大学模式和习题中用到的其他关系的SQL DDL和样例数据,以及关于建立和使用各种数据库系统和工具的说明书
下列附加材料仅有教师可以获得:
包括书中所有习题的答案的教师手册
包括额外习题的问题库
关于如何得到教师手册和问题库的进一步信息,请发电子邮件到customerservice@mcgrawhillcom。McGrawHill关于本书的网页是http://wwwmhhecom/silberschatz
与我们联系
我们已尽了最大的努力来避免在本书中出现排版错误、内容失误等。然而,与发布新软件类似,错误在所难免;在本书的Web站点中有一个最新勘误表。如果你能指出尚未包含在最新勘误表中的本书的疏漏之处,我们将十分感激。
我们很高兴能收到你对改进本书的建议,我们也很欢迎你对本书Web站点做出对其他读者有用的贡献,例如程序设计练习、课程实习建议、联机实验室和指南以及讲课要点等。
请将电子邮件发到dbbookauthors@csyaleedu。其他来信请寄到Avi Silberschatz,Department of Computer Science,Yale University, 51 Prospect Street, POBox 208285, New Haven, CT 065208285 USA。
致谢
许多人对于第6版以及第6版所源自的前5版提供了帮助。
第6版
Anastassia Ailamaki, Sailesh Krishnamurthy, Spiros Papadimitriou和Bianca Schroeder (Carnegie Mellon University),他们撰写了第27章,描述PostgreSQL数据库系统。
Hakan Jakobsson (Oracle), 他撰写了第28章,描述Oracle数据库系统。
Sriram Padmanabhan (IBM), 他撰写了第29章,描述IBM DB2数据库系统。
Sameet Agarwal, José ABlakeley, Thierry D′Hers, Gerald Hinson, Dirk Myers,Vaqar Pirzada, Bill Ramos, Balaji Rathakrishnan, Michael Rys, Florian Waas和Michael Zwilling (全部来自Microsoft),他们撰写了第30章,描述Microsoft SQL Server数据库系统。特别地,José Blakeley对这一章进行了协调和编辑;César GalindoLegaria,Goetz Graefe, Kalen Delaney和Thomas Casey (全部来自Microsoft)对于前一版中的Microsoft SQL Server这一章做出了贡献。
Daniel Abadi审阅了第5版的目录表,并协助进行了新的组织。
Steve Dolins(University of Florida),Rolando Fernanez(George Washington University),Frantisek Franek(McMaster University),Latifur Khan(University of TexasDallas),Sanjay Madria(University of MissouriRolla),Aris Ouksel(University of Illinois)和Richard Snodgrass(University of Waterloo),他们作为本书的审阅人,他们的意见对于我们形成第6版帮助很大。
Judi Paige,她帮助形成了插图和演示幻灯片。
Mark Wogahn,他保证了生成本书文本的软件正常工作,包括LaTeX宏和字体。
NLSarda,他的反馈帮助我们改进了好几章,特别是第11章;Vikram Pudi,他促使我们替换掉原来的银行模式;Shetal Shah,他对几个章节给出了反馈。
耶鲁大学和印度孟买理工学院的学生,他们对第5版,以及第6版的预印本给出了意见。
前面各版
Chen Li, Sharad Mehrotra,他们为第5版提供了关于JDBC和安全性的素材。
Marilyn Turnamian 和 Nandprasad Joshi 为第5版担任秘书工作,Marilyn还为第5版准备了一个封面设计的早期版本。
Lyn Dupré对第3版进行了审查,Sara Strandtman对第3版进行了文字编辑。
Nilesh Dalvi, Sumit Sanghai, Gaurav Bhalotia, Arvind Hulgeri KVRaghavan, Prateek Kapadia, Sara Strandtman, Greg Speegle和 Dawn Bezviner协助准备了前面各版的教师素材。
用船作为封面概念的一部分的想法最初是Bruce Stephan向我们建议的。
以下人士指出了第5版中的错误之处:Alex Coman, Ravindra Guravannavar, Arvind Hulgeri, Rohit Kulshreshtha, SangWon Lee, Joe HCLu, Alex NNapitupulu, HKPark, Jian Pei, Fernando Saenz Perez, Donnie Pinkston, Yma Pinto, Rajarshi Rakshit, Sandeep Satpal, Amon Seagull, Barry Soroka, Praveen Ranjan Srivastava, Hans Svensson, Moritz Wiese 和 Eyob Delele Yirdaw。
以下人士对本书第5版和前面各版提出了建议和意见:RBAbhyankar, Hani AbuSalem, Jamel RAlsabbagh, Raj Ashar, Don Batory, Phil Bernhard, Christian Breimann, Gavin MBierman, Janek Bogucki, Haran Boral, Paul Bourgeois, Phil Bohannon, Robert Brazile, Yuri Breitbart, Ramzi Bualuan, Michael Carey, Soumen Chakrabarti, Tom Chappell, Zhengxin Chen, YCChin, Jan Chomicki, Laurens Damen, Prasanna Dhandapani, Qin Ding, Valentin Dinu, JEdwards, Christos Faloutsos, Homma Farian, Alan Fekete, Frantisek Franek, Shashi Gadia, Hector GarciaMolina, Goetz Graefe, Jim Gray, Le Gruenwald, Eitan MGurari, William Hankley, Bruce Hillyer, Ron Hitchens, Chad Hogg, Arvind Hulgeri, Yannis Ioannidis, Zheng Jiaping, Randy MKaplan, Graham JLKemp, Rami Khouri, HyoungJoo Kim,Won Kim, Henry Korth (Henry F的父亲), Carol Kroll, Hae Choon Lee, SangWon Lee, Irwin Levinstein, Mark Llewellyn, Gary Lindstrom, Ling Liu, Dave Maier, Keith Marzullo, Marty Maskarinec, Fletcher Mattox, Sharad Mehrotra, Jim Melton, Alberto Mendelzon, Ami Motro, Bhagirath Narahari, YiuKai Dennis Ng, ThanhDuy Nguyen, Anil Nigam, Cyril Orji, Meral Ozsoyoglu, DBPhatak, Juan Altmayer Pizzorno, Bruce Porter, Sunil Prabhakar, Jim Peterson, KVRaghavan, Nahid Rahman, Rajarshi Rakshit, Krithi Ramamritham,Mike Reiter, Greg Riccardi, Odinaldo Rodriguez, Mark Roth, Marek Rusinkiewicz, Michael Rys, Sunita Sarawagi, NLSarda, Patrick Schmid, Nikhil Sethi, SSeshadri, Stewart Shen, Shashi Shekhar, Amit Sheth, Max Smolens, Nandit Soparkar, Greg Speegle, Jeff Storey, Dilys Thomas, Prem Thomas, Tim Wahls, Anita Whitehall, Christopher Wilson, Marianne Winslett,Weining Zhang和 Liu Zhenming。
本书的制作出版
出版人是Raghu Srinivasan。策划编辑是Melinda DBilecki。项目经理是Melissa Leick。市场经理是Curt Reynolds。作品监督人是Laura Fuller。设计者是Brenda Rolwes。封面设计是Studio Montage, StLouis, Missouri。文字编辑是George Watson。校对是Kevin Campbell。特约索引制作者是Tobiah Waldron。Aptara team由Raman Arora 和 Sudeshna Nandy组成。
个人注记
Sudarshan感谢他的妻子Sita的爱和支持,感谢他的孩子Madhur和Advaith的爱和乐观精神。Hank感谢他的妻子Joan,孩子Abby和Joe的爱和理解。Avi感谢Valerie在本书修订期间的爱、耐心和支持。
AS
HFK
SS
计算机\数据库
数据库系统概念的殿堂级作品
夯实数据库理论基础,增强数据库技术内功的必备之选
对深入理解数据库,深入研究数据库系统,深入操作数据库都具有极强的指导作用!
本书是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。我国也有多所大学采用本书作为本科生和研究生数据库课程的教材和主要教学参考书,收到了良好的效果。
第6版保持了前5版的总体风格,同时对内容进行了扩充,对结构进行了调整,以更好地符合数据库教学的需求和反映数据库设计、管理与使用方式的发展和变化。具体更新内容如下:
调整了内容组织结构,将SQL内容提前,并集中进行介绍。
采用一个新的模式(基于大学的数据)作为贯穿全书的运行实例。
修订和更新了对数据存储、索引和查询优化以及分布式数据库的涵盖。
修订了E-R模型、关系设计和事务管理等内容。
扩充了关于应用开发和安全性的素材。
本书配套网站(http://www.db-book.com)提供的教辅资源包括:
书中所有各章的教学课件
实践练习的答案
未放入纸版书中的四个附录(其他的关系查询语言、高级关系数据库设计、网状数据模型、层次数据模型)
实验素材(包括大学模式和习题中用到的其他关系的SQL DDL和样例数据,以及关于建立和使用各种数据库系统和工具的说明书)
最新勘误表
包括书中所有练习的答案的教师手册(仅提供给采用本书作为教材的教师)
(美)Abraham Silberschatz,Henry F.Korth,S.Sudarshan 著:Abraham Silberchatz 于纽约州立大学石溪分校获得博士学位,现为耶鲁大学计算机科学Sidney J. Weinberg教授,计算机科学系主任,曾任贝尔实验室信息科学研究中心副主任。他是ACM Fellow 和 IEEE Fellow,曾获得IEEE Taylor L.Booth 教育奖、 ACM Karl V.Karlstrom 杰出教育者奖、ACM SIGMOD 贡献奖和IEEE 计算机学会杰出论文奖。他的研究兴趣包括操作系统、数据库系统、存储系统、网络管理和分布式系统。 Henry F. Korth 于普林斯顿大学获得博士学位,现为利哈伊大学计算机科学与工程系Weiseman教授,曾任贝尔实验室数据库原理研究中心主任。他是ACM Fellow 和 IEEE Fellow,是VLDB 10年贡献奖的获得者。他的研究兴趣包括为现代计算架构(多核、多线程、多级缓存)设计的数据库算法、基于Web的大型数据仓储、实时数据库系统和并行系统。 S. Sudarshan 于威斯康星大学麦迪逊分校获得博士学位,现为印度理工学院计算机科学与工程系教授,曾为贝尔实验室数据库研究组技术人员。他的研究兴趣包括查询处理和优化、关系数据和图结构数据的关键字查询,以及构建和测试数据库应用系统的工具。
杨冬青 李红燕 唐世渭 等译:暂无简介
数据库系统是对数据进行存储、管理、处理和维护的软件系统,是现代计算环境中的一个核心成分。随着计算机硬件、软件技术的飞速发展和计算机系统在各行各业的广泛应用,数据库技术的发展尤其迅速,引人注目。有关数据库系统的理论和技术是计算机科学技术教育中必不可少的部分。《数据库系统概念》是一本经典的、备受赞扬的数据库系统教科书。其内容由浅入深,既包含数据库系统的基本概念,又反映数据库技术的新进展。本书被国际上许多著名大学所采用,并多次再版。
我们先后将本书的第3版、第4版和第5版译成中文,由机械工业出版社分别于2000年、2003年和2006年出版发行。国内许多大学采用《数据库系统概念》作为本科生和研究生数据库课程的教材或主要教学参考书,收到了良好的效果。现在,我们又翻译了该书第6版。第6版保持了前5版的总体风格,同时对内容进行了扩充,对结构进行了调整,以更好地符合数据库教学的需求,反映数据库设计、管理和使用方式的发展和变化。第6版的内容大体上可以分为五个部分。
第1~9章讲述数据库系统的基本概念,包括对数据库系统的性质和目标的综述,对关系数据模型和关系语言的介绍,对数据库设计过程、关系数据库理论以及数据库应用设计和开发(包括基于Web的界面构建数据库应用和应用安全性问题等)的详细讨论。
第10~19章主要讨论数据库系统实现技术,包括数据存储结构、数据存取技术、查询优化方法、事务处理系统的基本概念和并发控制、故障恢复技术,还包括在并行数据库系统和分布式数据库系统中所采用的一些主要策略和技术。
第20~23章主要讨论数据管理与应用的深入话题,包括对数据仓库和数据挖掘概念与技术的较详细的介绍,以及对用于查询文本数据的信息检索技术(包括在Web搜索引擎中使用的基于超链接的技术)的介绍。这一部分还介绍了新型的数据库系统,包括对象-关系数据库模型、数据表示的XML标准,以及XML的查询语言。
第24~26章是一些高级话题,内容包括应用开发中的诸如性能调整、性能评测标准、数据库应用测试和标准化等高级话题,以及空间和地理数据、时间数据、多媒体数据、移动和个人数据库管理中的问题。这一部分还讨论了事务处理监控器、事务工作流、电子商务、高性能事务系统、实时事务系统和持续长时间的事务等高级事务处理问题。
第27~30章对PostgreSQL、Oracle、IBM DB2和Microsoft SQL Server这四个领先的数据库系统进行实例研究,结合这几个具体系统来讨论前面各部分描述的各种实现技术是如何使用到实际系统中的。
上述五大部分中第一部分的主要内容,以及第二、第三、第四部分的部分内容可以作为本科生数据库概论课程的教材或主要参考资料,第二、第三和第四部分的其余内容可以用于研究生的数据库课程教学,第五部分可以作为帮助学生了解实际系统的补充材料。
杨冬青、李红燕、唐世渭组织并参加了本书的翻译和审校工作;参加翻译的还有范红杰、程序、苗高杉、邹淼、陈巍、王婧、王林青、孟必平。
限于译者水平,译文中疏漏和错误难免,欢迎批评指正。
译者
于北京大学
出版者的话
译者序
前言
第1章引言
11数据库系统的应用
12数据库系统的目标
13数据视图
131数据抽象
132实例和模式
133数据模型
14数据库语言
141数据操纵语言
142数据定义语言
15关系数据库
151表
152数据操纵语言
153数据定义语言
154来自应用程序的数据库访问
16数据库设计
161设计过程
162大学机构的数据库设计
163实体-联系模型
164规范化
17数据存储和查询
171存储管理器
172查询处理器
18事务管理
19数据库体系结构
110数据挖掘与信息检索
111特种数据库
1111基于对象的数据模型
1112半结构化数据模型
112数据库用户和管理员
1121数据库用户和用户界面
1122数据库管理员
113数据库系统的历史
114总结
术语回顾
实践习题
习题
工具
文献注解
第一部分关系数据库
第2章关系模型介绍
21关系数据库的结构
22数据库模式
23码
24模式图
25关系查询语言
26关系运算
27总结
术语回顾
实践习题
习题
文献注解
第3章SQL
31SQL查询语言概览
32SQL数据定义
321基本类型
322基本模式定义
33SQL查询的基本结构
331单关系查询
332多关系查询
333自然连接
34附加的基本运算
341更名运算
342字符串运算
343select子句中的属性说明
344排列元组的显示次序
345where子句谓词
35集合运算
351并运算
352交运算
353差运算
36空值
37聚集函数
371基本聚集
372分组聚集
373having子句
374对空值和布尔值的聚集
38嵌套子查询
381集合成员资格
382集合的比较
383空关系测试
384重复元组存在性测试
385from子句中的子查询
386with子句
387标量子查询
39数据库的修改
391删除
392插入
393更新
310总结
术语回顾
实践习题
习题
工具
文献注解
第4章中级SQL
41连接表达式
411连接条件
412外连接
413连接类型和条件
42视图
421视图定义
422SQL查询中使用视图
423物化视图
424视图更新
43事务
44完整性约束
441单个关系上的约束
442not null约束
443unique约束
444check子句
445参照完整性
446事务中对完整性约束的违反
447复杂check条件与断言
45SQL的数据类型与模式
451SQL中的日期和时间类型
452默认值
453创建索引
454大对象类型
455用户定义的类型
456create table的扩展
457模式、目录与环境
46授权
461权限的授予与收回
462角色
463视图的授权
464模式的授权
465权限的转移
466权限的收回
47总结
术语回顾
实践习题
习题
文献注解
第5章高级SQL
51使用程序设计语言访问数据库
511JDBC
512ODBC
513嵌入式SQL
52函数和过程
521声明和调用SQL函数和过程
522支持过程和函数的语言构造
523外部语言过程
53触发器
531对触发器的需求
532SQL中的触发器
533何时不用触发器
54递归查询**
541用迭代来计算传递闭包
542SQL中的递归
55高级聚集特性**
551排名
552分窗
56OLAP**
561联机分析处理
562交叉表与关系表
563SQL中的OLAP
57总结
术语回顾
实践习题
习题
工具
文献注解
第6章形式化关系查询语言
61关系代数
611基本运算
612关系代数的形式化定义
613附加的关系代数运算
614扩展的关系代数运算
62元组关系演算
621查询示例
622形式化定义
623表达式的安全性
624语言的表达能力
63域关系演算
631形式化定义
632查询的例子
633表达式的安全性
634语言的表达能力
64总结
术语回顾
实践习题
习题
文献注解
第二部分数据库设计
第7章数据库设计和ER模型
71设计过程概览
711设计阶段
712设计选择
72实体-联系模型
721实体集
722联系集
723属性
73约束
731映射基数
732参与约束
733码
74从实体集中删除冗余属性
75实体-联系图
751基本结构
752映射基数
753复杂的属性
754角色
755非二元的联系集
756弱实体集
757大学的ER图
76转换为关系模式
761具有简单属性的强实体集的表示
762具有复杂属性的强实体集的表示
763弱实体集的表示
764联系集的表示
77实体-联系设计问题
771用实体集还是用属性
772用实体集还是用联系集
773二元还是n元联系集
774联系属性的布局
78扩展的ER特性
781特化
782概化
783属性继承
784概化上的约束
785聚集
786转换为关系模式
79数据建模的其他表示法
791ER图的其他表示法
792统一建模语言UML
710数据库设计的其他方面
7101数据约束和关系数据库设计
7102使用需求:查询、性能
7103授权需求
7104数据流、工作流
7105数据库设计的其他问题
711总结
术语回顾
实践习题
习题
工具
文献注解
第8章关系数据库设计
81好的关系设计的特点
811设计选择:更大的模式
812设计选择:更小的模式
82原子域和第一范式
83使用函数依赖进行分解
831码和函数依赖
832BoyceCodd范式
833BCNF和保持依赖
834第三范式
835更高的范式
84函数依赖理论
841函数依赖集的闭包
842属性集的闭包
843正则覆盖
844无损分解
845保持依赖
85分解算法
851BCNF分解
8523NF分解
8533NF算法的正确性
854BCNF和3NF的比较
86使用多值依赖的分解
861多值依赖
862第四范式
8634NF分解
87更多的范式
88数据库设计过程
881ER模型和规范化
882属性和联系的命名
883为了性能去规范化
884其他设计问题
89时态数据建模
810总结
术语回顾
实践习题
习题
文献注解
第9章应用设计和开发
91应用程序和用户界面
92Web基础
921统一资源定位符
922超文本标记语言
923Web服务器和会话
93servlet和JSP
931一个servlet的例子
932servlet会话
933servlet的生命周期
934servlet支持
935服务器端脚本
936客户端脚本
94应用架构
941业务逻辑层
942数据访问层和对象-关系映射
943Web服务
944断连操作
95快速应用开发
951构建用户界面的工具
952Web应用框架
953报表生成器
96应用程序性能
961利用缓存减少开销
962并行处理
97应用程序安全性
971SQL注入
972跨站点脚本和请求伪造
973密码泄露
974应用程序认证
975应用级授权
976审计追踪
977隐私
98加密及其应用
981加密技术
982数据库中的加密支持
983加密和认证
99总结
术语回顾
实践习题
习题
项目建议
工具
文献注解
第三部分数据存储和查询
第10章存储和文件结构
101物理存储介质概述
102磁盘和快闪存储器
1021磁盘的物理特性
1022磁盘性能的度量
1023磁盘块访问的优化
1024快闪存储
103RAID
1031通过冗余提高可靠性
1032通过并行提高性能
1033RAID级别
1034RAID级别的选择
1035硬件问题
1036其他的RAID应用
104第三级存储
1041光盘
1042磁带
105文件组织
1051定长记录
1052变长记录
106文件中记录的组织
1061顺序文件组织
1062多表聚簇文件组织
107数据字典存储
108数据库缓冲区
1081缓冲区管理器
1082缓冲区替换策略
109总结
术语回顾
实践习题
习题
文献注解
第11章索引与散列
111基本概念
112顺序索引
1121稠密索引和稀疏索引
1122多级索引
1123索引的更新
1124辅助索引
1125多码上的索引
113B+树索引文件
1131B+树的结构
1132B+树的查询
1133B+树的更新
1134不唯一的搜索码
1135B+树更新的复杂性
114B+树扩展
1141B+树文件组织
1142辅助索引和记录重定位
1143字符串上的索引
1144B+树索引的批量加载
1145B树索引文件
1146闪存
115多码访问
1151使用多个单码索引
1152多码索引
1153覆盖索引
116静态散列
1161散列函数
1162桶溢出处理
1163散列索引
117动态散列
1171数据结构
1172查询和更新
1173静态散列与动态散列比较
118顺序索引和散列的比较
119位图索引
1191位图索引结构
1192位图操作的高效实现
1193位图和B+树
1110SQL中的索引定义
1111总结
术语回顾
实践习题
习题
文献注解
第12章查询处理
121概述
122查询代价的度量
123选择运算
1231使用文件扫描和索引的选择
1232涉及比较的选择
1233复杂选择的实现
124排序
1241外部排序归并算法
1242外部排序归并的代价分析
125连接运算
1251嵌套循环连接
1252块嵌套循环连接
1253索引嵌套循环连接
1254归并连接
1255散列连接
126其他运算
1261去除重复
1262投影
1263集合运算
1264外连接
1265聚集
127表达式计算
1271物化
1272流水线
128总结
术语回顾
实践习题
习题
文献注解
第13章查询优化
131概述
132关系表达式的转换
1321等价规则
1322转换的例子
1323连接的次序
1324等价表达式的枚举
133表达式结果集统计大小的估计
1331目录信息
1332选择运算结果大小的估计
1333连接运算结果大小的估计
1334其他运算的结果集大小的估计
1335不同取值个数的估计
134执行计划选择
1341基于代价的连接顺序选择
1342采用等价规则的基于代价的优化器
1343启发式优化
1344嵌套子查询的优化**
135物化视图**
1351视图维护
1352增量的视图维护
1353查询优化和物化视图
1354物化视图和索引选择
136查询优化中的高级话题**
1361topK优化
1362连接极小化
1363更新的优化
1364多查询优化和共享式扫描
1365参数化查询优化
137总结
术语回顾
实践习题
习题
文献注解
第四部分事务管理
第14章事务
141事务概念
142一个简单的事务模型
143存储结构
144事务原子性和持久性
145事务隔离性
146可串行化
147事务隔离性和原子性
1471可恢复调度
1472无级联调度
148事务隔离性级别
149隔离性级别的实现
1491锁
1492时间戳
1493多版本和快照隔离
1410事务的SQL语句表示
1411总结
术语回顾
实践习题
习题
文献注解
第15章并发控制
151基于锁的协议
1511锁
1512锁的授予
1513两阶段封锁协议
1514封锁的实现
1515基于图的协议
152死锁处理
1521死锁预防
1522死锁检测与恢复
153多粒度
154基于时间戳的协议
1541时间戳
1542时间戳排序协议
1543Thomas写规则
155基于有效性检查的协议
156多版本机制
1561多版本时间戳排序
1562多版本两阶段封锁
157快照隔离
1571更新事务的有效性检验步骤
1572串行化问题
158插入操作、删除操作与谓词读
1581删除
1582插入
1583谓词读和幻象现象
159实践中的弱一致性级别
1591二级一致性
1592游标稳定性
1593跨越用户交互的并发控制
1510索引结构中的并发**
1511总结
术语回顾
实践习题
习题
文献注解
第16章恢复系统
161故障分类
162存储器
1621稳定存储器的实现
1622数据访问
163恢复与原子性
1631日志记录
1632数据库修改
1633并发控制和恢复
1634事务提交
1635使用日志来重做和撤销事务
1636检查点
164恢复算法
1641事务回滚
1642系统崩溃后的恢复
165缓冲区管理
1651日志记录缓冲
1652数据库缓冲
1653操作系统在缓冲区管理中的作用
1654模糊检查点
166非易失性存储器数据丢失的故障
167锁的提前释放和逻辑undo操作
1671逻辑操作
1672逻辑undo日志记录
1673有逻辑undo的事务回滚
1674逻辑undo中的并发问题
168ARIES**
1681数据结构
1682恢复算法
1683其他特性
169远程备份系统
1610总结
术语回顾
实践习题
习题
文献注解
第五部分系统体系结构
第17章数据库系统体系结构
171集中式与客户-服务器体系结构
1711集中式系统
1712客户-服务器系统
172服务器系统体系结构
1721事务服务器
1722数据服务器
1723基于云的服务器
173并行系统
1731加速比和扩展比
1732互连网络
1733并行数据库体系结构
174分布式系统
1741分布式数据库示例
1742实现问题
175网络类型
1751局域网
1752广域网
176总结
术语回顾
实践习题
习题
文献注解
第18章并行数据库
181引言
182I/O并行
1821划分技术
1822划分技术比较
1823偏斜处理
183查询间并行
184查询内并行
185操作内并行
1851并行排序
1852并行连接
1853其他关系运算
1854运算的并行计算代价
186操作间并行
1861流水线并行
1862独立并行
187查询优化
188并行系统设计
189多核处理器的并行性
1891并行性与原始速度
1892高速缓冲存储器和多线程
1893适应现代体系架构的数据库系统设计
1810总结
术语回顾
实践习题
习题
文献注解
第19章分布式数据库
191同构和异构数据库
192分布式数据存储
1921数据复制
1922数据分片
1923透明性
193分布式事务
1931系统结构
1932系统故障模式
194提交协议
1941两阶段提交
1942三阶段提交
1943事务处理的可选择性模型
195分布式数据库中的并发控制
1951封锁协议
1952时间戳
1953弱一致性级别的复制
1954死锁处理
196可用性
1961基于多数的方法
1962读一个、写所有可用的方法
1963站点重建
1964与远程备份的比较
1965协调器的选择
1966为可用性而牺牲一致性
197分布式查询处理
1971查询转换
1972简单的连接处理
1973半连接策略
1974利用并行性的连接策略
198异构分布式数据库
1981数据统一视图
1982查询处理
1983多数据库中的事务管理
199基于云的数据库
1991云上的数据存储系统
1992云上的传统数据库
1993基于云的数据库的挑战
1910目录系统
19101目录访问协议
19102LDAP:轻量级目录访问协议
1911总结
术语回顾
实践习题
习题
文献注解
第六部分数据仓库、数据挖掘与信息检索
第20章数据仓库与数据挖掘
201决策支持系统
202数据仓库
2021数据仓库成分
2022数据仓库模式
2023面向列的存储
203数据挖掘
204分类
2041决策树分类器
2042其他类型的分类器
2043回归
2044分类器验证
205关联规则
206其他类型的关联
207聚类
208其他类型的数据挖掘
209总结
术语回顾
实践习题
习题
工具
文献注解
第21章信息检索
211概述
212使用术语的相关性排名
2121使用TFIDF的排名方法
2122基于相似性的检索
213使用超链接的相关性
2131流行度排名
2132PageRank
2133其他的流行度度量
2134搜索引擎作弊
2135将TFIDF和流行度排名度量方法结合
214同义词、多义词和本体
215文档的索引
216检索的有效性度量
217Web的抓取和索引
218信息检索:网页排名之外
2181查询结果的多样化
2182信息抽取
2183问答系统
2184查询结构化数据
219目录与分类
2110总结
术语回顾
实践习题
习题
工具
文献注解
第七部分特种数据库
第22章基于对象的数据库
221概述
222复杂数据类型
223SQL中的结构类型和继承
2231结构类型
2232类型继承
224表继承
225SQL中的数组和多重集合类型
2251创建和访问集合体值
252查询以集合体为值的属性
2253嵌套和解除嵌套
226SQL中的对象标识和引用类型
227OR特性的实现
228持久化程序设计语言
2281对象的持久化
2282对象标识和指针
2283持久对象的存储和访问
2284持久化C++系统
2285持久化Java系统
229对象-关系映射
2210面向对象与对象-关系
2211总结
术语回顾
实践习题
习题
工具
文献注解
第23章XML
231动机
232XML数据结构
233XML文档模式
2331文档类型定义
2332XML Schema
234查询和转换
2341XML树模型
2342XPath
2343XQuery
235XML应用程序接口
236XML数据存储
2361非关系的数据存储
2362关系数据库
2363SQL/XML
237XML应用
2371存储复杂结构数据
2372标准化数据交换格式
2373Web服务
2374数据中介
238总结
术语回顾
实践习题
习题
工具
文献注解
第八部分高级主题
第24章高级应用开发
241性能调整
2411提高面向集合的特性
2412批量加载和更新的调整
2413瓶颈位置
2414可调参数
2415硬件调整
2416模式调整
2417索引调整
2418使用物化视图
2419物理设计的自动调整
24110并发事务调整
24111性能模拟
242性能基准程序
2421任务集
2422数据库应用类型
2423TPC基准程序
243应用系统开发的其他问题
2431应用系统测试
2432应用系统移植
244标准化
2441SQL标准
2442数据库连接标准
2443对象数据库标准
2444基于XML的标准
245总结
术语回顾
实践习题
习题
文献注解
第25章时空数据和移动性
251动机
252数据库中的时间
2521SQL中的时间规范
2522时态查询语言
253空间与地理数据
2531几何信息表示
2532设计数据库
2533地理数据
2534空间查询
2535空间数据的索引
254多媒体数据库
2541多媒体数据格式
2542连续媒体数据
2543基于相似性的检索
255移动性和个人数据库
2551移动计算模型
2552路由和查询处理
2553广播数据
2554连接断开与一致性
256总结
术语回顾
实践习题
习题
文献注解
26章高级事务处理
261事务处理监控器
2611TP监控器体系结构
2612使用TP监控器进行应用协调
262事务工作流
2621工作流说明
2622工作流的故障原子性需求
2623工作流执行
2624工作流恢复
2625工作流管理系统
263电子商务
2631电子目录
2632市场
2633订单结算
264主存数据库
265实时事务系统
266长事务
2661不可串行化的执行
2662并发控制
2663嵌套事务和多级事务
2664补偿事务
2665实现问题
267总结
术语回顾
实践习题
习题
文献注解
第九部分实例研究
第27章PostgreSQL
271概述
272用户界面
2721交互式终端界面
2722图形界面
2723编程语言接口
273SQL变化和扩展
2731PostgreSQL类型
2732规则和其他主动数据库特征
2733可扩展性
274PostgreSQL中的事务管理
2741PostgreSQL的并发控制
2742恢复
275存储和索引
2751表
2752索引
276查询处理和优化
2761查询重写
2762查询规划和优化
2763查询执行器
2764触发器和约束
277系统结构
文献注解
第28章Oracle
281数据库设计和查询工具
2811数据库和应用设计工具
2812查询工具
282SQL的变化和扩展
2821对象-关系特性
2822Oracle XML DB
2823过程化语言
2824维度
2825联机分析处理
2826触发器
283存储和索引
2831表空间
2832段
2833表
2834索引
2835位图索引
2836基于函数的索引
2837连接索引
2838域索引
2839划分
28310物化视图
284查询处理和优化
2841执行方法
2842优化
2843并行执行
2844结果高速缓存
285并发控制与恢复
2851并发控制
2852恢复的基本结构
2853Oracle数据卫士
286系统体系结构
2861专用服务器:内存结构
2862专用服务器:进程结构
2863共享服务器
2864Oracle Real Application Clusters
2865自动存储管理器
2866Oracle Exadata
287复制、分布以及外部数据
2871复制
2872分布式数据库
2873外部数据源
288数据库管理工具
2881Oracle企业管理器
2882自动工作负载存储
2883数据库资源管理
289数据挖掘
文献注解
第29章IBM DB2 Universal Database
291概述
292数据库设计工具
293SQL的变化和扩展
2931XML特性
2932数据类型的支持
2933用户自定义函数和方法
2934大对象
2935索引扩展和约束
2936Web服务
2937其他特性
294存储和索引
2941存储体系结构
2942缓冲池
2943表、记录和索引
295多维聚簇
2951块索引
2952块映射
2953设计考虑
2954对现有技术的影响
296查询处理和优化
2961存取方法
2962连接、聚集和集合运算
2963对复杂SQL处理的支持
2964多处理器查询处理特性
2965查询优化
297物化的查询表
2971查询路由到MQT
2972MQT的维护
298DB2中的自治特性
2981配置
2982优化
299工具和实用程序
2910并发控制和恢复
29101并发与隔离
29102提交与回滚
29103日志与恢复
2911系统体系结构
2912复制、分布和外部数据
2913商务智能特性
文献注解
30章Microsoft SQL Server
301管理、设计和查询工具
3011数据库开发和可视化数据库工具
3012数据库查询和调优工具
3013SQL Server Management Studio
302SQL变化和扩展
3021数据类型
3022查询语言增强
3023例程
3024带过滤的索引
303存储和索引
3031文件组
3032文件组内的空间管理
3033表
3034索引
3035分区
3036在线创建索引
3037扫描和预读
3038压缩
304查询处理和优化
3041编译处理概述
3042查询简化
3043重排序和基于代价的优化
3044更新计划
3045优化时的数据分析
3046部分搜索和启发式搜索
3047查询执行
305并发与恢复
3051事务
3052封锁
3053恢复和可用性
306系统体系结构
3061服务器上的线程池
3062内存管理
3063安全性
307数据访问
308分布式异构查询处理
309复制
3091复制模型
3092复制选项
3010NET中的服务器编程
30101NET基本概念
30102SQL CLR宿主
30103可扩展性协定
3011XML支持
30111本地存储和组织XML
30112查询和更新XML数据类型
30113XQuery表达式的执行
3012SQL Server服务代理
3013商务智能
30131SQL Server集成服务
30132SQL Server分析服务
30133SQL Server报表服务
文献注解
第十部分附录
附录A详细的大学模式
参考文献
索引