第Ⅰ部分 数据库环境一览 3
第1章 数据库管理简介 3
1.1 数据库的特性 3
1.2 数据库管理系统的功能 6
1.2.1 数据库定义 7
1.2.2 非过程访问 8
1.2.3 “应用程序开发”和“程序语言接口” 9
1.2.4 支持数据库操作的功能 11
1.2.5 第三方功能 11
1.3 数据库技术的发展和市场状况 12
1.3.1 数据库技术的演化 12
1.3.2 数据库软件当前的销售状况 13
1.4 数据库管理系统的架构 14
1.4.1 数据独立和三模式架构 14
1.4.2 分布式处理和“客户端/服务器”架构 16
1.5 数据库技术对组织的影响 18
1.5.1 与数据库交互 18
1.5.2 信息资源管理 19
1.6 小结 20
1.7 概念总汇 21
1.8 复习题 21
1.9 练习题 22
1.10 资源 22
第2章 数据库开发简介 23
2.1 信息系统 23
2.1.1 信息系统的组件 23
2.1.2 信息系统开发过程 24
2.2 数据库开发的目标 26
2.2.1 开发通用词汇 26
2.2.2 定义数据含义 26
2.2.3 确保数据质量 27
2.2.4 找出有效的实现方法 28
2.3 数据库开发过程 28
2.3.1 数据库开发的各个阶段 28
2.3.2 数据库开发技能 32
2.4 数据库开发工具 33
2.4.1 图解 33
2.4.2 文档记录 33
2.4.3 分析 34
2.4.4 原型工具 34
2.4.5 商业CASE工具 34
2.5 小结 37
2.6 概念总汇 38
2.7 复习题 38
2.8 练习题 40
2.9 资源 40
第Ⅱ部分 了解关系数据库 43
第3章 关系数据模型 43
3.1 基本元素 43
3.1.1 表 44
3.1.2 将表连接起来 45
3.1.3 交替术语 47
3.2 完整性规则 47
3.2.1 完整性规则的定义 47
3.2.2 完整性规则的应用 48
3.2.3 引用完整性的图形表示 52
3.3 引用行的删除和更新操作 53
3.4 关系代数的操作符 54
3.4.1 限制和投影操作符 55
3.4.2 广义向量积操作符 56
3.4.3 连接操作符 57
3.4.4 外连接操作符 60
3.4.5 并、交和差操作符 63
3.4.6 汇总操作符 65
3.4.7 除操作符 66
3.4.8 操作符总结 67
3.5 小结 68
3.6 概念总汇 68
3.7 复习题 69
3.8 练习题 70
3.9 资源 73
附录3.A 大学数据库各表的CREATE TABLE语句 73
附录3.B SQL:2003语法一览 74
附录3.C 生成主键的唯一值 76
第4章 SQL查询公式化 78
4.1 背景信息 78
4.1.1 SQL的发展历程 79
4.1.2 SQL的作用范围 80
4.2 开始使用SELECT语句 81
4.2.1 单表问题 85
4.2.2 连接表 90
4.2.3 用GROUPBY和HAVING汇总表 91
4.2.4 改进结果的显示效果 95
4.3 SELECT语句的概念评估过程 97
4.4 查询公式化的关键问题 102
4.5 利用实例提高查询公式化技能 104
4.5.1 利用向量积连接多个表 104
4.5.2 利用连接操作符连接多个表 107
4.5.3 自身连接和两表间的多连接 110
4.5.4 结合连接和分组 111
4.5.5 SQL中的传统集合操作符 112
4.6 SQL修改语句 114
4.7 小结 116
4.8 概念总汇 116
4.9 复习题 120
4.10 练习题 121
4.11 资源 131
附录4.A SQL:2003语法总结 131
附录4.B 主流DBMS产品的语法差别 133
第Ⅲ部分 数据建模 137
第5章 理解实体关联图 137
5.1 实体关联图简介 138
5.1.1 基本符号 138
5.1.2 关联基数 139
5.1.3 比较关系数据库图 141
5.2 理解关联 142
5.2.1 标识依赖(弱实体和标识关联) 142
5.2.2 关联模式 143
5.2.3 1-M和M-N关联的等价性 147
5.3 实体关联模型的分类 148
5.3.1 归纳层次 148
5.3.2 不相交和完全约束 149
5.3.3 多个归纳级别 149
5.4 表示符号总结和图形规则 150
5.4.1 表示符号一览 150
5.4.2 图形规则 152
5.5 与其他表示法的比较 155
5.5.1 ERD的变体 156
5.5.2 UML中的类图 156
5.6 小结 158
5.7 概念总汇 159
5.8 复习题 159
5.9 练习题 160
5.10 资源 165
第6章 为商业数据库开发数据模型 166
6.1 分析业务数据建模问题 167
6.1.1 商业信息需求分析指南 167
6.1.2 分析“自来水公司”数据库的信息需求 169
6.2 进一步完善ERD 172
6.2.1 将属性转化成实体类型 172
6.2.2 分开混合属性 172
6.2.3 扩展实体类型 172
6.2.4 将弱实体转化成强实体 173
6.2.5 添加历史细节 174
6.2.6 添加归纳层次 175
6.2.7 转化方式一览 176
6.3 最终完成ERD 176
6.3.1 ERD的文档记录 177
6.3.2 查找常见设计错误 178
6.4 将ERD转换成关系表 181
6.4.1 基本转换规则 181
6.4.2 转换可选的1-M关联 184
6.4.3 转换归纳层次 186
6.4.4 转换1-1关联 188
6.4.5 一个综合转换实例 188
6.5 小结 190
6.6 概念总汇 191
6.7 复习题 191
6.8 练习题 192
6.9 资源 208
第Ⅳ部分 关系数据库设计 211
第7章 关系表的规范化 211
7.1 关系数据库设计概述 211
7.1.1 避免更改异常 212
7.1.2 函数依赖 213
7.2 范式 215
7.2.1 第一范式 216
7.2.2 第二和第三范式 217
7.2.3 Boyce-Codd范式 220
7.2.4 简单合成过程 222
7.3 完善M路关联 225
7.3.1 关联依赖 225
7.3.2 多值依赖和第四范式 227
7.4 更高级的范式 229
7.4.1 第五范式 229
7.4.2 域键范式 230
7.5 规范化的实际考虑事项 230
7.5.1 规范化在数据库开发过程中的角色 230
7.5.2 分析规范化的目标 231
7.6 小结 232
7.7 概念总汇 232
7.8 复习题 233
7.9 练习题 234
7.10 资源 242
第8章 物理数据库设计 243
8.1 物理数据库设计概览 244
8.1.1 数据库的存储级别 244
8.1.2 目标和约束 245
8.1.3 输入、输出和环境 246
8.1.4 难点 247
8.2 物理数据库设计的输入 248
8.2.1 表配置文件 248
8.2.2 应用程序配置文件 249
8.3 文件结构 250
8.3.1 顺序文件 250
8.3.2 散列文件 252
8.3.3 Btree文件 254
8.3.4 位图索引 260
8.3.5 文件结构汇总 262
8.4 查询优化 262
8.4.1 转化任务 262
8.4.2 改进优化决策 266
8.5 索引选择 268
8.5.1 问题定义 268
8.5.2 折衷和难点 270
8.5.3 选择规则 271
8.6 物理数据库设计的其他选项 274
8.6.1 反向规范化 275
8.6.2 记录格式化 277
8.6.3 并行处理 277
8.6.4 其他用来提高性能的方法 279
8.7 小结 279
8.8 概念总汇 280
8.9 复习题 280
8.10 练习题 282
8.11 资源 289
第Ⅴ部分 关系数据库的应用程序开发 293
第9章 高级SQL查询公式化 293
9.1 外连接问题 294
9.1.1 SQL支持外连接问题 294
9.1.2 混合使用内连接和外连接 297
9.2 理解嵌套查询 299
9.2.1 Type Ⅰ嵌套查询 300
9.2.2 用来解决“差”问题的限制性SQL查询 302
9.2.3 为“差”问题使用Type Ⅱ嵌套查询 306
9.2.4 FROM子句中的嵌套查询 310
9.3 除问题查询公式化 312
9.3.1 回顾除操作符 313
9.3.2 最简单的除问题 314
9.3.3 高级除问题 315
9.4 空值方面的考虑 318
9.4.1 对简单条件的效果 318
9.4.2 对复合条件的影响 320
9.4.3 对聚合计算和分组的影响 321
9.5 小结 322
9.6 概念总汇 323
9.7 复习题 325
9.8 练习题 326
9.9 资源 331
附录9.A 在Microsoft Access中使用多个语句 332
附录9.B SQL:2003语法汇总 332
附录9.C 用于外连接的Oracle 8i表示法 334
第10章 使用视图开发应用程序 336
10.1 背景 337
10.1.1 动机 337
10.1.2 视图定义 337
10.2 使用供检索的视图 340
10.2.1 在SELECT语句中使用视图 340
10.2.2 处理带视图引用的查询 341
10.3 使用视图的更新 344
10.3.1 单表可更新视图 344
10.3.2 多表可更新视图 347
10.4 在层次表单中使用视图 351
10.4.1 层次表单的含义 351
10.4.2 层次表单和表之间的关联 352
10.4.3 层次表单的查询公式化技术 353
10.5 在报表中使用视图 356
10.5.1 层次报表的含义 356
10.5.2 层次报表的查询公式化技术 358
10.6 小结 359
10.7 概念总汇 360
10.8 复习题 361
10.9 练习题 362
10.10 资源 370
附录10.A SQL:2003语法概要 370
附录10.B Oracle中的可更新连接视图规则 371
第11章 存储过程和触发器 372
11.1 数据库编程语言和PL/SQL 373
11.1.1 数据库编程语言的动机 373
11.1.2 设计问题 375
11.1.3 PL/SQL语句 377
11.1.4 在匿名块中执行PL/SQL语句 383
11.2 存储过程 385
11.2.1 PL/SQL过程 385
11.2.2 PL/SQL函数 388
11.2.3 使用游标 391
11.2.4 PL/SQL包 395
11.3 触发器 398
11.3.1 触发器的动机和分类 399
11.3.2 Oracle触发器 399
11.3.3 理解触发器执行 410
11.4 小结 413
11.5 概念总汇 413
11.6 复习题 414
11.7 练习题 416
11.8 资源 419
附录11.A SQL:2003语法摘要 419
第Ⅵ部分 高级数据库开发 423
第12章 视图设计和集成 423
12.1 视图设计和集成的动机 424
12.2 使用表单设计视图 425
12.2.1 分析表单 425
12.2.2 使用表单分析M路关联 431
12.3 视图集成 434
12.3.1 增量和并行集成方法 434
12.3.2 视图集成示例 437
12.4 小结 439
12.5 概念总汇 440
12.6 复习题 440
12.7 练习题 441
12.8 资源 443
第13章 “助学贷款”有限公司的数据库开发 444
13.1 案例描述 445
13.1.1 简介 445
13.1.2 工作流程 445
13.2 概念数据建模 449
13.2.1 贷款起始表单的ERD 449
13.2.2 在添加公开信之后的增量集成 451
13.2.3 在添加对账单后的增量集成 452
13.2.4 在添加贷款活动报表之后的增量集成 453
13.3 完善概念模式 454
13.3.1 模式转换 454
13.3.2 规范化 456
13.4 物理数据库设计和应用程序开发 457
13.4.1 应用程序和表配置文件 457
13.4.2 索引选择 460
13.4.3 派生数据和反向规范化决策 461
13.4.4 其他实现决策 461
13.4.5 应用程序开发 461
13.5 小结 463
13.6 概念总汇 464
13.7 复习题 464
13.8 练习题 465
附录13.A 表单和报表字段的术语表 466
附录13.B CREATE TABLE语句 468
第Ⅶ部分 管理数据库环境 475
第14章 数据和数据库管理 475
14.1 管理数据库的组织背景 476
14.1.1 数据库对管理决策的支持 476
14.1.2 从信息资源管理到知识管理 477
14.1.3 数据管理员和数据库管理员的职责 478
14.2 数据库管理工具 479
14.2.1 安全性 479
14.2.2 完整性约束 483
14.2.3 触发器和存储过程的管理 486
14.2.4 数据词典操作 488
14.3 数据库专家执行的处理 491
14.3.1 数据计划 491
14.3.2 选择和评估数据库管理系统 492
14.4 管理数据库环境 496
14.4.1 事务处理 496
14.4.2 数据仓库处理 497
14.4.3 分布式环境 497
14.4.4 对象数据库管理 498
14.5 小结 499
14.6 概念总汇 499
14.7 复习题 501
14.8 练习题 503
14.9 资源 504
附录14.A SQL:2003语法概要 504
第15章 事务管理 507
15.1 数据库事务的基础知识 508
15.1.1 事务示例 508
15.1.2 事务属性 510
15.2 并发控制 511
15.2.1 并发控制的目标 511
15.2.2 干扰问题 512
15.2.3 并发控制工具 515
15.3 恢复管理 519
15.3.1 数据存储设备和故障类型 519
15.3.2 恢复工具 520
15.3.3 恢复过程 522
15.4 事务设计问题 527
15.4.1 事务边界和热点 527
15.4.2 隔离级别 530
15.4.3 执行完整性约束的时机 531
15.4.4 保存点 533
15.5 工作流管理 533
15.5.1 对工作流的描述 533
15.5.2 支持技术 535
15.6 小结 536
15.7 概念总汇 537
15.8 复习题 537
15.9 练习题 539
15.10 资源 546
附录15.A SQL:2003语法汇总 546
第16章 数据仓库技术和管理 548
16.1 基本概念 549
16.1.1 事务处理与决策支持 549
16.1.2 数据仓库的特点 549
16.1.3 数据仓库的架构 550
16.1.4 数据挖掘 552
16.1.5 数据仓库的应用 553
16.2 数据的多维表示 554
16.2.1 多维数据立方体示例 555
16.2.2 多维术语 557
16.2.3 时间序列数据 558
16.2.4 数据立方体操作 559
16.3 支持数据仓库的关系DBMS 561
16.3.1 多维数据的关系数据建模 561
16.3.2 维度表示 565
16.3.3 用于多维数据的GROUP BY子句的扩展 568
16.3.4 物化视图和查询重写 577
16.3.5 存储和优化技术 583
16.4 维护数据仓库 585
16.4.1 数据源 585
16.4.2 维护数据仓库的工作流 586
16.4.3 管理刷新过程 588
16.5 小结 590
16.6 概念总汇 590
16.7 复习题 591
16.8 练习题 592
第Ⅰ部分:汽车保险问题 592
第Ⅱ部分:商店销售问题 595
16.9 资源 597
第17章 客户端/服务器处理、并行数据库处理和分布式数据库 598
17.1 分布式处理和分布式数据概述 599
17.1.1 客户端/服务器处理的动机 599
17.1.2 并行数据库处理的动机 600
17.1.3 分布式数据的动机 601
17.1.4 优点和缺点摘要 601
17.2 客户端/服务器数据库架构 602
17.2.1 设计问题 602
17.2.2 架构描述 604
17.3 并行数据库处理 608
17.3.1 架构和设计问题 608
17.3.2 商业并行数据库技术 610
17.4 分布式数据库管理系统的架构 612
17.4.1 组件架构 612
17.4.2 模式架构 614
17.5 分布式数据库处理的透明性 616
17.5.1 动机实例 616
17.5.2 分段透明 618
17.5.3 位置透明 619
17.5.4 本地映射透明 621
17.5.5 Oracle分布式数据库的透明 623
17.6 分布式数据库处理 624
17.6.1 分布式查询处理 624
17.6.2 分布式事务处理 626
17.7 小结 629
17.8 概念总汇 629
17.9 复习题 630
17.10 练习题 631
17.11 资源 633
第18章 对象数据库管理系统 634
18.1 对象数据库管理的动机 634
18.1.1 复杂数据 635
18.1.2 类型系统不匹配 635
18.1.3 应用程序示例 636
18.2 面向对象的基本原理 637
18.2.1 封装 637
18.2.2 继承 638
18.2.3 多态 640
18.2.4 编程语言与DBMS 641
18.3 面向对象管理的架构 642
18.3.1 大对象和外部软件 642
18.3.2 专用媒体服务器 643
18.3.3 对象数据库中间件 644
18.3.4 用户定义类型的对象关系数据库管理系统 645
18.3.5 面向对象的数据库管理系统 646
18.3.6 对象数据库架构摘要 647
18.4 SQL:2003中的对象数据库功能 648
18.4.1 用户定义的类型 648
18.4.2 表定义 650
18.4.3 子表系列 653
18.4.4 管理复杂对象和子表系列 654
18.5 Oracle 10g中的对象数据库功能 656
18.5.1 在Oracle 10g中定义用户定义类型和类型表 656
18.5.2 在Oracle 10g中使用类型表 659
18.5.3 Oracle 10g中的其他对象功能 661
18.6 小结 663
18.7 概念总汇 664
18.8 复习题 664
18.9 练习题 666
18.10 资源 670
术语表 673