第1章 绪论 1
1.1 什么是数据库系统 1
1.1.1 数据库 1
1.1.2 DBMS 2
1.1.3 DBS 2
1.2 为什么需要数据库系统 3
1.2.1 DBS前的困境 3
1.2.2 DBS的吸引力 4
1.3 数据抽象 5
1.3.1 四层抽象 5
1.3.2 数据抽象的表达 6
1.3.3 三层模式和两级映射 7
1.4 DBMS 8
1.4.1 数据定义语言 10
1.4.2 数据操作语言 10
1.4.3 数据保护语言 10
1.4.4 查询处理 10
1.4.5 存储管理 11
1.4.6 保护管理 11
1.4.7 物理数据结构 11
1.4.8 立足点 12
1.5 DBS 12
1.5.1 硬件 12
1.5.2 软件 13
1.5.3 用户 13
1.5.4 工作过程 14
1.5.5 在网络上 15
1.6 数据库技术发展趋势 16
习题 17
第2章 关系模型 18
2.1 关系结构与约束 18
2.1.1 关系与表 18
2.1.2 关系键 20
2.1.3 约束 21
2.2 关系操作 21
2.2.1 基本关系代数运算 21
2.2.2 附加关系代数运算 27
2.2.3 扩展关系代数运算 30
习题 33
第3章 PostgreSQL数据定义与操作 34
3.1 SQL与PostgreSQL 34
3.1.1 SQL发展史 34
3.1.2 PostgreSQL 35
3.1.3 数据库语言组成 35
3.1.4 数据库语言特点 36
3.1.5 考试系统数据库 36
3.2 数据定义 38
3.2.1 SQL的基本数据类型 38
3.2.2 表的创建、修改和撤销 39
3.3 投影与广义投影 42
3.4 选择 43
3.5 集合操作 47
3.6 联接查询 48
3.6.1 笛卡儿积 49
3.6.2 内联接 49
3.6.3 外联接 50
3.6.4 按属性联接 51
3.7 更名 51
3.8 聚集查询 52
3.8.1 基本聚集 52
3.8.2 分组 53
3.8.3 排名 54
3.8.4 分窗 55
3.9 基本查询语句的一般形式 56
3.10 嵌套查询 57
3.10.1 子查询作为表 57
3.10.2 子查询作为集合 58
3.10.3 子查询作为标量 60
3.10.4 关系除 62
3.11 递归查询 64
3.12 数据修改 65
3.12.1 数据插入 65
3.12.2 数据删除 66
3.12.3 数据更新 67
习题 68
第4章 postgreSQL应用 70
4.1 应用体系结构 70
4.1.1 C/S结构 70
4.1.2 B/S结构 71
4.2 嵌入式pgSQL 73
4.2.1 pgSQL的宿主使用 73
4.2.2 嵌入式pgSQL的使用技术 74
4.2.3 动态SQL语句 76
4.3 JDBC编程 79
4.3.1 JDBC基础 79
4.3.2 JDBC程序 80
4.3.3 预备语句 81
4.3.4 元数据 82
4.3.5 Java应用连接访问数据库实例 82
4.3.6 Java小应用连接访问数据库实例 83
4.3.7 JSP连接访问数据库实例 85
4.3.8 Servlet连接访问数据库实例 86
4.4 函数 92
4.4.1 PL/pgSQL的块结构 92
4.4.2 变量常量的定义和赋值 92
4.4.3 控制结构 93
4.4.4 存储函数 95
习题 96
第5章 postgreSQL数据保护 98
5.1 数据保护 98
5.2 视图 99
5.2.1 视图的创建和撤销 99
5.2.2 对视图的操作 100
5.3 访问控制 101
5.3.1 授予权限 101
5.3.2 收回权限 103
5.4 完整性约束 103
5.4.1 约束含义 103
5.4.2 声明及检验 104
5.5 触发器 109
5.5.1 定义触发器 109
5.5.2 激活触发器 112
5.5.3 删除触发器 112
5.6 事务 112
习题 114
第6章 数据库设计:实体-联系方法 115
6.1 数据库设计过程 115
6.2 E-R模型的基本元素 116
6.3 E-R图 118
6.4 属性的分类 119
6.5 联系的设计 120
6.6 弱实体集 123
6.7 特殊化与一般化 124
6.8 将E-R模式变换为关系模式 125
习题 128
第7章 数据库设计:属性-联系方法 130
7.1 问题的提出 130
7.2 数据依赖 132
7.2.1 函数依赖的定义 132
7.2.2 函数依赖的逻辑蕴涵 133
7.2.3 函数依赖的推理规则 133
7.2.4 属性集的闭包 135
7.2.5 函数依赖集的最小依赖集 136
7.2.6 多值依赖 137
7.3 模式分解 137
7.3.1 无损联接分解 139
7.3.2 分解无损联接检验 139
7.3.3 保持函数依赖的分解 143
7.4 范式 145
7.4.1 第一范式(1NF) 145
7.4.2 第二范式(2NF) 146
7.4.3 第三范式(3NF) 146
7.4.4 BC范式(BCNF) 147
7.4.5 第四范式 147
7.5 规范化 148
7.6 大数据与反规范化 149
习题 149
第8章 存储和存取 152
8.1 存储器件 152
8.2 磁盘 152
8.3 DBMS文件管理 154
8.4 数据库文件组织 154
8.4.1 行存储 154
8.4.2 列存储 158
8.5 文件中元组组织 158
8.6 索引 160
8.6.1 稠密索引和稀疏索引 161
8.6.2 多级索引 162
8.6.3 B+树索引 163
8.6.4 哈希方法 165
8.7 数据字典的存储 167
习题 167
第9章 查询处理与优化 169
9.1 查询处理过程及查询优化问题 169
9.2 关系代数表达式的等价变换与优化 171
9.2.1 关系代数表达式等价变换规则 171
9.2.2 关系代数等价变换的启发式规则 174
9.3 实现关系运算的算法与优化 174
9.3.1 选择运算的算法与优化 174
9.3.2 联接运算的算法与优化 175
9.4 表达式的求值方法与优化 177
9.4.1 实体化 178
9.4.2 流水线 178
9.5 基于代价的定量优化 178
习题 179
第10章 事务处理 181
10.1 事务概念 181
10.1.1 如果没有事务 181
10.1.2 事务及其特性 182
10.2 并发执行和调度 185
10.2.1 并发执行 185
10.2.2 可串行化 187
10.3 并发控制 189
10.3.1 锁 189
10.3.2 两阶段封锁 190
10.3.3 死锁 191
10.4 故障恢复 191
10.4.1 恢复准备 191
10.4.2 恢复处理 194
10.5 小结 196
习题 196
第11章 大数据技术 198
11.1 大数据特征 198
11.2 大数据关键技术 198
11.3 分布式文件系统 199
11.3.1 计算机集群 199
11.3.2 分布式文件系统 200
11.4 NoSQL数据模型 200
11.4.1 键值存储 200
11.4.2 列族存储 201
11.4.3 文档存储 201
11.4.4 图存储 203
11.5 大数据计算 203
11.5.1 批处理 204
11.5.2 流式计算 205
11.6 大数据应用 206
11.6.1 基于内容推荐 206
11.6.2 协同过滤推荐 207
11.6.3 小结 209
习题 209
附录 实验 210
实验一 Access数据库 210
实验二 PostgreSQL基础和安装 210
实验三 数据库的基本操作 211
实验四 数据表的基本操作 212
实验五 数据备份与还原 214
实验六 简单数据查询 216
实验七 高级数据查询 217
实验八 Java连接数据库 218
实验九 简单的PL/pgSQL程序 219
实验十 索引和视图 220
实验十一 PostgreSQL权限管理 221
实验十二 触发器 222
实验十三 性能优化 222
实验十四 事务与并发控制 223
实验十五 PowerDesigner 224
实验十六 综合应用 224
实验评分标准 225
实验报告要求 225
实验报告模板 226
参考文献 227