
本书系统、全面地阐述数据库的基本理论、实现技术和设计方法等。全书共11章。第1、2章介绍数据库系统的基本概念,包括数据库系统的组成要素、数据库系统管理数据的特点、数据库系统体系结构、数据模型等;第3~5章介绍关系数据模型的三个组成要素,即关系数据模型所采用的数据结构、关系操作语言和完整性约束,SQL查询语言的功能及应用,以及指导关系数据库设计的关系模式规范化设计理论等;第6~8章介绍数据库管理系统(DBMS)的数据存储管理、查询优化和事务处理等核心技术;第9、10章介绍数据库应用系统的底层数据库的设计方法,以及在应用编程中访问与管理数据库中数据的方法;第11章介绍数据库技术在数据分析、分布式应用和大数据环境下的数据模型及系统等方面的发展情况。
本书以教育部高等学校计算机类专业教学指导委员会和全国高等学校计算机教育研究会研制的《培养计算机类专业学生解决复杂工程问题的能力》为指导,涵盖其中“数据库原理”课程的教学内容及要求,适合作为高等学校计算机及相关专业数据库课程的教材,也可作为从事数据库理论研究、数据库应用系统的设计与开发,以及数据库管理与维护等工作人员的参考用书。
随着社会信息化进程的推进,尤其是大数据时代的到来,数据库技术已经成为现代计算环境中数据管理的基础技术。数据库理论的研究一直未曾间断,而这其中绝大多数的研究仍以关系数据模型为基础。因此,本书中数据库原理的内容仍以关系数据模型为基础,以关系数据库理论、关系数据库管理系统核心技术、关系数据库设计与应用数据库编程为主来组织。全书共11章,可分为如下5部分。
第一部分包括2章(第1、2章)。介绍数据库管理技术的发展历史,突出数据库技术相对于人工管理和文件系统管理两种数据管理方式所具有的优点,优势在于采用数据模型表示数据,指明数据模型的发展是数据管理技术发展的一条主线。介绍目前主流数据库管理系统遵循的ANSI/SPARC体系结构,突出三级模式结构的概念以及二级映射机制的作用,阐明数据独立性的概念。介绍数据的抽象与建模过程,在用数据模型描述和组织数据前,需采用概念模型对现实世界的事物和事物间的联系进行抽象。介绍数据库领域常用的概念模型——实体联系模型(ER模型)。
第二部分包括3章(第3~5章)。从数据模型的三个组成要素的角度,介绍关系数据模型所采用的数据结构、关系操作能力的表达方法、关系模型对于存储在数据库中的数据具有的约束能力。阐明关系数据模型的优势在于其可用单一的数据结构(关系)来表达实体以及实体间的联系,能比较真实地模拟现实世界,容易被人所理解且便于在计算机上实现,可较好地完成数据的抽象与建模。介绍SQL对关系模型操作能力的实现,重点介绍SQL提供的数据定义、数据查询、数据更新和数据控制能力。介绍不良的关系模式设计可能带来的数据冗余、更新异常和数据不一致问题,以及解决此类问题的关系模式规范化设计理论的相关概念和方法。
第三部分包括3章(第6~8章)。介绍关系数据库管理系统(RDBMS)的实现技术,主要有DBMS为实现数据的高效查询所采用的存储结构和存取方式;RDBMS为提高查询效率和系统性能实现的SQL查询优化技术,包括代数优化和物理优化等;数据库系统的逻辑工作单元——事务的概念,以及事务的ACID特性,DBMS为保持事务的ACID特性实现的事务处理机制,包括对各类故障后的数据库进行恢复,对并发事务操作进行控制,从而保证数据库的一致性。
第四部分包括2章(第9、10章)。以一个数据库应用案例系统的设计为需求,介绍数据库规范化设计各阶段的方法,解决数据的抽象、数据的表达和数据的存储等问题,目标是设计出一个满足应用要求,简洁、高效、规范合理的数据库。介绍在应用编程中访问和管理所设计的数据库中数据的方法。
第五部分包括1章(第11章)。介绍关系数据库在联机分析处理领域的应用发展,关系数据库面向分布应用与网络技术结合形成的分布式数据库体系架构及实现技术,大数据应用环境下的NoSQL数据库系统及其典型的数据模型等。
本版的内容结构与第2版大体一致,对第6章、第7章外的其他章节的文字进行了重新梳理,进一步融入作者多年教学实践对数据库理论与技术的深层理解。修订的内容主要包括如下几方面。
(1) 在第1~5章中,更换了一些标题、例题,改善了一些算法的描述,以及一些图表的表达。并将ER模型从第9章调整到第2章中,将概念模型实例化,以加强读者对概念模型相关概念的理解,第9章则侧重直接用ER模型进行数据库概念结构设计。
(2) 在第8章中,更改了一些图表和例题,增加了多版本、时间戳和有效性等并发控制技术内容。
(3) 将第9章和第10章进行了综合设计。第9章以一个数据库应用系统的数据库设计为需求,逐步完成该数据库的各阶段设计;第10章则基于所设计的数据库,编程实现某一应用系统功能在不同数据库编程方法中访问数据库的方式。在嵌入式SQL方式中,增加了动态SQL编程方法,用C语言编程实现静态SQL、动态SQL,以及利用存储过程和函数实现该应用系统功能。在使用数据库访问接口方式中,采用Python语言编程实现,用不同数据库接口实现该应用系统功能。
(4) 在第11章中,删除了原来的数据库技术发展趋势和数据挖掘技术两节的内容,修改了其他节的内容,增加了关系数据库技术的发展历程和功能扩展,以及大数据环境下的非关系数据库的内容。
(5) 在第1、2、8、11章的小结后,增加了对本章所涉及的数据库理论做出贡献的图灵奖人物的介绍。
本教材的修订工作由宋金玉执笔完成,郝建东参与了第10章的修订,靳大尉参与了第11章的修订,保留了陈萍和陈刚在前面版本的部分工作。所在大学和学院给予了大力的支持和保障,在此表示感谢!也向使用前两版教材和提供宝贵意见的师生表示感谢!
望学术同仁不吝赐教,继续给予支持,并在使用过程中多提宝贵意见,我们将不胜感激。另外,为了方便教学,本书配套出版了习题解答和实验指导,配备了电子课件和教材示例数据库等。在中国大学MOOC平台上,也开设了同名的MOOC课程(网址为https://www.icourse163.org/course/PAEU1003647009),可前往学习和下载课程配套资料,也可到清华大学出版社网站(www.tup.com.cn)下载。其他方面的需求可与作者联系(1271911312@aeu.edu.cn)。
作者2021年9月于南京
第1章数据库系统概论1
1.1数据管理技术的发展1
1.1.1人工管理阶段1
1.1.2文件系统管理阶段3
1.1.3数据库系统管理阶段5
1.2数据库的基本概念5
1.2.1数据库5
1.2.2数据库管理系统8
1.2.3数据库系统10
1.3数据库系统体系结构13
1.3.1数据库系统的三级模式结构13
1.3.2二级映射与数据独立性18
1.4小结19
习题20第2章数据模型23
2.1抽象与模型23
2.2概念模型24
2.2.1概念模型中的概念24
2.2.2实体联系模型27
2.3数据模型概述29
2.3.1数据模型的组成要素29
2.3.2数据模型的演变30
2.3.3关系模型30
2.3.4半结构化数据模型31
2.3.5面向对象数据模型34
2.4小结35
习题36第3章关系数据库理论39
3.1关系模型概述39
3.1.1关系的数据结构39
3.1.2关系的完整性约束44
3.1.3关系操作47
3.2关系代数48
3.2.1传统的集合运算49
3.2.2专门的关系运算50
3.2.3用关系代数运算实现数据库操作55
3.3关系演算57
3.3.1关系演算中关系的表示58
3.3.2元组关系演算58
3.3.3域关系演算61
3.4小结63
习题63第4章关系数据库标准查询语言SQL69
4.1SQL概述69
4.1.1SQL的发展历史69
4.1.2SQL的特点70
4.1.3SQL的语句格式72
4.2数据定义72
4.2.1数据库的定义72
4.2.2基本表的定义73
4.2.3基本表的修改77
4.2.4基本表的删除78
4.3数据查询78
4.3.1单表查询79
4.3.2连接查询86
4.3.3嵌套查询89
4.3.4集合查询97
4.4数据更新97
4.4.1插入元组97
4.4.2修改元组属性值99
4.4.3删除元组100
4.4.4更新操作的完整性检查100
4.4.5触发器103
4.5视图107
4.5.1视图的概念107
4.5.2视图的定义108
4.5.3视图的删除109
4.5.4视图的查询109
4.5.5视图的更新110
4.5.6视图的作用113
4.6授权控制114
4.7小结121
习题121第5章关系模式的规范化设计128
5.1关系模式的设计问题128
5.2关系模式的规范化129
5.2.1函数依赖130
5.2.2基于函数依赖的范式132
5.2.3多值依赖与4NF137
5.2.4关系模式的规范化过程139
5.3函数依赖的理论140
5.3.1函数依赖集的逻辑蕴含140
5.3.2Armstrong公理141
5.3.3属性集闭包143
5.3.4函数依赖集等价和最小函数依赖集144
5.3.5候选键及其判定方法147
5.4模式分解149
5.4.1模式分解的概念150
5.4.2无损连接分解和保持函数依赖分解151
5.4.3模式分解算法154
5.5小结158
习题159第6章数据库的存储管理163
6.1数据库存储管理的数据163
6.2磁盘上数据的存储165
6.2.1磁盘的物理特性165
6.2.2磁盘上数据的缓冲存取167
6.3文件的组织结构169
6.3.1定长记录170
6.3.2变长数据和记录171
6.3.3列存储173
6.4文件的存储结构173
6.4.1堆文件173
6.4.2顺序文件174
6.4.3聚集文件175
6.4.4散列文件(直接文件)176
6.4.5SQL Server的文件存储177
6.5索引180
6.5.1索引的概念181
6.5.2聚集索引和非聚集索引182
6.5.3稠密索引和稀疏索引185
6.5.4多级索引188
6.5.5倒排索引和文档检索191
6.5.6位图索引191
6.6索引文件的结构193
6.6.1B+树193
6.6.2散列索引199
6.7小结200
习题201第7章关系查询与优化204
7.1数据库系统的查询处理步骤204
7.2查询分析与预处理206
7.3代数优化208
7.3.1代数优化的必要性208
7.3.2基于代数等价的启发式优化210
7.4物理优化215
7.4.1操作符的实现算法215
7.4.2基于代价的物理优化方法220
7.5小结223
习题224第8章事务处理227
8.1事务的概念227
8.1.1概念的引入227
8.1.2事务的定义229
8.1.3事务的ACID特性230
8.1.4事务的管理232
8.2事务的恢复233
8.2.1故障及其错误状态233
8.2.2恢复的实现技术235
8.2.3恢复的策略239
8.3并发控制247
8.3.1并发控制的必要性247
8.3.2并发控制的实现技术255
8.4小结295
习题296第9章数据库设计300
9.1数据库设计概述300
9.1.1数据库设计的内容300
9.1.2数据库设计的方法300
9.1.3数据库设计的阶段301
9.2需求分析303
9.2.1需求分析的任务303
9.2.2需求分析的方法304
9.3概念结构设计308
9.3.1概念结构设计步骤309
9.3.2概念结构设计方法311
9.4逻辑结构设计314
9.4.1ER图向关系数据库模式的转换314
9.4.2关系模式的优化320
9.5物理结构设计322
9.5.1确定数据库的存储结构和存取方法322
9.5.2物理结构设计策略327
9.6数据库的实施328
9.7数据库的维护329
9.8小结330
习题330第10章数据库编程334
10.1数据库系统体系结构334
10.1.1客户机/服务器体系结构334
10.1.2浏览器/服务器体系结构335
10.2嵌入式SQL336
10.2.1数据库的连接与关闭336
10.2.2ESQL语句与主语言之间的通信337
10.2.3游标338
10.2.4动态ESQL340
10.3存储过程和函数344
10.3.1TransactSQL345
10.3.2存储过程348
10.3.3函数351
10.4数据库访问接口356
10.4.1专用数据库访问接口356
10.4.2ODBC数据库访问接口359
10.4.3OLEDB数据库访问接口362
10.4.4ADO数据库访问接口362
10.4.5ADO.NET数据库访问接口365
10.4.6JDBC数据库访问接口368
10.5小结370
习题371第11章数据库技术的发展372
11.1关系数据库技术的发展372
11.1.1关系数据库的发展历程372
11.1.2关系数据库的功能扩展374
11.2联机分析处理与数据仓库375
11.2.1联机分析处理375
11.2.2数据仓库376
11.2.3多维数据模型378
11.3分布式数据库系统380
11.3.1分布式数据库系统的概念380
11.3.2数据分布381
11.3.3分布式查询处理383
11.3.4分布式事务管理384
11.4非关系数据库387
11.4.1NoSQL技术的兴起387
11.4.2NoSQL数据模型388
11.4.3NoSQL的事务特性400
11.5小结401
习题402参考文献403
《数据库原理与应用》自出版发行以来,深受同行专家的好评和广大读者的欢迎,荣获了“第四届中国大学出版社图书奖优秀教材一等奖”。
本书是在普通高等教育“十一五”国家级规划教材《数据库原理与应用》(第2版)基础上修订改版而成的,加入了作者教学改革实践成果,融入了近年来数据库发展新技术、新进展。
《数据库原理与应用》自出版发行以来,深受同行专家的好评和广大读者的欢迎,得到了国内许多高校师生的青睐和好评,已被国内80多所高校采用,荣获“第四届中国大学出版社图书奖”优秀教材一等奖。
本书系统全面地阐述了数据库的基本理论、实现技术和设计方法。本书以教育部高等学校计算机类专业教学指导委员会和全国高等学校计算机教育研究会研制的《培养计算机类专业学生解决复杂工程问题的能力》为指导,涵盖其中“数据库原理”课程的教学内容及要求,适合作为高等院校计算机及其相关专业数据库课程的教材,也可作为从事数据库理论研究、数据库应用系统的设计与开发,以及数据库管理与维护等工作人员的参考用书。
宋金玉,陆军工程大学指挥控制工程学院教授,大学教学名师,硕士研究生导师;长期从事数据库课程的教学与学术研究工作,主持高等学校计算机教育研究会2018年度教育研究立项项目1项,在中国大学MOOC平台主讲《数据库原理与应用》课程一门,负责学校“军事大数据工程”本科新专业的建设;两次获军队院校育才奖银奖,获军队教学成果二等奖1项;主编教材4部,一部教材入选普通高等教育“十一五”国家级规划教材,并获“第四届中国大学出版社图书奖”优秀教材一等奖。