描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111681816丛书名: 计算机科学丛书
内容简介
《数据库系统概念》是数据库系统方面的经典教材之一,其内容由浅入深,既包含数据库系统基本概念,又反映数据库技术新进展。它被国际上许多大学所采用,包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学等。
目 录
出版者的话
译者序
前言
关于作者
第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
2.6.1 选择运算33
2.6.2 投影运算34
2.6.3 关系运算的复合34
2.6.4 笛卡儿积运算35
2.6.5 连接运算36
2.6.6 集合运算37
2.6.7 赋值运算38
2.6.8 更名运算39
2.6.9 等价查询40
2.7 总结40
术语回顾41
实践习题41
习题42
延伸阅读43
参考文献44
第3章 SQL介绍45
3.1 SQL查询语言概览45
3.2 SQL数据定义46
3.2.1 基本类型46
3.2.2 基本模式定义47
3.3 SQL查询的基本结构49
3.3.1 单关系查询49
3.3.2 多关系查询51
3.4 附加的基本运算55
3.4.1 更名运算55
3.4.2 字符串运算56
3.4.3 select子句中的属性说明57
3.4.4 排列元组的显示次序 57
3.4.5 where子句谓词58
3.5 集合运算58
3.5.1 并运算59
3.5.2 交运算60
3.5.3 差运算60
3.6 空值61
3.7 聚集函数62
3.7.1 基本聚集62
3.7.2 分组聚集63
3.7.3 having子句65
3.7.4 对空值和布尔值的聚集66
3.8 嵌套子查询67
3.8.1 集合成员资格67
3.8.2 集合比较68
3.8.3 空关系测试69
3.8.4 重复元组存在性测试70
3.8.5 from子句中的子查询71
3.8.6 with子句72
3.8.7 标量子查询73
3.8.8 不带from子句的标量73
3.9 数据库的修改74
3.9.1 删除75
3.9.2 插入76
3.9.3 更新77
3.10 总结78
术语回顾79
实践习题79
习题81
工具83
延伸阅读84
参考文献84
第4章 中级SQL85
4.1 连接表达式85
4.1.1 自然连接85
4.1.2 连接条件88
4.1.3 外连接89
4.1.4 连接类型和条件92
4.2 视图92
4.2.1 视图定义93
4.2.2 在SQL查询中使用视图94
4.2.3 物化视图95
4.2.4 视图更新95
4.3 事务97
4.4 完整性约束98
4.4.1 单个关系上的约束99
4.4.2 非空约束99
4.4.3 性约束100
4.4.4 check子句100
4.4.5 引用完整性100
4.4.6 给约束赋名102
4.4.7 事务中对完整性约束的违反103
4.4.8 复杂check条件与断言103
4.5 SQL的数据类型与模式105
4.5.1 SQL中的日期和时间类型105
4.5.2 类型转换和格式化函数105
4.5.3 缺省值106
4.5.4 大对象类型107
4.5.5 用户自定义类型108
4.5.6 生成码值110
4.5.7 create table的扩展111
4.5.8 模式、目录与环境111
4.6 SQL中的索引定义112
4.7 授权113
4.7.1 权限的授予与收回114
4.7.2 角色115
4.7.3 视图的授权116
4.7.4 模式的授权117
4.7.5 权限的转移117
4.7.6 权限的收回118
4.7.7 行级授权119
4.8 总结119
术语回顾120
实践习题121
习题122
延伸阅读123
参考文献123
第5章 高级SQL125
5.1 使用程序设计语言访问SQL125
5.1.1 JDBC126
5.1.2 从Python访问数据库132
5.1.3 ODBC132
5.1.4 嵌入式SQL134
5.2 函数和过程136
5.2.1 声明及调用SQL函数和过程136
5.2.2 用于过程和函数的语言结构137
5.2.3 外部语言例程140
5.3 触发器141
5.3.1 对触发器的需求141
5.3.2 SQL中的触发器141
5.3.3 何时不用触发器144
5.4 递归查询146
5.4.1 使用迭代的传递闭包146
5.4.2 SQL中的递归148
5.5 高级聚集特性149
5.5.1 排名150
5.5.2 分窗153
5.5.3 旋转154
5.5.4 上卷和立方体155
5.6 总结158
术语回顾158
实践习题158
习题160
工具161
延伸阅读162
第二部分 数据库设计
第6章 使用E-R模型的数据库设计164
6.1 设计过程概览164
6.1.1 设计阶段164
6.1.2 设计
译者序
前言
关于作者
第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
2.6.1 选择运算33
2.6.2 投影运算34
2.6.3 关系运算的复合34
2.6.4 笛卡儿积运算35
2.6.5 连接运算36
2.6.6 集合运算37
2.6.7 赋值运算38
2.6.8 更名运算39
2.6.9 等价查询40
2.7 总结40
术语回顾41
实践习题41
习题42
延伸阅读43
参考文献44
第3章 SQL介绍45
3.1 SQL查询语言概览45
3.2 SQL数据定义46
3.2.1 基本类型46
3.2.2 基本模式定义47
3.3 SQL查询的基本结构49
3.3.1 单关系查询49
3.3.2 多关系查询51
3.4 附加的基本运算55
3.4.1 更名运算55
3.4.2 字符串运算56
3.4.3 select子句中的属性说明57
3.4.4 排列元组的显示次序 57
3.4.5 where子句谓词58
3.5 集合运算58
3.5.1 并运算59
3.5.2 交运算60
3.5.3 差运算60
3.6 空值61
3.7 聚集函数62
3.7.1 基本聚集62
3.7.2 分组聚集63
3.7.3 having子句65
3.7.4 对空值和布尔值的聚集66
3.8 嵌套子查询67
3.8.1 集合成员资格67
3.8.2 集合比较68
3.8.3 空关系测试69
3.8.4 重复元组存在性测试70
3.8.5 from子句中的子查询71
3.8.6 with子句72
3.8.7 标量子查询73
3.8.8 不带from子句的标量73
3.9 数据库的修改74
3.9.1 删除75
3.9.2 插入76
3.9.3 更新77
3.10 总结78
术语回顾79
实践习题79
习题81
工具83
延伸阅读84
参考文献84
第4章 中级SQL85
4.1 连接表达式85
4.1.1 自然连接85
4.1.2 连接条件88
4.1.3 外连接89
4.1.4 连接类型和条件92
4.2 视图92
4.2.1 视图定义93
4.2.2 在SQL查询中使用视图94
4.2.3 物化视图95
4.2.4 视图更新95
4.3 事务97
4.4 完整性约束98
4.4.1 单个关系上的约束99
4.4.2 非空约束99
4.4.3 性约束100
4.4.4 check子句100
4.4.5 引用完整性100
4.4.6 给约束赋名102
4.4.7 事务中对完整性约束的违反103
4.4.8 复杂check条件与断言103
4.5 SQL的数据类型与模式105
4.5.1 SQL中的日期和时间类型105
4.5.2 类型转换和格式化函数105
4.5.3 缺省值106
4.5.4 大对象类型107
4.5.5 用户自定义类型108
4.5.6 生成码值110
4.5.7 create table的扩展111
4.5.8 模式、目录与环境111
4.6 SQL中的索引定义112
4.7 授权113
4.7.1 权限的授予与收回114
4.7.2 角色115
4.7.3 视图的授权116
4.7.4 模式的授权117
4.7.5 权限的转移117
4.7.6 权限的收回118
4.7.7 行级授权119
4.8 总结119
术语回顾120
实践习题121
习题122
延伸阅读123
参考文献123
第5章 高级SQL125
5.1 使用程序设计语言访问SQL125
5.1.1 JDBC126
5.1.2 从Python访问数据库132
5.1.3 ODBC132
5.1.4 嵌入式SQL134
5.2 函数和过程136
5.2.1 声明及调用SQL函数和过程136
5.2.2 用于过程和函数的语言结构137
5.2.3 外部语言例程140
5.3 触发器141
5.3.1 对触发器的需求141
5.3.2 SQL中的触发器141
5.3.3 何时不用触发器144
5.4 递归查询146
5.4.1 使用迭代的传递闭包146
5.4.2 SQL中的递归148
5.5 高级聚集特性149
5.5.1 排名150
5.5.2 分窗153
5.5.3 旋转154
5.5.4 上卷和立方体155
5.6 总结158
术语回顾158
实践习题158
习题160
工具161
延伸阅读162
第二部分 数据库设计
第6章 使用E-R模型的数据库设计164
6.1 设计过程概览164
6.1.1 设计阶段164
6.1.2 设计
前 言
数据库管理已经从一种专门的计算机应用发展为几乎所有企业中的一个核心成分,因此,有关数据库系统的知识已成为计算机科学教育中必不可少的部分。在本书中,我们讲述数据库管理的基本概念,这些概念包括数据库设计、数据库语言、数据库系统实现等多个方面。
本书可作为三年级或四年级本科生数据库入门课程的教科书,也可作为一年级研究生的教科书。除了涵盖入门课程的基本内容外,本书还包括可作为课程补充材料或作为高级课程介绍性材料的高级内容。
我们仅要求读者熟悉基本的数据结构、计算机组成和一种高级程序设计语言,例如Java、C、C++或Python。概念都以直观的方式加以描述,其中的许多概念基于我们大学运行的例子加以阐释。本书中包括重要的理论结果,但省略了形式化证明,取而代之的是用图表和例子来说明为什么结论是正确的。对于形式化描述和研究结果的证明,读者可以参见参考文献中列出的研究论文和高级教材。
本书中包括的基本概念和算法通常基于当今商用或试验性的数据库系统中采用的概念和算法。我们的目标是在通用环境下描述这些概念和算法,没有与某个特定的数据库系统绑定,虽然在恰当的时候我们确实提供了对某些特定系统的引用。
在第7版中,我们保持了前面版本的总体风格,同时对内容和结构进行了更新来反映数据库设计、管理和使用的方式所发生的变化。其中一个重要的变化是“大数据”系统的广泛应用。我们还考虑了数据库概念在教学方面的发展趋势,并在适当的地方做出了推动这些趋势的修改。
本版本中 值得注意的变化如下:
广泛涵盖了大数据系统的内容,既从用户的角度介绍(第10章),也从系统内部的角度介绍(第20~23章),与第6版相比有大量的内容扩充和改进。
增加了新的一章“区块链数据库”(第26章),介绍区块链技术及其在企业应用中日益增长的作用。这一章的一个重要焦点是区块链系统与数据库系统之间的交互。
对涉及数据库内部的所有各章(第12~19章)进行了修改,以融入固态硬盘、主存数据库、多核系统和列存储等当代技术。
对于使用JSON、RDF和SPARQL进行半结构化数据管理做了更多的描述(8.1节)。
更新了对于时态数据(7.10节)、数据分析(第11章)和诸如写优化的索引等高级索引技术(14.8节和24.2节)的描述。
为更好地支持含有实操部分的课程(对于任何数据库课程,这都是我们强烈推荐的方式),对一些章节进行了重新组织和更新,包括使用当代的应用开发工具和大数据系统,如Apache Hadoop和Spark。
所有更新源于我们收到的许多意见和建议,这些意见和建议来自第6版的读者以及我们在耶鲁大学、理海大学、印度理工学院孟买校区的学生,也源于我们自己对数据库技术发展的观察和分析。
本书的内容
除第1章外,本书共十一部分,具体如下:
引言(第1章)。第1章对数据库系统的性质和目标进行一般性综述。我们解释了数据库系统的概念是如何发展的,各数据库系统的共同特性是什么,数据库系统能为用户做什么,以及数据库系统如何与操作系统交互。我们还引入了一个数据库应用的例子:一个包括多个系、教师、学生和课程的大学。这个应用作为贯穿全书的运行实例。这一章本质上是激励性、历史性和解释性的。
部分:关系语言(第2~5章)。第2章介绍数据的关系模型,包括关系数据库的结构、数据库模式、码、模式图、关系查询语言、关系运算和关系代数等基本概念。第3~5章主要介绍 影响力的面向用户的关系语言:SQL。对于一个设计完成的模式,这部分描述了查询、修改、插入和删除等数据操作。虽然这里详细讲述了数据定义的语法,但关于模式设计的问题将推迟到第二部分讲述。
第二部分:数据库设计(第6~7章)。第6章概要介绍数据库设计过程并详细描述实体-联系数据模型。实体-联系模型为数据库设计问题以及在数据模型的约束下捕获现实应用的语义时所遇到的问题提供了一个高层视图。UML类图表示也在这一章中讲述。第7章介绍关系数据库设计。这一章讲述了函数依赖和规范化的理论,重点强调了提出各种范式的动机,以及它们的直观含义。这一章以关系设计的概览开始,依赖于对函数依赖的逻辑蕴涵的直观理解。这使得规范化的概念可以在全面讨论函数依赖理论之前先做介绍,而函数依赖理论将在本章稍后部分讨论。授课教师可以只选用这些直观描述的内容,而不会丢失连贯性。不过,完整地讲授这一章将有利于学生对规范化概念形成较好的理解,从而引导他们去学习函数依赖理论中一些较艰深的概念。这一章的 后一节讲述时态数据建模。
第三部分:应用程序设计和开发(第8~9章)。第8章讨论几种对于应用程序设计和开发非常重要的复杂数据类型,包括半结构化数据、基于对象的数据、文本数据和空间数据。虽然XML在数据库环境中的流行度正在消减,但我们还是保留了对XML的介绍,同时增加了对JSON、RDF和SPARQL的介绍。第9章讨论用于构建交互式的基于Web的数据库应用和移动数据库应用的工具与技术。这一章对服务器端和客户端都进行了详细介绍,所包括的主题有: Java服务器端程序(servlet)、JSP、Djang
本书可作为三年级或四年级本科生数据库入门课程的教科书,也可作为一年级研究生的教科书。除了涵盖入门课程的基本内容外,本书还包括可作为课程补充材料或作为高级课程介绍性材料的高级内容。
我们仅要求读者熟悉基本的数据结构、计算机组成和一种高级程序设计语言,例如Java、C、C++或Python。概念都以直观的方式加以描述,其中的许多概念基于我们大学运行的例子加以阐释。本书中包括重要的理论结果,但省略了形式化证明,取而代之的是用图表和例子来说明为什么结论是正确的。对于形式化描述和研究结果的证明,读者可以参见参考文献中列出的研究论文和高级教材。
本书中包括的基本概念和算法通常基于当今商用或试验性的数据库系统中采用的概念和算法。我们的目标是在通用环境下描述这些概念和算法,没有与某个特定的数据库系统绑定,虽然在恰当的时候我们确实提供了对某些特定系统的引用。
在第7版中,我们保持了前面版本的总体风格,同时对内容和结构进行了更新来反映数据库设计、管理和使用的方式所发生的变化。其中一个重要的变化是“大数据”系统的广泛应用。我们还考虑了数据库概念在教学方面的发展趋势,并在适当的地方做出了推动这些趋势的修改。
本版本中 值得注意的变化如下:
广泛涵盖了大数据系统的内容,既从用户的角度介绍(第10章),也从系统内部的角度介绍(第20~23章),与第6版相比有大量的内容扩充和改进。
增加了新的一章“区块链数据库”(第26章),介绍区块链技术及其在企业应用中日益增长的作用。这一章的一个重要焦点是区块链系统与数据库系统之间的交互。
对涉及数据库内部的所有各章(第12~19章)进行了修改,以融入固态硬盘、主存数据库、多核系统和列存储等当代技术。
对于使用JSON、RDF和SPARQL进行半结构化数据管理做了更多的描述(8.1节)。
更新了对于时态数据(7.10节)、数据分析(第11章)和诸如写优化的索引等高级索引技术(14.8节和24.2节)的描述。
为更好地支持含有实操部分的课程(对于任何数据库课程,这都是我们强烈推荐的方式),对一些章节进行了重新组织和更新,包括使用当代的应用开发工具和大数据系统,如Apache Hadoop和Spark。
所有更新源于我们收到的许多意见和建议,这些意见和建议来自第6版的读者以及我们在耶鲁大学、理海大学、印度理工学院孟买校区的学生,也源于我们自己对数据库技术发展的观察和分析。
本书的内容
除第1章外,本书共十一部分,具体如下:
引言(第1章)。第1章对数据库系统的性质和目标进行一般性综述。我们解释了数据库系统的概念是如何发展的,各数据库系统的共同特性是什么,数据库系统能为用户做什么,以及数据库系统如何与操作系统交互。我们还引入了一个数据库应用的例子:一个包括多个系、教师、学生和课程的大学。这个应用作为贯穿全书的运行实例。这一章本质上是激励性、历史性和解释性的。
部分:关系语言(第2~5章)。第2章介绍数据的关系模型,包括关系数据库的结构、数据库模式、码、模式图、关系查询语言、关系运算和关系代数等基本概念。第3~5章主要介绍 影响力的面向用户的关系语言:SQL。对于一个设计完成的模式,这部分描述了查询、修改、插入和删除等数据操作。虽然这里详细讲述了数据定义的语法,但关于模式设计的问题将推迟到第二部分讲述。
第二部分:数据库设计(第6~7章)。第6章概要介绍数据库设计过程并详细描述实体-联系数据模型。实体-联系模型为数据库设计问题以及在数据模型的约束下捕获现实应用的语义时所遇到的问题提供了一个高层视图。UML类图表示也在这一章中讲述。第7章介绍关系数据库设计。这一章讲述了函数依赖和规范化的理论,重点强调了提出各种范式的动机,以及它们的直观含义。这一章以关系设计的概览开始,依赖于对函数依赖的逻辑蕴涵的直观理解。这使得规范化的概念可以在全面讨论函数依赖理论之前先做介绍,而函数依赖理论将在本章稍后部分讨论。授课教师可以只选用这些直观描述的内容,而不会丢失连贯性。不过,完整地讲授这一章将有利于学生对规范化概念形成较好的理解,从而引导他们去学习函数依赖理论中一些较艰深的概念。这一章的 后一节讲述时态数据建模。
第三部分:应用程序设计和开发(第8~9章)。第8章讨论几种对于应用程序设计和开发非常重要的复杂数据类型,包括半结构化数据、基于对象的数据、文本数据和空间数据。虽然XML在数据库环境中的流行度正在消减,但我们还是保留了对XML的介绍,同时增加了对JSON、RDF和SPARQL的介绍。第9章讨论用于构建交互式的基于Web的数据库应用和移动数据库应用的工具与技术。这一章对服务器端和客户端都进行了详细介绍,所包括的主题有: Java服务器端程序(servlet)、JSP、Djang
评论
还没有评论。