数据库系统概念(本科教学版·原书第7版)
作者 : [美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著
译者 : 杨冬青 李红燕 张金波 等译
丛书名 : 计算机科学丛书
出版日期 : 2021-10-15
ISBN : 978-7-111-69222-5
适用人群 : 高校计算机及相关专业本科生
定价 : 89.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 498
开本 : 16
原书名 : Database System Concepts,Seventh Edition
原出版社: McGraw-Hill
属性分类: 教材
包含CD : 无CD
绝版 :
图书简介

《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。本书基于该书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生数据库课程教材。

图书特色

数据库领域的殿堂级作品,夯实数据库理论基础的必备之选

图书前言

数据库管理已经从一种专门的计算机应用发展为几乎所有企业中的一个核心成分,因此, 有关数据库系统的知识已成为计算机科学教育中必不可少的部分。
本书改编自《数据库系统概念》第7版,适合作为本科生三年级或四年级数据库入门课程的教科书。在本书中,讲述数据库管理的基本概念,包括数据库设计、数据库语言、数据库系统实现等多个方面。除了这些作为入门课程的基本内容外,本书还包括了可作为课程补充材料或作为高级课程介绍性材料的高级内容。
我们仅要求读者熟悉基本的数据结构、计算机组成和一种高级程序设计语言,例如Java、C、C++或Python。概念都以直观的方式加以描述,其中的许多概念基于我们大学运行的例子加以阐释。本书中包括重要的理论结果,但省略了形式化证明,取而代之的是用图表和例子来说明为什么结论是正确的。对于形式化描述和研究结果的证明,读者可以参见参考文献中列出的研究论文和高级教材。
本书中包括的基本概念和算法通常基于当今商用或试验性的数据库系统中采用的概念和算法。我们的目标是在通用环境下描述这些概念和算法,没有与某个特定的数据库系统绑定。
在这个《数据库系统概念》第7版的改编版本中,我们保留了原书的基本内容,压缩或删除了一些高级内容,目的是使得本改编版本更适合本科生的数据库入门课程使用。下面我们简单描述本书的内容。
本书的组织
除第1章外,本书组织成四个部分:
引言(第1章)。第1章对数据库系统的性质和目标进行一般性综述。我们解释了数据库系统的概念是如何发展的,各数据库系统的共同特性是什么,数据库系统能为用户做什么,以及数据库系统如何与操作系统交互。我们还引入了一个数据库应用的例子:一个包括多个系、教师、学生和课程的大学。这个应用作为贯穿全书的运行实例。这一章本质上是激励性、历史性和解释性的。
第一部分:关系语言(第2~6章)。第 2 章介绍数据的关系模型,包括关系数据库的结构、数据库模式、码、模式图、关系查询语言、关系运算等基本概念。第 3~5章主要介绍最具影响力的面向用户的关系语言:SQL。第6章介绍形式化关系查询语言,包括关系代数、元组关系演算、域关系演算和关系查询语言的表达能力。
对于一个设计完成的模式,这部分描述了查询、修改、插入和删除等数据操作。虽然这里详细讲述了数据定义的语法,但关于模式设计的问题将推迟到第二部分讲述。
第二部分:数据库设计与应用程序开发(第7~9章)。第7章概要介绍数据库设计过程并详细描述实体-联系数据模型。实体-联系模型为数据库设计问题以及在数据模型的约束下捕获现实应用的语义时所遇到的问题提供了一个高层视图。UML类图表示也在这一章中讲述。第8章介绍关系数据库设计。这一章讲述了函数依赖和规范化的理论,重点强调了提出各种范式的动机,以及它们的直观含义。这一章以关系设计的概览开始,依赖于对函数依赖的逻辑蕴涵的直观理解。这使得规范化的概念可以在全面讨论函数依赖理论之前先做介绍,而函数依赖理论将在本章稍后部分讨论。授课教师可以只选用这些直观描述的内容,而不会丢失连贯性。不过,完整地讲授这一章将有利于学生对规范化概念形成较好的理解,从而引导他们去学习函数依赖理论中一些较艰深的概念。这一章的最后一节讲述时态数据建模。
第9章讨论用于构建交互式的基于Web的数据库应用和移动数据库应用的工具与技术。这一章对服务器端和客户端都进行了详细介绍,所包括的主题有:Java服务器端程序(servlet)、JSP、Django、Java描述语言(JavaScript)和Web服务。同时,还对以下主题进行了讨论:应用体系结构、对象-关系映射系统(包括 Hibernate和Django)、性能(包括使用 memcached和Redis的缓存)和确保Web应用安全的独特挑战。
第三部分:数据管理实现技术(第10~14章)。第10章首先介绍存储设备以及这些设备的特性如何影响数据库的物理组织和性能,然后讨论数据存储结构,包括文件组织、数据字典存储和数据库缓冲区管理。第11章讲解数据库系统使用的几种类型的索引。第12章描述如何处理查询,给出用于实现单独操作的算法,并描述查询优化过程。第13章着重介绍事务处理系统的基本概念,包括事务的原子性、一致性、隔离性和持久性,还概述了用于保证这些特性的方法,包括基于日志的恢复和使用锁的并发控制、基于时间戳的技术以及快照隔离。第14章首先重点讲述并发控制,并介绍几种保证可串行化的技术,包括封锁、时间戳和有效性检查技术,还讨论了多版本并发控制技术,接下来讨论在系统崩溃和存储器故障的情况下保证事务正确执行的主要技术,包括日志、检查点和数据库转储。
第四部分:高级话题(第15~17章)。第15章首先概述大规模数据分析应用,重点讲述与传统的数据库应用相比,这些应用如何对数据管理提出不寻常的要求,然后讨论了这些要求是如何得到满足的,接下来介绍半结构化数据,最后介绍数据仓库和数据挖掘的概念与主要方法。第16章从数据库的角度审视区块链技术,描述了区块链数据结构,以及使用加密散列函数和公钥加密来保证匿名性、无可辩驳性、防篡改性等区块链性质。第17章扩展了第9章所涵盖的内容,讨论性能调整、基准测试,以及从遗产系统中移植、标准化和分布式目录系统。
我们保持第6版的做法,将习题划分成两部分:实践习题和习题。实践习题的解答可从《数据库系统概念》第7版的配套网站(www.db-book.com)上得到。我们鼓励学生独立解决实践习题,然后用网站上的解答来检查自己的答案。习题的解答只有授课教师能得到。
授课教师注意事项
本书包括基本内容和高级内容,在一个学期内也许不能讲授所有这些内容。
本书的前14章是最基本的内容,对于入门性课程来说,教师可以选择重点讲授前14章,并介绍第15至17章中的部分内容。

封底文字

数据库领域的殿堂级作品
夯实数据库理论基础,修炼数据库技术内功的必备之选
对深入理解数据库,深入研究数据库,深入操作数据库都具有极强的指导作用!

《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多著名大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。我国也有多所大学采用本书作为本科生和研究生数据库课程的教材和主要教学参考书,收到了良好的效果。本书基于该书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生数据库课程教材。

本书特色:
内容简练。保留了原书最基本的内容,讲述数据库系统的基本概念;对数据库设计技术以及数据管理实现与应用的高级主题进行了有选择性的介绍。
直观易懂。采用直观的方式描述概念,以结构清晰的图示和示例代替形式化的证明。
实用性强。以大学数据库实例生动地解释重要概念,通俗易懂。
内容新颖。反映了数据库在设计、管理和使用方式等方面的变化及数据库概念方面的发展趋势。

作者简介

[美] 亚伯拉罕·西尔伯沙茨 (Abraham Silberschatz) [美] 亨利·F. 科思 (Henry F. Korth) [印] S. 苏达尔尚(S. Sudarshan) 著:亚伯拉罕·西尔伯沙茨
(Abraham Silberschatz)
于纽约州立大学石溪分校获得博士学位,现为耶鲁大学计算机科学系Sidney J. Weinberg教授,曾任贝尔实验室信息科学研究中心副主任。他是ACM会士、IEEE 会士以及康涅狄格科学与工程学会的成员,获得了48项专利和24项授权。他还是教科书《操作系统概念》的作者。
亨利·F. 科思
(Henry F. Korth)
于普林斯顿大学获得博士学位,现为理海大学计算机科学与工程系教授和计算机科学与商业项目联合主任,曾任贝尔实验室数据库原理研究中心主任、松下科技副总裁、得克萨斯大学奥斯汀分校副教授以及IBM研究中心研究人员。他是ACM会士、IEEE会士以及VLDB会议10年贡献奖的获得者。他的研究涉及数据库系统的方方面面,最近,他的研究致力于解决区块链在企业数据库中的应用问题。
S. 苏达尔尚
(S. Sudarshan)
于威斯康星大学获得博士学位,现为印度理工学院孟买校区Subrao M. Nilekani讲席教授,曾为贝尔实验室技术人员。他是ACM会士,发表了100余篇论文并获得15项专利。他目前的研究领域包括SQL查询的测试和分级、通过重写命令式代码来优化数据库应用程序,以及并行数据库的查询优化。

图书目录

改编者序
译者简介
前言
作者简介
第1章 引言1
1.1 数据库系统应用1
1.2 数据库系统的目标3
1.3 数据视图6
1.3.1 数据模型6
1.3.2 关系数据模型6
1.3.3 数据抽象7
1.3.4 实例和模式8
1.4 数据库语言9
1.4.1 数据定义语言9
1.4.2 SQL数据定义语言10
1.4.3 数据操纵语言10
1.4.4 SQL数据操纵语言11
1.4.5 从应用程序访问数据库11
1.5 数据库设计12
1.6 数据库引擎12
1.6.1 存储管理器13
1.6.2 查询处理器14
1.6.3 事务管理14
1.7 数据库和应用体系结构15
1.8 数据库用户和管理员16
1.8.1 数据库用户和用户界面16
1.8.2 数据库管理员17
1.9 数据库系统的历史17
1.10 总结20
术语回顾21
实践习题22
习题22
工具22
延伸阅读23
参考文献23
第一部分 关系语言
第2章 关系模型介绍26
2.1 关系数据库的结构26
2.2 数据库模式28
2.3 码29
2.4 模式图32
2.5 关系查询语言32
2.6 总结33
术语回顾33
实践习题34
习题34
延伸阅读35
参考文献35
第3章 SQL介绍36
3.1 SQL查询语言概览36
3.2 SQL数据定义37
3.2.1 基本类型37
3.2.2 基本模式定义38
3.3 SQL查询的基本结构40
3.3.1 单关系查询40
3.3.2 多关系查询42
3.4 附加的基本运算46
3.4.1 更名运算46
3.4.2 字符串运算47
3.4.3 select子句中的属性说明48
3.4.4 排列元组的显示次序48
3.4.5 where子句谓词49
3.5 集合运算49
3.5.1 并运算50
3.5.2 交运算51
3.5.3 差运算51
3.6 空值52
3.7 聚集函数53
3.7.1 基本聚集53
3.7.2 分组聚集54
3.7.3 having子句56
3.7.4 对空值和布尔值的聚集57
3.8 嵌套子查询58
3.8.1 集合成员资格58
3.8.2 集合比较59
3.8.3 空关系测试60
3.8.4 重复元组存在性测试61
3.8.5 from子句中的子查询62
3.8.6 with子句63
3.8.7 标量子查询64
3.8.8 不带from子句的标量64
3.9 数据库的修改65
3.9.1 删除66
3.9.2 插入67
3.9.3 更新68
3.10 总结69
术语回顾70
实践习题70
习题72
工具74
延伸阅读75
参考文献75
第4章 中级SQL76
4.1 连接表达式76
4.1.1 自然连接76
4.1.2 连接条件79
4.1.3 外连接80
4.1.4 连接类型和条件83
4.2 视图83
4.2.1 视图定义84
4.2.2 在SQL查询中使用视图85
4.2.3 物化视图86
4.2.4 视图更新86
4.3 事务88
4.4 完整性约束89
4.4.1 单个关系上的约束90
4.4.2 非空约束90
4.4.3 唯一性约束91
4.4.4 check子句91
4.4.5 引用完整性91
4.4.6 给约束赋名93
4.4.7 事务中对完整性约束的违反94
4.4.8 复杂check条件与断言94
4.5 SQL的数据类型与模式96
4.5.1 SQL中的日期和时间类型96
4.5.2 类型转换和格式化函数96
4.5.3 缺省值97
4.5.4 大对象类型98
4.5.5 用户自定义类型99
4.5.6 生成唯一码值101
4.5.7 create table的扩展102
4.5.8 模式、目录与环境102
4.6 SQL中的索引定义103
4.7 授权104
4.7.1 权限的授予与收回105
4.7.2 角色106
4.7.3 视图的授权107
4.7.4 模式的授权108
4.7.5 权限的转移108
4.7.6 权限的收回109
4.7.7 行级授权110
4.8 总结110
术语回顾111
实践习题112
习题113
延伸阅读114
参考文献114
第5章 高级SQL116
5.1 使用程序设计语言访问SQL116
5.1.1 JDBC117
5.1.2 从Python访问数据库123
5.1.3 ODBC123
5.1.4 嵌入式SQL125
5.2 函数和过程127
5.2.1 声明及调用SQL函数和过程127
5.2.2 用于过程和函数的语言结构128
5.2.3 外部语言例程131
5.3 触发器132
5.3.1 对触发器的需求132
5.3.2 SQL中的触发器132
5.3.3 何时不用触发器135
5.4 递归查询137
5.4.1 使用迭代的传递闭包137
5.4.2 SQL中的递归139
5.5 高级聚集特性140
5.5.1 排名141
5.5.2 分窗144
5.5.3 旋转145
5.5.4 上卷和立方体146
5.6 总结149
术语回顾149
实践习题149
习题151
工具153
延伸阅读153
第6章 形式化关系查询语言154
6.1 关系代数154
6.1.1 选择运算154
6.1.2 投影运算155
6.1.3 关系运算的复合155
6.1.4 笛卡儿积运算156
6.1.5 连接运算157
6.1.6 集合运算158
6.1.7 赋值运算159
6.1.8 更名运算160
6.1.9 等价查询161
6.2 元组关系演算161
6.2.1 查询示例161
6.2.2 形式化定义164
6.2.3 表达式的安全性164
6.3 域关系演算165
6.3.1 形式化定义165
6.3.2 查询示例165
6.3.3 表达式的安全性166
6.4 纯关系查询语言的表达能力167
6.5 总结168
术语回顾168
实践习题168
习题170
延伸阅读171
参考文献171
第二部分 数据库设计与应用程序开发
第7章 使用E-R模型的数据库设计174
7.1 设计过程概览174
7.1.1 设计阶段174
7.1.2 设计选择175
7.2 实体-联系模型176
7.2.1 实体集176
7.2.2 联系集177
7.3 复杂属性179
7.4 映射基数181
7.5 主码184
7.5.1 实体集184
7.5.2 联系集185
7.5.3 弱实体集186
7.6 从实体集中删除冗余属性187
7.7 将E-R图转换为关系模式190
7.7.1 强实体集的表示190
7.7.2 具有复杂属性的强实体集的表示190
7.7.3 弱实体集的表示192
7.7.4 联系集的表示192
7.7.5 模式的冗余193
7.7.6 模式的合并194
7.8 扩展的E-R特性194
7.8.1 特化195
7.8.2 概化196
7.8.3 属性继承196
7.8.4 特化上的约束197
7.8.5 聚集197
7.8.6 转换为关系模式198
7.9 实体-联系设计问题200
7.9.1 E-R图中的常见错误200
7.9.2 使用实体集还是属性201
7.9.3 使用实体集还是联系集202
7.9.4 二元还是n元联系集203
7.10 数据建模的可选表示法204
7.10.1 可选的E-R表示法205
7.10.2 统一建模语言206
7.11 数据库设计的其他方面208
7.11.1 功能要求208
7.11.2 数据流、工作流208
7.11.3 模式演化208
7.12 总结209
术语回顾210
实践习题210
习题212
工具213
延伸阅读214
参考文献214
第8章 关系数据库设计215
8.1 好的关系设计的特点215
8.1.1 分解216
8.1.2 无损分解217
8.1.3 规范化理论218
8.2 使用函数依赖进行分解218
8.2.1 符号惯例219
8.2.2 码和函数依赖219
8.2.3 无损分解和函数依赖221
8.3 范式222
8.3.1 Boyce-Codd范式222
8.3.2 第三范式224
8.3.3 BCNF和3NF的比较225
8.3.4 更高级的范式226
8.4 函数依赖理论226
8.4.1 函数依赖集的闭包226
8.4.2 属性集的闭包228
8.4.3 正则覆盖229
8.4.4 保持依赖232
8.5 使用函数依赖的分解算法233
8.5.1 BCNF分解233
8.5.2 3NF分解235
8.5.3 3NF算法的正确性236
8.6 使用多值依赖的分解237
8.6.1 多值依赖237
8.6.2 第四范式239
8.6.3 4NF分解239
8.7 更多的范式240
8.8 原子域和第一范式241
8.9 数据库设计过程242
8.9.1 E-R模型和规范化242
8.9.2 属性和联系的命名243
8.9.3 为了性能去规范化244
8.9.4 其他设计问题244
8.10 时态数据建模245
8.11 总结247
术语回顾248
实践习题249
习题251
延伸阅读253
参考文献254
第9章 应用程序开发255
9.1 应用程序和用户界面255
9.2 Web基础256
9.2.1 统一资源定位符256
9.2.2 超文本标记语言257
9.2.3 Web服务器和会话259
9.3 servlet261
9.3.1 servlet示例261
9.3.2 servlet会话263
9.3.3 servlet的生命周期264
9.3.4 应用服务器264
9.4 可选择的服务器端框架264
9.4.1 服务器端脚本264
9.4.2 Web应用框架266
9.4.3 Django框架267
9.5 客户端代码和Web服务268
9.5.1 JavaScript268
9.5.2 Web服务272
9.5.3 断连操作272
9.5.4 移动应用平台273
9.6 应用程序体系结构274
9.6.1 业务逻辑层275
9.6.2 数据访问层和对象-关系映射275
9.7 应用程序性能278
9.7.1 通过高速缓存减少开销279
9.7.2 并行处理280
9.8 应用程序安全性280
9.8.1 SQL注入280
9.8.2 跨站点脚本和请求伪造281
9.8.3 密码泄露282
9.8.4 应用级认证283
9.8.5 应用级授权284
9.8.6 审计追踪286
9.8.7 隐私286
9.9 加密及其应用287
9.9.1 加密技术287
9.9.2 数据库中的加密支持289
9.9.3 加密和认证290
9.10 总结291
术语回顾292
实践习题293
习题293
项目建议294
工具296
延伸阅读297
参考文献297
第三部分 数据管理实现技术
第10章 存储管理300
10.1 物理存储介质概述300
10.2 存储器接口302
10.3 磁盘303
10.3.1 磁盘的物理特性303
10.3.2 磁盘的性能度量305
10.4 闪存306
10.5 文件组织308
10.5.1 定长记录308
10.5.2 变长记录310
10.5.3 大对象存储312
10.6 文件中记录的组织312
10.6.1 堆文件组织313
10.6.2 顺序文件组织314
10.6.3 多表聚簇文件组织315
10.6.4 划分317
10.7 数据字典存储317
10.8 数据库缓冲区319
10.8.1 缓冲区管理器319
10.8.2 缓冲区替换策略321
10.8.3 写操作的重排序与恢复323
10.9 总结324
术语回顾324
实践习题325
习题326
延伸阅读327
参考文献327
第11章 索引328
11.1 基本概念328
11.2 顺序索引329
11.2.1 稠密索引和稀疏索引329
11.2.2 多级索引332
11.2.3 索引更新333
11.2.4 辅助索引334
11.2.5 多码索引335
11.3 B+树索引文件335
11.3.1 B+树的结构336
11.3.2 B+树的查询338
11.3.3 B+树的更新341
11.3.4 B+树更新的复杂度346
11.3.5 非唯一性搜索码347
11.4 散列索引348
11.5 多码访问350
11.5.1 使用多个单码索引350
11.5.2 多码索引350
11.5.3 覆盖索引351
11.6 索引的创建351
11.7 位图索引353
11.8 总结354
术语回顾355
实践习题355
习题356
延伸阅读357
参考文献357
第12章 查询处理和查询优化358
12.1 概述358
12.2 查询代价的度量360
12.3 关系代数运算的执行362
12.3.1 选择运算362
12.3.2 排序366
12.3.3 连接运算368
12.3.4 其他运算378
12.4 表达式执行381
12.4.1 物化381
12.4.2 流水线382
12.5 查询优化384
12.5.1 概述384
12.5.2 关系表达式的转换386
12.5.3 表达式结果的统计信息估计393
12.5.4 执行计划的选择400
12.6 总结408
术语回顾410
实践习题411
习题414
延伸阅读415
参考文献415
第13章 事务管理416
13.1 事务的概念416
13.2 一个简单的事务模型417
13.3 存储器结构419
13.4 事务的原子性和持久性420
13.5 事务的隔离性421
13.6 可串行化425
13.7 事务的隔离性和原子性428
13.7.1 可恢复调度428
13.7.2 无级联调度428
13.8 事务的隔离性级别429
13.9 隔离性级别的实现431
13.9.1 锁431
13.9.2 时间戳432
13.9.3 多版本和快照隔离432
13.10 事务的SQL语句表示433
13.11 总结434
术语回顾435
实践习题436
习题436
延伸阅读437
参考文献437
第14章 并发控制与恢复438
14.1 基于锁的协议438
14.1.1 锁438
14.1.2 锁的授予441
14.1.3 两阶段封锁协议441
14.1.4 封锁的实现443
14.1.5 基于图的协议444
14.2 死锁处理446
14.2.1 死锁预防446
14.2.2 死锁检测与恢复447
14.3 多粒度449
14.4 插入操作、删除操作与谓词读451
14.4.1 删除451
14.4.2 插入452
14.4.3 谓词读和幻象现象452
14.5 基于时间戳的协议454
14.5.1 时间戳454
14.5.2 时间戳排序协议455
14.5.3 Thomas写规则456
14.6 基于有效性检查的协议458
14.7 多版本机制459
14.7.1 多版本时间戳排序460
14.7.2 多版本两阶段封锁461
14.8 故障分类462
14.9 存储器463
14.9.1 稳定存储器的实现463
14.9.2 数据访问464
14.10 恢复与原子性465
14.10.1 日志记录466
14.10.2 数据库修改467
14.10.3 并发控制与恢复467
14.10.4 事务提交468
14.10.5 使用日志来重做和撤销事务 468
14.10.6 检查点471
14.11 恢复算法472
14.11.1 事务回滚472
14.11.2 系统崩溃后的恢复472
14.11.3 提交处理的优化474
14.12 缓冲区管理474
14.12.1 日志记录缓冲474
14.12.2 数据库缓冲475
14.12.3 操作系统在缓冲区管理中的作用476
14.12.4 模糊检查点477
14.13 总结477
术语回顾480
实践习题481
习题483
延伸阅读484
参考文献484
第四部分 高级话题一
第15章 大数据分析
第16章 区块链数据库
第17章 高级应用开发
附录A 详细的大学模式

教学资源推荐
作者: Abraham Silberschatz, Henry F.Korth, S.Sudarshan
作者: 李丹 赵占坤 丁宏伟 石彦芳
作者: (美)Jiawei Han伊利诺伊大学厄巴纳-尚佩恩分校 (加)Micheline Kamber西蒙-弗雷泽大学 (加)Jian Pei西蒙-弗雷泽大学 著
作者: John Adolph Palinski
参考读物推荐
作者: (美)Shashi Shekhar,Sanjay Chawla
作者: 钟鸣 刘晓霞 编著
作者: 孟小峰 编著