第1章 数据库系统引论 1
1.1 数据库系统的产生与发展 1
1.1.1 数据和数据管理技术 1
1.1.2 数据库系统发展的三个里程碑 3
1.1.3 数据库系统的三个发展阶段 4
1.2 数据库与数据库系统 5
1.2.1 数据库 5
1.2.2 数据库系统 6
1.3 数据库系统的特点 6
1.3.1 实现数据的集中化控制 6
1.3.2 数据的冗余度小 7
1.3.3 采用一定的数据模型实现数据结构化 7
1.3.4 避免了数据的不一致性 7
1.3.5 实现数据共享 8
1.3.6 提供数据库保护 8
1.3.7 数据独立性 8
1.3.8 数据由DBMS统一管理和控制 8
习题1 9
第2章 数据库系统的数据模型 10
2.1 数据模型概述 10
2.1.1 数据模型的基本组成 10
2.1.2 数据模型的发展 11
2.2 概念模型 11
2.2.1 E-R数据模型的基本概念 12
2.2.2 E-R图(E-R Diagram) 14
2.2.3 扩充的E-R数据模型 15
2.3 层次数据模型 17
2.3.1 层次数据模型的数据结构 18
2.3.2 层次数据模型的数据操作 18
2.3.3 层次数据模型的数据约束 20
2.3.4 层次数据模型的优缺点 21
2.4 网状数据模型 21
2.4.1 网状数据模型的数据结构 21
2.4.2 网状数据模型的数据操作 23
2.4.3 网状数据模型的约束 25
2.4.4 网状数据模型的优缺点 25
2.5 关系数据模型 26
2.5.1 关系数据模型的数据结构 26
2.5.2 关系数据模型的数据操作 27
2.5.3 关系数据模型的数据约束 28
2.5.4 关系数据模型的优缺点 29
2.6 面向对象数据模型 29
2.6.1 对象和对象标识符 30
2.6.2 属性和方法 30
2.6.3 封装和消息传递 31
2.6.4 类和实例 31
2.6.5 类层次结构和继承 32
2.6.6 持久性和版本 33
2.6.7 多态、重载、重定义与动态联编 33
2.6.8 面向对象数据模型与关系数据模型的简单比较 34
习题2 34
第3章 数据库系统结构 36
3.1 数据库系统的分级结构 36
3.1.1 数据库系统的三级模式结构 36
3.1.2 数据库模式间的映像与数据独立性 38
3.1.3 数据库的抽象层次 39
3.1.4 数据库的数据模式与数据模型的关系 40
3.2 数据库系统的组成 40
3.2.1 硬件支撑环境 40
3.2.2 软件系统 41
3.2.3 数据库 41
3.2.4 数据库管理员、系统分析员、程序设计员及用户 42
3.3 数据库管理系统的功能 43
3.4 DBMS的系统结构 44
3.4.1 DBMS的进程结构和多线索结构 45
3.4.2 DBMS的组成 45
3.4.3 DBMS的层次结构 47
3.5 DBMS的语言翻译处理层 48
3.5.1 DDL、DCL、DML 48
3.5.2 语言翻译处理层工作过程 50
3.6 DBMS的数据存取层 51
3.6.1 数据存取层的主要任务 51
3.6.2 数据库存取层的功能子系统 51
3.7 Client/Server结构的DBMS 52
3.7.1 Client/Server结构的DBMS的功能划分 52
3.7.2 在Client/Server结构中数据存取的工作过程 53
3.7.3 Client/Server结构DBMS 中数据库服务器的优点 54
3.7.4 三层Client/Server结构 54
3.8 基于Web的数据库系统 55
3.8.1 基于Web的数据库系统的体系结构 55
3.8.2 CGI和API技术 56
习题3 58
第4章 关系数据库方法 59
4.1 关系数据库的基本概念 59
4.1.1 关系的形式化定义 59
4.1.2 关系模式 60
4.1.3 关系数据库模式 60
4.2 关系数据库的用户接口和关系数据语言 61
4.3 关系代数 62
4.3.1 传统的集合运算 63
4.3.2 专门的关系运算 64
4.3.3 关系代数应用举例 68
4.4 关系演算 68
4.4.1 元组关系演算 69
4.4.2 域关系演算 72
4.5 关系系统 75
4.5.1 关系系统 75
4.5.2 全关系系统的十二条基本准则 76
4.6 关系系统的查询优化 78
4.6.1 查询优化的一般策略 79
4.6.2 代数优化 79
4.6.3 基于存取路径的规则优化 85
4.7 关系数据操纵语言的比较 92
习题4 93
第5章 关系数据库的标准语言SQL 99
5.1 SQL语言概述 99
5.2 关系模式的定义 100
5.2.1 基本表的定义 100
5.2.2 基本表的修改和删除 104
5.2.3 关于默认值 104
5.2.4 域 105
5.2.5 索引的建立和删除 105
5.3 数据查询 106
5.3.1 简单查询 106
5.3.2 复杂查询 108
5.4 聚集函数(Aggregation) 113
5.4.1 聚集函数的运算符 113
5.4.2 元组的分组 113
5.4.3 HAVING子句 114
5.5 数据库更新 114
5.5.1 元组插入 114
5.5.2 元组删除 115
5.5.3 元组修改 115
5.6 视图 116
5.6.1 视图定义 116
5.6.2 视图查询 117
5.6.3 视图更新 118
5.6.4 视图删除 119
5.6.5 视图的作用 119
5.7 嵌入式SQL 120
5.7.1 程序设计环境下的SQL 120
5.7.2 单行选择语句 122
5.7.3 游标 123
5.8 动态SQL 126
5.8.1 非查询类动态SQL 126
5.8.2 查询类动态SQL 128
习题5 129
第6章 数据依赖和关系规范化理论 133
6.1 为什么要规范化 133
6.2 函数依赖 135
6.2.1 函数依赖的定义 135
6.2.2 关系的关键字和超关键字 137
6.3 函数依赖理论 138
6.3.1 函数依赖的逻辑蕴涵 138
6.3.2 Armstrong公理系统 139
6.3.3 属性集闭包 141
6.3.4 Armstrong公理的正确性和完备性 142
6.4 函数依赖集的等价和覆盖 144
6.5 关系模式的分解 146
6.5.1 什么叫模式分解 146
6.5.2 分解的连接不失真性 148
6.5.3 依赖保持性 151
6.5.4 模式分解的级别——范式 152
6.5.5 模式分解算法 154
6.6 多值函数依赖与第四范式 157
6.6.1 BCNF关系模式存在的问题 157
6.6.2 多值函数依赖的概念 158
6.6.3 第四范式 158
6.6.4 多值依赖公理系统和多值依赖中的模式分解 159
习题6 163
第7章 数据库设计 169
7.1 数据库设计概述 169
7.1.1 数据库设计目标和设计方法 169
7.1.2 数据库设计的基本步骤 171
7.2 需求分析 172
7.2.1 需求分析的任务 172
7.2.2 需求分析的实现方法 173
7.2.3 需求分析实例 174
7.3 数据库概念结构设计 177
7.3.1 概念结构设计的引出 177
7.3.2 概念结构设计的要求及方法 177
7.3.3 局部概念结构设计 179
7.3.4 全局概念结构设计 181
7.3.5 概念结构设计实例 184
7.4 数据库逻辑结构设计及优化 186
7.4.1 逻辑结构设计任务与设计准则 186
7.4.2 概念模型向关系模型的转换规则 188
7.4.3 用关系规范化理论对关系数据模型进行优化 190
7.5 数据库的物理设计 192
7.5.1 数据库设计人员需掌握的物理设计知识 192
7.5.2 数据库物理设计的主要内容 192
7.6 数据库设计评价 195
7.6.1 数据库评价 195
7.6.2 数据库逻辑设计评价和物理设计评价 196
7.7 数据库的运行和维护 197
7.7.1 数据的载入和应用程序的设计与调试 197
7.7.2 数据库的试运行 198
7.7.3 数据库的运行和维护 199
习题7 199
第8章 数据库安全性和完整性 201
8.1 数据库安全性概念 201
8.2 数据库安全性控制 202
8.2.1 用户标识与鉴定 202
8.2.2 存取控制 202
8.2.3 视图机制 205
8.2.4 数据加密 205
8.2.5 审计 205
8.3 数据库安全性实例——Oracle系统的安全性 206
8.4 数据库完整性 208
8.4.1 完整性约束条件的类型 208
8.4.2 完整性控制机制的功能 209
8.4.3 完整性约束的表达方式 209
8.4.4 Oracle系统的完整性约束表示 217
习题8 219
第9章 数据库系统的恢复和并发控制技术 221
9.1 事务 221
9.2 数据库恢复 222
9.2.1 故障的类型 222
9.2.2 数据库恢复技术 223
9.2.3 数据库恢复策略 225
9.3 并发控制 226
9.3.1 并发操作引起的问题 226
9.3.2 调度的可串行性 227
9.4 基于封锁的并发控制技术 229
9.4.1 X锁 229
9.4.2 (S,X)锁 230
9.4.3 (S,U,X)锁 230
9.4.4 两段锁协议 231
9.4.5 严格的2PL实施 233
9.5 死锁的检测、处理和防止 233
9.5.1 死锁预防 233
9.5.2 死锁的检测和处理 234
9.6 封锁的粒度和多粒度的封锁 234
9.6.1 封锁的粒度 234
9.6.2 多粒度封锁 235
9.7 基于时间标记的并发控制技术 236
习题9 238
第10章 分布式数据库系统 239
10.1 分布式数据库系统概述 239
10.1.1 什么是分布式数据库系统 239
10.1.2 分布式数据库系统的产生与发展 240
10.2 分布式数据库系统的特点 243
10.2.1 “全功能”分布式数据库系统应符合的准则 243
10.2.2 分布式数据库系统的特点 244
10.3 分布式数据库管理系统(DDBMS) 245
10.3.1 DDBMS的定义和功能 245
10.3.2 DDBMS的组成 246
10.3.3 DDBMS的分类 247
10.4 分布式数据库系统的体系结构 249
10.4.1 基于ANSI/SPARC数据模式的DDBS的体系结构 249
10.4.2 分布透明性 252
10.5 数据分段的规则和类型 254
10.5.1 数据分段的目的和规则 254
10.5.2 数据分段的类型 254
10.5.3 数据分布对数据管理的影响 256
10.6 分布式查询和优化 257
10.6.1 分布式查询处理 257
10.6.2 全局查询优化的目标 258
10.7 分布式事务管理 258
10.7.1 分布式事务的基本特征和管理目标 259
10.7.2 分布式事务的恢复技术 259
10.7.3 分布式数据库中的可串行性 261
10.8 分布式数据库系统中的并发控制 262
10.8.1 基于封锁的并发控制算法 262
10.8.2 基于时间戳的并发控制算法 263
10.9 异构数据库互连 265
10.9.1 异构型DDBMS 266
10.9.2 SAG规范和IBM的DRDA 266
10.9.3 开放型数据库互连ODBC的结构 267
10.9.4 利用信关技术实现异构数据库互连 269
习题10 270
第11章 数据库技术的新发展 271
11.1 传统数据库系统的局限性 271
11.2 新一代数据库系统 272
11.2.1 面向对象数据库系统宣言 272
11.2.2 第三代数据库系统宣言 273
11.2.3 数据库技术与相关技术结合形成新型的数据库系统 274
11.3 面向对象数据库系统 275
11.3.1 面向对象数据库系统概述 275
11.3.2 面向对象数据库管理系统OODBMS 275
11.3.3 面向对象数据库系统的基本功能和实现途径 276
11.4 对象-关系数据库系统 277
11.4.1 对象-关系数据库系统的特点 277
11.4.2 对象-关系数据库系统实现的方法和途径 278
11.5 工程数据库系统 278
11.5.1 工程数据库系统的特点 278
11.5.2 工程数据库的数据模型 279
11.5.3 工程数据库的体系结构 281
11.6 并行数据库系统 282
11.6.1 并行数据库系统概述 282
11.6.2 并行数据库系统结构 283
11.6.3 数据划分 285
11.6.4 并行算法 285
11.6.5 查询优化方法 287
11.6.6 并行数据库系统与分布式数据库系统比较 288
11.7 主动数据库系统 289
11.7.1 主动数据库概述 289
11.7.2 主动数据库的模型 289
11.7.3 SQL3中规则的表示和执行 290
11.7.4 主动数据库管理系统 291
11.8 数据仓库(Data Warehouse) 293
11.8.1 数据仓库的产生 293
11.8.2 数据仓库的概念和结构 294
11.8.3 联机分析处理(OLAP) 295
11.8.4 OLAP实现技术 298
习题11 301
参考文献 302