第1章 引言 1
1.1数据库系统的目的 1
1.2数据视图 3
1.2.1数据抽象 3
1.2.2实例和模式 4
1.2.3数据独立性 4
1.3数据模型 5
1.3.1基于对象的逻辑模型 5
1.3.2基于记录的逻辑模型 6
1.3.3物理数据模型 7
1.4数据库语言 8
1.4.1数据定义语言 8
1.4.2数据操纵语言 8
1.5事务管理 9
1.6存储管理 10
1.7数据库管理员 10
1.8数据库用户 10
1.9系统总体结构 11
1.10总结 13
习题 13
文献注解 14
第2章 实体-联系模型 15
2.1基本概念 15
2.1.1实体集 15
2.1.2联系集 17
2.2设计问题 18
2.2.1用实体集还是用属性 18
2.2.2用实体集还是用联系集 19
2.2.3二元联系集与n元联系集 19
2.3映射约束 20
2.3.1映射的基数 20
2.3.2存在依赖 22
2.4码 22
2.4.1实体集 22
2.4.2联系集 23
2.5实体-联系图 23
2.6弱实体集 26
2.7扩展E-R特性 27
2.7.1特殊化 27
2.7.2概括 28
2.7.3属性继承 29
2.7.4约束设计 29
2.7.5聚集 31
2.8设计数据库的E-R模式 32
2.8.1设计阶段 32
2.8.2银行业务的数据需求 33
2.8.3与银行相关的实体集 34
2.8.4与银行相关的联系集 34
2.8.5银行企业E-R图 34
2.9将E-R模式转换为表 35
2.9.1用表表示强实体集 35
2.9.2用表表示弱实体集 36
2.9.3用表表示联系集 36
2.9.4多值属性 38
2.9.5用表表示概括 38
2.9.6用表表示聚集 39
2.10总结 39
习题 40
文献注解 42
第3章 关系模型 43
3.1关系数据库的结构 43
3.1.1基本结构 43
3.1.2数据库模式 44
3.1.3码 46
3.1.4查询语言 47
3.2关系代数 48
3.2.1基本运算 48
3.2.2关系代数的形式化定义 53
3.2.3附加运算 53
3.3元组关系演算 56
3.3.1查询的例子 57
3.3.2形式化定义 58
3.3.3表达式的安全性 59
3.3.4语言的表达能力 59
3.4域关系演算 59
3.4.1形式化定义 60
3.4.2查询的例子 60
3.4.3表达式的安全性 61
3.4.4语言的表达能力 61
3.5扩展关系代数运算 62
3.5.1广义投影 62
3.5.2外连接 62
3.5.3聚集函数 63
3.6数据库的修改 65
3.6.1删除 65
3.6.2插入 65
3.6.3更新 66
3.7视图 66
3.7.1视图定义 67
3.7.2通过视图进行更新与空值 68
3.7.3用视图定义视图 68
3.8总结 69
习题 70
文献注解 72
第4章 SQL 74
4.1背景 74
4.2基本结构 75
4.2.1 Select子句 76
4.2.2 Where子句 76
4.2.3 from子句 77
4.2.4更名运算 78
4.2.5元组变量 78
4.2.6字符串操作 79
4.2.7排列元组的显示次序 80
4.2.8重复 80
4.3集合操作 81
4.3.1并操作 81
4.3.2交操作 82
4.3.3差操作 82
4.4聚集函数 83
4.5空值 85
4.6嵌套子查询 85
4.6.1集合成员资格 85
4.6.2集合的比较 87
4.6.3测试是否为空关系 88
4.6.4测试是否存在重复元组 89
4.7派生关系 90
4.8视图 90
4.9数据库的修改 91
4.9.1删除 91
4.9.2插入 92
4.9.3更新 94
4.9.4视图的更新 95
4.10关系的连接 95
4.10.1举例 95
4.10.2连接类型和条件 97
4.11数据定义语言DDL 98
4.11.1 SQL中的域类型 99
4.11.2 SQL的模式定义 99
4.12嵌入式SQL 102
4.13其他SQL特性 104
4.14总结 104
习题 105
文献注解 107
第5章 其他关系语言 108
5.1 Query-by-Example 108
5.1.1在一个关系上的查询 108
5.1.2在多个关系上的查询 111
5.1.3条件框 112
5.1.4结果关系 113
5.1.5元组的显示次序 114
5.1.6聚集操作 114
5.1.7数据库的修改 116
5.2 Quel 119
5.2.1简单查询 119
5.2.2元组变量 120
5.2.3聚集函数 121
5.2.4数据库的修改 123
5.2.5集合操作 125
5.2.6 Quel和元组关系演算 126
5.3 Datalog 127
5.3.1基本结构 127
5.3.2 Datalog规则语法 128
5.3.3非递归Datalog语义 130
5.3.4安全性 132
5.3.5 Datalog中的关系运算 132
5.3.6 Datalog中的递归 133
5.3.7递归的能力 135
5.4总结 137
习题 137
文献注解 139
第6章 完整性约束 140
6.1域约束 140
6.2参照完整性 141
6.2.1基本概念 141
6.2.2 E-R模型中的参照完整性 142
6.2.3数据库的修改 142
6.2.4 SQL中的参照完整性 142
6.3断言 144
6.4触发器 145
6.5函数依赖 146
6.5.1基本概念 146
6.5.2函数依赖集的闭包 149
6.5.3属性集的闭包 150
6.5.4正则覆盖 151
6.6总结 152
习题 153
文献注解 154
第7章 关系数据库设计 156
7.1关系数据库设计中易犯的错误 156
7.2模式分解 157
7.3利用函数依赖作规范化 160
7.3.1分解应具有的特性 160
7.3.2 Boyce-Codd范式 163
7.3.3第三范式 166
7.3.4 BCNF和3NF的比较 167
7.4利用多值依赖作规范化 168
7.4.1多值依赖 168
7.4.2多值依赖的理论 170
7.4.3第四范式 171
7.5利用连接依赖作规范化 173
7.5.1连接依赖 174
7.5.2投影-连接范式 175
7.6域-码范式 176
7.7数据库设计的其他方法 177
7.8总结 178
习题 179
文献注解 181
第8章 面向对象数据库 182
8.1新的数据库应用 182
8.2面向对象数据模型 183
8.2.1对象结构 183
8.2.2对象类 184
8.2.3继承 185
8.2.4多重继承 186
8.2.5对象标识 188
8.2.6对象包含 189
8.3面向对象的语言 190
8.4持久化程序设计语言 190
8.4.1对象的持久性 191
8.4.2对象标识与指针 191
8.4.3持久对象的存储和访问 192
8.5持久化C++系统 193
8.5.1 ODMG C++对象定义语言 193
8.5.2 ODMG C++对象操纵语言 194
8.6总结 196
习题 197
文献注解 197
第9章 对象-关系数据库 199
9.1嵌套关系 199
9.2复杂类型和面向对象 201
9.2.1有结构的类型和集合体类型 201
9.2.2继承 202
9.2.3引用类型 205
9.3与复杂类型有关的查询 205
9.3.1以关系为值的属性 205
9.3.2路径表达式 206
9.3.3嵌套与解除嵌套 207
9.3.4函数 208
9.4复杂值和复杂对象的创建 209
9.5面向对象数据库与对象-关系数据库的比较 210
9.6总结 210
习题 210
文献注解 211
第10章 存储结构和文件结构 213
10.1物理存储介质概览 213
10.2磁盘 214
10.2.1磁盘的物理特性 215
10.2.2磁盘性能的度量标准 216
10.2.3磁盘块存取的优化 217
10.3 RAID 218
10.3.1通过冗余提高可靠性 219
10.3.2通过并行提高性能 219
10.3.3 RAID级别 220
10.3.4选择正确的RAID级别 222
10.3.5扩展 223
10.4第三级存储 223
10.4.1光盘 223
10.4.2磁带 223
10.5存储访问 224
10.5.1缓冲区管理器 224
10.5.2缓冲区替换策略 225
10.6文件组织 226
10.6.1定长记录 226
10.6.2变长记录 228
10.7文件中记录的组织 230
10.7.1顺序文件组织 231
10.7.2聚集文件组织 231
10.8数据字典的存储 233
10.9面向对象数据库的存储结构 234
10.9.1对象到文件的映射 234
10.9.2对象标识的实现 234
10.9.3持久化指针的管理 235
10.9.4对象的磁盘结构与内存结构 238
10.9.5大对象 239
10.10总结 239
习题 240
文献注解 242
第11章 索引和散列 244
11.1基本概念 244
11.2顺序索引 244
11.2.1主索引 245
11.2.2辅助索引 248
11.3 B+树索引文件 249
11.3.1 B+树的结构 249
11.3.2 B+树上的查询 250
11.3.3 B+树的更新 251
11.3.4 B+树文件组织 254
11.4 B树索引文件 256
11.5静态散列 257
11.5.1散列文件组织 257
11.5.2散列索引 260
11.6动态散列法 261
11.7顺序索引和散列的比较 265
11.8 SQL中的索引定义 266
11.9多码访问 267
11.9.1网格文件 268
11.9.2分段散列 270
11.10总结 270
习题 271
文献注解 272
第12章 查询处理 274
12.1概述 274
12.2用于估计代价的目录信息 276
12.3查询代价的度量 277
12.4选择运算 277
12.4.1基本算法 277
12.4.2利用索引的选择 279
12.4.3涉及比较的选择 279
12.4.4复杂选择的实现 281
12.5排序 283
12.6连接运算 285
12.6.1连接结果集大小的估计 285
12.6.2嵌套循环连接 286
12.6.3块嵌套循环连接 287
12.6.4索引嵌套循环连接 288
12.6.5归并连接 288
12.6.6散列连接 290
12.6.7复杂连接 293
12.7其他运算 294
12.7.1消除重复 294
12.7.2投影 295
12.7.3集合运算 295
12.7.4外连接 295
12.7.5聚集 296
12.8表达式计算 297
12.8.1实体化 297
12.8.2流水线 298
12.9关系表达式的转换 300
12.9.1表达式的等价性 300
12.9.2等价规则 301
12.9.3变换的一些例子 302
12.9.4连接的次序 304
12.9.5等价表达式的枚举 305
12.10选择执行计划 305
12.10.1执行技术的相互作用 306
12.10.2基于代价的优化 306
12.10.3启发式优化 307
12.10.4查询优化器的结构 309
12.11总结 310
习题 311
文献注解 313
第13章 事务 315
13.1事务概念 315
13.2事务状态 317
13.3原子性和持久性的实现 318
13.4并发执行 319
13.5可串行化 322
13.5.1冲突可串行化 322
13.5.2视图可串行化 324
13.6可恢复性 325
13.6.1可恢复调度 325
13.6.2无级联调度 325
13.7隔离性的实现 325
13.8 SQL中的事务定义 326
13.9可串行化判定 326
13.9.1冲突可串行化的判定 327
13.9.2视图可串行化的判定 328
13.10总结 331
习题 331
文献注解 332
第14章 并发控制 333
14.1基于锁的协议 333
14.1.1锁 333
14.1.2锁的授予 336
14.1.3两阶段封锁协议 336
14.1.4基于图的协议 338
14.2基于时间戳的协议 340
14.2.1时间戳 340
14.2.2时间戳排序协议 340
14.2.3 Thomas写规则 341
14.3基于有效性检查的协议 342
14.4多粒度 343
14.5多版本机制 345
14.5.1多版本的时间戳排序 345
14.5.2多版本两阶段封锁 346
14.6死锁处理 346
14.6.1死锁预防 347
14.6.2基于超时的机制 348
14.6.3死锁检测与恢复 348
14.7插入与删除操作 349
14.7.1删除 349
14.7.2插入 350
14.7.3幻象现象 350
14.8索引结构中的并发 352
14.9总结 353
习题 354
文献注解 357
第15章 恢复系统 359
15.1故障分类 359
15.2存储器结构 359
15.2.1存储器类型 359
15.2.2稳定存储器的实现 360
15.2.3数据访问 361
15.3恢复与原子性 362
15.4基于日志的恢复 362
15.4.1延迟的数据库修改 363
15.4.2立即的数据库修改 365
15.4.3检查点 367
15.5影子分页 368
15.6并发事务的恢复 370
15.6.1与并发控制的关系 371
15.6.2事务回滚 371
15.6.3检查点 371
15.6.4重启动恢复 372
15.7缓冲区管理 372
15.7.1日志记录缓冲 372
15.7.2数据库缓冲 373
15.7.3操作系统在缓冲区管理中的作用 374
15.8非易失性存储器数据丢失的故障 374
15.9高级恢复技术 375
15.9.1逻辑Undo日志 375
15.9.2事务回滚 376
15.9.3检查点 376
15.9.4重启动恢复 376
15.9.5模糊检查点 377
15.10总结 377
习题 378
文献注解 379
第16章 数据库系统体系结构 381
16.1集中式系统 381
16.2客户-服务器系统 382
16.2.1事务服务器 383
16.2.2数据服务器 384
16.3并行系统 385
16.3.1加速比和扩展性 385
16.3.2互连网络 386
16.3.3并行数据库体系结构 387
16.4分布式系统 389
16.4.1说明性的例子 389
16.4.2利弊权衡 390
16.5网络类型 391
16.5.1局域网 391
16.5.2广域网 391
16.6总结 393
习题 393
文献注解 394
第17章 并行数据库 395
17.1引言 395
17.2 I/O并行 395
17.2.1划分技术 395
17.2.2划分技术比较 396
17.2.3偏斜的处理 397
17.3查询间并行 397
17.4查询内并行 398
17.5操作内并行 399
17.5.1并行排序 399
17.5.2并行连接 400
17.5.3其他关系操作 403
17.5.4操作并行计算的代价 403
17.6操作间并行 404
17.6.1流水线并行 404
17.6.2独立的并行 405
17.6.3查询优化 405
17.7并行系统设计 406
17.8总结 407
习题 407
文献注解 408
第18章 分布式数据库 410
18.1分布式数据存储 410
18.1.1数据复制 410
18.1.2数据分片 411
18.1.3数据复制与分片 413
18.2网络透明性 414
18.2.1数据项的命名 414
18.2.2透明性与更新 415
18.3分布式查询处理 416
18.3.1查询转换 416
18.3.2简单的连接处理 417
18.3.3半连接策略 417
18.3.4利用并行性的连接策略 418
18.4分布式事务模型 418
18.4.1系统结构 419
18.4.2系统故障模式 419
18.4.3强壮性 421
18.5提交协议 422
18.5.1两阶段提交 422
18.5.2三阶段提交 424
18.5.3协议的比较 427
18.6协调器选择 427
18.6.1备份协调器 427
18.6.2选举算法 428
18.7并发控制 428
18.7.1封锁协议 428
18.7.2时间戳 430
18.8死锁处理 431
18.8.1集中方式 431
18.8.2全分布方式 432
18.9多数据库系统 434
18.9.1数据的一致视图 434
18.9.2事务管理 435
18.10总结 437
习题 437
文献注解 439
第19章 特别的话题 441
19.1安全性和完整性 441
19.1.1安全性和完整性违例 441
19.1.2授权 442
19.1.3授权与视图 443
19.1.4权限的授予 443
19.1.5在SQL中进行安全性说明 444
19.1.6加密 445
19.1.7统计数据库 447
19.2标准化 447
19.3性能基准程序 449
19.3.1任务集 449
19.3.2数据库应用类型 450
19.3.3 TPC基准程序 450
19.3.4 OODB基准程序 451
19.4性能调整 451
19.4.1瓶颈的位置 451
19.4.2可调参数 452
19.4.3模式的调整 453
19.4.4索引的调整 453
19.4.5事务的调整 454
19.4.6性能模拟 454
19.5数据库中的时间 455
19.5.1 SQL-92中的时间定义 455
19.5.2时态查询语言 456
19.6用户界面 456
19.7主动数据库 458
19.8总结 460
习题 461
文献注解 462
第20章 高级事务处理 464
20.1远程备份系统 464
20.2事务处理监控器 466
20.2.1 TP监控器体系结构 466
20.2.2使用TP监控器进行应用协调 468
20.3高性能事务系统 469
20.3.1主存数据库 469
20.3.2成组提交 470
20.4长事务 470
20.4.1不可串行化的执行 471
20.4.2并发控制 472
20.4.3嵌套事务和多级事务 472
20.4.4补偿事务 473
20.4.5实现问题 474
20.5实时事务系统 474
20.6较弱的一致性级别 475
20.6.1二级一致性 475
20.6.2游标稳定 475
20.7事务工作流 476
20.7.1工作流说明 477
20.7.2工作流的故障原子性需求 478
20.7.3工作流的执行 478
20.7.4工作流的恢复 479
20.8总结 480
习题 480
文献注解 481
第21章 新的应用 483
21.1决策支持系统 483
21.2数据分析 484
21.3数据挖掘 486
21.3.1用规则表示知识 486
21.3.2数据挖掘问题的类型 487
21.3.3用户制导的数据挖掘 488
21.3.4规则的自动发现 488
21.4数据仓库工程 490
21.5空间和地理数据库 491
21.5.1几何信息的表示 492
21.5.2设计数据库 493
21.5.3地理数据 493
21.5.4空间查询 495
21.5.5空间数据的索引 495
21.6多媒体数据库 497
21.6.1基于相似性的检索 498
21.6.2连续介质数据 498
21.7移动性和个人数据库 499
21.7.1移动计算模型 500
21.7.2路由和查询处理 500
21.7.3广播数据 500
21.7.4连接断开与一致性 501
21.8信息检索系统 502
21.8.1查询 503
21.8.2文档的索引 503
21.8.3浏览与超文本 504
21.9分布式信息系统 506
21.10 World Wide Web 507
21.10.1统一资源定位器 507
21.10.2 Web服务器 508
21.10.3显示语言 508
21.10.4数据库的Web接口 510
21.10.5在Web上查找信息 511
21.11总结 512
习题 513
文献注解 514
附录A网状模型 516
附录B层次模型 521