第1章 绪论 1
1.1 数据库管理系统 1
1.1.1 数据库管理系统概述 1
1.1.2 数据库管理系统工作模式 2
1.2 数据库管理系统结构 3
1.2.1 应用层 4
1.2.2 语言处理层 4
1.2.3 存储管理层 4
1.3 语言处理层 5
1.4 存储管理层 7
1.4.1 数据存取 7
1.4.2 缓冲区管理 7
1.4.3 数据存储的物理组织 8
1.5 数据库管理系统基本功能 10
1.6 小结 11
思考题 11
第2章 数据库管理系统的数据组织与存储 13
2.1 数据库系统存储结构 13
2.1.1 数据库磁盘存储器中的数据结构 13
2.1.2 数据库系统存储介质 16
2.1.3 存储介质层次结构 18
2.2 数据文件的记录格式 19
2.2.1 定长记录格式 19
2.2.2 变长记录格式 22
2.3 数据文件格式 23
2.3.1 文件格式 23
2.3.2 顺序文件 24
2.3.3 聚集文件 25
2.4 索引技术 26
2.4.1 索引基本概念 26
2.4.2 顺序索引 27
2.4.3 辅助索引 30
2.4.4 索引的更新 31
2.4.5 索引的自动生成 32
2.5 B树索引文件 32
2.5.1 B树结构 33
2.5.2 B+树的查询 34
2.5.3 B+树的更新 35
2.5.4 B+树文件组织 36
2.5.5 B树索引文件 37
2.6 散列索引文件 38
2.6.1 散列技术 38
2.6.2 静态散列索引 40
2.6.3 可扩充散列结构 42
2.7 小结 45
思考题 46
第3章 DBMS数据定义、操纵与完整性约束 47
3.1 SQL概述 47
3.1.1 数据定义语言 48
3.1.2 数据操纵语言 48
3.1.3 数据完整性控制 48
3.1.4 数据控制语言 48
3.1.5 事务管理 48
3.1.6 嵌入式SQL和动态SQL 48
3.2 项目工程公司数据库 49
3.3 DBMS数据定义 52
3.3.1 模式的定义与删除 53
3.3.2 基本表的定义、修改与删除 54
3.3.3 视图建立与删除简介 57
3.3.4 索引的建立、修改与删除 57
3.4 DBMS数据操纵 58
3.4.1 数据查询 58
3.4.2 数据更新 67
3.4.3 视图 69
3.5 DBMS完整性约束 74
3.5.1 完整性概述 74
3.5.2 实体完整性 75
3.5.3 参照完整性 77
3.5.4 非空约束 79
3.5.5 唯一约束 79
3.5.6 CHECK约束 80
3.5.7 完整性约束命名 80
3.5.8 触发器 81
3.6 小结 84
思考题 84
第4章 查询处理 87
4.1 概述 87
4.2 查询的选择运算实现 89
4.2.1 使用单文件扫描和索引的选择 89
4.2.2 涉及比较的选择 91
4.2.3 复合条件选择 92
4.3 查询的排序处理 93
4.3.1 外部归并排序算法 93
4.3.2 外部归并排序的代价分析 94
4.4 查询的连接处理 95
4.4.1 嵌套循环算法 95
4.4.2 索引嵌套循环连接 96
4.4.3 归并连接算法 96
4.4.4 散列连接算法 98
4.5 表达式计算 101
4.5.1 物化 101
4.5.2 流水线 101
4.6 小结 102
思考题 103
第5章 查询优化 105
5.1 概述 105
5.2 代数优化 106
5.2.1 关系代数表达式等价变换规则 106
5.2.2 基于启发式规则的代数优化 108
5.2.3 代数优化实例 109
5.3 物理优化 112
5.3.1 基于启发式规则的物理优化 112
5.3.2 基于代价估算的物理优化 113
5.4 基于语义的查询优化 113
5.5 小结 114
思考题 114
第6章 事务 115
6.1 事务的概念 115
6.2 事务的ACID性质 116
6.3 一个简单的事务实例 116
6.4 事务抽象模型与状态变迁 118
6.5 SQL中事务的存取模式和隔离级别 120
6.6 小结 121
思考题 121
第7章 并发控制 123
7.1 事务的并发执行 123
7.1.1 事务并发执行的必要性 123
7.1.2 事务并发执行趋势 124
7.1.3 并发操作带来的问题 124
7.1.4 并发事务调度可串行化与可恢复性 126
7.1.5 并发控制技术 133
7.2 封锁技术 134
7.2.1 封锁类型 134
7.2.2 封锁协议 135
7.2.3 两段锁协议 138
7.2.4 封锁的实现 141
7.3 封锁带来的问题 142
7.3.1 活锁 142
7.3.2 死锁 142
7.4 多粒度封锁 145
7.4.1 多粒度树 145
7.4.2 意向锁 146
7.4.3 多粒度封锁协议 148
7.5 时间戳技术 148
7.5.1 时间戳 148
7.5.2 时间戳排序协议 149
7.5.3 改进的时间戳协议——Thomas写规则 150
7.6 多版本机制与快照隔离 151
7.6.1 多版本并发控制 151
7.6.2 多版本两段锁协议 152
7.6.3 快照隔离 153
7.7 幻行现象 155
7.8 小结 157
思考题 158
第8章 数据库安全 159
8.1 数据库安全概述 159
8.1.1 威胁数据库的安全因素 159
8.1.2 数据库安全标准简介 160
8.2 数据库系统安全控制 163
8.2.1 数据库系统安全模型 163
8.2.2 数据库管理系统安全性控制模型 163
8.2.3 用户身份标识与鉴别 164
8.3 存取控制概述 165
8.3.1 自主存取控制 166
8.3.2 强制存取控制 172
8.4 审计 173
8.4.1 审计事件 173
8.4.2 审计的作用 174
8.4.3 AUDIT语句和NOAUDIT语句 174
8.4.4 ORACLE的审计技术 174
8.5 数据加密 175
8.5.1 加密技术 175
8.5.2 数据库中的加密支持 176
8.6 更高安全性保护 177
8.6.1 推理控制 177
8.6.2 隐蔽信道 178
8.6.3 数据隐私 179
8.7 小结 179
思考题 180
第9章 数据库恢复 181
9.1 故障类型 181
9.1.1 事务故障 181
9.1.2 系统故障 182
9.1.3 介质故障 182
9.2 恢复机制下的存储器与数据访问 182
9.2.1 存储器种类 182
9.2.2 稳定存储器的实现 183
9.2.3 事务数据访问机制 183
9.3 恢复的基本原理与实现方法 184
9.3.1 恢复与事务原子性 184
9.3.2 日志恢复的基本原则与实现方法 185
9.3.3 影子复制恢复的基本原理 185
9.4 日志恢复技术 186
9.4.1 数据转储 186
9.4.2 日志文件格式 187
9.4.3 日志登记原则 188
9.4.4 使用日志重做和撤销事务 189
9.4.5 检查点 191
9.5 缓冲区管理 192
9.5.1 日志记录缓冲 192
9.5.2 数据库缓冲 193
9.5.3 模糊检查点 194
9.6 恢复算法 194
9.6.1 事务故障恢复——事务回滚 195
9.6.2 系统故障恢复 195
9.6.3 介质故障后的恢复 197
9.7 ARIES恢复技术 197
9.7.1 ARIES特点 198
9.7.2 ARIES数据结构 198
9.7.3 ARIES恢复算法 200
9.7.4 ARIES恢复算法特征 202
9.8 容灾备份系统 203
9.9 小结 205
思考题 206
第10章 数据库管理系统性能配置 207
10.1 性能配置 207
10.1.1 瓶颈位置 208
10.1.2 硬件调整 208
10.1.3 数据库系统参数调整 210
10.1.4 模式与事务调整 210
10.2 性能基准程序 211
10.2.1 任务集 211
10.2.2 数据库应用类型 212
10.2.3 TPC基准测试 213
10.3 数据库标准 217
10.3.1 SQL标准 217
10.3.2 数据库连接标准 218
10.3.3 对象数据库标准 218
10.3.4 XML标准 218
10.4 小结 219
思考题 219
第11章 新型数据库管理系统 221
11.1 数据库管理系统发展的三个阶段 222
11.1.1 第一代数据库管理系统——基于格式化模型DBMS 222
11.1.2 第二代数据库管理系统——关系DBMS 222
11.1.3 第三代数据库管理系统——新一代DBMS 222
11.2 基于新型数据模型的数据库管理系统 223
11.2.1 面向对象数据库管理系统 223
11.2.2 关系对象数据库管理系统 224
11.2.3 XML数据库管理系统 224
11.3 大数据管理系统 225
11.3.1 大数据 225
11.3.2 大数据建模——基于分析的用户建模 227
11.3.3 大数据管理系统 228
11.4 小结 230
思考题 231
参考文献 232