1 数据库系统引论 1
1.1 引言 1
1.1.1 数据、数据处理、数据库与数据库管理系统 1
1.1.2 数据库技术的产生与发展 2
1.1.3 数据库系统的主要特征 4
1.2 数据描述 7
1.2.1 现实世界 7
1.2.2 信息世界 7
1.2.3 计算机世界 7
1.2.4 常用术语的说明 8
1.3 数据模型 9
1.3.1 数据模型的要素 9
1.3.3 网状模型 10
1.3.2 层次模型 10
1.3.4 关系模型 11
1.3.5 E-R数据模型 13
1.3.6 面向对象数据模型 16
1.4 数据库系统结构 21
1.4.1 数据库系统的模式结构 21
1.4.2 数据库系统的体系结构 23
1.5 数据库管理系统 25
1.5.1 数据库管理系统的功能 25
1.5.2 数据库管理系统的组成 26
1.6 数据库语言 27
1.6.1 数据描述语言 27
1.6.2 数据操纵语言 29
1.8.1 数据字典的基本概念 30
1.7 数据库管理员 30
1.8 数据字典 30
1.8.2 DBMS和数据字典 31
1.8.3 数据字典的任务 31
1.8.4 数据字典的用途 32
1.9 数据库系统的工作流程 32
习题1 33
2 关系数据库 34
2.1 关系数据结构概述 34
2.1.1 关系数据结构 34
2.1.2 关系操作 34
2.2 关系数据结构 35
2.2.1 关系 35
2.1.3 完整性约束 35
2.2.2 关系模式 36
2.2.3 关系数据库 37
2.3 关系的完整性 37
2.3.1 实体完整性 37
2.3.2 参照完整性 38
2.3.3 用户定义完整性 38
2.4 关系代数 39
2.4.1 传统的集合运算 39
2.4.2 专门的关系运算 40
2.4.3 扩充的关系操作 43
2.5 查询优化 44
2.5.1 关系代数表达式的优化 44
2.5.2 关系代数表达式的等价变换规则 45
2.5.3 优化的一般策略 47
2.5.4 关系代数的优化算法 47
习题2 50
3 关系数据库标准语言SQL 51
3.1 SQL概述 51
3.1.1 SQL的产生与发展 51
3.1.2 SQL数据库的体系结构 51
3.1.3 SQL的组成 52
3.2 SQL的数据定义 52
3.2.1 模式的定义和撤消 52
3.2.2 基本表的定义、修改和撤消 53
3.3 SQL的数据查询 56
3.2.3 索引的定义和撤消 56
3.3.1 单表查询 57
3.3.2 连接查询 59
3.3.3 嵌套查询 61
3.3.4 集合查询 63
3.4 SQL的数据更新 64
3.4.1 数据插入 64
3.4.2 数据修改 65
3.4.3 数据删除 66
3.5 视图及其操作 66
3.5.1 定义视图 66
3.5.2 视图的撤消 68
3.5.3 视图的查询 68
3.5.5 视图的优点 69
3.5.4 视图的更新 69
3.6 T-SQL和Oracle中的存储过程、函数和触发器(*) 70
3.6.1 T-SQL中存储过程、函数和触发器 70
3.6.2 Oracle中存储过程、函数和触发器 73
3.7 嵌入式的SQL(*) 75
3.7.1 SQL和宿主语言之间的通信接口 76
3.7.2 嵌入式SQL的使用技术 78
习题3 82
4 关系数据库设计理论 84
4.1 数据依赖 84
4.1.1 关系模式中的数据依赖 84
4.1.2 数据依赖的有关概念 84
4.1.3 数据依赖对关系模式的影响 86
4.2.1 第一范式 87
4.2 范式 87
4.2.2 第二范式 88
4.2.3 第三范式 89
4.2.4 BC范式 90
4.2.5 多值依赖与第四范式 90
4.3 函数依赖的公理系统 92
4.3.1 Armstrong公理 92
4.3.2 Armstrong公理的推论 93
4.3.3 属性的闭包 93
4.3.4 最小函数依赖集 94
4.4 关系模式的规范化 96
4.4.1 关系模式的规范化步骤 96
4.4.2 关系模式的分解 97
4.4.3 模式的分解算法 100
4.4.4 多值依赖公理及其分解算法 102
习题4 103
5 数据库设计 105
5.1 数据库设计概述 105
5.1.1 数据库设计的内容和特点 105
5.1.2 数据库设计方法简介 106
5.2 需求分析 108
5.3 概念模型设计 110
5.3.1 设计局部的E-R模型 111
5.3.2 将各局部的E-R模型综合成总体的E-R模型 112
5.4 逻辑结构设计 115
5.4.1 概念模型向网状模型转换 115
5.4.2 从E-R图向关系模型转换 117
5.4.3 规范化理论的应用 119
5.5 数据库物理设计 120
5.5.1 数据簇集设计 121
5.5.2 索引的选择 123
5.6 数据库的实施与维护 126
5.6.1 数据库数据的装入 126
5.6.2 数据库的试运行 127
5.6.3 数据库的运行和维护 127
习题5 128
6 数据库保护 130
6.1 数据库的完整性 130
6.1.1 实体完整性 130
6.1.2 参照完整性 130
6.1.4 对约束的命名、撤消和添加操作 131
6.1.3 用户定义完整性 131
6.1.5 约束的使能与撤消以及延迟与撤消 132
6.1.6 触发器 132
6.2 数据库的安全性 133
6.2.1 账户的安全性 134
6.2.2 用户对数据库对象的存取权限 134
6.2.3 DBA对系统级的权限 135
6.3 数据的并发控制 135
6.3.1 事务 135
6.3.2 并发操作调度 137
6.3.3 并发事务的可串行化 138
6.3.4 并发事务的可恢复性 141
6.3.5 事务的并发操作带来的问题 142
6.3.6 数据封锁技术 143
6.3.7 基于时标的并发控制 149
6.4 数据库的恢复 150
6.4.1 数据库系统遭遇的故障 150
6.4.2 恢复和原子性的联系 151
6.4.3 基于日志的恢复技术 151
习题6 155
7 数据库管理系统及其实现技术 157
7.1 数据库管理系统概述 157
7.1.1 数据库管理系统结构简介 157
7.1.2 数据库管理系统的目标 158
7.1.3 数据库管理系统的基本功能 159
7.1.4 数据库管理系统与操作系统的关系 159
7.2 数据库管理系统实现 161
7.2.1 DBMS程序模块的组成 161
7.2.2 DBMS的进程结构 163
7.2.3 DBMS的系统结构 165
7.3 数据库语言的处理 168
7.3.1 语言翻译处理层的任务和工作步骤 168
7.3.2 解释方法 169
7.3.3 预编译方法 170
7.4 数据存取层 171
7.4.1 存取层的系统结构 172
7.4.2 存取层的功能子系统 173
7.5 缓冲区管理 175
7.6 数据库物理组织 175
7.6.1 数据库物理组织概述 175
7.6.2 数据库实现联系的方法 178
习题7 179
8 关系数据库ORACLE 8i 181
8.1 Oracle的体系结构 181
8.1.1 数据库 181
8.1.2 数据库实例 182
8.1.3 数据库实例的启动与关闭 183
8.1.4 数据库存储 184
8.2 数据库物理文件的维护 186
8.2.1 控制文件的维护 186
8.2.2 重做日志文件的维护 187
8.2.3 数据文件的维护 189
8.3 Oracle数据库基本对象的管理 190
8.3.1 段的类型 190
8.3.2 基本表 191
8.3.3 索引 192
习题8 195
9 数据库系统的研究与发展 196
9.1 分布式数据库系统 196
9.1.1 分布式数据库系统概述 196
9.1.2 分布式数据库系统组成 200
9.2 客户/服务器结构的数据库系统 206
9.2.1 概述 206
9.2.2 客户/服务器结构数据库系统 208
9.2.3 客户/服务器结构数据库系统实现技术 212
9.2.4 客户/服务器结构数据库系统的优点 216
9.3 面向对象的数据库系统 217
9.3.1 传统的关系数据库系统的不足之处 218
9.3.2 “对象”概念的实质 218
9.3.4 面向对象模型 219
9.3.3 面向对象数据库技术的产生 219
9.3.5 面向对象的数据库管理系统 220
9.4 一些新型的数据库系统 220
9.4.1 演绎数据库 220
9.4.2 模糊数据库 222
9.4.3 模糊演绎数据库 223
9.4.4 巨型数据库系统 224
9.4.5 主动数据库 224
9.4.6 多媒体数据库 225
9.4.7 集成的工程数据库 226
9.4.8 联邦数据库 226
9.4.9 时态数据库 226
习题9 227