《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。本书基于该书第5版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生数据库课程教材。
本书特点:
●内容简练。保留了原书最基本的内容(第1~10章),讲述数据库系统的基本概念;对数据库系统实现技术和数据管理与应用的高级主题,进行了有选择性的介绍(第11~15章)。教师可以选择重点讲授前10章,并介绍第11~15章中的部分内容。
●直观易懂。采用直观的方式描述概念,以结构清晰的图示和示例代替形式化的证明。
●实用性强。以银行数据库实例生动地解释重要概念,通俗易懂。
●内容新颖。反映了数据库在设计、管理和使用方式等方面的变化及数据库概念方面的发展趋势。
无
数据库管理已经从一种专门的计算机应用发展为现代计算环境中的一个重要部分,因此,有关数据库系统的知识已成为计算机科学教育中的一个核心的部分。
本书改编目《数据库系统概念》第5版,适合作为本科生三年级或四年级数据库入门课程的教科书。在本书中,我们讲述数据库管理的基本概念,这些概念包括数据库设计、数据库语言、数据库系统实现等多个方面。除了这些作为入门课程的基本内容外,本书还包括一些可作为课程补充性材料或作为高级课程介绍性材料的高级内容。
我们仅要求读者熟悉基本的数据结构、计算机组织结构和一种高级程序设计语言(例如Java、 C或Pascal)。书中的概念都以直观的方式加以描述,其中的许多概念都基于银行运营的例子加以阐释。本书中包括重要的理论结果,但省略了形式化证明,取而代之的是用图表和例子来说明为什么结论是正确的。对于形式化描述和研究结果的证明,读者可以参考文献注解中列出的研究论文和高级教材。
本书中所包括的基本概念和算法通常都基于当今的商品化或试验性的数据库系统中采用的概念和算法。我们的目标是在一个通常环境下描述这些概念和算法,没有与某个特定的数据库系统绑定。
在这本《数据库系统概念》第5版的改编版本中,我们保留了原书第5版的基本内容,压缩或删除了一些高级内容,其目的是使得改编版本更适合于本科生的数据库入门课程使用。下面我们简单描述本书内容的组织。
本书的组织
本书组织成五个主要部分:
综述(第1章)。第1章对数据库系统的性质和目标进行了一般性综述。解释了数据库系统的概念是如何发展的,各数据库系统的共同特性是什么,数据库系统能为用户做什么,以及数据库系统如何与操作系统交互。这一章还引入了一个数据库应用的例子:由多个分行组成的一个银行企业。这个例子用作贯穿全书的运行实例。
第一部分:关系数据库(第2章至第5章)。第2章介绍了数据的关系模型,包括基本概念以及关系代数。该章还给出了对完整性约束的简要介绍。第3章和第4章重点介绍最具影响力的面向用户的关系语言——SQL。第3章给出了对SQL的基本介绍;而第4章则描述了SQL的一些更高级的特性,包括编程语言和支持SQL的数据库之间如何交互。第5章介绍其他的一些关系语言,包括关系演算、QBE和Datalog。
这部分中的章节描述了数据操纵,包括查询、修改、插入和删除(假设已有一个模式设计)。
关于模式设计的问题延迟到第二部分讲述。
第二部分:数据库设计(第6章至第8章)。第6章给出了数据库设计过程的概要介绍,主要侧重于用实体-联系数据模型进行数据库设计。实体-联系模型为数据库设计问题以及在数据模型的约束下捕获现实应用的语义时所遇到的问题提供了一个高层视图。
第7章介绍了关系数据库设计理论。这一章讲述了函数依赖和规范化,重点强调了提出各种范式的原因,以及它们的直观含义。这一章以关系设计的概览开始,依赖于对函数依赖的逻辑蕴涵的直观理解。在完整描述函数依赖理论之前先介绍了规范化概念,函数依赖理论在第7章稍后部分讨论。教师可以只选用71节至73节这些较前面的章节,而不会丢失连贯性。不过,完整地讲授这一章将有利于学生较好地理解规范化概念,从而进一步理解函数依赖理论中一些较艰深的概念。
第8章讲述了应用设计和开发。这一章侧重于用基于Web的界面构建数据库应用。另外,这一章还讲述了应用安全性。
第三部分:基于对象的数据库和XML(第9章和第10章)。第9章介绍基于对象的数据库。该章讲述了对象-关系数据模型,该模型扩展了关系数据模型以支持复杂数据类型、类型继承和对象标识。该章还描述了用面向对象的编程语言来访问数据库。
第10章介绍数据表示的XML标准,它正日益广泛地应用于复杂数据交换和存储。这一章还描述了XML的查询语言。
第四部分:数据存储、查询和事务管理
(第11章至第13章)。第11章简单介绍了物理存储介质,描述了记录是如何映射到文件,然后又如何映射到磁盘中的比特的;并描述了数据库系统使用的几种索引类型。
第12章描述了如何处理查询,给出了用于实现单独操作的算法,并描述了查询优化过程。第13章详细阐述了事务的概念,包括事务的原子性、持久性、隔离性和其他特性;介绍了几种实现隔离性的并发控制技术,并描述了数据库恢复管理部件,它实现了数据库的原子性与持久性。
第五部分:高级话题(第14章和第15章)。第14章介绍了数据仓库的概念并解释了什么是数据挖掘和联机分析处理(OLAP),包括SQL:1999中对数据挖掘和数据仓库的支持。第15章讨论了性能评测标准、性能调整、标准化和遗产系统应用的转移。
在练习方面,我们保持《数据库系统概念》第5版的做法,把习题划分成两部分:实践习题(practice exercise)和习题(exercise)。实践习题的
答案在《数据库系统概念》第5版的网页(http://www.db-book.com/)
可以得到。我们鼓励学生独立解决这些实践习题,然后用网页上的答案来检查自
己的答案。其他习题的答案只有讲课教师能得到(参看下面的“Web主页和教学补充材料”,以获取如何得到答案的信息)。
讲课教师注意事项
本书包括基本内容和一些高级内容,在一个学期内也许不能讲授所有这些内容。我们以符号“”把某些节标记为高级内容,教师可根据各自学校的实际情况,省略这些节,而仍能保持内容的连续性。较难的习题(可以忽略)同样用符号“”标记了出来。
本书的前10章是最基本的内容,对于入门性课程来说,教师可以重点讲授前10章,并介绍第11至15章中的部分内容。
Web主页和教学补充材料
《数据库系统概念》的WWW主页的网址是:
http://www.db-book.com/
该主页包括以下内容:
所有各章的幻灯片
实践习题的答案
三个附录
最新勘误表
下列附加材料仅提供给采用本书作为教材的教师:
书中所有习题答案的教师手册
实验材料
模型课程的教学提纲
想要得到这些附加教辅资料的教师,请联络本书原版的出版方——麦格劳·希尔教育出版公
司(电话:010-62790299转108,800-810-1936;邮件instructorchina @ mcgraw-hill
com)索要相关资料。——编辑注
《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学院等都采用本书作为教科书。我国也有许多所大学采用本书作为本科生和研究生的数据库课程的教材和主要教学参考书,收到了良好的效果。本书基于该书第5版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生数据库课程教材。
本书特点:
●内容简练。保留了原书最基本的内容(第1~10章),讲述数据库系统的基本概念;对数据库系统实现技术和数据管理与应用的高级主题,进行了有选择性的介绍(第11~15章)。教师可以选择重点讲授前10章,并介绍第11~15章中的部分内容。
●直观易懂。采用直观的方式描述概念,以结构清晰的图示和示例代替形式化的证明。
●实用性强。以银行数据库实例生动地解释重要概念,通俗易懂。
●内容新颖。反映了数据库在设计、管理和使用方式等方面的变化及数据库概念方面的发展趋势。
改 编 者 序
数据库系统是对数据进行存储、管理、处理和维护的软件系统,是现代计算环境中的一个核
心成分。随着计算机硬件、软件技术的飞速发展和计算机系统在各行各业的广泛应用,数据
库技术的发展尤其迅速,引人注目。有关数据库系统的理论和技术是计算机科学技术教育中
必不可少的部分。《数据库系统概念》是一本经典的、备受赞扬的数据库系统教科书,其内
容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它已被国际上许多著
名大学所采用,并多次再版。
我们先后将《数据库系统概念》一书的第3版、第4版和第5版译成中文,由机械工业出版社
分
别于2000年春季、2003年春季和2006年秋季出版发行。国内许多大学采用《数据库系统概念
》作为本科生和研究生数据库课程的教材或主要教学参考书,收到了良好的效果。
本书基于《数据库系统概念》第5版进行改编,保留其中的基本内容,压缩或删除了一些高
级内容,其目的是使它更适合于本科生的数据库课程教学需要。
本书的前10章是最基本的内容,讲述数据库系统的基本概念,包括对数据库系统的性质和目
标的综述,对关系数据模型和关系语言的介绍,对数据库设计过程、关系数据库理论以及数
据库应用设计和开发(包括Web应用和安全问题等)的详细讨论。这一部分中还介绍了新型的
数据库系统——对象-关系数据库,以及XML数据库设计和查询的相关内容(包括对XML Schem
a和XQuery的更深入的描述和对SQL/XML标准的介绍)。本书可作为大学本科数据库概论课程
的教材或主要参考资料,教师可以重点讲授前10章,并介绍第11至15章中的部分内容。
限于改编者水平,改编中疏漏和错误难免,欢迎批评指正。
杨冬青2007年于北京大学
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环境下的信息集成与共享、典型应用领域的信息系统等
目 录
改编者序
前言
第1章 引言
11 数据库系统的应用
12 数据库系统的目标
13 数据视图
131 数据抽象
132 实例和模式
133 数据模型
14 数据库语言
141 数据操纵语言
142 数据定义语言
15 关系数据库
151 表
152 数据操纵语言
153 数据定义语言
154 来自应用程序的数据库
访问
16 数据库设计
161 设计过程
162 银行企业的数据库设计
163 实体-联系模型
164 规范化
17 基于对象数据库和半结构化数据库
171 基于对象数据模型
172 半结构化数据模型
18 数据存储和查询
181 存储管理器
182 查询处理器
19 事务管理
110 数据挖掘与分析
111 数据库体系结构
112 数据库用户和管理员
1121 数据库用户和用户界面
1122 数据库管理员
113 数据库系统的历史
114 小结
术语回顾
实践习题
习题
文献注解
工具
第一部分 关系数据库
第2章 关系模型
21 关系数据库的结构
211 基本结构
212 数据库模式
213 码
214 查询语言
22 关系代数基本运算
221 选择运算
222 投影运算
223 并运算
224 集合差运算
225 笛卡儿积运算
226 更名运算
227 关系代数的形式化定义
23 附加的关系代数运算
231 集合交运算
232 自然连接运算
233 除运算
234 赋值运算
24 扩展的关系代数运算
241 广义投影
242 聚集函数
243 外连接
25 空值
26 数据库的修改
261 删除
262 插入
263 更新
27 小结
术语回顾
实践习题
习题
文献注解
第3章 SQL
31 背景
32 数据定义
321 基本域类型
322 SQL中的基本模式定义
33 SQL查询的基本结构
331 select子句
332 where子句
333 from子句
334 更名运算
335 元组变量
336 字符串运算
337 排列元组的显示次序
338 重复
34 集合运算
341 union运算
342 intersect运算
343 except运算
35 聚集函数
36 空值
37 嵌套子查询
371 集合成员资格
372 集合的比较
373 测试是否为空关系
374 测试是否存在重复元组
38 复杂查询
381 派生关系
382 with子句
39 视图
391 视图定义
392 用其他视图定义视图
310 数据库的修改
3101 删除
3102 插入
3103 更新
3104 视图的更新
3105 事务
311 连接关系**
3111 举例
3112 连接类型和条件
312 小结
术语回顾
实践习题
习题
文献注解
第4章 高级SQL
41 SQL的数据类型与模式
411 SQL中内建的数据类型
412 用户定义类型
413 大对象类型
414 模式、 目录与环境
42 完整性约束
421 单个关系上的约束
422 not null约束
423 unique约束
424 check子句
425 参照完整性
426 断言
43 授权
44 嵌入式SQL
45 动态SQL
451 ODBC
452 JDBC
46 函数和过程化结构**
461 SQL函数和过程
462 过程化结构
463 外部语言例程
47 递归查询**
471 使用迭代的传递闭包
472 SQL中的递归
48 高级SQL特性**
481 create table的扩展
482 关于子查询的更多内容
483 数据库更新的高级结构
49 小结
术语回顾
实践习题
习题
文献注解
第5章 其他关系语言
51 元组关系演算
511 查询的例子
512 形式化定义
513 表达式的安全性
514 语言的表达能力
52 域关系演算
521 形式化定义
522 查询的例子
523 表达式的安全性
524 语言的表达能力
53 QBE
531 框架表
532 在单个关系上的查询
533 在多个关系上的查询
534 条件框
535 结果关系
536 在Microsoft Access中的QBE
54 Datalog
541 基本结构
542 Datalog规则的语法
543 非递归Datalog的语义
544 安全性
545 Datalog中的关系运算
546 Datalog中的递归
547 递归的能力
55 小结
术语回顾
实践习题
习题
文献注解
工具
第二部分 数据库设计
第6章 数据库设计和E-R模型
61 设计过程概览
611 设计阶段
612 设计选择
62 实体-联系模型
621 实体集
622 联系集
623 属性
63 约束
631 映射基数
632 码
633 参与约束
64 实体-联系图
65 实体-联系设计问题
651 用实体集还是用属性
652 用实体集还是用联系集
653 二元联系集与n元联系集
654 联系属性的布局
66 弱实体集
67 扩展E-R特性
671 特殊化
672 一般化
673 属性继承
674 一般化上的约束
675 聚集
676 可选择的E-R符号
68 银行企业的数据库设计
681 E-R设计的可选方案
682 银行数据库的数据需求
683 银行数据库中的实体集
684 银行数据库中的联系集
685 银行数据库中的E-R图
69 转换为关系模式
691 强实体集的表示方式
692 弱实体集的表示方式
693 联系集的表示方式
694 复合属性和多值属性
695 一般化的表示方式
696 聚集的表示方式
697 银行企业的关系模式
610 数据库设计的其他方面
6101 数据约束和关系数据库设计
6102 使用需求: 查询和性能
6103 授权需求
6104 数据流、 工作流
6105 数据库设计的其他问题
611 小结
术语回顾
实践习题
习题
文献注解
工具
第7章 关系数据库设计
71 好的关系设计的特点
711 设计选择: 更大的模式
712 设计选择: 更小的模式
72 原子域和第一范式
73 使用函数依赖的分解
731 码和函数依赖
732 Boyce-Codd范式
733 BCNF和保持依赖
734 第三范式
735 更高的范式
74 函数依赖理论
741 函数依赖集的闭包
742 属性集的闭包
743 正则覆盖
744 无损分解
745 保持依赖
75 用于分解的算法
751 BCNF分解
752 3NF分解
753 BCNF和3NF的比较
76 使用多值依赖的分解
761 多值依赖
762 第四范式
763 4NF分解
77 更多的范式
78 数据库设计过程
781 E-R模型和规范化
782 属性和联系的命名
783 为了性能解除规范化
784 其他设计问题
79 时态数据建模
710 小结
术语回顾
实践习题
习题
文献注解
第8章 应用设计和开发
81 用户界面和工具
811 表格和图形用户界面
812 报表生成器
82 数据库的Web界面
83 Web基础
831 统一资源定位符
832 超文本标记语言
833 客户端脚本和applet
834 Web服务器和会话
84 servlet和JSP
841 一个servlet的例子
842 servlet会话
843 servlet的生命周期
844 servlet支持
845 服务器端脚本
85 建立大型Web应用
851 构建Web界面
852 Microsoft ASP
853 提高应用程序性能
86 触发器
861 对触发器的需求
862 SQL中的触发器
863 何时不用触发器
87 SQL中的授权
871 权限的授予
872 在SQL中授权
873 角色
874 收回权限
875 视图、 函数和过程的授权
876 SQL授权的局限
877 审计追踪
88 应用系统安全性
881 加密技术
882 数据库中的加密支持
883 鉴定
884 保护应用程序
885 隐私
89 小结
术语回顾
实践习题
习题
项目建议
文献注解
工具
第三部分 基于对象的数据库和XML
第9章 基于对象的数据库
91 概述
92 复杂数据类型
93 SQL中的结构类型和继承
931 结构类型
932 类型继承
94 表继承
95 SQL中的数组和多重集合类型
951 创建和访问集合体值
952 查询以集合体为值的属性
953 嵌套和解除嵌套
96 对象标识和SQL中的引用类型
97 O-R特性的实现
98 持久化程序设计语言
981 对象的持久化
982 对象标识和指针
983 持久对象的存储和访问
984 持久化C++系统
985 持久化Java系统
99 面向对象与对象-关系
910 小结
术语回顾
实践习题
习题
文献注解
工具
第10章 XML
101 动机
102 XML数据的结构
103 XML文档模式
1031 文档类型定义
1032 XML Schema
104 查询和转换
1041 XPath
1042 XQuery
1043 XSLT**
105 XML应用程序接口
106 XML数据的存储
1061 非关系的数据存储
1062 关系数据库
1063 SQL/XML
107 XML应用
1071 存储复杂结构的数据
1072 标准化数据交换格式
1073 Web服务
1074 数据中介
108 小结
术语回顾
实践习题
习题
文献注解
工具
第四部分 数据存储、查询和事务管理
第11章 数据存储和数据存取
111 物理存储介质概述
112 磁盘
1121 磁盘的物理特性
1122 磁盘性能的度量
1123 磁盘块访问的优化
113 存储访问和缓冲区
1131 缓冲区管理器
1132 缓冲区替换策略
114 文件和记录的组织
1141 文件组织
1142 文件中记录的组织
115 数据字典存储
116 索引的基本概念
117 顺序索引
1171 稠密索引和稀疏索引
1172 多级索引
1173 辅助索引
118 B+树索引文件
1181 B+树的结构
1182 B+树的查询
1183 B+树的更新
119 散列文件组织和散列索引
1191 散列函数
1192 桶溢出处理
1193 散列索引
1194 动态散列
1195 顺序索引和散列的比较
1110 SQL中的索引定义
1111 小结
术语回顾
实践习题
习题
文献注解
第12章 查询处理和查询优化
121 概述
122 查询代价的度量
123 关系代数运算的执行
1231 选择运算
1232 连接运算
124 表达式计算
1241 实体化
1242 流水线
125 查询优化
1251 查询优化概述
1252 关系表达式的转换
1253 表达式结果集统计大小的
估计
1254 选择执行计划
126 小结
术语回顾
实践习题
习题
文献注解
第13章 事务管理
131 事务概念
132 事务的并发执行和调度
1321 并发执行
1322 可串行化
1323 可恢复性
133 并发控制
1331 基于锁的协议
1332 基于时间戳的协议
1333 基于有效性检查的协议
134 恢复系统
1341 故障分类
1342 数据访问
1343 基于日志的恢复
135 小结
术语回顾
实践习题
习题
文献注解
第五部分 高 级 话 题
第14章 数据分析与挖掘
141 决策支持系统
142 数据分析和联机分析处理
1421 联机分析处理
1422 OLAP实现
143 数据仓库工程
1431 数据仓库的成分
1432 数据仓库模式
144 数据挖掘
1441 数据挖掘应用
1442 分类
1443 关联规则
1444 其他类型的关联
1445 聚类
1446 其他类型的挖掘
145 小结
术语回顾
实践习题
习题
文献注解
工具
第15章 高级应用开发
151 性能调整
1511 瓶颈的位置
1512 可调参数
1513 硬件的调整
1514 模式的调整
1515 索引的调整
1516 使用物化视图
1517 物理设计的自动调整
1518 事务的调整
1519 性能模拟
152 性能基准程序
1521 任务集
1522 数据库应用类型
1523 TPC基准程序
1524 OODB基准程序
153 标准化
1531 SQL标准
1532 数据库连接标准
1533 对象数据库标准
1534 基于XML的标准
154 应用系统移植
155 小结
术语回顾
实践习题
习题
文献注解