《数据库系统原理与设计》是由万常选、廖国琼、吴京慧、刘喜平编著,2009年清华大学出版社出版的国家级精品课程配套教材、高等院校信息技术规划教材。该教材可作为计算机及相关专业本科生的数据库系统原理课程教材,也可供数据库爱好者自学和参考。
全书共分12章。第1章是数据库系统基本概念;第2和第3章是关系数据库基础;第4~第6章是关系数据库设计;第7~第10章是关系数据库管理系统;第11和第12章是数据库应用开发。该教材注重数据库应用与设计能力的培养,将数据库设计的内容分散在第4~第6章以及7.6节和9.6节等章节逐层推进。
目录
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 第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
- 参考文献 391