本书全面介绍当代数据管理系统的基本概念、原理和技术,立足大数据时代应用新需求,除了介绍传统数据库的核心知识,还对基于大数据模型的新型数据管理系统的设计理念和使用方法等进行探讨。在传统数据库方面,介绍关系模型、结构化查询语言、基于E-R模型的数据库设计和规范化理论;另外,还介绍数据库索引、查询处理与优化,以及并发控制等技术。在新型数据管理方面,介绍NoSQL数据库、MongoDB数据库以及NewSQL数据库等。
样章试读
目录
- 目录
第1章 引言 1
1.1 数据库系统应用 1
1.2 数据库系统目标 4
1.3 数据视图 6
1.3.1 数据模型 6
1.3.2 关系数据模型 6
1.3.3 数据抽象 7
1.4 数据库语言 8
1.4.1 SQL数据定义语言 8
1.4.2 SQL数据操纵语言 9
1.4.3 从应用程序访问数据库 9
1.5 数据库设计 10
1.5.1 E-R模型 11
1.5.2 规范化理论 11
1.6 索引、查询处理和优化 12
1.7 事务管理 13
1.8 新型数据库 14
1.9 数据库用户 15
1.10 数据库系统的发展历史 16
本章小结 18
习题 18
第2章 关系模型 20
2.1 关系数据库 20
2.1.1 关系表结构 20
2.1.2 数据库模式 21
2.1.3 码 21
2.1.4 关系查询语言 22
2.2 关系代数 22
2.2.1 选择运算 22
2.2.2 投影运算 23
2.2.3 笛卡儿积 23
2.2.4 连接运算 24
2.2.5 集合运算 25
2.2.6 赋值运算 25
2.2.7 更名运算 25
本章小结 26
习题 26
第3章 结构化查询语言 28
3.1 SQL概述 28
3.2 SQL基本操作 28
3.2.1 SQL数据类型 28
3.2.2 SQL基本结构 29
3.2.3 SQL集合操作 34
3.2.4 空值 34
3.2.5 聚合函数 35
3.2.6 连接操作 36
3.3 子查询 43
3.4 SQL更新 44
3.4.1 插入语言 44
3.4.2 删除语句 45
3.4.3 更新语句 46
3.5 视图 47
3.6 完整性约束 49
3.7 授权 51
3.8 SQL程序设计 54
3.8.1 从外部程序访问SQL 54
3.8.2 函数与存储过程 58
3.8.3 结构化SQL程序设计 59
3.8.4 触发器 60
本章小结 62
习题 62
第4章 基于E-R模型的数据库设计 66
4.1 数据库设计过程概述 66
4.2 E-R模型 67
4.2.1 实体集 68
4.2.2 联系集 68
4.3 实体中的属性 70
4.3.1 属性类型 70
4.3.2 实体主码 71
4.3.3 冗余属性 71
4.3.4 弱实体集 72
4.4 联系约束 72
4.4.1 映射基数 72
4.4.2 参与度 76
4.5 E-R模型转化为关系模式 76
本章小结 78
习题 78
第5章 规范化理论 80
5.1 数据依赖对关系模式的影响 80
5.2 函数依赖 81
5.2.1 函数依赖概念 81
5.2.2 无损分解 83
5.2.3 依赖保持 84
5.3 范式 85
5.3.1 第一范式 85
5.3.2 巴斯-科德范式 85
5.3.3 第三范式 87
5.3.4 多值依赖与第四范式 88
5.4 函数依赖相关理论 90
5.4.1 函数依赖闭包 90
5.4.2 属性闭包 91
5.4.3 正则覆盖 92
5.4.4 依赖保持测试 95
5.5 关系模式的规范化 96
5.5.1 关系模式规范化的步骤 96
5.5.2 关系模式的分解 97
本章小结 100
习题 100
第6章 索引 103
6.1 有序索引 103
6.1.1 稀疏索引和稠密索引 103
6.1.2 辅助索引 104
6.1.3 多级索引 105
6.2 B+树索引 106
6.2.1 B+树结构 106
6.2.2 B+树查询 107
6.2.3 B+树更新 109
6.3 B+树文件组织 114
6.4 哈希索引 115
6.5 SQL中的索引创建 117
本章小结 118
习题 118
第7章 查询处理与优化 120
7.1 查询代价的测量 120
7.2 选择操作的处理 121
7.2.1 线性扫描 121
7.2.2 索引扫描 122
7.2.3 复杂选择的实现 123
7.3 外部排序 123
7.4 连接操作的处理 126
7.4.1 嵌套循环连接 127
7.4.2 块嵌套循环连接 127
7.4.3 索引嵌套循环连接 128
7.4.4 归并连接 129
7.4.5 哈希连接 130
7.5 查询优化 131
7.5.1 代数优化 132
7.5.2 物理优化 134
本章小结 135
习题 135
第8章 并发控制 138
8.1 事务的状态 138
8.2 可串行化 139
8.3 基于锁的协议 143
8.3.1 锁的授予 143
8.3.2 两阶段封锁协议 144
8.3.3 封锁的实现 145
8.4 死锁处理 146
8.4.1 死锁预防 146
8.4.2 死锁检测与恢复 147
本章小结 148
习题 148
第9章 恢复系统 150
9.1 故障分类 150
9.2 基于日志的恢复 151
9.2.1 日志记录 152
9.2.2 事务提交 153
9.2.3 事务重做和撤销 153
9.2.4 检查点 154
9.3 恢复算法 156
9.4 远程备份系统 158
本章小结 160
习题 160
第10章 NoSQL数据库 163
10.1 NoSQL数据库概述 163
10.1.1 NoSQL数据库的定义与发展历史 163
10.1.2 NoSQL数据库的特点 163
10.1.3 关系数据库与NoSQL数据库的对比 164
10.2 理论基础 165
10.2.1 CAP理论 165
10.2.2 BASE理论 167
10.2.3 最终一致性 167
10.3 数据模型 168
10.3.1 键值型数据模型 168
10.3.2 列存储数据模型 169
10.3.3 文档型数据模型 169
10.3.4 图形数据模型 170
10.4 典型系统 170
10.4.1 Memcached 171
10.4.2 HBase 171
10.4.3 MongoDB 172
本章小结 173
习题 174
第11章 MongoDB数据库 176
11.1 MongoDB数据库概述 176
11.1.1 产生和发展 176
11.1.2 基本概念 176
11.1.3 特点和优势 184
11.2 数据库操作 186
11.2.1 集合操作 186
11.2.2 数据查询 187
11.2.3 数据更新 188
11.3 数据库设计实例 190
本章小结 191
习题 191
第12章 NewSQL数据库 192
12.1 NewSQL数据库概述 192
12.1.1 产生和发展 192
12.1.2 特点和优势 193
12.1.3 与关系数据库、NoSQL数据库的对比 193
12.2 NewSQL数据库分类 194
12.2.1 新架构NewSQL 194
12.2.2 透明数据库分片中间件 195
12.2.3 DBaaS 196
12.3 典型系统 196
12.3.1 VoltDB 196
12.3.2 TiDB 198
12.3.3 Google Spanner 201
12.4 Spanner数据库 201
12.4.1 体系结构 201
12.4.2 数据模型 202
12.4.3 并发控制 203
12.4.4 查询语言 203
12.4.5 设计实例 204
本章小结 207
习题 208
参考文献 209