本教材第2版是在充分听取教材使用学校师生的修改建议后,结合数据库原理与应用技术的**发展,重新修订了相当篇幅的内容而重新编写的。全书共分12章,涉及关系型数据库理论及编程基础、数据库设计与应用、实例、实验等几部分。全书理论性强、体系完整、内容新颖、条理清晰、组织合理、强调实践。作者团队以认真严谨的科学态度实现了书中的方法,详尽描述了各种方法的适用环境及取得的效果。
以工程案例驱动教学的讲练结合的编写原则,于SQLServer2012介绍了关系型数据库应用技术,针对Redis、ElasticSearch、MongoDB等简介了针对大数据的数据管理技术。本书还配有MOOC课程。
第2版前言
本教材第1版从出版发行到现在,虽然过去了短短的5年,但在这期间,IT业已经又有了很大的发展。伴随着数据库技术在国民经济以及互联网+、大数据、物联网、移动计算等各个领域的广泛应用,数据库原理与应用技术正日益受到各行各业人员的普遍关注,数据库原理与应用这门课程已成为高等院校计算机科学与技术、软件工程、网络工程、信息工程、管理工程、信息管理与信息系统等相关专业的核心专业课程,越来越多的专业及相关技术人员提出了对学习和掌握数据库知识的需求。
众所周知,数据库及其相关技术是计算机科学与技术领域中迅速发展壮大的一个分支。在数据库的发展历程中,不但造就了包括C. W. Bachman、E. F. Code、James Gray、Michael Stonebraker等在内的多位图灵奖得主,也使其发展成为了一门具有很大工程实践价值的学科。在数据建模方面,它提出了层次模型、网状模型、关系模型、语义数据模型、面向对象模型等多种数据建模方法;在应用领域方面,它在互联网+、OLTP、OLAP、决策支持分析、网络信息检索、人工智能、移动计算等领域都能发挥重要的作用。其中,传统的关系型数据库系统在管理结构化信息方面一直具有很大优势,因此本书重点对关系数据库理论、应用等进行详细介绍,并针对SQL Server 2012给出常用使用方法。但同时也必须看到,在互联网+和大数据时代,半结构化信息和非结构化信息所占的比重正在逐步增大,并且已经逐渐成为重要的信息组织方式。虽然传统的关系型数据库在一定程度上满足了人们对管理结构化数据的要求,但随着信息管理对象从相对封闭、稳定一致、由独立关系型数据库集中管理的内容扩展到开放、海量、冗余、更新快、分布广泛的Web大数据内容,人们对传统的数据库管理技术也就提出了新的、更高的要求。其实,结构化数据不过是冰山一角,规模更大的是非结构化和半结构化数据,其规模一般是结构化数据的十倍乃至百倍。现今,互联网已成为人们获取信息的首选途径,也成为大数据的重要来源。随着以Twitter、Facebook、微博、微信等为代表的新型社交媒体的出现,以及以淘宝、京东等为代表的电子商务的飞速发展,文本等类型的异构大数据在飞速增长。
在这种应用背景下,我们修订了本教材。本教材第2版是在充分听取教材使用学校师生的修改建议后,结合数据库原理与应用技术的发展,重新修订了相当篇幅的内容而重新编写的。本教材第2版重写了第1版中几乎所有章节的内容,力争能反映数据库应用领域中的最新成果和发展趋势,去掉了第1版中的第6章“关系查询处理和查询优化”以及部分无关内容,同时理论联系实际,更贴近实用,选用SQL Server 2012作为关系型数据库的应用示例。全书共分12章。其中,第1章对数据管理相关技术的发展历史、原理、应用等进行了概述,并针对传统的关系型数据库在大数据时代面临的挑战进行了综述。第2章到第6章是关系型数据库理论及编程基础,内容涉及关系代数及其理论、SQL的数据定义和完整性约束、SQL的数据查询、关系型数据库编程、关系型数据库理论等核心内容。第7章至第11章是数据库设计与应用部分,内容涵盖数据库设计的方法、数据安全性、数据恢复与并发控制、基于关系型数据库的Web应用、大数据应用背景下的数据管理技术简介等。第12章是关系型数据库应用系统案例分析,通过对一个实际的教材征订管理系统的设计与实现过程的剖析,从实践的层面上对关系型数据库管理系统进行了分析。最后的附录部分,给出了几个相关的实验设计,方便在教学时使用。全书体系结构参见下图。
在本教材第2版的编纂过程中,我们一直秉承着以“理论+应用”为中心、以工程实践为手段、以工程案例驱动教学的讲练结合的编写原则,以期能帮助读者更好地学习和领会数据库原理和应用技术,特别是关系型数据库管理系统在实践中的应用;并基于SQL Server 2012介绍了关系型数据库应用技术,针对Redis、ElasticSearch、MongoDB等简介了针对大数据的数据管理技术。本教材第2版继承了第1版中数据库系统的基本概念、基本原理和基本设计方法,对传统数据库理论和应用的介绍进行了精简和提炼,使其更为通俗易懂,更为简明与实用。
本教材理论联系实际、涉及面广、体系完整、内容新颖、条理清晰、组织合理、图例丰富、说明详细,理论章节有适量的习题,技术章节给出了较多的实例,便于读者练习与巩固所学知识。本教材适合用作计算机科学与技术、软件工程、网络工程、通信工程、电子科学与技术等相关学科本、专科教学的教材,同时也可供参加自学考试人员、数据库应用系统开发设计人员、工程技术人员及其他相关人员参阅。
为更好地服务于课程建设,本书配有电子课件等教学资源,需要者可从华信教育资源网http://www.hxedu.com.cn免费注册下载。本书配有MOOC课程,选用本书作为教材的老师和学生可登录华信MOOC平台查看,平台网址为:http://mooc.hxedu.com.cn。
本教材由高凯、张雪梅、倪素虹、张永强合作编写。高凯组稿并提出写作大纲,同时撰写第1章、第10章、第11章;倪素虹撰写第2章、第3章、第4章、第6章;张雪梅撰写第5章、第7章、第8章、第9章;张永强撰写第12章;张雪梅和倪素虹共同整理了实验部分;最后由高凯完成书稿的最后审定和统稿工作。另外,在书稿的编纂过程中,国内外众多的数据库应用技术的研究和相关网站也为本教材提供了参考,本教材的顺利完成也得益于参阅了大量的相关工作及研究成果,在此谨向这些文献的作者和科研工作人员,特别是那些由于篇幅所限未能在参考文献中提及的作者,以及为本教材提供帮助的老师、同人和课题组成员致以诚挚的谢意和崇高的敬意。在本教材写作过程中,也得到了电子工业出版社策划编辑袁玺等的大力支持和帮助,在此一并表示衷心感谢。
由于我们的学识、水平有限,书中不妥之处在所难免,恳请广大读者批评指正。
编 者
2016年1月
第1章 绪论 1
1.1 数据管理技术的产生和发展 1
1.1.1 人工管理数据阶段 1
1.1.2 文件管理数据阶段 2
1.1.3 数据库管理阶段 3
1.1.4 大数据阶段 5
1.2 数据库的基本概念 6
1.2.1 数据(信息) 6
1.2.2 数据库、数据库管理系统 6
1.2.3 数据库系统 7
1.3 数据模型 7
1.3.1 数据模型的组成要素 8
1.3.2 数据建模 8
1.4 数据库系统结构 13
1.4.1 三级模式 13
1.4.2 二级映像 14
1.4.3 采用三级模型二级映像结构
的优点 14
1.5 数据库管理系统的功能、组成、
工作方式 15
1.5.1 功能 15
1.5.2 组成 15
1.5.3 工作方式 16
1.6 数据库产品及传统的关系型数据库
系统面临的挑战 17
1.6.1 数据库产品 17
1.6.2 传统的关系型数据库系统面临
的挑战 19
1.7 小结 20
习题1 20
第2章 关系型数据库基础 21
2.1 关系模型的基本概念 21
2.1.1 域、笛卡儿积、关系、关系
模式 21
2.1.2 码 24
2.2 关系模型的完整性约束 25
2.2.1 实体完整性规则 26
2.2.2 参照完整性规则 26
2.2.3 用户自定义完整性规则 27
2.3 关系操作 27
2.3.1 关系数据语言 27
2.3.2 关系代数 27
2.4 小结 36
习题2 36
第3章 SQL的数据定义和完整性约束 38
3.1 SQL概述 38
3.1.1 SQL的发展历史 38
3.1.2 SQL的特点 39
3.1.3 SQL数据库的体系结构 40
3.2 SQL Server介绍 40
3.2.1 SQL Server的发展历史 41
3.2.2 Transact-SQL 42
3.3 SQL的数据定义 46
3.3.1 数据库的定义与删除 46
3.3.2 基本表的定义、修改和删除 47
3.3.3 索引的建立和删除 51
3.4 SQL的数据操纵和完整性约束
的作用 52
3.4.1 插入数据和完整性约束的作用 52
3.4.2 删除数据和完整性约束的作用 53
3.4.3 修改数据和完整性约束的作用 54
3.5 小结 55
习题3 55
第4章 SQL的数据查询 56
4.1 SQL的数据查询命令 56
4.2 简单查询 57
4.2.1 简单无条件查询 57
4.2.2 简单条件查询 57
4.2.3 使用BETWEEN… AND…
的查询 58
4.2.4 字符串匹配查询 59
4.2.5 空值查询 60
4.2.6 使用IN的查询 60
4.2.7 DISTINCT短语的作用 61
4.2.8 存储查询结果 61
4.2.9 查询结果的排序 61
4.2.10 TOP短语的作用 62
4.2.11 集合运算 62
4.3 连接查询 64
4.3.1 一般连接 64
4.3.2 别名和自连接查询 66
4.3.3 外连接查询 66
4.4 分组及汇总查询 67
4.4.1 一般汇总查询 67
4.4.2 使用GROUP BY的分组汇总
查询 67
4.4.3 带明细的分组汇总查询 68
4.5 嵌套查询 69
4.5.1 内外层不相关的嵌套查询 69
4.5.2 内外层互相关的嵌套查询 71
4.5.3 使用EXISTS的嵌套查询 72
4.6 需要查询支持的数据操作 74
4.6.1 插入操作 74
4.6.2 修改操作 75
4.6.3 删除操作 75
4.7 视图及其操作 75
4.7.1 视图的建立和删除 76
4.7.2 视图的使用 77
4.7.3 视图的作用 79
4.8 小结 79
习题4 80
第5章 关系型数据库编程基础 81
5.1 应用程序访问数据库 81
5.1.1 嵌入式SQL 81
5.1.2 DAO和OLE DB 85
5.1.3 ODBC 86
5.1.4 JDBC 87
5.1.5 ADO和ADO.NET 89
5.2 存储过程 91
5.2.1 基本概念 91
5.2.2 Transact-SQL基本语法 92
5.2.3 创建和执行存储过程 94
5.2.4 存储过程的修改和删除 97
5.2.5 获得有关存储过程的信息 98
5.3 触发器 98
5.3.1 基本概念 98
5.3.2 创建触发器 99
5.3.3 禁止和启用触发器 101
5.3.4 修改和删除触发器 101
5.4 小结 102
习题5 102
第6章 关系数据及其规范化理论 103
6.1 问题的提出 103
6.1.1 关系模式中可能存在的问题 103
6.1.2 解决的方法 104
6.2 函数依赖 104
6.2.1 函数依赖的基本概念 105
6.2.2 函数依赖的推理规则 106
6.2.3 码的函数依赖表示 109
6.2.4 最小函数依赖集 109
6.3 规范化 111
6.3.1 范式 111
6.3.2 模式分解 115
6.3.3 关系模式规范化步骤 120
6.4 小结 121
习题6 121
第7章 数据库设计 122
7.1 数据库设计概述 122
7.1.1 数据库设计的任务和特点 122
7.1.2 数据库设计方法 123
7.1.3 数据库设计步骤 123
7.1.4 数据库设计过程中的各级
模式 125
7.2 需求分析 125
7.2.1 需求分析的任务 125
7.2.2 需求分析的方法和工具 126
7.2.3 需求分析的结果 127
7.3 概念结构设计 127
7.3.1 概念模型及表示方法 127
7.3.2 概念结构设计的方法 130
7.3.3 概念设计的步骤 131
7.4 逻辑结构设计 136
7.4.1 从E-R模型到关系模式
的转换 136
7.4.2 逻辑结构的优化 138
7.4.3 设计用户子模式 139
7.5 数据库的物理设计 140
7.5.1 数据库物理设计的内容
和方法 140
7.5.2 确定数据库的物理结构 140
7.5.3 评价物理结构 141
7.6 数据库的实施和维护 142
7.6.1 建立数据库和应用程序
的调试 142
7.6.2 数据库的试运行和测试 142
7.6.3 数据库的运行和维护 143
7.7 数据库设计实例 144
7.7.1 需求分析 144
7.7.2 概念结构设计 147
7.7.3 逻辑结构设计 150
7.7.4 数据库的物理设计和实施 152
7.8 小结 154
习题7 154
第8章 数据库的安全性 155
8.1 数据库安全性概述 155
8.2 用户标识与鉴别 156
8.3 存取控制 157
8.3.1 自主存取控制(DAC)方法 157
8.3.2 强制存取控制(MAC)方法 161
8.3.3 基于角色的存取控制
(RBAC)模型 162
8.4 其他安全控制方法 164
8.4.1 视图机制 164
8.4.2 审计 165
8.4.3 数据加密 166
8.4.4 统计数据库安全性 166
8.5 常见数据库管理系统的安全控制 167
8.5.1 SQL Server的安全控制 167
8.5.2 Oracle的安全控制 170
8.5 小结 173
习题8 173
第9章 数据库恢复和并发控制 175
9.1 事务 175
9.1.1 事务的基本概念 175
9.1.2 事务的性质 175
9.2 数据库恢复技术 176
9.2.1 故障的种类 176
9.2.2 恢复的实现技术 177
9.2.3 故障恢复策略 179
9.3 常见数据库的恢复技术 182
9.3.1 SQL Server数据库的恢复
技术 182
9.3.2 Oracle数据库的恢复技术 183
9.4 并发控制 185
9.4.1 并发操作带来的问题 185
9.4.2 封锁 186
9.4.3 并发调度的可串行性 189
9.4.4 两段锁协议 190
9.4.5 封锁的粒度 191
9.5 常见数据库的并发控制技术 193
9.5.1 SQL Server的封锁方式 193
9.5.2 Oracle的封锁方式 193
9.6 小结 194
习题9 194
第10章 基于关系型数据库的Web应用 196
10.1 数据库应用体系结构概述 196
10.1.1 基于C/S模式的体系结构 196
10.1.2 基于B/S模式的体系结构 197
10.2 常见的Web服务器简介 198
10.2.1 IIS 198
10.2.2 Tomcat 199
10.2.3 WebLogic 200
10.3 服务器端的动态网页技术 200
10.3.1 JSP 200
10.3.2 基于ASP .NET构建Web应用
程序 204
10.4 客户端网页设计相关技术简介 204
10.4.1 基于CSS+DIV构建网页 205
10.4.2 客户端脚本语言JavaScript
简介 206
10.5 基于XML的数据库信息管理 209
10.5.1 XML及其与数据库的互
操作 210
10.5.2 XML的基本规范和简单
结构 211
10.5.3 XML数据的显示 211
10.5.4 将数据库信息转换为XML 212
10.6 小结 214
习题10 215
第11章 大数据应用背景下的数据管理
技术 216
11.1 大数据及其主要特点 216
11.2 传统数据处理方式面临的挑战 217
11.3 大数据应用背景下的数据管理特点
及部分数据管理产品 218
11.3.1 大数据应用背景下的数据
管理特点 218
11.3.2 基于文档数据模型的数据
管理产品 218
11.3.3 基于键-值对数据模型的数据
管理产品 220
11.3.4 分布式缓存数据管理
产品MemCached 221
11.3.5 基于倒排索引的数据管理产品
及ELK架构 224
11.4 小结 224
习题11 224
第12章 关系型数据库应用系统案例
分析 225
12.1 系统设计 225
12.1.1 需求分析 225
12.1.2 概念结构设计 226
12.1.3 数据库设计 227
12.2 功能模块设计 230
12.2.1 系统功能模块 230
12.2.2 界面设计 230
12.3 功能实现步骤 231
12.3.1 数据库创建 231
12.3.2 公用模块设计 231
12.3.3 添加app.config文件 236
12.4 管理员端程序设计步骤 236
12.4.1 用户管理界面 236
12.4.2 用户管理信息编辑界面设计 239
12.4.3 登录窗体的设计 242
12.5 系统运行与调试 244
12.5.1 调试方法 244
12.5.2 调试过程 245
12.5.3 排错 246
12.6 小结 247
习题12 247
附录A 实验 248
实验1 初识SQL Server 2012 248
实验2 数据定义和数据操纵 250
实验3 数据查询 252
实验4 视图的创建与使用 253
实验5 存储过程和触发器 255
实验6 数据库的安全性 255
参考文献 257
后记 259