第一部分 数据库概念第1章 数据库系统概述 1
1.1 引言 1
1.2 基本概念和定义 1
1.2.1 数据 2
1.2.2 信息 3
1.2.3 数据与信息 3
1.2.4 数据仓库 5
1.2.5 元数据 5
1.2.6 系统目录 6
1.2.7 数据项或字段 7
1.2.8 记录 7
1.2.9 文件 7
1.3 数据字典 7
1.3.1 数据字典的组件 9
1.3.2 主动和被动数据字典 11
1.4 数据库 11
1.5 数据库系统 13
1.6 数据管理员 15
1.7 数据库管理员 16
1.8 面向文件系统与数据库系统 16
1.8.1 学习面向文件系统的优点 18
1.8.2 面向文件系统的缺点 18
1.8.3 数据库方法 20
1.8.4 数据库系统环境 20
1.8.5 DBMS的优点 22
1.8.6 DBMS的缺点 24
1.9 数据库系统的历史观点 25
1.10 数据库语言 27
1.10.1 数据定义语言 27
1.10.2 数据存储定义语言 28
1.10.3 视图定义语言 29
1.10.4 数据操纵语言 29
1.10.5 第四代语言 31
1.11 事务管理 31
习题 32
第2章 数据库系统架构 39
2.1 引言 39
2.2 模式、子模式和实例 39
2.2.1 模式 40
2.2.2 子模式 42
2.2.3 实例 43
2.3 ANSI-SPARC的三层数据库架构 43
2.3.1 内部层 45
2.3.2 概念层 46
2.3.3 外部层 46
2.3.4 三层架构的优点 46
2.3.5 三层架构的特性 47
2.4 数据独立性 47
2.4.1 物理数据独立性 48
2.4.2 逻辑数据独立性 48
2.5 映射 48
2.5.1 概念模式/内模式映射 48
2.5.2 外模式/概念模式映射 48
2.6 DBMS的结构、组成和功能 49
2.6.1 DBMS的结构 49
2.6.2 DBMS的执行步骤 49
2.6.3 DBMS的组成 50
2.6.4 DBMS的功能和服务 51
2.7 数据模型 53
2.7.1 基于记录的数据模型 53
2.7.2 基于对象的数据模型 53
2.7.3 物理数据模型 54
2.7.4 层次数据模型 54
2.7.5 网状数据模型 56
2.7.6 关系数据模型 57
2.7.7 实体-联系数据模型 58
2.7.8 面向对象数据模型 60
2.7.9 不同数据模型之间的比较 61
2.8 数据库系统的类型 61
2.8.1 集中式数据库系统 62
2.8.2 并行数据库系统 62
2.8.3 客户/服务器数据库系统 64
2.8.4 分布式数据库系统 65
习题 66
第3章 物理数据组织 70
3.1 引言 70
3.2 物理存储媒体 70
3.2.1 主存储设备 71
3.2.2 二级存储设备 71
3.2.3 三级存储设备 71
3.2.4 高速缓存 72
3.2.5 主存储器 72
3.2.6 闪存 72
3.2.7 磁盘存储器 73
3.2.8 光存储器 75
3.2.9 磁带存储器 76
3.3 RAID技术 77
3.3.1 使用并行机制改进性能 77
3.3.2 RAID技术的优点 78
3.3.3 RAID技术的缺点 78
3.3.4 使用冗余来提高可靠性 78
3.3.5 RAID级别 79
3.3.6 RAID级别的选择 81
3.4 文件的基本概念 83
3.4.1 文件类型 83
3.4.2 缓冲区管理 84
3.5 文件组织 84
3.5.1 记录和记录型 85
3.5.2 文件组织技术 89
3.6 索引 96
3.6.1 主索引 97
3.6.2 二级索引 97
3.6.3 基于树的索引 98
习题 99
第二部分 关系模型第4章 关系代数和关系演算 107
4.1 引言 107
4.2 关系模型的历史观点 107
4.3 关系数据库的结构 108
4.3.1 域 108
4.3.2 关系的键 109
4.4 关系代数 111
4.4.1 选择操作 112
4.4.2 投影操作 113
4.4.3 连接操作 114
4.4.4 外连接操作 115
4.4.5 并运算 115
4.4.6 差运算 116
4.4.7 交运算 117
4.4.8 笛卡儿积运算 117
4.4.9 除运算 118
4.4.10 关系代数中的查询示例 119
4.5 关系演算 121
4.5.1 元组关系演算 121
4.5.2 域关系演算 123
习题 124
第5章 关系查询语言 130
5.1 引言 130
5.2 Codd的规则 130
5.3 基于语言的信息系统(ISBL) 131
5.3.1 ISBL查询举例 132
5.3.2 ISBL的局限性 133
5.4 查询语言 133
5.4.1 QUEL查询举例 134
5.4.2 QUEL的优点 135
5.5 结构化查询语言 135
5.5.1 SQL的优点 136
5.5.2 SQL的缺点 136
5.5.3 基本的SQL数据结构 137
5.5.4 SQL数据类型 137
5.5.5 SQL运算符 138
5.5.6 SQL数据定义语言 139
5.5.7 SQL数据查询语言 143
5.5.8 SQL数据操纵语言 145
5.5.9 SQL数据控制语言 148
5.5.10 SQL数据管理语句 149
5.5.11 SQL事务控制语句 149
5.6 嵌入式结构化查询语言 149
5.7 基于例子的查询 150
5.7.1 基于一个关系的QBE查询(单表检索) 151
5.7.2 基于几个关系的QBE查询(多表检索) 155
5.7.3 利用QBE对数据库进行修改(更新、删除和插入) 156
5.7.4 Microsoft Access中的QBE查询 156
5.7.5 QBE的优点 161
5.7.6 QBE的缺点 161
习题 161
第6章 实体-联系模型 170
6.1 引言 170
6.2 E-R模型的基本概念 170
6.2.1 实体 170
6.2.2 联系 171
6.2.3 属性 174
6.2.4 约束 177
6.3 E-R模型向关系的转换 178
6.4 E-R模型存在的问题 185
6.4.1 扇形陷阱 186
6.4.2 深坑陷阱 186
6.5 E-R图符号 187
习题 189
第7章 增强的实体-联系模型 195
7.1 引言 195
7.2 超类和子类实体型 195
7.2.1 超类和子类的符号 196
7.2.2 属性继承 197
7.2.3 超类/子类联系的使用条件 198
7.2.4 使用超类和子类的优点 198
7.3 特殊化和一般化 199
7.3.1 特殊化 199
7.3.2 一般化 200
7.3.3 特殊化和一般化的约束 201
7.4 分类 203
7.5 EER图的例子 203
习题 204
第三部分 数据库设计第8章 数据库设计介绍 207
8.1 引言 207
8.2 软件开发生命周期 207
8.2.1 软件开发成本 208
8.2.2 结构化系统分析与设计 209
8.3 数据库开发生命周期 210
8.4 自动化设计工具 216
8.4.1 手工数据库设计的局限性 216
8.4.2 计算机辅助软件工程工具 217
习题 219
第9章 函数依赖和模式分解 221
9.1 引言 221
9.2 函数依赖 221
9.2.1 函数依赖图及其示例 222
9.2.2 完全函数依赖 225
9.2.3 函数依赖的Armstrong公理 225
9.2.4 多余的函数依赖 226
9.2.5 函数依赖集的闭包 226
9.3 模式分解 228
9.3.1 有损分解 229
9.3.2 无损连接分解 230
9.3.3 保持函数依赖的分解 231
习题 232
第10章 规范化 235
10.1 引言 235
10.2 规范化 235
10.3 范式 236
10.3.1 第一范式 237
10.3.2 第二范式 239
10.3.3 第三范式 242
10.4 Boyce-Codd范式 244
10.5 多值依赖和第四范式 246
10.5.1 多值依赖的性质 249
10.5.2 第四范式 250
10.5.3 多值依赖和4NF的问题 251
10.6 连接依赖和第五范式 251
10.6.1 连接依赖 251
10.6.2 第五范式 252
习题 253
第四部分 查询、事务和安全管理第11章 查询处理及优化 259
11.1 引言 259
11.2 查询处理 259
11.3 语法分析器 260
11.4 查询分解 261
11.4.1 查询分析 261
11.4.2 查询规范化 263
11.4.3 语义分析器 264
11.4.4 查询简化器 265
11.4.5 查询重构 267
11.5 查询优化 267
11.5.1 启发式查询优化 268
11.5.2 转换规则 270
11.5.3 启发式优化算法 275
11.6 查询优化中的成本估算 275
11.6.1 查询执行的成本部分 276
11.6.2 选择操作的成本函数 276
11.6.3 连接操作的成本函数 278
11.7 流水线和具体化操作 279
11.8 查询估算计划的结构 280
习题 282
第12章 事务处理与并发控制 287
12.1 引言 287
12.2 事务概念 287
12.2.1 事务执行和问题 289
12.2.2 SQL事务执行 290
12.2.3 事务的性质 290
12.2.4 事务日志 291
12.3 并发控制 292
12.3.1 并发控制问题 292
12.3.2 一致性的度 296
12.3.3 可交换的活动 297
12.3.4 调度 297
12.3.5 可串行化调度 298
12.4 并发控制中的加锁方法 298
12.4.1 锁的粒度 299
12.4.2 锁的类型 300
12.4.3 死锁 302
12.5 并发控制的时间戳方法 305
12.5.1 粒度时间戳 305
12.5.2 时间戳排序 305
12.5.3 解决时间戳中的冲突 306
12.5.4 时间戳的缺点 306
12.6 乐观的并发控制方法 306
12.6.1 读阶段 306
12.6.2 验证阶段 306
12.6.3 写阶段 307
12.6.4 乐观的并发控制方法的优点 307
12.6.5 乐观的并发控制方法的问题 307
12.6.6 乐观的并发控制方法的应用 307
习题 307
第13章 数据库恢复系统 313
13.1 引言 313
13.2 数据库恢复概念 313
13.3 数据库故障类型 313
13.4 数据库恢复的类型 314
13.4.1 向前恢复(或重做) 314
13.4.2 向后恢复(或撤销) 315
13.4.3 介质恢复 317
13.5 恢复技术 317
13.5.1 延迟更新 318
13.5.2 立即更新 319
13.5.3 影子分页 321
13.5.4 检查点 322
13.6 缓冲区管理 323
习题 323
第14章 数据库安全 328
14.1 引言 328
14.2 数据库安全的目标 328
14.2.1 数据库安全的威胁 328
14.2.2 数据库安全问题的类型 329
14.2.3 授权和认证 329
14.3 自主访问控制 330
14.3.1 授予和收回权限 330
14.3.2 审计跟踪 333
14.4 强制访问控制 333
14.5 防火墙 334
14.6 统计数据库安全 334
14.7 数据加密 334
14.7.1 简单替换方法 335
14.7.2 多字母替换方法 335
习题 335
第五部分 基于对象的数据库第15章 面向对象数据库 339
15.1 引言 339
15.2 面向对象数据模型 339
15.2.1 面向对象数据库的特征 340
15.2.2 OODM与E-R模型的比较 341
15.3 面向对象数据库的概念 341
15.3.1 对象 341
15.3.2 对象标识 342
15.3.3 对象属性 342
15.3.4 类 343
15.3.5 对象间的关联或联系 346
15.3.6 结构、继承和概括 347
15.3.7 操作 348
15.3.8 多态性 349
15.3.9 OO概念的优点 349
15.4 面向对象DBMS 350
15.4.1 OODBMS特性 350
15.4.2 OODBMS的优点 350
15.4.3 OODBMS的缺点 351
15.5 对象数据管理组和面向对象语言 351
15.5.1 对象模型 351
15.5.2 对象定义语言 352
15.5.3 对象查询语言 354
习题 356
第16章 对象-关系数据库 359
16.1 引言 359
16.2 对象-关系DBMS的历史 359
16.2.1 RDBMS的缺点 359
16.2.2 复杂对象 359
16.2.3 ORDBMS的出现 360
16.3 ORDBMS查询语言(SQL3) 361
16.4 ORDBMS设计 363
16.4.1 ORDBMS的挑战 364
16.4.2 ORDBMS的特点 364
16.4.3 ORDBMS和OODBMS的比较 364
16.4.4 ORDBMS的优点 365
16.4.5 ORDBMS的缺点 366
习题 366
第六部分 高级和新兴的数据库概念第17章 并行数据库系统 369
17.1 引言 369
17.2 并行数据库 369
17.2.1 并行数据库的优点 370
17.2.2 并行数据库的缺点 370
17.3 并行数据库的架构 370
17.3.1 共享内存的多CPU并行数据库架构 370
17.3.2 共享磁盘的多CPU并行数据库架构 371
17.3.3 无共享的多CPU并行数据库架构 371
17.4 并行数据库处理的关键要素 373
17.4.1 加速比 373
17.4.2 可扩展性 373
17.4.3 同步 374
17.4.4 加锁 374
17.5 查询并行机制 375
17.5.1 I/O并行机制(数据分区) 375
17.5.2 查询内并行机制 377
17.5.3 交互查询并行机制 378
17.5.4 操作内并行机制 378
17.5.5 交互操作并行机制 378
习题 379
第18章 分布式数据库系统 384
18.1 引言 384
18.2 分布式数据库 384
18.2.1 并行数据库与分布式数据库之间的区别 384
18.2.2 分布式数据库的期望性质 385
18.2.3 分布式数据库的类型 385
18.2.4 分布式数据库的期望功能 387
18.2.5 分布式数据库的优点 387
18.2.6 分布式数据库的缺点 388
18.3 分布式数据库的架构 388
18.3.1 客户/服务器架构 388
18.3.2 合作服务器系统 389
18.3.3 中间件系统 390
18.4 分布式数据库系统设计 391
18.4.1 数据分解 391
18.4.2 数据分配 394
18.4.3 数据复制 396
18.5 分布式查询处理 397
18.6 分布式数据库中的并发控制 400
18.6.1 分布式加锁 401
18.6.2 分布式死锁 401
18.6.3 时间戳 402
18.7 分布式数据库中的恢复控制 402
18.7.1 两阶段提交 402
18.7.2 三阶段提交 404
习题 404
第19章 决策支持系统 410
19.1 引言 410
19.2 决策支持系统的历史 410
19.3 决策支持系统的定义 411
19.3.1 DSS的性质 412
19.3.2 DSS的优点 412
19.3.3 DSS的组件 413
19.4 操作型数据与DSS数据 414
习题 415
第20章 数据仓库与数据挖掘 417
20.1 引言 417
20.2 数据仓库 417
20.2.1 数据仓库概念的演变 418
20.2.2 数据仓库的主要组成 420
20.2.3 数据仓库的特点 421
20.2.4 数据仓库的优点 421
20.2.5 数据仓库的局限性 421
20.3 数据仓库的架构 421
20.3.1 数据集市 423
20.3.2 联机分析处理 423
20.4 数据挖掘 425
20.4.1 数据挖掘过程 425
20.4.2 数据挖掘知识发现 426
20.4.3 数据挖掘的目标 426
20.4.4 数据挖掘工具 427
20.4.5 数据挖掘应用 428
习题 429
第21章 新的数据库技术 433
21.1 引言 433
21.2 Internet数据库 433
21.2.1 Internet技术 433
21.2.2 万维网 435
21.2.3 Web技术 436
21.2.4 Web数据库 439
21.2.5 Web数据库的优点 441
21.2.6 Web数据库的缺点 441
21.3 数字图书馆 441
21.3.1 数字图书馆简介 441
21.3.2 数字图书馆的组成 442
21.3.3 对数字图书馆的需求 444
21.3.4 科学杂志的数字图书馆 444
21.3.5 数字图书馆中的技术开发 444
21.3.6 数字图书馆的技术领域 445
21.3.7 访问数字图书馆 446
21.3.8 数字图书馆数据库 446
21.3.9 数字图书馆的潜在优点 447
21.4 多媒体数据库 449
21.4.1 多媒体资源 449
21.4.2 多媒体数据库查询 450
21.4.3 多媒体数据库应用 450
21.5 移动数据库 451
21.5.1 移动数据库的架构 451
21.5.2 移动计算的特点 451
21.5.3 移动DBMS 452
21.5.4 商业移动数据库 453
21.6 空间数据库 453
21.6.1 空间数据 453
21.6.2 空间数据库特性 453
21.6.3 空间数据模型 454
21.6.4 空间数据库查询 454
21.6.5 空间数据库查询技术 455
21.7 基于集群的灾难预防数据库 455
习题 456
第七部分 案例学习第22章 数据库设计:案例学习 461
22.1 引言 461
22.2 小额银行存放业务的数据库设计 461
22.2.1 需求定义及分析 461
22.2.2 概念设计:实体-联系图 462
22.2.3 逻辑数据库设计:表定义 462
22.2.4 逻辑数据库设计:示例表数据 464
22.3 辅助制造系统的数据库设计 465
22.3.1 需求定义及分析 465
22.3.2 概念设计:实体-联系图 466
22.3.3 逻辑数据库设计:表定义 466
22.3.4 逻辑数据库设计:示例表数据 469
22.3.5 函数依赖图 470
22.4 年费用合同系统的数据库设计 471
22.4.1 需求定义及分析 471
22.4.2 概念设计:实体-联系图 472
22.4.3 逻辑数据库设计:表定义 472
22.4.4 逻辑数据库设计:示例表数据 473
22.4.5 函数依赖图 474
22.5 技术培训学院的数据库设计 474
22.5.1 需求定义及分析 474
22.5.2 概念设计:实体-联系图 475
22.5.3 逻辑数据库设计:表定义 475
22.6 网上书店的数据库设计 477
22.6.1 需求定义及分析 477
22.6.2 概念设计:实体-联系图 478
22.6.3 逻辑数据库设计:表定义 478
22.6.4 需求定义中的更改(附加) 478
22.6.5 修改的表定义 479
22.6.6 模式求精 479
22.6.7 修改实体-联系图 480
22.6.8 逻辑数据库设计:示例表数据 480
22.7 客户订购仓库的数据库设计 481
22.7.1 需求定义及分析 481
22.7.2 概念设计:实体-联系图 481
22.7.3 逻辑数据库设计:表定义 481
22.7.4 逻辑数据库设计:示例表数据 482
22.7.5 函数依赖图 482
22.7.6 逻辑记录结构及访问路径 484
习题 484
第八部分 商业数据库第23章 IBM DB2通用数据库 487
23.1 引言 487
23.2 DB2产品 487
23.3 DB2通用数据库 489
23.3.1 DB2 UDB的配置 489
23.3.2 其他DB2 UDB相关的产品 496
23.3.3 DB2通用数据库的主要组件 500
23.3.4 DB2 UDB的特性 503
23.4 安装DB2 UDB服务器的必备条件 505
23.4.1 安装必备条件:DB2 UDB个人版(Windows) 505
23.4.2 安装必备条件:DB2工作组服务器版和无分区的DB2企业服务器版(Windows) 506
23.4.3 安装必备条件:分区的DB2企业服务器版(Windows) 508
23.4.4 安装必备条件:DB2连接个人版(Windows) 510
23.4.5 安装必备条件:DB2连接企业版(Windows) 512
23.4.6 安装必备条件:DB2查询巡视器服务器(Windows) 513
23.4.7 安装必备条件:DB2多维视图(Windows) 514
23.5 安装DB2客户端的必备条件 515
23.5.1 安装必备条件:DB2客户端(Windows) 515
23.5.2 安装必备条件:DB2查询巡视器客户端(Windows) 516
23.6 安装和配置DB2 UDB服务器 517
习题 524
第24章 Oracle 528
24.1 引言 528
24.2 Oracle的历史 528
24.2.1 Oracle家族 529
24.2.2 Oracle软件 531
24.3 Oracle特性 531
24.3.1 应用程序开发特性 531
24.3.2 通信特性 533
24.3.3 分布式数据库特性 535
24.3.4 数据移动特性 536
24.3.5 性能特性 537
24.3.6 数据库管理特性 538
24.3.7 备份和恢复特性 539
24.3.8 Oracle Internet开发人员套件 540
24.3.9 Qracle Lite 542
24.4 SQL*Plus 542
24.4.1 SQL*Plus的特性 542
24.4.2 使用SQL*Plus 542
24.4.3 编辑器命令 543
24.4.4 SQL*Plus帮助系统以及其他有用的命令 543
24.4.5 格式化输出 544
24.5 Oracle的数据字典 544
24.5.1 数据字典表 544
24.5.2 数据字典视图 545
24.6 Oracle系统架构 546
24.6.1 存储管理和进程 546
24.6.2 逻辑数据库结构 548
24.6.3 物理数据库结构 548
24.7 Oracle 9i安装指南 549
习题 554
第25章 Microsoft SQL Server 557
25.1 引言 557
25.2 Microsoft SQL Server设置 557
25.2.1 SQL Server 2000版本 557
25.2.2 SQL Server 2005版本 558
25.2.3 Microsoft SQL Server的特性 558
25.3 SQL Server中的存储过程 559
25.3.1 存储过程的优点 559
25.3.2 存储过程的结构 559
25.4 安装Microsoft SQL Server 2000 560
25.4.1 安装步骤 560
25.4.2 启动和停止SQL Server 560
25.4.3 自动启动SQL Server服务 563
25.4.4 到Microsoft SQL Server数据库系统的连接 564
25.4.5 数据的源 564
25.4.6 安全性 569
25.5 Microsoft SQL Server的数据库操作 571
25.5.1 数据库连接 571
25.5.2 创建数据库 572
习题 575
第26章 Microsoft Access 577
26.1 引言 577
26.2 Access数据库 577
26.2.1 表 577
26.2.2 查询 578
26.2.3 报表 579
26.2.4 窗体 579
26.2.5 宏 581
26.3 Access中的数据库操作 582
26.3.1 创建窗体 582
26.3.2 创建一个简单的查询 582
26.3.3 修改查询 585
26.4 Microsoft Access的特性 588
习题 589
第27章 MySQL 590
27.1 引言 590
27.2 MySQL概览 590
27.2.1 MySQL特性 590
27.2.2 MySQL稳定性 592
27.2.3 MySQL表大小 592
27.2.4 MySQL开发途径 593
27.2.5 MySQL 4.0中可使用的特性 594
27.2.6 嵌入的MySQL服务器 595
27.2.7 MySQL 4.1的特性 595
27.2.8 MySQL 5.0:下一个开发的版本 596
27.2.9 MySQL邮件发送清单 596
27.2.10 MySQL支持的操作系统 597
27.3 PHP简介 598
27.3.1 PHP语言语法 598
27.3.2 PHP变量 599
27.3.3 PHP操作 599
27.3.4 安装PHP 601
27.4 MySQL数据库 601
27.4.1 创建自己的第一个数据库 601
27.4.2 MySQL连接 601
27.4.3 选择使用的数据库 602
27.4.4 MySQL表 602
27.4.5 创建MySQL表 603
27.4.6 在MySQL表中插入数据 604
27.4.7 MySQL查询 604
27.4.8 从MySQL中检索信息 605
27.5 在Windows中安装MySQL 606
27.5.1 Windows系统需求 607
27.5.2 选择一个安装包 607
27.5.3 使用自动的安装程序安装MySQL 607
27.5.4 使用MySQL安装向导 607
27.5.5 下载与启动MySQL安装向导 608
27.5.6 MySQL安装步骤 608
27.5.7 建立许可和密码 609
习题 611
参考文献 612