第1章 数据库概论 1
1.1 引言 1
1.1.1 数据与信息 2
1.1.2 数据处理与数据管理 3
1.1.3 数据库技术的基本术语 4
1.2 数据库的由来和发展 4
1.2.1 人工管理阶段 5
1.2.2 文件系统阶段 5
1.2.3 数据库阶段 7
1.2.4 高级数据库技术阶段 9
1.3.1 概念设计中的数据描述 11
1.3 数据描述 11
1.3.2 逻辑设计中的数据描述 12
1.3.3 物理设计中的数据描述 13
1.3.4 数据联系的描述 13
1.4 数据模型 15
1.4.1 数据模型的定义 15
1.4.2 实体联系模型 16
1.4.3 层次模型 18
1.4.4 网状模型 19
1.4.5 关系模型 21
1.4.6 对象模型 22
1.5.1 数据库的三级体系结构 23
1.5 数据库的体系结构 23
1.5.2 体系结构中的五个要素 25
1.5.3 两级数据独立性 27
1.5.4 用户与用户界面 27
1.5.5 本节小结 27
1.6 数据库管理系统 28
1.6.1 DBMS的工作模式 28
1.6.2 DBMS的主要功能 29
1.6.3 DBMS的模块组成 31
1.7 数据库系统 31
1.7.1 DBS的组成 31
1.7.2 DBS的全局结构 33
1.7.3 DBS结构的分类 35
1.7.4 DBS的效益 38
小结 39
习题1 40
第2章 关系模型和关系运算理论 42
2.1 关系模型的基本概念 42
2.1.1 基本术语 42
2.1.2 关系的定义和性质 43
2.1.3 关系模型的三类完整性规则 44
2.1.4 ER模型向关系模型的转换规则 45
2.1.5 关系模型的三级体系结构 47
2.1.7 关系查询语言和关系运算 50
2.1.6 关系模型的形式定义和优点 50
2.2 关系代数 51
2.2.1 关系代数的五个基本操作 51
2.2.2 关系代数的四个组合操作 53
2.2.3 关系代数运算的应用实例 56
2.2.4 关系代数的七个扩充操作 57
2.3 关系演算 61
2.3.1 元组关系演算 61
2.3.2 域关系演算 64
2.3.3 关系运算的安全约束和等价性 66
2.4.1 关系代数表达式的优化问题 68
2.4 关系代数表达式的优化 68
2.4.2 关系代数表达式的等价变换规则 69
2.4.3 关系代数表达式的优化算法 71
2.5 关系逻辑 76
2.5.1 关系运算的成分 76
2.5.2 规则的安全性 78
2.5.3 从关系代数到关系逻辑的转换 79
2.5.4 递归过程 82
2.5.5 关系逻辑与关系代数的差异 84
小结 84
习题2 85
3.1 SQL的体系结构 88
3.1.1 SQL的产生和发展 88
第3章 关系数据库语言SQL 88
3.1.2 SQL数据库的体系结构 89
3.1.3 SQL的组成 90
3.2 SQL的数据定义 91
3.2.1 SQL模式的创建和撤销 91
3.2.2 基本数据类型 92
3.2.3 基本表的创建、修改和撤销 92
3.2.4 索引的创建和撤销 95
3.3 SQL的数据查询 96
3.3.1 SELECT查询语句 96
3.3.2 SELECT语句完整的句法 103
3.3.3 SELECT语句中的限定 104
3.3.4 基本表的连接操作 110
3.3.5 SQL3中的递归查询 112
3.4 SQL的数据更新 114
3.4.1 数据插入 114
3.4.2 数据删除 115
3.4.3 数据修改 116
3.5 视图的定义和对视图的操作 117
3.5.1 视图的创建和撤销 117
3.5.2 对视图的更新操作 118
3.5.3 视图的优点 119
3.6 嵌入式SQL 120
3.6.1 SQL的运行环境 120
3.6.2 嵌入式SQL的使用规定 121
3.6.3 嵌入式SQL的使用技术 122
3.6.4 动态SQL语句 126
小结 127
习题3 128
第4章 关系数据库的规范化设计 132
4.1 关系模式的设计问题 132
4.1.1 关系模式的外延和内涵 132
4.1.2 关系模式的冗余和异常问题 133
4.1.3 本章的符号规定 134
4.2 函数依赖 135
4.2.1 函数依赖的定义 135
4.2.3 FD的推理规则 136
4.2.2 FD的逻辑蕴涵 136
4.2.4 FD和关键码的联系 138
4.2.5 属性集的闭包 138
4.2.6 FD推理规则的完备性 139
4.2.7 FD集的最小依赖集 140
4.3 关系模式的分解特性 141
4.3.1 模式分解问题 141
4.3.2 无损分解 142
4.3.3 无损分解的测试方法 144
4.3.4 保持函数依赖的分解 146
4.3.5 模式分解与模式等价问题 147
4.4 关系模式的范式 148
4.4.2 第二范式(2NF) 149
4.4.1 第一范式(1NF) 149
4.4.3 第三范式(3NF) 150
4.4.4 BCNF(Boyce-Codd NF) 152
4.4.5 分解成BCNF模式集的算法 153
4.4.6 分解成3NF模式集的算法 154
4.4.7 模式设计方法的原则 154
4.5 模式的进一步规范化处理 155
4.5.1 多值依赖的定义 155
4.5.2 关于FD和MVD的推理规则集 156
4.5.3 第四范式(4NF) 157
4.5.4 嵌入多值依赖 158
4.5.5 连接依赖和第五范式 158
小结 160
习题4 161
第5章 数据库设计与ER模型 166
5.1 数据库设计概述 166
5.1.1 软件工程与软件生存期 166
5.1.2 数据库工程与数据库生存期 167
5.1.3 数据库设计的输入、输出 168
5.2 数据库设计的全过程 169
5.2.1 规划阶段 169
5.2.2 需求分析阶段 170
5.2.3 概念设计阶段 171
5.2.4 逻辑设计阶段 172
5.2.5 物理设计阶段 174
5.2.6 数据库的实现 175
5.2.7 数据库的运行与维护 177
5.3 ER模型 178
5.3.1 ER模型的基本元素 178
5.3.2 属性的分类 180
5.3.3 联系的设计 182
5.3.4 ER模型的操作 185
5.3.5 采用ER方法的数据库概念设计 186
5.4 ER模型到关系模型的转换 193
5.4.1 ER图转换成关系模式集的规则 193
5.4.2 采用ER方法的逻辑设计步骤 194
5.5 ER模型实例分析 195
5.5.1 库存销售信息管理系统的ER模型及转换 195
5.5.2 公司车队信息系统的ER模型 197
5.5.3 人事管理信息系统的ER模型 198
5.5.4 旅游管理信息系统的ER模型 199
5.6 ER模型的扩充 200
5.6.1 弱实体 200
5.6.2 子类实体与超类实体 201
小结 202
习题5 202
6.1 物理存储介质 205
6.1.1 存储介质层次 205
第6章 数据库的存储结构 205
6.1.2 磁盘 207
6.1.3 第三级存储器 210
6.2 文件组织 211
6.2.1 定长记录 211
6.2.2 变长记录 213
6.3 文件结构 216
6.3.1 四种文件结构 216
6.3.2 顺序文件 217
6.3.3 聚集文件 218
6.4.1 索引技术的分类 219
6.4.2 有序索引的分类 219
6.4 索引技术 219
6.4.3 主索引 220
6.4.4 辅助索引 223
6.4.5 B+树索引文件 224
6.4.6 B树索引文件 231
6.5 散列技术 232
6.5.1 散列机制 232
6.5.2 散列索引 235
6.5.3 静态散列中的问题 236
6.5.4 可扩充散列结构 236
6.6 多键访问 241
6.6.1 单键查询的问题 241
6.6.2 网格文件 242
6.6.3 分区散列技术 244
小结 245
习题6 246
第7章 系统实现技术 248
7.1 系统目录 248
7.1.1 关系DBMS的目录 248
7.1.2 系统目录的扩充ER图 250
7.1.3 系统目录和DBMS各子系统的联系 250
7.2 事务 252
7.2.1 事务的定义 252
7.2.2 事务的ACID性质 253
7.2.3 事务的状态变迁图 255
7.3 数据库的恢复 256
7.3.1 存储器结构 257
7.3.2 恢复的基本原则和实现方法 259
7.3.3 故障类型和恢复方法 260
7.3.4 检查点技术 261
7.3.5 阴影页技术 263
7.3.6 SQL对事务的支持 265
7.4 数据库的并发控制 265
7.4.1 并发操作带来的四个问题 265
7.4.2 封锁技术 268
7.4.3 封锁带来的问题 272
7.4.4 并发操作的调度 274
7.4.5 SQL中事务的存取模式和隔离级别 275
7.4.6 基于时标的并发控制 276
7.5 并发事务的可串行化和可恢复性 278
7.5.1 并发事务的可串行化 279
7.5.2 并发事务的可恢复性 284
7.6 数据库的完整性 286
7.6.1 完整性子系统和完整性规则 286
7.6.2 SQL中的完整性约束 286
7.6.3 SQL3中的触发器 291
7.7 数据库的安全性 295
7.7.1 安全性问题 295
7.7.2 权限问题 296
7.7.3 SQL中的安全性机制 297
7.7.4 常用的安全性措施 299
小结 303
习题7 303
第8章 对象数据库系统 306
8.1 对象联系图 307
8.1.1 从关系到嵌套关系、复合对象 307
8.1.2 引用类型 309
8.1.3 对象联系图的成分 310
8.1.4 数据的概化/特化 312
8.2 面向对象的数据类型系统 313
8.3 ORDB的定义语言 314
8.3.2 数据类型的定义 315
8.3.1 ORDBS的定义 315
8.3.3 继承性的定义 316
8.3.4 引用类型的定义 318
8.3.5 SQL3中的定义语言 319
8.4 ORDB的查询语言 320
8.4.1 以关系为值的属性 320
8.4.2 路径表达式 321
8.4.3 Oracle中查询的两种技术 322
8.4.4 嵌套与解除嵌套 324
8.4.5 函数的定义和使用 325
8.4.6 复合值的创建和查询 325
8.5.1 ODMG标准 326
8.5 OODBS概述 326
8.5.2 OODBS的定义 327
8.5.3 面向对象数据模型的概念 328
8.6 ODMG1.0标准 332
8.6.1 持久化程序设计语言 332
8.6.2 ODMG C++对象定义语言(C++ ODL) 334
8.6.3 ODMG C++对象操纵语言(C++ OML) 336
8.7 ODMG2.0标准 337
8.7.1 ODMG对象模型 337
8.7.2 ODMG对象定义语言(ODL) 339
8.7.3 ODMG对象查询语言(OQL) 340
8.8 OODB与ORDB的比较 346
8.9.1 统一建模语言(UML)概述 347
8.9 使用UML类图来概念对象建模 347
8.9.2 用类图表达类和关联 348
8.9.3 用类图表达关联类 351
8.9.4 用类图表达概化/特化 352
8.9.5 用类图表达聚合 354
小结 355
习题8 356
第9章 分布式数据库系统 359
9.1 集中计算与分布计算 359
9.2 客户机/服务器系统 361
9.2.1 C/S系统的计算模式 361
9.2.2 C/S系统的体系结构 363
9.2.3 C/S结构的演变 365
9.2.4 网络服务器的类型 367
9.3 分布式数据库系统概述 369
9.3.1 从集中式、分散式到分布式 369
9.3.2 DDBS的定义 369
9.3.3 DDBS的特点与优缺点 371
9.3.4 DDBS的分类 374
9.4 分布式数据存储 375
9.4.1 数据分片(Data Fragmentation) 375
9.4.2 数据分配(Data Allocation) 376
9.5 分布式数据库的体系结构 377
9.5.1 体系结构 378
9.5.2 分布透明性 380
9.5.3 分布式数据库管理系统 382
9.6 分布式查询处理 384
9.6.1 查询例子分析 384
9.6.2 查询代价的估算方法 386
9.6.3 基于半连接的优化策略 386
9.6.4 基于连接的优化方法 389
9.7 分布式数据库中的并发控制和恢复技术 390
9.7.1 DDB中的问题 390
9.7.2 基于数据项识别拷贝的分布式并发控制 390
9.7.4 分布式恢复 392
9.7.3 基于投票方法的分布式并发控制 392
小结 393
习题9 394
第10章 中间件技术 396
10.1 中间件 396
10.1.1 中间件的定义 396
10.1.2 中间件的作用 397
10.2 ODBC结构 398
10.2.1 ODBC概念 398
10.2.2 ODBC的体系结构 399
10.3 ODBC接口 404
10.3.1 ODBC应用程序的基本流程 404
10.2.3 ODBC的特性 404
10.3.2 ODBC句柄 405
10.3.3 数据源的连接与断开 408
10.3.4 SQL语句的执行 408
10.3.5 查询结果的获取 410
10.4 ODBC的符合性级别 411
10.4.1 API符合性的三个级别 411
10.4.2 SQL符合性的三个级别 413
10.4.3 ODBC API与SQLCLI之间的协调 414
10.4.4 典型的DB应用系统开发工具 414
10.5 Java和JDBC 415
10.5.1 Java简介 415
10.5.2 JDBC的提出 417
10.5.3 JDBC的基本功能 418
10.5.4 JDBC与CGI的比较 418
10.6 JDBC的结构 420
10.6.1 JDBC数据库设计方法 420
10.6.2 保持一致性的措施 421
10.6.3 JDBC驱动程序 422
10.7 JDBC API 423
10.7.1 JDBC API的目标 423
10.7.2 JDBC API接口概貌 424
10.7.3 JDBC的接口和类 426
10.7.4 JDBC数据库应用程序的编程 427
小结 430
习题10 431
第11章 数据库与WWW 433
11.1 网络基本概念 433
11.1.1 Internet 433
11.1.2 WWW 435
11.1.3 网络协议模型 435
11.2 WWW与数据库 438
11.2.1 WWW与数据库的结合 438
11.2.2 WWW与数据库交互的方法 439
11.2.3 CGI、JDBC和API的比较 443
11.3.1 CGI程序 444
11.3 公共网关接口(CGI) 444
11.3.2 CGI特点 446
11.4 ASP技术 449
11.4.1 ASP的特点 449
11.4.2 ASP服务器端程序的原理 450
11.4.3 ASP的对象存取Mdb数据库方法 450
11.5 JSP技术 452
11.5.1 JSP脚本语言 452
11.5.2 JSP中的指令 453
11.5.3 JSP中的内置对象(Implicit Objects) 455
11.5.4 JSP应用例子 457
11.6.1 PHP语言简介 460
11.6.2 PHP应用例子 460
11.6 PHP技术 460
11.6.3 PHP连接数据库的方法 462
小结 466
习题11 466
第12章 XML技术 468
12.1 XML概述 468
12.1.1 从SGML、HTML到XML 468
12.1.2 XML、DTD与XML Schema 469
12.1.3 XML数据库 471
12.2 常用的XML查询语言:XQuery 472
12.2.1 XQuery的基本功能 472
12.2.2 基本概念 474
12.2.3 简单查询 475
12.2.4 各种类型的查询 478
12.2.5 复杂查询 484
12.3 基于关系数据库的XML处理 489
12.3.1 关系数据的XML发布 489
12.3.2 XML存储和查询系统的体系结构 491
12.3.3 XML数据到关系数据库的存储映射 492
12.3.4 产生映射方法的步骤 494
12.3.5 将XML文档中的数据装入关系表 500
12.3.6 基于关系数据库的XML查询 501
小结 503
习题12 504
参考文献 506