第1章 数据库系统概论 1
1.1 数据库系统的作用 1
1.1.1 数据与数据管理 2
1.1.2 数据管理技术的产生与发展 3
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 关系模型 15
1.3 数据抽象与数据库三级模式 17
1.3.1 数据抽象 17
1.3.2 数据库三级模式结构及两层映像 18
1.3.3 数据库三级模式与三层模型的联系和区别 20
1.4 数据库系统 22
1.4.1 数据库系统组成 22
1.4.2 数据库管理系统 23
1.4.3 数据库系统的相关人员 27
本章小结 29
习题1 33
第2章 关系模型与关系代数 35
2.1 关系模型 36
2.1.1 关系数据结构 36
2.1.2 关系完整性约束 41
2.1.3 关系操作 46
2.2 关系代数 47
2.2.1 传统的集合运算 48
2.2.2 专门的关系运算 49
2.2.3 关系代数查询综合举例 56
本章小结 60
习题2 61
第3章 SQL查询语言 63
3.1 SQL概述 63
3.1.1 SQL发展 64
3.1.2 SQL特点 65
3.1.3 SQL查询基本概念 66
3.2 单表查询 67
3.2.1 投影运算 70
3.2.2 选择运算 73
3.2.3 排序运算 78
3.2.4 查询表 79
3.2.5 聚合查询 79
3.3 连接查询 81
3.3.1 等值与非等值连接 81
3.3.2 自表连接 85
3.3.3 外连接 86
3.4 嵌套子查询 87
3.4.1 使用IN的子查询 88
3.4.2 使用比较运算符的子查询 91
3.4.3 使用存在量词EXISTS的子查询 92
3.4.4 复杂子查询实例 96
3.5 集合运算 99
3.6 SQL查询一般格式 101
本章小结 103
习题3 103
第4章 数据库建模 107
4.1 数据库设计过程 108
4.2 E-R模型基本概念及表示 109
4.2.1 实体与实体集 109
4.2.2 属性 110
4.2.3 联系与联系集 112
4.3 约束 114
4.3.1 映射约束 114
4.3.2 码约束与联系集的属性安置 116
4.3.3 依赖约束 118
4.3.4 参与约束 119
4.3.5 多值联系 119
4.4 弱实体集 120
4.5 扩展E-R特征 121
4.6 E-R建模问题 123
4.6.1 E-R建模的基本原则 123
4.6.2 依赖约束的建模 128
4.6.3 多值联系的建模 130
4.7 数据库概念设计实例——大学选课系统 133
4.7.1 概念设计任务 133
4.7.2 系统需求分析 133
4.7.3 数据库概念设计 138
4.8 逻辑设计——E-R模型转化为关系模型 144
4.8.1 E-R模型转化方法 144
4.8.2 大学选课系统E-R模型转化实例 149
本章小结 153
习题4 154
第5章 关系数据理论与模式求精 157
5.1 问题提出 158
5.2 函数依赖定义 160
5.3 范式 163
5.3.1 第一范式(1NF)——码 163
5.3.2 第二范式(2NF)——全部是码 164
5.3.3 第三范式(3NF)——仅仅是码 164
5.3.4 Boyce-Codd范式(BCNF) 165
5.4 函数依赖理论 167
5.4.1 函数依赖集闭包 167
5.4.2 属性集闭包 168
5.4.3 正则覆盖 170
5.4.4 无损连接分解 172
5.4.5 保持依赖分解 173
5.5 模式分解算法 173
5.5.1 BCNF分解算法 173
5.5.2 3NF分解算法 175
5.6 数据库模式求精 176
本章小结 178
习题5 179
第6章 关系数据库设计实例——网上书店 182
6.1 系统需求分析 183
6.1.1 需求概述和系统边界 183
6.1.2 主要业务处理流程 183
6.1.3 功能需求分析 183
6.1.4 数据需求分析 185
6.1.5 业务规则及完整性约束分析 186
6.2 数据库概念设计 188
6.2.1 确定基本实体集及属性 188
6.2.2 主要业务局部概念建模 190
6.2.3 定义联系集及属性 196
6.2.4 完整E-R模型 198
6.2.5 检查是否满足需求 198
6.3 数据库逻辑设计 200
6.4 模式求精 207
本章小结 207
习题6 208
第7章 SQL数据定义、更新及数据库编程 210
7.1 SQL数据定义语言 211
7.1.1 数据库的定义 211
7.1.2 基本表的定义 216
7.1.3 索引的定义 219
7.2 SQL数据更新语言 221
7.2.1 插入数据 221
7.2.2 删除数据 223
7.2.3 修改数据 224
7.3 视图 225
7.3.1 定义视图 225
7.3.2 查询视图 228
7.3.3 视图更新 229
7.3.4 删除视图 230
7.4 T-SQL语言简介 231
7.4.1 表达式 231
7.4.2 函数 232
7.4.3 流程控制语句 236
7.5 游标 237
7.5.1 游标的定义与使用 238
7.5.2 当前游标集的修改与删除 241
7.6 存储过程 242
7.6.1 创建存储过程 242
7.6.2 执行存储过程 246
7.6.3 修改和删除存储过程 247
7.7 触发器 248
7.7.1 创建触发器 249
7.7.2 修改和删除触发器 254
本章小结 256
习题7 257
第8章 数据库存储结构与查询处理 262
8.1 文件组织与记录组织 263
8.1.1 存储介质 263
8.1.2 存储访问 264
8.1.3 文件组织与文件中记录的组织 265
8.2 索引与散列 270
8.2.1 索引基本概念 270
8.2.2 顺序索引 271
8.2.3 B+树索引 273
8.2.4 散列 277
8.3 查询处理 281
8.3.1 查询处理过程 281
8.3.2 查询代价度量 283
8.3.3 选择运算 284
8.3.4 连接运算 286
8.3.5 其他运算 293
8.3.6 表达式计算 295
8.4 查询优化 296
8.4.1 查询优化实例 296
8.4.2 关系表达式转换 297
8.4.3 查询优化策略 298
8.5 物理数据库设计 299
本章小结 302
习题8 306
第9章 数据库安全性与完整性 308
9.1 数据库安全性 308
9.1.1 数据库安全概述 309
9.1.2 SQL Server安全机制 312
9.1.3 触发器实现安全性 320
9.2 数据库完整性 320
9.2.1 数据库完整性概述 320
9.2.2 SQL Server完整性 321
9.2.3 使用规则和触发器实现完整性 328
9.3 数据库应用与安全设计 329
9.3.1 数据库安全性控制 329
9.3.2 数据库完整性控制 332
9.3.3 存储过程设计 335
本章小结 338
习题9 339
第10章 事务管理与恢复 340
10.1 事务 341
10.1.1 问题背景 341
10.1.2 事务概念 342
10.1.3 事务特性 343
10.1.4 事务并发执行与调度 344
10.1.5 事务调度及正确性准则 346
10.2 并发控制 349
10.2.1 基于封锁的协议 349
10.2.2 两阶段封锁协议 352
10.3 恢复与备份 354
10.3.1 故障分类及恢复策略 354
10.3.2 事务访问数据方式 355
10.3.3 基于日志的故障恢复策略 357
10.3.4 检查点 360
10.3.5 备份与介质故障恢复 363
本章小结 364
习题10 366
第11章 数据库应用开发 368
11.1 数据库系统的体系结构 369
11.1.1 软件开发体系结构概述 369
11.1.2 C/S体系结构 370
11.1.3 B/S体系结构 372
11.1.4 C/S与B/S结构的结合 375
11.1.5 常用开发体系结构 377
11.2 数据库访问技术 379
11.2.1 ODBC API和ODBC库 380
11.2.2 MFC DAO 381
11.2.3 RDO 382
11.2.4 OLE DB 383
11.2.5 ADO 385
11.2.6 ADO.NET 386
11.2.7 JDBC 389
11.2.8 数据库访问技术小结 392
11.3 对象-关系映射框架 394
本章小结 397
习题11 399
第12章 数据管理技术前沿 400
12.1 大数据的兴起 401
12.1.1 大数据的概念 401
12.1.2 从数据库到大数据 403
12.1.3 大数据处理模式 404
12.2 大数据处理平台和框架 405
12.2.1 Apache Hadoop 406
12.2.2 Spark 409
12.2.3 Storm 410
12.3 数据库面临的挑战 412
12.3.1 MySpace数据库架构变化 412
12.3.2 数据库可扩展性问题的解决方法 414
12.3.3 数据库的发展 416
12.4 NoSQL数据库 417
12.4.1 键值数据库Redis 417
12.4.2 文档数据库MongoDB 421
12.4.3 列数据库HBase 426
12.4.4 图数据库Neo4j 429
12.5 NewSQL数据库 433
12.5.1 VoltDB 434
12.5.2 NuoDB 437
本章小结 440
习题12 440
参考文献 441