第1篇 序篇 2
第1章 数据库系统引论 2
1.1 数据管理的发展 2
1.2 数据库系统 5
1.3 数据、数据模型和数据模式 7
1.3.1 数据 7
1.3.2 数据模型 7
1.3.3 数据模式 8
1.4 数据库的生存周期 10
习题1 11
第2章 数据模型 12
2.1 层次数据模型 12
2.1.1 基本概念和结构 12
2.1.2 约束 16
2.1.3 操作 16
2.2 网状数据模型 17
2.2.1 基本概念和结构 17
2.2.2 约束 20
2.2.3 操作 21
2.3 关系数据模型 21
2.3.1 基本概念和定义 21
2.3.2 约束 24
2.3.3 操作 25
2.3.4 关系演算 29
2.4 对传统数据模型的评价 30
2.5 E-R数据模型 33
2.5.1 基本概念 33
2.5.2 E-R图 36
2.5.3 扩充E-R数据模型 37
2.6 面向对象数据模型 39
2.6.1 对象 40
2.6.2 类和实例 41
2.6.3 类层次结构和继承 42
2.6.4 对象的标识 43
2.7 基于逻辑的数据模型 44
2.7.1 一阶谓词逻辑作为数据模型 45
2.7.2 有关基于逻辑的数据模型的语法问题 46
2.7.3 有关基于逻辑的数据模型的语义问题 48
习题2 54
第2篇 关系数据库系统 56
第3章 关系数据库语言 56
3.1 数据库的用户接口 56
3.2 SQL语言概况 57
3.3 SQL数据定义语言 58
3.3.1 术语和数据类型 58
3.3.2 基表模式的定义 58
3.3.3 基表模式的修改 60
3.3.4 索引的建立和撤销 61
3.4 SQL查询语言 62
3.4.1 基本SQL查询语句 62
3.4.2 查询条件比较复杂的SQL查询语句 64
3.4.3 GROUP BY和ORDER BY子句的应用 68
3.4.4 包含UNION的查询 69
3.5 SQL数据操纵语言 69
3.5.1 INSERT语句 69
3.5.2 DELETE语句 71
3.5.3 UPDATE语句 71
3.6 SQL中的视图 72
3.6.1 普通视图 72
3.6.2 临时视图和递归查询 73
3.7 嵌入式SQL 75
3.7.1 嵌入式SQL简介 75
3.7.2 嵌入式SQL的说明部分 75
3.7.3 嵌入式SQL的可执行语句 76
3.7.4 嵌入式SQL的处理过程 78
3.8 动态SQL 79
3.8.1 直接执行的动态SQL 79
3.8.2 带动态参数的动态SQL 80
3.8.3 查询类的动态SQL 80
3.9 SQL的存储过程 81
3.10 QBE数据库语言 83
3.10.1 QBE的查询操作 83
3.10.2 QBE的更新操作 85
3.10.3 QBE的其他功能 86
习题3 86
第4章 数据库管理系统引论 88
4.1 数据库管理系统结构简介 88
4.2 事务 89
4.3 DBMS的进程结构 90
4.4 DBMS的系统结构 92
4.5 数据目录 93
习题4 95
第5章 数据库的存储结构 96
5.1 数据库存储介质的特点 96
5.2 记录的存储结构 97
5.2.1 记录的物理表示 97
5.2.2 记录在物理块上的分配 98
5.2.3 物理块在磁盘上的分配 99
5.2.4 数据压缩技术 100
5.3 文件结构和存取路径 101
5.3.1 访问文件的方式 101
5.3.2 数据库对文件的要求 102
5.3.3 文件的基本类型 102
5.4 动态索引 107
5.5 动态散列 111
5.6 多键查询 113
5.7 存储系统的发展 114
习题5 117
第6章 查询处理和优化 118
6.1 引言 118
6.2 代数优化 119
6.3 依赖于存取路径的规则优化 123
6.3.1 选择操作的实现和优化 123
6.3.2 连接操作的实现和优化 125
6.3.3 投影操作的实现 128
6.3.4 集合操作的实现 128
6.3.5 组合操作 130
6.4 代价估算优化 130
6.4.1 查询执行代价的组成和代价模型 130
6.4.2 选择操作的代价估算 131
6.4.3 连接操作的代价估算 134
6.5 结束语 136
习题6 137
第7章 事务管理 138
7.1 恢复引论 138
7.2 运行记录的结构 140
7.3 更新事务的执行与恢复 142
7.4 易地更新恢复技术 144
7.5 消息的处理 145
7.6 失效的类型及恢复的对策 146
7.7 并发控制引论 148
7.7.1 数据库系统中的并发 148
7.7.2 并发的目的 148
7.7.3 并发所引起的问题 149
7.7.4 并发控制的正确性准则 150
7.8 加锁协议 153
7.8.1 X锁 153
7.8.2 两段封锁协议 154
7.8.3 (S,X)锁 155
7.8.4 (S,U,X)锁 156
7.9 死锁的检测、处理和防止 156
7.9.1 死锁的检测和处理 157
7.9.2 死锁的防止 158
7.10 多粒度封锁 159
7.11 索引的并发控制 162
7.12 幽灵及其防止 163
7.13 事务的隔离等级 164
7.14 基于时间标记的并发控制技术 165
7.14.1 基本的时间标记协议 165
7.14.2 多版本并发控制技术 167
7.15 乐观并发控制技术 168
习题7 169
第8章 数据库的安全和完整性约束 171
8.1 数据库的安全 171
8.1.1 视图定义和查询修改 171
8.1.2 访问控制 172
8.1.3 数据加密 176
8.1.4 跟踪审查 176
8.2 统计数据库的安全 176
8.3 完整性约束 180
8.3.1 完整性约束的类型 180
8.3.2 完整性约束的说明 181
8.3.3 完整性约束的实施 182
习题8 182
第9章 触发子和主动数据库系统 183
9.1 主动数据库系统引论 183
9.2 规则的表示 184
9.3 规则的执行 186
9.4 规则的实现 188
9.5 规则的应用 190
习题9 196
第10章 数据依赖和关系模式的规范化 197
10.1 关系模式设计中的一些数据语义问题 197
10.2 函数依赖 199
10.3 多值依赖 203
10.4 连接依赖 205
10.5 关系模式的分解及其问题 207
10.6 关系模式的规范化 214
习题10 221
第11章 数据库设计 223
11.1 数据库设计引论 223
11.2 数据库的概念设计 225
11.2.1 数据库概念设计的基本方法 225
11.2.2 视图设计 226
11.2.3 视图集成 227
11.3 数据库的逻辑设计 229
11.3.1 E-R图到关系模式的转换 229
11.3.2 逻辑模式的规范化、调整和实现 235
11.3.3 外模式的设计 237
11.4 数据库的物理设计 237
11.4.1 簇集设计 238
11.4.2 索引的选择 241
11.4.3 分区设计 243
11.5 计算机辅助数据库设计工具 243
习题11 244
第12章 数据库管理和性能调优 245
12.1 数据库管理引论 245
12.2 数据库性能概论 246
12.2.1 数据库系统的基础设施 246
12.2.2 应用系统与数据库服务器的连接 247
12.2.3 存储器系统 247
12.2.4 SQL的编译执行和解释执行 247
12.2.5 缓解I/O瓶颈的一些措施 249
12.3 系统结构与性能调优 252
12.3.1 问题的由来 252
12.3.2 新的系统结构 253
12.4 应用程序设计与性能调优 255
12.5 SQL调优 258
12.5.1 SQL调优与查询优化器 258
12.5.2 SQL调优导则 260
12.6 数据库性能调优的实现 262
习题12 265
参考文献 266