第1章 数据库概论 1
1.1 数据管理及其发展过程 1
1.1.1 数据管理 1
1.1.2 人工管理阶段 1
1.1.3 文件系统阶段 2
1.1.4 数据库系统阶段及其发展过程 4
1.1.5 数据管理和数据库技术的持续发展 5
1.2 数据库系统的特点 6
1.3 数据模型初步 8
1.3.1 概念数据模型 8
1.3.2 传统的三大数据模型 9
1.4 数据独立性与三层结构 13
1.4.1 存储数据独立性 13
1.4.2 概念数据独立性 15
1.5 三层模式结构和数据库管理系统 16
1.5.1 数据库管理系统的基本功能 16
1.5.2 数据库的三层模式结构 17
1.5.3 模式说明实例 18
1.5.4 数据库管理系统的基本框架 22
1.6 数据库系统 23
1.6.1 数据库系统的组成 23
1.6.2 数据库管理和数据库管理员 23
1.6.3 数据库应用系统的体系结构 24
本章小结 25
习题与思考题 26
第2章 概念数据模型 27
2.1 概念数据模型综述 27
2.2 实体-联系方法 28
2.2.1 实体 28
2.2.2 实体之间的联系 29
2.3 数据库建模工具 31
2.3.1 SAP PowerDesigner简介 31
2.3.2 使用PowerDesigner建立概念数据模型的基本方法 32
2.4 深入讨论联系的几个问题 36
2.4.1 为什么需要讨论联系 36
2.4.2 理解和转换多对多联系 40
2.4.3 PowerDesigner中的多对多联系转换为一对多联系 41
2.4.4 连接陷阱 43
2.5 概念数据模型设计实例 44
2.5.1 问题描述 44
2.5.2 库存业务局部概念模型 44
2.5.3 订购业务局部概念模型 45
2.5.4 将局部E-R模型合并为全局E-R模型 46
本章小结 49
习题与思考题 50
实验1 概念数据模型设计 50
第3章 关系数据库基础 52
3.1 关系数据库系统概述 52
3.1.1 关系数据库的发展 52
3.1.2 关系数据库管理系统简介 53
3.1.3 关系数据库标准语言SQL简介 54
3.1.4 关系数据库的三层模式结构 56
3.1.5 SQL Server的数据库存储结构 56
3.1.6 SQL Server的用户数据库 58
3.2 关系数据模型 58
3.2.1 关系数据模型的3个要素 58
3.2.2 关系的形式定义 60
3.2.3 关系的基本性质 61
3.2.4 关系模型的数据结构和基本术语 62
3.3 关系模型的完整性约束 64
3.3.1 实体完整性约束 64
3.3.2 参照完整性约束 65
3.3.3 用户定义完整性约束 66
3.3.4 完整性约束的作用 67
3.4 关系代数 68
3.4.1 基本概念和几个符号 68
3.4.2 传统的集合运算 70
3.4.3 专门的关系运算 71
3.4.4 基本运算及变换 76
本章小结 77
习题与思考题 77
第4章 关系数据理论 79
4.1 基本概念 79
4.1.1 函数依赖 79
4.1.2 术语和符号 80
4.1.3 为什么要讨论函数依赖 80
4.1.4 模式分解 81
4.2 函数依赖的推理规则 82
4.2.1 函数依赖的推理规则及正确性 82
4.2.2 Amstrong公理的推论及正确性 83
4.2.3 逻辑蕴涵和闭包 83
4.2.4 公理的完备性 84
4.2.5 属性集闭包的计算 86
4.2.6 函数依赖集的等价和最小化 87
4.3 规范化 89
4.3.1 第一范式 89
4.3.2 第二范式 90
4.3.3 第三范式 91
4.3.4 BC范式 92
4.3.5 多值依赖与第四范式 93
4.3.6 规范化小结 95
4.4 模式分解 97
4.4.1 模式分解的准则 97
4.4.2 3NF无损连接和保持函数依赖算法 99
4.4.3 使分解后的关系模式数最少 100
本章小结 101
习题与思考题 101
第5章 逻辑数据模型和物理数据模型 103
5.1 数据库设计的概念和方法 103
5.1.1 数据库设计的概念 103
5.1.2 数据库设计的一般步骤 104
5.2 逻辑数据模型设计 106
5.2.1 逻辑数据模型设计的主要内容 106
5.2.2 把E-R模型转换为关系数据模型 107
5.2.3 规范化理论的应用 108
5.2.4 反规范化 109
5.2.5 设计视图 109
5.3 物理数据模型设计 109
5.3.1 由逻辑数据模型生成物理数据模型 110
5.3.2 物理数据库设计 111
5.3.3 建立数据库 112
本章小结 115
习题与思考题 115
实验2 数据库设计 115
第6章 数据定义、操作与完整性约束 117
6.1 SQL的架构和定义 117
6.1.1 什么是架构 117
6.1.2 定义架构 117
6.2 SQL的表定义和完整性定义功能 119
6.2.1 定义表及其完整性约束 119
6.2.2 修改表结构 125
6.3 SQL数据操作与完整性约束的作用 127
6.3.1 插入操作 127
6.3.2 删除操作 133
6.3.3 更新操作 134
本章小结 135
习题与思考题 136
实验3 建立表和定义完整性约束 136
实验4 数据操作及体验完整性约束 138
第7章 SQL查询 140
7.1 SQL的数据查询命令 140
7.2 简单查询 141
7.2.1 简单无条件查询 141
7.2.2 简单条件查询 142
7.2.3 使用[NOT]BETWEEN…AND…的查询 143
7.2.4 字符串匹配查询 144
7.2.5 空值查询 145
7.2.6 使用IN表达式的查询 146
7.2.7 ALL和DISTINCT短语的作用 147
7.2.8 存储查询结果 147
7.2.9 查询结果的排序 148
7.2.10 TOP短语的作用 149
7.2.11 集合运算 151
7.3 连接查询 152
7.3.1 连接查询的语法格式 152
7.3.2 一般连接 153
7.3.3 多个表的连接 153
7.3.4 别名和自连接查询 154
7.3.5 外连接查询 156
7.3.6 广义笛卡儿积 159
7.4 分组及汇总查询 160
7.4.1 聚合函数与汇总查询 160
7.4.2 一般汇总查询 161
7.4.3 带明细的汇总查询 162
7.4.4 使用GROUP BY的分组汇总查询 164
7.4.5 使用COMPUTE BY的分组汇总查询 166
7.4.6 使用COMPUTE BY和COMPUTE的汇总查询 169
7.5 嵌套查询 169
7.5.1 普通嵌套查询 169
7.5.2 使用量词的嵌套查询 172
7.5.3 内、外层互相关嵌套查询 173
7.5.4 使用EXISTS的嵌套查询 174
7.6 需要查询支持的数据操作 175
7.6.1 插入操作 175
7.6.2 更新操作 176
7.6.3 删除操作 176
7.7 视图及其操作 177
7.7.1 视图的建立和使用 177
7.7.2 视图的修改和删除 180
7.7.3 视图的作用 181
7.7.4 在设计数据库时设计视图 181
本章小结 182
习题与思考题 183
实验5 数据查询 185
实验6 视图的应用 187
第8章 数据库编程基础 189
8.1 Transact-SQL介绍 189
8.1.1 数据类型与变量说明 189
8.1.2 运算符与表达式 189
8.1.3 函数 190
8.1.4 全局变量 192
8.1.5 程序语句 192
8.2 游标与SQL的宿主使用 194
8.2.1 SQL宿主使用面临的问题 194
8.2.2 嵌入识别与预编译 195
8.2.3 数据通信区与主变量 196
8.2.4 游标 197
8.2.5 游标应用举例 198
8.2.6 利用游标进行删除和更新操作 201
8.3 存储过程 202
8.3.1 基本概念 203
8.3.2 创建和执行存储过程 204
8.3.3 存储过程的修改和删除 205
8.3.4 存储过程应用举例 205
8.3.5 获得有关存储过程的信息 209
8.3.6 在数据库设计阶段设计存储过程 209
8.3.7 用户定义函数 210
8.4 触发器及其用途 210
8.4.1 基本概念 210
8.4.2 建立触发器 211
8.4.3 deleted表和inserted表 213
8.4.4 触发器应用举例 213
8.4.5 查看导致触发器触发的事件 215
8.4.6 在数据库设计阶段设计触发器 216
8.5 动态SQL 216
8.5.1 动态SQL语句的划分 216
8.5.2 动态定义功能 217
8.5.3 动态操作功能 217
8.5.4 动态查询功能 217
本章小结 219
习题与思考题 219
实验7 游标的应用 220
实验8 存储过程及应用 221
实验9 触发器及应用 222
第9章 数据库安全 224
9.1 安全性概述 224
9.1.1 安全性措施的层次 224
9.1.2 数据库管理系统的安全功能 225
9.1.3 自主存取控制与强制存取控制 226
9.1.4 数据库管理系统的身份验证模式 227
9.2 用户管理 229
9.2.1 登录用户和数据库用户 229
9.2.2 登录用户管理 229
9.2.3 数据库用户的管理 232
9.2.4 数据库用户的分类 234
9.3 角色及其管理 234
9.3.1 基本概念 235
9.3.2 public角色 235
9.3.3 角色管理 236
9.3.4 系统预定义角色 237
9.4 权限管理 239
9.4.1 概述 239
9.4.2 对象权限管理 240
9.4.3 架构权限管理 246
9.4.4 语句权限管理 248
9.4.5 禁止权限 250
9.4.6 查询授权情况 251
9.4.7 所有权链接 251
9.4.8 角色与存取控制 252
9.5 数据加密 252
9.5.1 概述 253
9.5.2 加密的一般步骤及示例 253
9.6 其他安全问题 255
9.6.1 审计 255
9.6.2 统计数据库 256
9.6.3 用户定义的安全性措施 256
本章小结 257
习题与思考题 257
实验10 用户管理和权限管理 258
第10章 事务管理与并发控制 261
10.1 事务管理 261
10.1.1 事务的概念 261
10.1.2 事务的性质 263
10.1.3 SQL对事务的支持 264
10.1.4 简单事务管理 264
10.1.5 事务保存点 265
10.1.6 隐含事务与自动提交 266
10.1.7 使用TRY…CATCH控制事务 267
10.2 并发控制 269
10.2.1 干扰问题 269
10.2.2 可串行性 271
10.2.3 封锁 272
10.2.4 死锁 277
10.2.5 活死锁 279
10.2.6 隔离级别 279
10.2.7 封锁与隔离级别 280
本章小结 282
习题与思考题 282
实验11 并发事务控制 283
第11章 数据库存储管理与数据恢复 285
11.1 数据库存储管理与存储优化 285
11.1.1 SQL Server数据库的存储结构 285
11.1.2 调整数据库 286
11.1.3 文件组 287
11.1.4 分区 290
11.1.5 索引 292
11.2 备份与恢复 296
11.2.1 数据库恢复概述 296
11.2.2 故障类型 297
11.2.3 备份类型 298
11.2.4 日志的概念 299
11.2.5 恢复模型 299
11.2.6 备份和恢复策略 300
11.2.7 备份操作 301
11.2.8 恢复或还原 304
本章小结 309
习题与思考题 310
实验12 数据恢复 310
第12章 数据库应用和研究的新领域 312
12.1 概述 312
12.2 面向对象数据库 313
12.2.1 新的数据库应用和新的数据类型 313
12.2.2 面向对象数据库研究中的几个特点 314
12.2.3 RDBMS、ORDBMS和OODBMS的比较 316
12.3 数据仓库与数据分析 317
12.3.1 什么是数据仓库 317
12.3.2 数据分析与数据挖掘 321
12.4 分布式数据库与云计算 324
12.4.1 分布式数据库的基本概念和特点 324
12.4.2 分布式数据库的数据分布方式 326
12.4.3 SQL Server的分布数据管理概述 327
12.4.4 SQL Server的复制实现技术 329
12.4.5 云计算与云数据管理 333
12.5 大数据与NoSQL 335
12.5.1 什么是大数据 335
12.5.2 NoSQL 336
12.6 其他研究方向和领域 344
12.6.1 主动数据库 344
12.6.2 知识库 345
12.6.3 模糊数据库 346
12.6.4 并行数据库 347
12.6.5 多媒体数据库 348
本章小结 348
习题与思考题 349
参考文献 351