第1章 绪论 1
1.1 数据库系统的产生和发展 1
1.1.1 信息、数据与数据处理 1
1.1.2 数据管理的发展 2
1.2 数据视图与数据模型 9
1.2.1 数据抽象 9
1.2.2 数据模型 10
1.3 数据库语言 11
1.3.1 数据定义语言 11
1.3.2 数据操纵语言 12
1.3.3 数据控制语言 12
1.4 数据库的体系结构 13
1.4.1 模式的概念 13
1.4.2 数据库系统的三级模式结构 13
1.4.3 逻辑模式 14
1.4.4 外模式 14
1.4.5 内模式 15
1.4.6 外模式/模式映像 15
1.4.7 模式/内模式映像 15
1.5 数据库系统的组成 15
1.6 数据库系统的全局结构 17
1.6.1 查询处理器 18
1.6.2 存储管理器 19
1.6.3 磁盘存储器中的数据结构 19
1.7 小结 19
习题/思考题 20
第2章 数据模型 21
2.1 数据模型的组成要素 21
2.2 概念数据模型 21
2.2.1 概念数据模型的基本术语 21
2.2.2 实体联系模型 23
2.3 层次数据模型 24
2.3.1 层次数据模型的数据结构 25
2.3.2 层次模型的数据操纵与完整性约束 25
2.3.3 层次模型的优缺点 25
2.4 网状数据模型 26
2.4.1 网状数据模型的数据结构 26
2.4.2 网状数据模型的操纵与完整性约束 26
2.4.3 网状模型的优缺点 27
2.5 关系数据模型 27
2.6 对象模型 28
习题/思考题 29
第3章 关系数据库 30
3.1 关系模型 30
3.1.1 基本概念 30
3.1.2 关系形式化定义 31
3.1.3 关系的完整性 34
3.2 关系代数 35
3.2.1 传统的集合运算 36
3.2.2 专门的关系运算 38
3.2.3 关系代数查询实例 42
3.3 关系演算 43
3.3.1 元组关系演算语言ALPHA 44
3.3.2 域关系演算语言QBE 48
习题/思考题 53
第4章 关系数据库语言SQL 55
4.1 SQL概述 55
4.1.1 SQL的产生与发展 55
4.1.2 SQL的特点 55
4.1.3 SQL数据库的体系结构 57
4.2 SQL的数据定义 58
4.2.1 SQL模式的创建和撤销 58
4.2.2 基本数据类型 58
4.2.3 基本表的创建、修改和撤销 59
4.2.4 索引的创建和撤销 61
4.3 SQL的数据查询 62
4.3.1 SELECT查询语句 62
4.3.2 SELECT语句用法 63
4.4 SQL的数据更新 73
4.4.1 数据插入 73
4.4.2 数据删除 74
4.4.3 数据修改 75
4.5 视图 76
4.5.1 定义视图 76
4.5.2 查询视图 78
4.5.3 更新视图 78
4.5.4 视图的作用 79
习题/思考题 80
第5章 关系数据理论 81
5.1 冗余导致的问题 81
5.2 规范化 81
5.2.1 函数依赖 82
5.2.2 码 82
5.2.3 范式 83
5.2.4 2NF 84
5.2.5 3NF 84
5.2.6 BCNF 85
5.2.7 多值依赖 85
5.2.8 4NF 87
5.2.9 连接依赖 87
5.2.10 第五范式 87
5.3 数据依赖的公理系统 88
5.4 模式分解 91
5.4.1 无损连接分解 91
5.4.2 保持依赖分解 91
习题/思考题 92
第6章 关系数据库设计 94
6.1 数据库设计概述 94
6.1.1 数据库设计问题 94
6.1.2 数据库设计方法和步骤 94
6.2 实体-联系模型 96
6.2.1 基本属性与组合属性 96
6.2.2 存在依赖性(existence-dependent) 96
6.2.3 弱实体(weak entity) 97
6.2.4 单值属性与多值属性 97
6.2.5 递归实体 98
6.2.6 实体的超类与子类 99
6.3 E-R模型向关系模型的转换 99
6.4 E-R模型设计实例 103
6.4.1 概念结构设计(设计E-R模型) 104
6.4.2 逻辑结构设计 105
6.4.3 数据库的实施 108
6.4.4 在数据库设计中应注意的问题 110
习题/思考题 111
第7章 数据库的恢复 112
7.1 事务 112
7.1.1 事务的概念 112
7.1.2 事务的操作 112
7.1.3 事务的状态 113
7.1.4 事务的性质 114
7.2 SQL的事务管理 115
7.2.1 SQL的事务执行 115
7.2.2 可能破坏事务特性的因素 115
7.3 数据库恢复及故障 116
7.3.1 事务故障的种类 116
7.3.2 存储设备分类 117
7.4 数据库恢复的原理 117
7.4.1 数据转储 117
7.4.2 登记日志文件 118
7.5 数据库恢复技术 119
7.5.1 基于故障类型的恢复 119
7.5.2 具有检查点的恢复技术 119
7.5.3 数据库镜像 119
7.5.4 永久存储器的恢复 120
7.5.5 影子页面技术 120
7.6 SQL Server的备份策略与方案 121
7.7 并发控制 122
7.7.1 并发控制引起的问题 122
7.7.2 封锁 125
7.7.3 封锁协议 125
7.7.4 活锁与死锁 126
7.7.5 并发调度的可串行性 128
7.7.6 协议 129
7.7.7 封锁粒度 129
7.7.8 插入和删除操作 130
习题/思考题 132
第8章 数据库管理 133
8.1 引言 133
8.2 数据库的完整性 133
8.2.1 数据库完整性分类 134
8.2.2 完整性约束条件与DBMS的完整性控制 135
8.2.3 SQL Server的数据完整性 136
8.2.4 存储过程 140
8.2.5 触发器 141
8.3 数据库的安全性 147
8.3.1 定义视图 147
8.3.2 访问控制 148
8.3.3 数据加密 150
8.3.4 数据库审计 150
8.3.5 SQL Server的安全性机制 150
习题/思考题 164
第9章 分布式数据库 165
9.1 分布式数据库系统的一般概念 165
9.1.1 分布式数据库 165
9.1.2 分布式数据库管理系统 166
9.1.3 分布式数据库管理系统的分类 167
9.1.4 分布式数据库管理系统的基本特点 167
9.2 分布式数据库设计 168
9.2.1 数据的分割 169
9.2.2 数据的分布 170
9.2.3 数据的冗余 171
9.2.4 设计方法 171
9.3 分布式事务 172
9.3.1 网络的可恢复性 172
9.3.2 局部数据项和全局数据项 172
9.3.3 全局事务、局部子事务和可串行性 172
9.4 分布式加锁 173
9.4.1 分布式加锁方法 173
9.4.2 分布式两阶段加锁协议 176
9.5 分布式事务的交付 177
9.5.1 事务阻塞 178
9.5.2 两阶段交付协议 178
9.5.3 两阶段交付中的事务恢复 179
9.6 基于时印的分布式并发控制 180
9.6.1 分布式时印 180
9.6.2 并发存取数据的方法 180
9.6.3 锁和时印的比较 181
9.7 分布式数据库的安全 181
9.7.1 身份验证 181
9.7.2 保密通信 182
9.7.3 访问控制 182
9.7.4 库文加密 182
9.7.5 密码体制与密码管理 183
习题/思考题 183
第10章 数据库的存储结构 185
10.1 物理存储介质概述 185
10.2 磁盘 186
10.2.1 磁盘的物理特性 187
10.2.2 磁盘性能的度量 188
10.2.3 磁盘块存取的优化 188
10.3 RAID 190
10.3.1 通过冗余提高可靠性 190
10.3.2 通过并行提高性能 191
10.4 第三级存储 192
10.4.1 光盘 192
10.4.2 磁带 193
10.5 存储访问 193
10.5.1 缓冲区管理器 194
10.5.2 缓冲区替换策略 194
10.6 文件组织 195
10.6.1 定长记录 195
10.6.2 变长记录 196
10.7 文件中记录的组织 198
10.7.1 顺序文件组织 198
10.7.2 聚集文件组织 199
10.8 数据字典 199
10.9 索引技术 200
10.9.1 索引技术的分类 200
10.9.2 有序索引的分类 200
10.9.3 主索引 201
10.9.4 辅助索引 202
10.10 散列技术 203
10.10.1 散列机制 203
10.10.2 散列索引 204
10.10.3 静态散列中的问题 205
10.10.4 可扩充散列结构 205
习题/思考题 206
第11章 实验与指导 208
实验一 SQL Server的安装及管理工具的使用 208
实验二 创建数据库和表 215
实验三 表数据的插入、修改和删除 217
实验四 数据库的查询 219
实验五 存储过程和触发器的使用 221
实验六 视图的定义、使用实验 222
实验七 数据库设计 224
附录1 226
附录2 227
参考文献 228