第一部分 事务处理的概念 2
第1章 事务处理的概念与理论简介 2
1.1 事务处理简介 2
1.1.1 单用户系统与多用户系统 2
1.1.2 事务、读写操作和DBMS缓冲区 3
1.1.3 并发控制的必要性 4
1.1.4 恢复的必要性 6
1.2 事务和系统概念 6
1.2.1 事务状态及附加操作 7
1.2.2 系统日志 7
1.2.3 事务的提交点 8
1.3 事务的描述特性 8
1.4 描述基于可恢复性调度的特征 9
1.4.1 事务的调度(历史) 9
1.4.2 描述基于可恢复性调度的特征 10
1.5 描述基于可串行性调度的特征 11
1.5.1 串行、非串行和冲突-可串行化调度 11
1.5.2 测试调度的冲突可串行性 14
1.5.3 可串行性的用途 16
1.5.4 视图等价和视图可串行性 17
1.5.5 调度等价性的其他类型 18
1.6 SQL中的事务支持 18
小结 19
复习题 20
练习题 20
参考文献 21
第2章 并发控制技术 22
2.1 并发控制的两阶段加锁技术 22
2.1.1 锁类型与系统锁表 22
2.1.2 通过两阶段加锁保证可串行性 26
2.1.3 死锁和饥饿处理 27
2.2 基于时间戳顺序的并发控制 29
2.2.1 时间戳 29
2.2.2 时间戳排序算法 30
2.3 多版本并发控制技术 31
2.3.1 基于时间戳排序的多版本技术 31
2.3.2 使用验证锁的多版本两阶段加锁 32
2.4 确认(乐观的)并发控制技术 32
2.5 数据项粒度和多粒度加锁 33
2.5.1 加锁的粒度级别考虑 34
2.5.2 多粒度级别加锁 34
2.6 索引中使用加锁进行并发控制 36
2.7 并发控制的其他问题 37
2.7.1 插入、删除以及幻像记录 37
2.7.2 交互式事务 38
2.7.3 锁存器 38
小结 38
复习题 38
练习题 39
参考文献 39
第3章 数据库恢复技术 41
3.1 恢复概念 41
3.1.1 恢复概述和恢复算法的分类 41
3.1.2 磁盘块的高速缓存(缓冲) 42
3.1.3 先写日志、潜入/非潜入和强制/非强制 42
3.1.4 系统日志中的检查点和模糊检查点 43
3.1.5 事务回滚 44
3.2 基于延迟更新的恢复技术 45
3.2.1 单用户环境下使用延迟更新的恢复 46
3.2.2 多用户环境下并发执行的延迟更新 46
3.2.3 不影响数据库的事务活动 48
3.3 基于即时更新的恢复技术 48
3.3.1 单用户环境下基于即时更新的UNDO/REDO恢复 49
3.3.2 多用户环境下基于即时更新的UNDO/REDO恢复 49
3.4 镜像分页 49
3.5 ARIES恢复算法 50
3.6 多数据库系统中的恢复 53
3.7 数据库备份和灾难性故障恢复 53
小结 54
复习题 54
练习题 55
参考文献 57
第二部分 对象和对象-关系数据库第4章 面向对象数据库的概念 60
4.1 面向对象的概念 61
4.2 对象标识、对象结构和类型构造器 63
4.2.1 对象标识 63
4.2.2 对象结构 63
4.2.3 类型构造器 66
4.3 操作、方法和持久性的封装 67
4.3.1 通过类操作指定对象行为 67
4.3.2 通过命名和可达性指定对象的持久性 69
4.4 类型、类层次和继承 70
4.4.1 类型层次和继承 70
4.4.2 对应于类型层次的外延约束 72
4.5 复杂对象 72
4.5.1 非结构化复杂对象和类型可扩展性 73
4.5.2 结构化复杂对象 73
4.6 其他面向对象的概念 74
4.6.1 多态性(操作符重载) 74
4.6.2 多重继承与选择性继承 75
4.6.3 版本和配置 75
小结 76
复习题 76
练习题 77
参考文献 77
第5章 对象数据库标准、语言和设计 78
5.1 ODMG对象模型概述 79
5.1.1 对象和文字 79
5.1.2 汇集对象的内置接口 83
5.1.3 原子(用户定义)对象 85
5.1.4 接口、类和继承 86
5.1.5 类外延、码和工厂对象 86
5.2 对象定义语言(ODL) 88
5.3 对象查询语言(OQL) 92
5.3.1 简单OQL查询、数据库入口点和迭代变量 92
5.3.2 查询结果和路径表达式 93
5.3.3 OQL的其他特性 95
5.4 C++语言绑定概述 98
5.5 对象数据库概念设计 99
5.5.1 ODB与RDB概念设计的区别 99
5.5.2 EER模式到ODB模式的映射 100
小结 101
复习题 102
练习题 102
参考文献 102
第6章 对象-关系和扩展-关系系统 104
6.1 SQL及其对象-关系特性概述 104
6.1.1 SQL标准及其组件 104
6.1.2 SQL-99中的对象-关系支持 105
6.1.3 SQL中一些新操作和特性 109
6.2 数据模型的演变和数据库技术的当前发展趋势 109
6.3 Informix Universal Server 110
6.3.1 可扩展数据类型 111
6.3.2 支持用户定义例程 112
6.3.3 支持继承 113
6.3.4 支持索引扩展 115
6.3.5 支持外部数据源 115
6.3.6 支持数据刀片应用编程接口 115
6.4 Oracle 8的对象-关系特性 118
6.4.1 Oracle对象-关系特性的一些示例 118
6.4.2 管理大对象以及其他存储特性 119
6.5 扩展类型系统的实现和相关问题 120
6.6 嵌套关系数据模型 120
小结 122
参考文献 122
第三部分 高级主题:安全性、高级建模和分布式第7章 数据库的安全性 126
7.1 数据库安全性问题简介 126
7.1.1 安全性的类型 126
7.1.2 控制措施 127
7.1.3 数据库安全性和DBA 128
7.1.4 访问保护、用户账户和数据库审计 128
7.2 基于授予和收回权限的自主访问控制 129
7.2.1 自主性权限的类型 129
7.2.2 使用视图指定权限 130
7.2.3 收回权限 130
7.2.4 使用GRANT OPTION选项传播权限 130
7.2.5 一个示例 130
7.2.6 指定权限传播的限定 131
7.3 多级安全性的强制访问控制和基于角色访问控制 132
7.3.1 自主访问控制与强制访问控制的比较 134
7.3.2 基于角色的访问控制 134
7.3.3 XML访问控制 135
7.3.4 电子商务和Web的访问控制策略 135
7.4 统计数据库的安全性简介 136
7.5 流控制简介 137
7.6 加密和公钥构架 138
7.6.1 数据加密标准和高级加密标准 138
7.6.2 公钥加密 138
7.6.3 数字签名 139
7.7 保密性问题和保护 140
7.8 数据库安全性所面临的挑战 140
7.8.1 数据质量 140
7.8.2 知识产权 140
7.8.3 数据库生存能力 140
小结 141
复习题 141
练习题 142
参考文献 142
第8章 面向高级应用的增强数据模型 144
8.1 主动数据库概念和触发器 145
8.1.1 主动数据库和Oracle触发器的一般模型 145
8.1.2 主动数据库的设计和实现 148
8.1.3 STARBURST系统中使用语句级主动规则的示例 150
8.1.4 主动数据库的潜在应用 151
8.1.5 SQL-99中的触发器 152
8.2 时态数据库概念 152
8.2.1 时间表示法、日历和时间维 153
8.2.2 使用元组版本化在关系数据库中加入时间 154
8.2.3 使用属性版本化在面向对象数据库中加入时间 159
8.2.4 时态查询构造与TSQL2语言 160
8.2.5 时间序列数据 161
8.3 空间和多媒体数据库 162
8.3.1 空间数据库概念介绍 162
8.3.2 多媒体数据库概念介绍 163
8.4 演绎数据库介绍 164
8.4.1 演绎数据库概述 164
8.4.2 Prolog/Datalog表示法 165
8.4.3 Datalog表示法 166
8.4.4 子句形式与Horn子句 167
8.4.5 规则解释 168
8.4.6 Datalog程序及其安全性 169
8.4.7 关系操作的使用 171
8.4.8 非递归Datalog查询的估算 172
小结 173
复习题 174
练习题 174
参考文献 177
第9章 分布式数据库和客户-服务器体系结构 178
9.1 分布式数据库概念 178
9.1.1 并行与分布式技术 179
9.1.2 分布式数据库的优势 180
9.1.3 分布式数据库的附加功能 181
9.2 分布式数据库设计的数据分片、复制和分配技术 182
9.2.1 数据分片 182
9.2.2 数据复制和分配 184
9.2.3 分片、分配和复制示例 185
9.3 分布式数据库系统的类型 187
9.4 分布式数据库中的查询处理 189
9.4.1 分布式查询处理的数据传输代价 189
9.4.2 使用半连接的分布式查询处理 191
9.4.3 查询和更新分解 191
9.5 分布式数据库中并发控制和恢复概述 193
9.5.1 基于识别数据项副本的分布式并发控制 194
9.5.2 基于投票方法的分布式并发控制 195
9.5.3 分布式恢复 195
9.6 三层客户-服务器体系结构概述 195
9.7 Oracle分布式数据库 197
小结 199
复习题 199
练习题 200
参考文献 201
第四部分 新兴技术 204
第10章 使用PHP进行Web数据库程序设计 204
10.1 结构化、半结构化以及非结构化数据 204
10.2 一个简单的PHP示例 207
10.3 PHP基本特性概述 209
10.3.1 PHP变量、数据类型和程序设计结构 209
10.3.2 PHP数组 210
10.3.3 PHP函数 211
10.3.4 PHP服务器变量和表单 213
10.4 PHP数据库程序设计概述 214
10.4.1 连接数据库 214
10.4.2 从表单中汇集数据并插入记录 215
10.4.3 数据库表的检索查询 216
小结 217
复习题 217
练习题 217
实验练习题 217
参考文献 218
第11章 XML:可扩展标记语言 219
11.1 XML层次(树)数据模型 219
11.2 XML文档、DTD和XML模式 221
11.2.1 合式、有效XML文档及XML DTD 221
11.2.2 XML模式 222
11.3 XML文档和数据库 226
11.3.1 存储XML文档的方法 226
11.3.2 从关系数据库中抽取XML文档 227
11.3.3 断开环以实现从图到树的转换 230
11.3.4 从数据库抽取XML文档的其他步骤 230
11.4 XML查询 231
11.4.1 XPath:在XML中指路径表达式 231
11.4.2 XQuery:在XML中指定查询 232
小结 232
复习题 233
练习题 233
参考文献 233
第12章 数据挖掘概念 234
12.1 数据挖掘技术概述 234
12.1.1 数据挖掘和数据仓库 234
12.1.2 数据挖掘是知识发现过程的一部分 234
12.1.3 数据挖掘和知识发现的目标 235
12.1.4 数据挖掘期间知识发现的类型 236
12.2 关联规则 237
12.2.1 市场购物篮模型、支持度与可信度 237
12.2.2 Apriori算法 238
12.2.3 采样算法 239
12.2.4 频繁模式树算法 239
12.2.5 分区算法 241
12.2.6 其他类型的关联规则 242
12.2.7 关联规则的附加考虑 244
12.3 分类 244
12.4 聚类 246
12.5 其他数据挖掘问题的方法 248
12.5.1 序列模式的发现 248
12.5.2 时间序列中模式的发现 248
12.5.3 回归 249
12.5.4 神经网络 249
12.5.5 遗传算法 249
12.6 数据挖掘的应用 250
12.7 商业化数据挖掘工具 250
12.7.1 用户界面 251
12.7.2 应用编程接口 251
12.7.3 未来的方向 251
小结 252
复习题 252
练习题 252
参考文献 254
第13章 数据仓库和OLAP概述 255
13.1 概述、定义和术语 255
13.2 数据仓库的特性 256
13.3 数据仓库的数据模型 257
13.4 构建数据仓库 261
13.5 数据仓库的典型功能 263
13.6 数据仓库和视图 263
13.7 数据仓库中的难题和开放问题 264
13.7.1 数据仓库实现中的困难 264
13.7.2 数据仓库的开放问题 264
小结 265
复习题 265
参考文献 265
第14章 新兴的数据库技术及应用 266
14.1 移动数据库 266
14.1.1 移动计算体系结构 266
14.1.2 移动环境的特征 269
14.1.3 数据管理问题 270
14.1.4 应用:间歇同步数据库 270
14.2 多媒体数据库 271
14.2.1 多媒体数据和应用的特征 271
14.2.2 数据管理问题 272
14.2.3 开放研究问题 273
14.2.4 多媒体数据库应用 274
14.3 地理信息系统(GIS) 275
14.3.1 GIS系统组件 276
14.3.2 GIS中数据的特征 276
14.3.3 GIS概念数据模型 278
14.3.4 GIS的DBMS增强功能 278
14.3.5 GIS标准和操作 279
14.3.6 GIS应用和软件 281
14.3.7 GIS未来的工作 282
14.4 基因组数据管理 283
14.4.1 生物科学和遗传学 283
14.4.2 生物数据的特征 284
14.4.3 人类基因组项目和现有的生物数据库 286
参考文献 289
致谢 291
附录A ER模型的可选图形表示法 292
附录B 磁盘参数 294
附录C QBE语言概述 296