第1章 引言 1
1.1 数据库系统的应用 1
1.2 数据库系统与文件系统 2
1.3 数据视图 3
1.3.1 数据抽象 4
1.3.2 实例和模式 5
1.4 数据模型 5
1.4.1 实体-联系模型 5
1.4.2 关系模型 6
1.4.3 其他数据模型 7
1.5 数据库语言 7
1.5.1 数据定义语言 7
1.5.2 数据操纵语言 8
1.5.3 来自应用程序的数据库访问 9
1.6 数据库用户和管理员 9
1.6.1 数据库用户和用户界面 9
1.6.2 数据库管理员 10
1.7 事务管理 10
1.8 数据库系统结构 11
1.8.1 存储管理器 11
1.8.2 查询处理器 12
1.9 应用程序体系结构 12
1.10 数据库系统的历史 12
1.11 小结 15
术语回顾 15
工具 16
习题 16
文献注解 16
第一部分 数据模型 18
第2章 实体-联系模型 18
2.1 基本概念 18
2.1.1 实体集 18
2.1.2 联系集 20
2.2 约束 22
2.2.1 映射基数 22
2.2.2 参与约束 23
2.3 码 23
2.3.1 实体集 23
2.3.2 联系集 24
2.4.2 用实体集还是用联系集 25
2.4 设计问题 25
2.4.1 用实体集还是用属性 25
2.4.3 二元联系集与n元联系集 26
2.4.4 联系属性的布局 27
2.5 实体-联系图 27
2.6 弱实体集 32
2.7 扩展的E-R特性 33
2.7.1 特殊化 33
2.7.2 一般化 34
2.7.3 属性继承 35
2.7.4 一般化约束 35
2.7.5 聚集 36
2.7.6 可选择的E-R符号 37
2.8.1 设计阶段 39
2.8 数据库E-R模式的设计 39
2.8.2 银行企业的数据库设计 40
2.9 将E-R模式转换为表 41
2.9.1 用表表示强实体集 42
2.9.2 用表表示弱实体集 43
2.9.3 用表表示联系集 43
2.9.4 复合属性 44
2.9.5 多值属性 45
2.9.6 用表表示一般化 45
2.9.7 用表表示聚集 45
2.10 统一建模语言UML 45
2.11 小结 46
习题 48
术语回顾 48
文献注解 51
工具 52
第3章 关系模型 53
3.1 关系数据库的结构 53
3.1.1 基本结构 53
3.1.2 数据库模式 55
3.1.3 码 57
3.1.4 模式图 58
3.1.5 查询语言 59
3.2 关系代数 59
3.2.1 基本运算 59
3.2.3 附加运算 65
3.2.2 关系代数的形式化定义 65
3.3 扩展的关系代数运算 69
3.3.1 广义投影 69
3.3.2 聚集函数 69
3.3.3 外连接 71
3.3.4 空值 73
3.4 数据库的修改 74
3.4.1 删除 74
3.4.2 插入 75
3.4.3 更新 75
3.5 视图 76
3.5.1 视图定义 76
3.5.3 用视图定义视图 77
3.5.2 通过视图进行更新与空值 77
3.6 元组关系演算 78
3.6.1 查询的例子 79
3.6.2 形式化定义 81
3.6.3 表达式的安全性 81
3.6.4 语言的表达能力 82
3.7 域关系演算 82
3.7.1 形式化定义 82
3.7.2 查询的例子 82
3.7.3 表达式的安全性 83
3.7.4 语言的表达能力 84
3.8 小结 84
习题 85
术语回顾 85
文献注解 88
第二部分 关系数据库 90
第4章 SQL 90
4.1 背景 90
4.2 基本结构 91
4.2.1 select子句 91
4.2.2 where子句 92
4.2.3 from子句 93
4.2.4 更名运算 93
4.2.5 元组变量 94
4.2.6 字符串操作 94
4.2.8 重复 95
4.2.7 排列元组的显示次序 95
4.3 集合运算 96
4.3.1 并运算 96
4.3.2 交运算 97
4.3.3 差运算 97
4.4 聚集函数 97
4.5 空值 99
4.6 嵌套子查询 100
4.6.1 集合成员资格 100
4.6.2 集合的比较 101
4.6.3 测试是否为空关系 102
4.6.4 测试是否存在重复元组 103
4.8.1 派生关系 104
4.8 复杂查询 104
4.7 视图 104
4.8.2 with子句 105
4.9 数据库的修改 106
4.9.1 删除 106
4.9.2 插入 107
4.9.3 更新 108
4.9.4 视图的更新 109
4.9.5 事务 110
4.10 关系的连接 110
4.10.1 举例 110
4.10.2 连接类型和条件 112
4.11 数据定义语言DDL 113
4.11.1 SQL中的域类型 114
4.11.2 SQL的模式定义 115
4.12 嵌入式SQL 117
4.13 动态SQL 119
4.13.1 ODBC 119
4.13.2 JDBC 121
4.14 其他SQL特性 123
4.14.1 模式、目录、环境 123
4.14.2 过程扩展与存储过程 123
4.15 小结 124
术语回顾 124
习题 125
文献注解 127
5.1.1 在一个关系上的查询 128
第5章 其他关系语言 128
5.1 Query-by-Example 128
5.1.2 在多个关系上的查询 130
5.1.3 条件框 131
5.1.4 结果关系 132
5.1.5 元组的显示次序 133
5.1.6 聚集操作 133
5.1.7 数据库的修改 134
5.1.8 在Microsoft Access中的QBE 136
5.2 Datalog 137
5.2.1 基本结构 137
5.2.2 Datalog规则的语法 139
5.2.3 非递归Datalog的语义 140
5.2.4 安全性 142
5.2.5 Datalog中的关系运算 143
5.2.6 Datalog中的递归 143
5.2.7 递归的能力 145
5.2.8 其他语言的递归 146
5.3 用户界面和工具 147
5.3.1 表单和图形用户界面 147
5.3.2 报表生成器 148
5.4 小结 149
术语回顾 149
习题 149
文献注解 151
工具 152
6.1 域约束 153
第6章 完整性和安全性 153
6.2 参照完整性 154
6.2.1 基本概念 154
6.2.2 E-R模型中的参照完整性 155
6.2.3 数据库的修改 156
6.2.4 SQL中的参照完整性 156
6.3 断言 158
6.4 触发器 158
6.4.1 触发器的需求 159
6.4.2 SQL中的触发器 159
6.4.3 何时不用触发器 161
6.5.1 安全性违例 162
6.5 安全性和授权 162
6.5.2 授权 163
6.5.3 授权与视图 164
6.5.4 权限的授予 164
6.5.5 角色的概念 165
6.5.6 审计追踪 166
6.6 SQL中授权 166
6.6.1 SQL中的权限 166
6.6.2 角色 167
6.6.3 授权的权限 167
6.6.4 其他特性 168
6.6.5 SQL授权的局限 168
6.7 加密和鉴定 168
6.7.1 加密技术 169
6.7.2 鉴定 170
6.8 小结 170
术语回顾 171
习题 171
文献注解 173
第7章 关系数据库设计 174
7.1 第一范式 174
7.2 关系数据库设计中易犯的错误 175
7.3 函数依赖 176
7.3.1 基本概念 176
7.3.2 函数依赖集的闭包 179
7.3.3 属性集的闭包 180
7.3.4 正则覆盖 181
7.4 模式分解 183
7.5 分解应具有的特性 186
7.5.1 无损连接分解 187
7.5.2 保持依赖 187
7.5.3 信息重复 189
7.6 Boyce-Codd范式 189
7.6.1 定义 189
7.6.2 分解算法 191
7.6.3 保持依赖 192
7.7 第三范式 193
7.7.1 定义 193
7.7.2 分解算法 194
7.7.3 BCNF和3NF的比较 195
7.8 第四范式 196
7.8.1 多值依赖 196
7.8.2 第四范式定义 198
7.8.3 分解算法 198
7.9 更多范式 199
7.10 整体数据库设计过程 199
7.10.1 E-R模型和规范化 200
7.10.2 泛关系设计方法 200
7.10.3 为了性能解除规范化 201
7.10.4 其他设计问题 202
7.11 小结 202
习题 203
术语回顾 203
文献注解 206
第三部分 基于对象的数据库和XML 208
第8章 面向对象数据库 208
8.1 复杂数据类型的需要 208
8.2 面向对象数据模型 208
8.2.1 对象结构 209
8.2.2 对象类 209
8.2.3 继承 211
8.2.4 多重继承 213
8.2.5 对象标识 214
8.2.6 对象包含 215
8.3 面向对象的语言 216
8.4 持久化程序设计语言 216
8.4.1 对象的持久性 217
8.4.3 持久对象的存储和访问 218
8.4.2 对象标识与指针 218
8.5 持久化C++系统 219
8.5.1 ODMG C++对象定义语言 219
8.5.2 ODMG C++对象操纵语言 222
8.6 持久化Java系统 225
8.7 小结 226
术语回顾 226
习题 226
文献注解 227
第9章 对象-关系数据库 229
9.1 嵌套关系 229
9.2.1 集合体与大对象类型 231
9.2 复杂类型 231
9.2.2 结构类型 232
9.2.3 复杂类型的值的创建 233
9.3 继承 234
9.3.1 类型继承 234
9.3.2 表继承 235
9.3.3 重叠子表 236
9.4 引用类型 237
9.5 与复杂类型有关的查询 238
9.5.1 路径表达式 238
9.5.2 以集合体为值的属性 238
9.5.3 嵌套与解除嵌套 239
9.6.1 SQL函数和过程 240
9.6 函数和过程 240
9.6.2 外部语言程序 241
9.6.3 过程的构造 242
9.7 面向对象与对象-关系 244
9.8 小结 245
术语回顾 245
习题 246
文献注解 247
工具 248
第10章 XML 249
10.1 背景 249
10.2 XML数据结构 251
10.3.1 文档类型定义 253
10.3 XML文档模式 253
10.3.2 XML模式 256
10.4 查询和转换 256
10.4.1 XPath 258
10.4.2 XSLT 259
10.4.3 XQuery 261
10.5 应用程序接口 264
10.6 XML数据的存储 264
10.6.1 关系数据库 264
10.6.2 非关系的数据存储 266
10.7 XML应用 266
10.7.1 数据交换 266
10.7.2 数据中介 267
10.8 小结 268
习题 269
术语回顾 269
文献注解 270
工具 271
第四部分 数据存储和查询 274
第11章 存储和文件结构 274
11.1 物理存储介质概述 274
11.2 磁盘 276
11.2.1 磁盘的物理特性 276
11.2.2 磁盘性能的度量 278
11.2.3 磁盘块存取的优化 279
11.3.1 通过冗余提高可靠性 281
11.3 RAID 281
11.3.2 通过并行提高性能 282
11.3.3 RAID级别 283
11.3.4 RAID级别的选择 285
11.3.5 硬件问题 286
11.3.6 其他的RAID应用 287
11.4 第三级存储 287
11.4.1 光盘 287
11.4.2 磁带 288
11.5 存储访问 288
11.5.1 缓冲区管理 289
11.5.2 缓冲区替换策略 289
11.6.1 定长记录 291
11.6 文件组织 291
11.6.2 变长记录 292
11.7 文件中记录的组织 295
11.7.1 顺序文件组织 296
11.7.2 聚簇文件组织 297
11.8 数据字典 298
11.9 面向对象数据库的存储 299
11.9.1 对象到文件的映射 299
11.9.2 对象标识符的实现 300
11.9.3 持久化指针的管理 301
11.9.4 硬件混写 301
11.9.5 对象的磁盘结构与内存结构 305
11.9.6 大对象 305
11.10 小结 306
术语回顾 307
习题 308
文献注解 309
第12章 索引与散列 311
12.1 基本概念 311
12.2 有序索引 312
12.2.1 主索引 312
12.2.2 辅助索引 316
12.3 B+树索引文件 317
12.3.1 B+树的结构 317
12.3.2 B+树上的查询 318
12.3.3 B+树的更新 320
12.3.4 B+树文件组织 323
12.4 B树索引文件 325
12.5.1 散列文件组织 326
12.5 静态散列 326
12.5.2 散列索引 329
12.6 动态散列 330
12.6.1 数据结构 330
12.6.2 查询和更新 331
12.6.3 与其他方案的比较 334
12.7 有序索引和散列的比较 335
12.8 SQL中的索引定义 336
12.9 多码访问 336
12.9.1 使用多个单码索引 336
12.9.3 网格文件 337
12.9.2 多码索引 337
12.9.4 位图索引 339
12.10 小结 342
术语回顾 343
习题 343
文献注解 344
第13章 查询处理 346
13.1 概述 346
13.2 查询代价的测量 347
13.3 选择运算 348
13.3.1 基本算法 348
13.3.2 使用索引的选择 349
13.3.4 复杂选择的实现 350
13.3.3 涉及比较的选择 350
13.4 排序 351
13.5 连接运算 353
13.5.1 嵌套循环连接 353
13.5.2 块嵌套循环连接 354
13.5.3 索引嵌套循环连接 355
13.5.4 归并连接 356
13.5.5 散列连接 358
13.5.6 复杂连接 361
13.6 其他运算 362
13.6.1 消除重复 362
13.6.2 投影 362
13.6.3 集合运算 362
13.6.5 聚集 363
13.6.4 外连接 363
13.7 表达式计算 364
13.7.1 实体化 364
13.7.2 流水线 365
13.8 小结 368
术语回顾 368
习题 369
文献注解 370
第14章 查询优化 371
14.1 概述 371
14.2 表达式结果统计信息的估计 372
14.2.1 目录信息 372
14.2.2 选择运算结果的估计 373
14.2.3 连接运算结果的估计 374
14.2.4 其他运算的结果的估计 375
14.2.5 不同取值个数的估计 376
14.3 关系表达式的转换 376
14.3.1 等价规则 377
14.3.2 转换的例子 379
14.3.3 连接的次序 380
14.3.4 等价表达式的枚举 381
14.4 执行计划的选择 382
14.4.1 查询执行技术的相互作用 382
14.4.2 基于代价的优化 383
14.4.3 启发式优化 384
14.4.4 查询优化器的结构 386
14.4.5 嵌套子查询的优化 387
14.5 物化视图 388
14.5.1 视图维护 389
14.5.2 增量视图维护 389
14.5.3 查询优化和物化视图 391
14.6 小结 392
术语回顾 393
习题 393
文献注解 395
第五部分 事务管理 398
第15章 事务 398
15.1 事务概念 398
15.2 事务状态 400
15.3 原子性和持久性的实现 401
15.4 并发执行 403
15.5 可串行化 405
15.5.1 冲突可串行化 406
15.5.2 视图可串行化 407
15.6 可恢复性 408
15.6.1 可恢复调度 408
15.6.2 无级联调度 409
15.7 隔离性的实现 409
15.8 SQL中的事务定义 409
15.9 可串行化的判定 410
15.10 小结 411
习题 412
术语回顾 412
文献注解 413
第16章 并发控制 414
16.1 基于锁的协议 414
16.1.1 锁 414
16.1.2 锁的授予 417
16.1.3 两阶段封锁协议 417
16.1.4 封锁的实现 419
16.1.5 基于图的协议 420
16.2 基于时间戳的协议 422
16.2.1 时间戳 422
16.2.2 时间戳排序协议 422
16.2.3 Thomas写规则 424
16.3 基于有效性检查的协议 424
16.4 多粒度 425
16.5 多版本机制 428
16.5.1 多版本时间戳排序 428
16.5.2 多版本两阶段封锁 429
16.6 死锁处理 429
16.6.1 死锁预防 430
16.6.2 基于超时的机制 431
16.6.3 死锁检测与恢复 431
16.7 插入与删除操作 432
16.7.1 删除 433
16.7.2 插入 433
16.7.3 幻象现象 433
16.8.2 游标稳定性 435
16.8.1 二级一致性 435
16.8 弱一致性级别 435
16.8.3 SQL中的弱一致性级别 436
16.9 索引结构中的并发 436
16.10 小结 438
术语回顾 440
习题 441
文献注解 443
第17章 恢复系统 445
17.1 故障分类 445
17.2 存储器结构 445
17.2.1 存储器类型 445
17.2.2 稳定存储器的实现 446
17.2.3 数据访问 447
17.3 恢复与原子性 448
17.4 基于日志的恢复 449
17.4.1 延迟的数据库修改 449
17.4.2 立即的数据库修改 451
17.4.3 检查点 453
17.5 影子分页 454
17.6 并发事务的恢复 457
17.6.1 与并发控制的关系 457
17.6.2 事务回滚 457
17.6.3 检查点 458
17.6.4 重启动恢复 458
17.7.2 数据库缓冲 459
17.7.1 日志记录缓冲 459
17.7 缓冲区管理 459
17.7.3 操作系统在缓冲区管理中的作用 460
17.8 非易失性存储器数据丢失的故障 461
17.9 高级恢复技术 461
17.9.1 逻辑undo日志 462
17.9.2 事务回滚 462
17.9.3 检查点 463
17.9.4 重启动恢复 463
17.9.5 模糊检查点 464
17.9.6 ARIES 464
17.10 远程备份系统 467
17.11 小结 468
习题 470
术语回顾 470
文献注解 472
第六部分 数据库系统体系结构 474
第18章 数据库系统体系结构 474
18.1 集中式体系结构与客户-服务器体系结构 474
18.1.1 集中式系统 474
18.1.2 客户-服务器系统 475
18.2 服务器系统体系结构 476
18.2.1 事务服务器进程结构 477
18.2.2 数据服务器 478
18.3 并行系统 479
18.3.1 加速比和扩展比 480
18.3.3 并行数据库体系结构 482
18.3.2 互连网络 482
18.4 分布式系统 484
18.4.1 分布式数据库的一个例子 486
18.4.2 实现问题 486
18.5 网络类型 487
18.5.1 局域网 487
18.5.2 广域网 488
18.6 小结 489
术语回顾 489
习题 490
文献注解 491
19.2 分布式数据存储 492
19.1 同构数据库和异构数据库 492
第19章 分布式数据库 492
19.2.1 数据复制 493
19.2.2 数据分片 493
19.2.3 透明性 494
19.3 分布式事务 495
19.3.1 系统结构 495
19.3.2 系统故障模式 496
19.4 提交协议 497
19.4.1 两阶段提交 497
19.4.2 三阶段提交 499
19.4.3 事务处理的可选择模型 500
19.5.1 封锁协议 501
19.5 分布式数据库的并发控制 501
19.5.2 时间戳 503
19.5.3 弱一致性复制 504
19.5.4 死锁处理 505
19.6 可用性 507
19.6.1 基于多数的方法 508
19.6.2 读一个、写所有可用的方法 508
19.6.3 站点重建 509
19.6.4 与远程备份比较 509
19.6.5 协调器的选择 509
19.7 分布式查询处理 510
19.7.1 查询转换 510
19.7.2 简单的连接处理 511
19.7.4 利用并行性的连接策略 512
19.7.3 半连接策略 512
19.8 异构分布式数据库 513
19.8.1 数据的统一视图 513
19.8.2 查询处理 514
19.9 目录系统 514
19.9.1 目录访问协议 515
19.9.2 LDAP:轻型目录访问协议 515
19.10 小结 518
术语回顾 520
习题 520
文献注解 522
20.1 引言 524
20.2 I/O并行 524
第20章 并行数据库 524
20.2.1 划分技术 525
20.2.2 划分技术的比较 525
20.2.3 偏斜的处理 526
20.3 查询间并行 527
20.4 查询内并行 528
20.5 操作内并行 529
20.5.1 并行排序 529
20.5.2 并行连接 530
20.5.3 其他关系运算 533
20.5.4 操作的并行计算的代价 534
20.6 操作间并行 534
20.6.1 流水线并行 534
20.6.3 查询优化 535
20.6.2 独立并行 535
20.7 并行系统设计 536
20.8 小结 537
术语回顾 538
习题 538
文献注解 539
第七部分 其他主题 542
第21章 应用开发和管理 542
21.1 数据库的Web接口 542
21.1.1 动机 542
21.1.2 Web基础 543
21.1.3 Web服务器和会话 545
21.1.4 servlet 546
21.2 性能调整 548
21.1.5 服务器端脚本 548
21.1.6 提高性能 548
21.2.1 瓶颈的定位 549
21.2.2 可调参数 550
21.2.3 硬件的调整 550
21.2.4 模式的调整 551
21.2.5 索引的调整 552
21.2.6 使用物化视图 552
21.2.7 事务的调整 553
21.2.8 性能模拟 555
21.3 性能基准程序 555
21.3.1 任务集 555
21.3.3 TPC基准程序 556
21.3.2 数据库应用类型 556
21.3.4 OODB基准程序 557
21.4 标准化 558
21.4.1 SQL标准 558
21.4.2 数据库连接标准 559
21.4.3 对象数据库标准 560
21.4.4 基于XML的标准 560
21.5 电子商务 561
21.5.1 电子目录 561
21.5.2 市场 561
21.5.3 订单结算 562
21.7 小结 563
21.6 遗留系统 563
术语回顾 564
习题 565
项目建议 565
文献注解 567
工具 567
第22章 高级查询和信息检索 568
22.1 决策支持系统 568
22.2 数据分析和联机分析处理 569
22.2.1 联机分析处理 569
22.2.2 联机分析处理实现 573
22.2.3 扩展聚集 573
22.2.4 排名次 575
22.2.5 分窗 577
22.3 数据挖掘 578
22.3.1 数据挖掘应用 578
22.3.2 分类 579
22.3.3 关联规则 584
22.3.4 其他类型的关联 586
22.3.5 聚类 586
22.3.6 其他类型的挖掘 587
22.4 数据仓库 588
22.4.1 数据仓库的成分 588
22.4.2 数据仓库模式 589
22.5 信息检索系统 590
22.5.1 关键字搜索 591
22.5.2 文档的索引 594
22.5.3 度量检索的有效性 595
22.5.4 Web搜索引擎 595
22.5.5 目录 596
22.6 小结 598
术语回顾 599
习题 600
文献注解 601
工具 602
第23章 高级数据类型和新的应用 603
23.1 动机 603
23.2 数据库中的时间 604
23.2.1 SQL中的时间定义 604
23.3 空间与几何数据 605
23.2.2 时态查询语言 605
23.3.1 几何信息的表示 606
23.3.2 设计数据库 607
23.3.3 地理数据 608
23.3.4 空间查询 609
23.3.5 空间数据的索引 610
23.4 多媒体数据库 613
23.4.1 多媒体数据格式 613
23.4.2 连续媒体数据 614
23.4.3 基于相似性的检索 614
23.5 移动计算和个人数据库 615
23.5.2 路由和查询处理 616
23.5.1 移动计算模型 616
23.5.3 广播数据 617
23.5.4 连接断开与一致性 617
23.6 小结 619
术语回顾 619
习题 620
文献注解 621
第24章 高级事务处理 623
24.1 事务处理监控器 623
24.1.1 TP监控器体系结构 623
24.1.2 使用TP监控器进行应用协调 625
24.2 事务工作流 626
24.2.1 工作流说明 628
24.2.2 工作流的故障原子性需求 628
24.2.3 工作流的执行 629
24.2.5 工作流管理系统 630
24.2.4 工作流的恢复 630
24.3 主存数据库 631
24.4 实时事务系统 632
24.5 长事务 633
24.5.1 不可串行化的执行 633
24.5.2 并发控制 634
24.5.3 嵌套事务和多级事务 635
24.5.4 补偿事务 635
24.5.5 实现问题 636
24.6 多数据库中的事务管理 637
24.6.1 两级可串行化 638
24.7 小结 639
24.6.2 保证全局可串行化 639
术语回顾 640
习题 641
文献注解 642
第八部分 实例研究 644
第25章 Oracle 644
25.1 数据库设计和查询工具 644
25.1.1 数据库设计工具 644
25.1.2 查询工具 645
25.2 SQL的变化和扩展 645
25.2.1 对象-关系特征 646
25.2.2 触发器 646
25.3.2 段 647
25.3.1 表空间 647
25.3 存储和索引 647
25.3.3 表 648
25.3.4 按索引组织的表 648
25.3.5 索引 649
25.3.6 位图索引 649
25.3.7 基于函数的索引 650
25.3.8 连接索引 650
25.3.9 域索引 651
25.3.10 划分 651
25.3.11 物化视图 652
25.4 查询处理和优化 653
25.4.1 执行方法 653
25.4.2 优化 654
25.4.3 并行执行 655
25.5 并发控制与恢复 657
25.5.1 并发控制 657
25.5.2 恢复的基本结构 658
25.5.3 管理备用数据库 658
25.6 系统体系结构 659
25.6.1 专用服务器:内存结构 659
25.6.2 专用服务器:进程结构 659
25.6.3 多线程服务器 660
25.6.4 Oracle9i Real Application Clusters 660
25.7 复制、分布以及外部数据 660
25.7.1 复制 660
25.8.1 Oracle Enterprise Manager 661
25.8 数据库管理工具 661
25.7.2 分布式数据库 661
25.7.3 外部数据源 661
25.8.2 数据库资源管理 662
文献注解 662
第26章 IBM DB2 Universal Database 663
26.1 数据库设计和查询工具 664
26.2 SQL的变化和扩展 664
26.2.1 数据类型的支持 664
26.2.2 用户定义函数和方法 665
26.2.3 大对象 665
26.2.4 XML支持 665
26.3.1 存储体系结构 666
26.3 存储和索引 666
26.2.5 索引扩展和约束 666
26.3.2 表、记录和索引 667
26.4 查询处理和优化 668
26.4.1 访问方法 670
26.4.2 连接、聚集和集合运算 670
26.4.3 支持复杂SQL处理 670
26.4.4 多处理器查询处理特性 670
26.4.5 查询优化 671
26.5 并发控制和恢复 671
26.5.1 并发与隔离 672
26.5.3 日志和恢复 673
26.6 系统体系结构 673
26.5.2 提交和回滚 673
26.7 复制、分布和外部数据 675
26.8 数据库管理工具 675
26.9 小结 676
文献注解 676
第27章 Microsoft SQL Server 678
27.1 管理、设计和查询工具 678
27.1.1 数据库开发和可视化数据库工具 678
27.1.2 数据库查询和调整工具 679
27.1.3 SQL Server Enterprise Manager 682
27.2.1 数据类型 683
27.2.2 用户定义函数 683
27.2 SQL的变化和扩展 683
27.2.3 视图 684
27.2.4 触发器 686
27.3 存储和索引 686
27.3.1 文件组 686
27.3.2 文件组中的空间管理 686
27.3.3 表 687
27.3.4 索引 687
27.3.5 扫描和预读 687
27.4 查询处理及优化 687
27.4.1 优化处理概述 687
27.4.2 查询简化 688
27.4.3 重排序和基于代价的优化 688
27.4.5 部分搜索和启发式搜索 689
27.4.4 更新计划 689
27.4.6 查询执行 690
27.5 并发与恢复 690
27.5.1 事务 690
27.5.2 封锁 691
27.5.3 日志和恢复 693
27.6 系统体系结构 694
27.6.1 服务器的线程池 694
27.6.2 内存管理 694
27.7 数据访问 695
27.7.1 数据访问API 695
27.7.2 SQL Server的内部通信 695
27.8.1 分布式异构查询处理 696
27.8 分布与复制 696
27.8.2 复制 697
27.9 关系数据上的全文查询 699
27.10 数据仓库和分析服务 700
27.10.1 分布式转换服务 700
27.10.2 联机分析处理服务 700
27.11 XML和Web支持 702
27.11.1 XML访问SQL Server的体系结构 702
27.11.2 SQL查询结果序列化成XML 703
27.11.3 在关系数据上提供XML视图 703
27.11.4 在XML上提供关系视图 704
27.12 小结 704
文献注解 704
参考文献 706
索引 734