第1章 数据库系统概论 1
1.1 数据库系统的作用 1
1.1.1 数据与数据管理 2
1.1.2 数据管理技术的产生与发展 2
1.1.3 数据库应用 8
1.2 数据模型 9
1.2.1 数据模型的分类 10
1.2.2 数据模型的组成要素 11
1.2.3 层次模型 12
1.2.4 网状模型 14
1.2.5 关系模型 14
1.2.6 面向对象模型 16
1.2.7 XML模型 20
1.3 数据抽象与数据库三级模式 29
1.4 数据库系统 32
1.4.1 数据库系统组成 32
1.4.2 数据库管理系统 33
1.4.3 数据库系统的相关人员 38
本章小结 40
习题1 42
第2章 关系模型与关系代数 44
2.1 关系模型 45
2.1.1 关系数据结构 45
2.1.2 关系完整性约束条件 49
2.1.3 关系操作 55
2.2 关系代数 56
2.2.1 传统的集合运算 57
2.2.2 专门的关系运算 57
2.2.3 关系代数查询综合举例 64
本章小结 67
习题2 68
第3章 SQL语言 70
3.1 SQL概述 71
3.1.1 SQL发展 71
3.1.2 SQL特点 72
3.1.3 SQL查询基本概念 73
3.2 简单查询 74
3.2.1 投影运算 76
3.2.2 选择运算 79
3.2.3 排序运算 84
3.2.4 查询表 84
3.3 连接查询 85
3.3.1 等值与非等值连接 85
3.3.2 自表连接 88
3.3.3 外连接 89
3.4 嵌套子查询 91
3.4.1 使用IN的子查询 91
3.4.2 使用比较运算符的子查询 95
3.4.3 使用存在量词EXISTS的子查询 96
3.5 聚合查询 99
3.5.1 聚合函数 99
3.5.2 分组聚合 100
3.5.3 复杂查询 102
3.6 集合运算 104
3.7 SQL查询一般格式 106
3.8 SQL数据定义语言 108
3.8.1 数据库的定义 108
3.8.2 基本表的定义 112
3.8.3 索引的定义 116
3.9 SQL数据更新语言 118
3.9.1 插入数据 118
3.9.2 删除数据 120
3.9.3 修改数据 120
3.10 视图 121
3.10.1 定义视图 122
3.10.2 查询视图 124
3.10.3 更新视图 125
3.10.4 删除视图 127
本章小结 127
习题3 128
第4章 数据库建模(实体-联系模型) 132
4.1 数据库设计过程 133
4.2 E-R模型基本概念及表示 134
4.3 约束 137
4.3.1 映射约束 137
4.3.2 码约束 140
4.3.3 参与约束 141
4.3.4 存在依赖与弱实体集 141
4.4 扩展E-R特征 143
4.5 E-R模型设计原则 144
4.6 数据库概念设计实例——大学选课系统 148
4.6.1 概念设计任务 148
4.6.2 系统需求分析 148
4.6.3 数据库概念设计 151
4.6.4 大学选课系统总E-R图 152
4.7 逻辑设计——E-R模型转化为关系模型 153
4.7.1 E-R模型转化方法 153
4.7.2 大学选课系统E-R模型转化实例 156
本章小结 157
习题4 158
第5章 关系数据理论与模式求精 160
5.1 问题提出 161
5.2 函数依赖定义 163
5.3 函数依赖理论 166
5.3.1 函数依赖集闭包 166
5.3.2 属性集闭包 167
5.3.3 正则覆盖 168
5.3.4 无损连接分解 170
5.3.5 保持依赖分解 170
5.4 范式 171
5.4.1 第一范式(1NF) 171
5.4.2 第二范式(2NF) 171
5.4.3 Boyce-Codd范式(BCNF) 172
5.4.4 第三范式(3NF) 173
5.5 模式分解算法 174
5.5.1 BCNF分解算法 174
5.5.2 3NF分解算法 175
5.6 数据库模式求精 176
本章小结 178
习题5 179
第6章 关系数据库设计实例——网上书店 181
6.1 需求描述和系统边界 182
6.2 需求分析 182
6.2.1 业务需求及处理流程 182
6.2.2 功能需求分析 183
6.2.3 业务规则分析 185
6.3 确定实体集及属性 185
6.4 确定联系集及E-R图 188
6.5 检查是否满足需求 190
6.6 逻辑数据库设计 191
6.7 模式求精 196
6.8 进一步思考 196
本章小结 196
习题6 197
第7章 数据库存储结构 199
7.1 文件组织 199
7.1.1 存储介质 200
7.1.2 存储访问 201
7.1.3 定长记录与变长记录 202
7.2 记录组织 204
7.3 顺序索引 207
7.3.1 索引基本概念 207
7.3.2 索引顺序文件 208
7.3.3 多级索引 209
7.3.4 索引的更新 210
7.3.5 辅助索引 211
7.4 B+树索引 212
7.4.1 B+树索引的结构 212
7.4.2 B+树索引的查询与更新 214
7.4.3 B+树文件组织 215
7.5 散列 216
7.5.1 散列文件组织 216
7.5.2 散列索引 217
7.5.3 动态散列 218
7.5.4 散列与顺序索引的比较 218
7.6 物理数据库设计 219
本章小结 222
习题7 225
第8章 查询处理 227
8.1 查询处理 227
8.1.1 查询处理过程 228
8.1.2 查询代价度量 229
8.1.3 选择运算 230
8.1.4 连接运算 235
8.1.5 其他运算 242
8.1.6 表达式计算 243
8.2 查询优化 244
8.2.1 查询优化概述 244
8.2.2 关系表达式转换 245
8.2.3 结果集大小估计 247
8.2.4 选择执行计划 249
本章小结 253
习题8 254
第9章 数据库完整性与安全 257
9.1 数据库安全性 258
9.1.1 数据库安全的基本概念 258
9.1.2 安全标准 259
9.1.3 SQL存取控制机制 261
9.1.4 审计机制 266
9.2 数据库完整性 267
9.2.1 完整性约束条件 268
9.2.2 实体完整性 269
9.2.3 参照完整性 271
9.2.4 用户自定义完整性 274
9.2.5 完整性约束的修改 276
9.3 游标 277
9.3.1 游标的使用 277
9.3.2 当前游标集的修改 280
9.4 存储过程 281
9.4.1 创建存储过程 282
9.4.2 执行存储过程 288
9.4.3 修改和删除存储过程 288
9.5 触发器 290
9.5.1 创建触发器 290
9.5.2 修改和删除触发器 294
9.5.3 触发器的作用 295
9.6 应用与安全设计 297
本章小结 299
习题9 300
第10章 事务管理与恢复 303
10.1 事务 304
10.1.1 问题背景 304
10.1.2 事务概念 305
10.1.3 事务特性 306
10.1.4 事务并发执行与调度 307
10.1.5 事务调度及正确性准则 309
10.2 并发控制 312
10.2.1 基于封锁的协议 312
10.2.2 两阶段封锁协议 314
10.3 恢复与备份 316
10.3.1 故障分类及恢复策略 316
10.3.2 事务访问数据方式 318
10.3.3 基于日志的故障恢复策略 319
10.3.4 检查点 322
10.3.5 备份与介质故障恢复 324
本章小结 325
习题10 327
第11章 数据库应用开发 329
11.1 数据库系统的体系结构 330
11.1.1 软件开发体系结构概述 330
11.1.2 C/S体系结构 331
11.1.3 B/S体系结构 334
11.1.4 C/S与B/S结构的结合 336
11.1.5 常用开发体系结构 338
11.2 数据库访问技术 340
11.2.1 ODBC API和ODBC库 341
11.2.2 MFC DAO 343
11.2.3 RDO 344
11.2.4 OLE DB 344
11.2.5 ADO 346
11.2.6 ADO.NET 346
11.2.7 JDBC 347
11.2.8 数据库访问技术小结 348
11.3 数据库应用开发实践 351
11.3.1 ADO编程对象模型 351
11.3.2 直接使用ADO Data控件访问数据库 356
11.3.3 使用智能指针访问数据库 360
11.3.4 使用VC++ Extensions for ADO访问数据库 366
本章小结 371
习题11 372
第12章 Web数据库 374
12.1 什么是Web数据库 375
12.2 Web基础 375
12.3 脚本语言 376
12.4 Web数据库访问模式 377
12.5 Web服务器接口 377
12.6 Web数据库访问技术 378
12.7 XML数据库 380
12.7.1 XML应用场景 380
12.7.2 XML与数据库 382
12.7.3 什么是XML数据库 384
本章小结 387
习题12 389
参考文献 391