第一章 数据库系统的基本概念 1
1.1 引论 1
1.1.1 数据库方法与文件处理方法 2
1.1.2 数据库系统用户 3
1.1.3 数据库方法的优点 5
1.2 数据模型与模式 5
1.2.1 数据模型分类 6
1.2.2 模式与实例 6
1.3 数据库管理系统的体系结构 7
1.3.1 三级模式体系结构 7
1.4 数据库语言和接口 8
1.3.2 数据独立 8
1.4.1 DBMS语言 9
1.4.2 DBMS界面 9
1.5 数据库系统环境 10
1.5.1 DBMS组成模块 10
1.5.2 数据库系统实用软件 11
1.5.3 通信功能 12
1.6 数据库管理系统分类 12
习题 14
第二章 关系模型与关系代数 16
2.1 关系模型的概念 16
2.1.1 域、元组、属性和关系 16
2.1.2 关系的性质 17
2.1.3 关系模型的符号 18
2.2 关系模型的语义限制 19
2.2.1 域限制 19
2.2.2 关键字限制 19
2.2.3 实体完整性限制 20
2.2.4 外关键字限制 20
2.3 关系的操作 21
2.3.1 插入操作 21
2.3.2 删除操作 21
2.3.3 修改操作 22
2.4 关系代数 22
2.4.1 选择操作 23
2.4.2 投影操作 24
2.4.3 命名操作 25
2.4.4 集合操作 25
2.4.5 连接操作 27
2.4.6 除法操作 27
2.4.7 其它操作 28
2.5 关系代数上的查询操作 31
习题 31
第三章 关系数据库语言SQL 35
3.1 SQL语言数据库的三级体系结构 35
3.2 SQL的数据定义 36
3.2.1 建表 36
3.2.3 删除表 37
3.2.4 表中的语义限制 37
3.2.2 修改表 37
3.2.5 完整的例子 39
3.3 SQL的数据查询 42
3.3.1 基本查询语句块 42
3.3.2 基本查询块举例 42
3.3.3 SELECT语句中的表达式及串操作 44
3.3.4 嵌套查询 45
3.3.5 集合操作查询 46
3.3.6 分组查询 47
3.3.7 SQL的连接查询 50
3.3.8 SQL查询中的空值 51
3.4.1 插入语句 52
3.4 SQL中的更新语句 52
3.4.2 删除语句 53
3.4.3 修改语句 53
3.5 SQL的视图 54
3.5.1 视图的定义 54
3.5.2 视图的查询 55
3.5.3 视图的更新 56
3.5.4 视图删除 58
3.6 SQL的数据存取控制 58
3.6.1 自定义的存取控制 59
3.6.2 委托存取控制 61
3.6.3 数据库管理员的责任 62
3.7 索引说明 62
3.8 嵌入的SQL 64
3.8.1 识别问题 65
3.8.2 通信区 65
3.8.3 数据交换 66
3.8.4 动态SQL 68
习题 69
第四章 关系演算和QBE 71
4.1 元组关系演算 71
4.1.1 元组变量及其范围 71
4.1.2 元组演算的形式描述 72
4.1.3 举例 73
4.1.4 全称量词 74
4.2 QUEL语言 76
4.1.6 SQL的量词描述 76
4.1.5 安全表达式 76
4.2.1 QUEL中的数据与存储定义 77
4.2.2 查询结构 78
4.2.3 更新 81
4.2.4 QUEL与SQL的比较 82
4.3 域关系演算 82
4.4 QBE语言 84
4.4.1 查询结构 85
4.4.2 更新结构 88
4.5 关系数据库语言的比较 89
习题 90
第五章 数据库系统的实现技术 92
5.1 系统目录 92
5.2 查询处理与优化 93
5.3 数据库事务和系统日志 94
5.3.1 事务概念 94
5.3.2 系统日志 96
5.3.3 事务提交点 96
5.3.4 系统日志中的检查点 97
5.3.5 事务的并发执行 97
5.3.6 事务的读和写操作 98
5.3.7 并发失控的影响 98
5.3.8 事务状态和操作 99
5.4 事务执行调度 101
5.5 并发控制的锁技术 102
5.5.1 锁的类型 103
5.5.2 2阶段锁保证可串性 106
5.5.3 死锁与活锁 107
5.6 并发控制的T/O技术 109
5.6.1 时间戳 109
5.6.2 时间戳算法 110
5.7 基于延迟更新的恢复技术 111
5.7.1 恢复概念 111
5.7.2 恢复处理 112
5.7.3 回退 113
5.7.4 基于延迟更新的恢复技术 114
5.8 基于立即更新的恢复技术 117
5.8.1 单用户环境下基于立即更新的撤消/重做算法 118
5.8.2 与并发执行相关的UNDO/REDO立即更新 118
5.10.1 安全的类型 119
5.9 数据库的备份和恢复 119
5.10 数据库的安全 119
5.10.2 数据库管理员与安全 121
5.10.3 用户帐号和数据库审计 121
5.11 基于优先权的自裁定存取控制 122
5.12 多级保密的强制性存取控制 122
习题 125
第六章 数据库设计 127
6.1 关系数据库设计步骤 127
6.2 E-R模型 128
6.2.1 实体、属性和实体型 128
6.2.2 联系 129
6.3.1 关系属性的语义 131
6.3 模式优化 131
6.3.2 元组及冗余信息 132
6.3.3 空值 133
6.3.4 伪造的元组 134
6.4 函数相关 135
6.5 关系模式的优化 135
6.5.1 实体集上的限制 135
6.5.2 联系集上的限制 136
6.5.3 实体属性的确定 136
6.5.4 实体集的确定 136
6.6 规范化 137
6.6.1 2NF 137
6.6.3 BCNF 138
6.6.2 3N 138
6.7 多值相关与4NF 139
6.7.1 多值相关 139
6.7.2 MVD与FD 140
6.7.3 4NF 141
6.8 连接相关与5NF 141
6.9 其它相关性和规范化 142
6.9.1 包含相关 142
6.9.2 Domain-Key NF 142
习题 143
第七章 传统数据库方法 145
7.1 网状数据结构 145
7.1.1 记录和记录型 145
7.1.2 系型及其系值 146
7.1.3 特殊系型 147
7.1.4 系值的存储结构 148
7.1.5 1∶1和M∶N联系的系结构描述 149
7.2 网状模型的语义限制 150
7.2.1 插入(选择)限制 150
7.2.2 离开(选择)限制 150
7.2.3 系序选择 151
7.3 网状模型定义 151
7.4 网状数据库的数据操作 156
7.4.1 用户工作区UWA 156
7.4.2 当前指示器 157
7.4.4 当前指示器和UWA的图示 158
7.4.3 状态指示器 158
7.4.5 网状数据操作语言(DML) 159
7.5 层次数据库结构 161
7.5.1 层次数据结构 161
7.5.2 层次结构值树 163
7.6 虚拟父子联系 164
7.7 层次模型中的完整性约束 166
7.8 层次模型的数据定义 166
7.9 层次模型中的数据操作 168
7.9.1 HDML命令的UWA和当前值 168
7.9.2 操作命令举例 170
习题 172
8.1 先进的数据模型 175
第八章 数据库技术进展 175
8.2 面向对象数据库基本概念 176
8.3 对象结构和类型 177
8.3.1 对象结构 178
8.3.2 类型构造函数 180
8.4 操作、方法的封装和持久性 181
8.5 类与类型的层次结构及其继承性 184
8.5.1 类型层次与继承 184
8.5.2 类层次 185
8.6 Client/Server结构 186
习题 188
参考文献 190