描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111692225丛书名: 计算机科学丛书
编辑推荐
数据库领域的殿堂级作品。夯实数据库理论基础,修炼数据库技术内功的之选。对深入理解数据库,深人研究数据库,深入操作数据库都具有极强的指导作用!
内容简介
《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。本书基于该书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机及相关专业本科生数据库课程教材。
目 录
改编者序
译者简介
前言
作者简介
第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 表达式的安全
译者简介
前言
作者简介
第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 表达式的安全
前 言
数据库管理已经从一种专门的计算机应用发展为几乎所有企业中的一个核心成分,因此, 有关数据库系统的知识已成为计算机科学教育中必不可少的部分。
本书改编自《数据库系统概念》第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章从数据库的角度审视区块链技术,描述了区块链数据结构,以及使用加密散列函数和公钥加密来保证匿名性、无可辩驳性
本书改编自《数据库系统概念》第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章从数据库的角度审视区块链技术,描述了区块链数据结构,以及使用加密散列函数和公钥加密来保证匿名性、无可辩驳性
评论
还没有评论。