第1章 绪论 1
1.1 什么是数据库 1
1.1.1 相互关联的数据的集合 1
1.1.2 用综合的方法组织数据 2
1.1.3 低冗余与数据共享 2
1.1.4 数据具有较高的独立性 2
1.1.5 保证数据的安全、可靠 2
1.1.6 最大限度地保证数据的正确性 3
1.1.7 数据可以并发使用并能同时保证数据的一致性 3
1.2 数据库管理系统 3
1.3 数据库管理和数据库管理员 4
1.4 数据库系统 5
1.5 数据库的过去、现在和未来 5
1.5.1 人工管理阶段 5
1.5.2 文件系统阶段 6
1.5.3 数据库系统阶段及其发展过程 7
1.5.4 数据库技术的广泛应用领域和发展方向 9
本章小结 10
习题一 10
第2章 数据模型和三层模式数据库 11
2.1 信息结构与E-R方法 11
2.1.1 数据的三种范畴 11
2.1.2 实体-联系方法 12
2.2 概念数据模型 15
2.2.1 概念数据模型中的基本联系 15
2.2.2 理解和转换多对多联系 19
2.2.3 连接陷阱 19
2.2.4 概念数据模型——实例研究 21
2.2.5 扩展Bachman图 24
2.3 传统的三大数据模型 25
2.3.1 层次数据模型 25
2.3.2 网络数据模型 27
2.3.3 关系数据模型 29
2.4 数据独立性与三层结构 31
2.4.1 存储数据独立性 32
2.4.2 概念数据独立性 33
2.5 数据库管理系统的结构 34
2.5.1 数据库的三层模式结构 35
2.5.2 模式说明实例 36
2.5.3 数据库管理系统的总体结构 40
本章小结 41
习题二 41
第3章 关系数据库 43
3.1 关系数据库系统概述 43
3.1.1 关系数据库的发展 43
3.1.2 关系数据模型概述 43
3.2 关系数据模型 45
3.2.1 关系模型的数据结构和基本术语 45
3.2.2 关系的形式定义 47
3.2.3 对关系的限定(关系的性质) 49
3.3 关系模型的完整性约束 49
3.3.1 实体完整性规则 49
3.3.2 参照完整性规则 50
3.3.3 用户定义完整性 52
3.3.4 完整性约束的作用 52
3.4 关系代数 53
3.4.1 基本概念和几个符号 53
3.4.2 传统的集合运算 55
3.4.3 专门的关系运算 56
3.4.4 基本运算及变换 60
3.5 关系数据库系统的三层模式结构 61
3.5.1 关系概念模式 61
3.5.2 关系存储模式 62
3.5.3 关系外部模式 62
本章小结 62
习题三 63
第4章 Microsoft SQL Server数据库基础 64
4.1 客户/服务器体系结构 64
4.1.1 客户/服务器和其他应用结构 64
4.1.2 文件服务器与客户/服务器的数据库操作 67
4.1.3 客户/服务器结构的特点 68
4.1.4 三层客户/服务器模型 69
4.2 Microsoft SQL Server基础 71
4.2.1 SQL Server的数据库结构 71
4.2.2 系统数据库的作用 72
4.2.3 SQL Server的企业管理器和查询分析器简介 73
4.2.4 建立数据库 74
4.3 Transact-SQL简介 78
4.3.1 变量、数据类型与表达式 78
4.3.2 函数 84
4.3.3 流程控制和输入/输出命令 87
本章小结 88
习题四 88
第5章 关系数据库标准语言——SQL 89
5.1 SQL语言概述 89
5.2 SQL的数据定义功能 90
5.2.1 基本表的定义 90
5.2.2 修改表结构 94
5.2.3 删除表 95
5.2.4 索引的定义 95
5.2.5 索引的删除 97
5.3 SQL的数据查询功能 97
5.3.1 简单查询 98
5.3.2 排序 102
5.3.3 连接查询 103
5.3.4 外(OUTER)连接查询 105
5.3.5 嵌套查询 108
5.3.6 分组及计算查询 115
5.4 视图(View) 119
5.4.1 从单个表派生出的视图 119
5.4.2 从多个表派生出的视图 120
5.4.3 视图中的虚列 121
5.4.4 视图的删除 122
5.5 SQL的数据操作功能 122
5.5.1 插入操作 122
5.5.2 更新操作 123
5.5.3 删除操作 124
5.6 SQL的数据控制功能 124
5.7 SQL的宿主使用 125
5.7.1 嵌入识别与预编译 125
5.7.2 数据通信区与主变量 125
5.7.3 游标 127
5.7.4 利用游标进行删除和更新操作 129
5.8 动态SQL 129
5.8.1 动态SQL语句的划分 129
5.8.2 动态定义功能 130
5.8.3 动态操作功能 130
5.8.4 动态查询功能 131
本章小结 132
习题五 132
第6章 存储过程、触发器和数据完整性 134
6.1 存储过程 134
6.1.1 基本概念 134
6.1.2 创建和执行存储过程 135
6.1.3 存储过程的返回值和状态信息 137
6.1.4 存储过程的修改和删除 137
6.1.5 妥善利用存储过程 138
6.2 触发器及其用途 138
6.2.1 基本概念 138
6.2.2 建立触发器 139
6.2.3 插入视图和删除视图 140
6.2.4 删除类触发器 140
6.2.5 插入类触发器 140
6.2.6 更新类触发器 141
6.3 数据完整性 142
6.3.1 规则 142
6.3.2 默认值 143
6.3.3 用户定义数据完整性 144
本章小结 145
习题六 145
第7章 安全性 147
7.1 安全性概述 147
7.1.1 安全性措施的层次 147
7.1.2 数据库管理系统的安全功能 148
7.1.3 自主存取控制与强制存取控制 149
7.1.4 SQL Server的身份验证模式 149
7.2 用户管理和角色管理 151
7.2.1 用户的分类 151
7.2.2 登录用户和数据库用户 152
7.2.3 用户管理 152
7.2.4 角色管理 154
7.2.5 SQL Server的预定义角色 156
7.3 权限管理 157
7.3.1 概述 158
7.3.2 授予权限 158
7.3.3 收回权限 161
7.3.4 禁止权限 162
7.3.5 角色与存取控制 163
7.4 其他安全问题 163
7.4.1 数据加密 163
7.4.2 审计 164
7.4.3 统计数据库 164
7.4.4 用户定义的安全性措施 165
本章小结 166
习题七 166
第8章 事务管理 167
8.1 事务 167
8.1.1 事务的概念 167
8.1.2 事务的性质 168
8.1.3 SQL对事务的支持 169
8.2 并发控制 171
8.2.1 干扰问题 171
8.2.2 可串行性 174
8.2.3 封锁 174
8.2.4 死锁 178
8.2.5 隔离级别 180
8.2.6 封锁与隔离级别 181
8.3 恢复 181
8.3.1 数据库恢复概述 181
8.3.2 故障类型 182
8.3.3 备份类型 183
8.3.4 日志的概念 183
8.3.5 恢复模型 184
8.3.6 备份或转储 184
8.3.7 恢复或还原 189
本章小结 192
习题八 192
第9章 关系数据理论 194
9.1 基本概念 194
9.1.1 函数依赖 194
9.1.2 术语和符号 195
9.1.3 为什么要讨论函数依赖 195
9.1.4 模式分解 196
9.2 函数依赖的公理系统 196
9.2.1 Amstrong公理的内容及正确性 197
9.2.2 Amstrong公理的推论 197
9.2.3 逻辑蕴涵和闭包 198
9.2.4 公理的完备性 199
9.2.5 闭包的计算 200
9.2.6 函数依赖集的等价和最小化 201
9.3 规范化 203
9.3.1 第一范式(1NF) 203
9.3.2 第二范式(2NF) 204
9.3.3 第三范式(3NF) 205
9.3.4 BC范式(BCNF) 206
9.3.5 多值依赖与第四范式(4NF) 207
9.3.6 规范化小结 210
9.4 模式分解 211
9.4.1 模式分解的准则 211
9.4.2 3NF无损连接和保持函数依赖算法 213
9.4.3 使分解后的关系模式数最少 214
本章小结 215
习题九 215
第10章 数据库设计 217
10.1 完善E-R模型中的概念 217
10.1.1 弱实体 217
10.1.2 依赖联系 217
10.1.3 强制联系 218
10.2 数据库设计的过程 218
10.2.1 概念模型设计 219
10.2.2 逻辑数据库设计与规范化理论的应用 220
10.2.3 物理数据库设计 221
10.3 数据库设计工具PowerDesigner 222
10.3.1 PowerDesigner简介 222
10.3.2 概念数据库设计 223
10.3.3 物理数据库设计 225
10.3.4 建立数据库 227
本章小结 227
习题十 227
第11章 面向对象数据库 228
11.1 新的数据库应用和新的数据类型 228
11.2 面向对象的数据模型 229
11.2.1 对象与类 229
11.2.2 对象的属性、方法和状态 230
11.2.3 对象的交互与消息 230
11.2.4 类的确定与划分 231
11.2.5 封装(encapsulation) 232
11.2.6 继承性(inheritance) 232
11.2.7 多态性(Polymorphism) 234
11.2.8 对象标识符 235
11.3 对象关系数据库与对象数据库 235
11.3.1 面向对象数据库的研究方法 235
11.3.2 ODMG数据模型和OQL 236
11.4 面向对象数据库研究中的几个特点 236
11.4.1 面向对象模型的优势 236
11.4.2 面向对象数据库发展过程的特点 237
11.4.3 面向对象数据库系统的基本特征 237
11.4.4 面向对象数据库研究中存在的问题 237
11.5 RDBMS、ORDBMS和OODBMS的比较 238
11.5.1 RDBMS和ORDBMS 238
11.5.2 ORDBMS和OODBMS的相似之处 238
11.5.3 ORDBMS和OODBMS的不同之处 238
本章小结 239
习题十一 239
第12章 数据库应用的结构与开发环境 240
12.1 数据库应用开发概述 240
12.2 开放的客户端开发 241
12.2.1 开放式客户体系结构与ODBC 241
12.2.2 Visual FoxPro作为客户端开发工具 243
12.3 数据库应用开发工具PowerBuilder 248
12.3.1 PowerBuilder的数据库接口 249
12.3.2 PowerBuilder应用的构成与开发方法 251
12.3.3 对象、属性与事件 252
12.3.4 PowerBuilder的开发环境 253
12.3.5 数据库操作与事务对象 255
12.3.6 初步体验PowerBuilder的开发方法 256
12.4 基于组件的数据库开发 265
12.4.1 组件与组件模型 266
12.4.2 基于组件的开发 267
12.4.3 有关标准 268
12.4.4 使用PowerBuilder和EAServer开发组件应用 269
12.4.5 从EAServer组件访问数据库 273
12.5 Web数据库应用开发 274
12.5.1 Web数据库应用的一般结构和方法 274
12.5.2 使用PowerBuilder和EAServer建立Web应用 275
本章小结 280
习题十二 280
第13章 数据库应用系统的开发方法 281
13.1 概述 281
13.2 结构化生命周期方法 281
13.3 快速原型方法 284
13.4 面向对象方法 285
13.4.1 面向对象的分析和设计方法 285
13.4.2 UML简介 288
13.5 客户/服务器应用规划综述 290
13.5.1 可以量化的需求分析 291
13.5.2 性能需求 293
13.5.3 并发需求 294
13.5.4 数据分布需求 294
13.5.5 恢复需求 294
13.5.6 安全问题 295
13.5.7 系统需求 295
本章小结 296
习题十三 296
第14章 分布式数据库与分布数据管理 297
14.1 什么是分布式数据库 297
14.2 分布式数据库的数据分布方式 299
14.2.1 数据的分布方式 299
14.2.2 数据分片 300
14.3 分布式数据库的特点和目标 300
14.3.1 分布式数据库系统的基本目标 301
14.3.2 更新传播 302
14.3.3 分布式查询处理 303
14.3.4 目录表管理 303
14.3.5 分布式事务管理 304
14.3.6 其他 304
14.4 SQL Server的分布数据管理 305
14.4.1 概述 305
14.4.2 SQL Server的复制及其术语 306
14.4.3 复制模型 307
14.4.4 复制的类型及复制的实现技术 310
本章小结 315
习题十四 315
第15章 数据仓库 316
15.1 什么是数据仓库 316
15.2 数据仓库的结构 317
15.3 数据仓库系统 318
15.4 建立数据仓库 319
15.5 实现数据仓库的数据库环境 319
15.6 数据仓库与决策支持 320
15.7 SQL Server的数据仓库解决方案 321
15.8 将SQL Server的OLTP数据转换到OLAP数据仓库 322
15.8.1 合并数据 323
15.8.2 清理数据 323
15.8.3 聚合数据 323
15.8.4 将数据组织到多维数据集中 323
15.8.5 转换阶段和数据仓库组件 323
15.9 软件开发商的数据仓库解决方案 324
本章小结 325
习题十五 326
第16章 数据库研究和应用的新领域 327
16.1 概述 327
16.2 数据库技术与其他技术相结合产生的新领域 327
16.2.1 并行数据库 328
16.2.2 主动数据库 328
16.2.3 知识库 330
16.2.4 多媒体数据库 331
16.2.5 模糊数据库 331
16.3 面向应用领域的数据库新技术 332
16.3.1 工程数据库 332
16.3.2 空间数据库 333
本章小结 334
习题十六 334
附录 上机实验 335
实验1 建立数据库 335
实验2 建立表和数据完整性 337
实验3 SQL数据操作 339
实验4 SQL数据查询 340
实验5 视图的定义和操作 342
实验6 SQL的宿主使用方式 342
实验7 存储过程 343
实验8 触发器 344
实验9 用户管理和权限管理 344
实验10 并发控制 345
实验11 数据库建模工具 346
实验12 使用Visual FoxPro做客户端开发 346
实验13 使用PowerBuilder做客户端开发 347
主要参考书目 348