《数据库系统原理》对数据库系统的概念、原理、技术和方法进行了系统和全面的阐述。全书共分17章,其中,第1~3章介绍了数据库的基本概念,包括数据库的发展过程、数据库的系统结构、数据模型和关系代数等;第5~9章对数据库管理系统中的查询优化、数据库安全性和完整性、数据库的恢复技术、并发控制等内容进行了阐述;第10章和第11章分别是数据库设计理论和数据库设计方法;第4章和第12章分别介绍了标准的SQL语言和SQL Server的Transact-SQL语言编程;第13章介绍了数据库的存储技术;第14~17章是数据库新技术的内容,分别介绍了分布式数据库、面向对象数据库、多媒体数据库、空间数据库、XML数据库等。
《数据库系统原理》在介绍理论的同时对SQL Server数据库中的具体实现进行了简要的描述,以达到理论与实际相结合的目的。
《数据库系统原理》可以作为高等学校计算机专业、信息管理与信息系统等相关专业数据库原理课程的教材,也可作为从事数据库系统研究、开发和应用的研究人员和工程技术人员的参考书。
数据库技术是计算机科学领域中发展最快、应用最广泛的技术之一。自20世纪60年代末以来,在40年的发展历程中,数据库技术的研究和应用取得了巨大的成就。数据库技术被广泛应用于管理各种信息,已成为当今计算机信息系统的基础和核心,成为管理和利用信息资源不可缺少的工具。
数据库技术的广泛应用受到了人们的极大关注,学习和了解数据库技术成了广大科技工作者、管理人员和数据库使用者的共同需要。数据库是计算机专业大学生的必修课之一,非计算机专业的学生也需要学习和应用数据库技术来解决本专业的问题。从这些需求出发,作者编写了这本数据库系统原理教材。
本书是作者在多年从事教学和科研的基础上编写成的。在编写和组织内容时,注重了内容的全面性和实用性。本书内容包括数据模型、数据库语言、数据库的实现技术、数据库的设计理论和技术、数据库的存储结构等。除了介绍数据库的基础知识和技术外,还介绍了数据库的新技术,力求使读者能够全面了解数据库涉及的概念、原理、方法和技术,了解数据库技术的发展和研究成果。书中的大部分示例结合了商用数据库管理系统SQL Server数据库。从实用性出发,在介绍基本SQL语句功能的基础上,进一步介绍了这些命令语句的实际应用,以帮助读者加深对SQL语句的理解和应用。在数据库设计部分,介绍了实用的IDEF1X数据建模方法,这在同类教材中很少见。书中结合实际示例介绍了数据库系统的数据建模过程。
全书共分17章,第1章数据库系统引论,介绍数据处理技术的发展、数据库系统结构和数据库管理系统等涉及的基本概念;第2章数据模型,介绍E-R模型、层次模型和网状模型、关系模型和面向对象模型中的基本概念;第3章关系数据库,介绍关系数据库涉及的基本概念及对关系的各种运算;第4章关系数据库标准语言SQL,介绍SQL语言涉及的基本概念和SQL语言的主要功能;第5章查询处理和优化,介绍关系数据库的查询处理和查询优化技术;第6章至第9章,介绍数据库保护技术,分别介绍了数据库安全性概念和数据库采用的各种安全性措施、数据库完整性概念和完整性约束机制、数据库恢复技术和数据库并发控制技术,并介绍了实际数据库管理系统中所采用的各种数据保护技术;第10章至第12章介绍数据库设计理论和设计方法,结合SQL Server数据库介绍了数据库编程中的基本概念和方法;第13章数据库的存储结构,介绍数据库存储技术,包括记录的存储结构和数据库中使用的各种文件的存储结构;第14章至第17章介绍数据库的新技术,重点介绍了分布式数据库、对象和对象关系数据库、多媒体数据库、空间数据库、XML数据库等,并简要介绍了其他数据库的新技术和新应用。
本书在编写过程中注意取材合理,尽量反映国内外最新研究成果,力求做到理论联系实际,概念清晰,通俗易懂,以便于自学。
本书可作为大专院校数据库课程的使用教材,1~13章为本科生教学的基本内容,建议学时48~64,其中带*的部分为非主讲内容,其他章节可供本科生、研究生作为参考。本书也可作为从事数据库系统研究、开发和应用的研究人员和工程技术人员的参考书。
参加本书编写的人员和章节: 第1章~第4章和第10章由周志逵编写,第5章~第7章由孙新编写,第8章和第9章由陆耀编写,第11章、第12章、第16章和第17章由郭贵锁编写,第13章~第15章由张文耀编写。周志逵对全书内容进行了统稿和审定。
在本书的编写过程中,2006级研究生陈银美等参与了书稿的部分编辑工作,在此表示衷心的感谢。
由于作者水平有限,书中难免存在许多不足之处,恳请读者批评指正。
作 者
第1章 数据库系统引论1
1.1 数据管理技术的发展1
1.1.1 人工管理阶段1
1.1.2 文件系统阶段2
1.1.3 数据库系统阶段3
1.2 什么是数据库5
1.3 数据模型6
1.4 数据库系统结构7
1.4.1 数据库系统的三级模式结构8
1.4.2 三级模式结构的二级映像9
1.5 数据库管理系统9
1.5.1 数据库管理系统的功能9
1.5.2 数据库管理系统的组成12
1.5.3 数据库系统的工作过程12
1.6 数据库系统的不同视图13
1.7 数据库技术的发展15
1.8 小结16
习题16
第2章 数据模型18
2.1 E-R概念模型18
2.1.1 E-R数据模型中的基本概念18
2.1.2 E-R数据模型21
2.2 层次数据模型25
2.3 网状数据模型26
2.4 关系数据模型28
2.4.1 关系模型的基本概念和结构28
2.4.2 关系模型的数据完整性约束30
2.4.3 关系模型的数据操纵30
2.4.4 关系模型与网状和层次模型的比较31
2.5 面向对象数据模型32
2.6 小结33目录数据库系统原理 习题34
第3章 关系数据库35
3.1 关系模型的基本概念35
3.1.1 关系的定义35
3.1.2 关系模式和关系数据库37
3.1.3 键37
3.1.4 完整性约束38
3.2 关系代数39
3.2.1 传统的集合运算40
3.2.2 专门的关系运算41
3.2.3 扩充的关系运算44
3.2.4 举例46
3.2.5 ISBL语言47
3.3 元组关系演算48
3.3.1 元组关系演算简介48
3.3.2 元组关系演算语言ALPHA50
3.4 域关系演算52
3.4.1 域关系演算简介52
3.4.2 域关系演算语言QBE53
3.4.3 关系运算的安全限制和三种关系运算的等价性56
3.5 小结58
习题58
第4章 关系数据库标准语言SQL60
4.1 SQL简介60
4.2 SQL的系统结构61
4.3 SQL的数据定义61
4.3.1 SQL模式的定义和删除62
4.3.2 基本表的定义、修改和删除62
4.3.3 索引的建立和删除65
4.4 SQL的数据操纵66
4.4.1 数据查询66
4.4.2 数据更新74
4.5 SQL中的视图76
4.5.1 视图的定义77
4.5.2 视图上的操作78
4.5.3 视图的优点80
4.6 SQL的数据控制81
4.6.1 授权82
4.6.2 权限回收83
4.7 嵌入式SQL83
4.7.1 嵌入式SQL与主语言的接口84
4.7.2 不用游标的嵌入式SQL85
4.7.3 用游标的嵌入式SQL87
4.7.4 嵌入式SQL 应用实例89
4.7.5 动态SQL91
4.8 小结92
习题92
第5章 查询处理和查询优化94
5.1 关系数据库系统的查询处理94
5.1.1 查询处理过程94
5.1.2 执行查询操作的基本算法95
5.2 关系数据库系统的查询优化99
5.2.1 查询优化技术99
5.2.2 查询优化实例100
5.3 代数优化102
5.3.1 关系代数表达式的等价变换规则103
5.3.2 代数优化策略105
5.3.3 代数优化算法105
5.4 基于存取路径的优化108
5.5 基于代价估算的优化109
5.5.1 选择操作的代价估算110
5.5.2 连接操作的代价估算111
5.6 小结112
习题112
第6章 数据库的安全性114
6.1 计算机安全性概述114
6.2 数据库安全性概述116
6.3 用户标识与鉴别117
6.4 存取控制118
6.4.1 自主存取控制118
6.4.2 强制存取控制123
6.5 视图机制124
6.6 数据加密126
6.7 数据库审计127
6.8 统计数据库的安全性127
6.9 SQL Server的安全控制128
6.9.1 SQL Server的安全体系结构128
6.9.2 登录管理129
6.9.3 数据库用户管理131
6.9.4 权限管理132
6.9.5 角色管理134
6.9.6 审计136
6.10 小结137
习题138
第7章 数据库的完整性139
7.1 数据库的完整性概述139
7.1.1 完整性约束条件139
7.1.2 实现数据完整性的方法141
7.2 实体完整性141
7.2.1 实体完整性的定义142
7.2.2 实体完整性检查和违约处理143
7.3 参照完整性143
7.4 用户定义的完整性146
7.5 触发器148
7.6 SQL Server中数据库完整性的实现152
7.7 小结157
习题158
第8章 数据库恢复技术160
8.1 事务的基本概念和特征160
8.1.1 事务的基本概念160
8.1.2 事务特征160
8.1.3 事务状态162
8.1.4 事务原子性和持久性的实现163
8.1.5 事务的并发运行163
8.2 数据库恢复的必要性164
8.3 数据库恢复策略164
8.4 数据转储与恢复166
8.5 基于日志的数据库恢复168
8.5.1 数据库系统日志文件168
8.5.2 使用日志恢复数据库168
8.6 检查点恢复技术171
8.7 数据库镜像恢复技术172
8.8 SQL Server的数据恢复机制173
8.8.1 SQL Server 中的事务173
8.8.2 备份和恢复174
8.9 小结179
习题180
第9章 并发控制181
9.1 并发事务运行存在的异常问题181
9.2 并发调度的可串行性183
9.2.1 可串行化调度183
9.2.2 调度的冲突等价性184
9.2.3 调度的状态等价性185
9.2.4 调度的可串行性测试186
9.3 基于封锁的并发控制技术187
9.3.1 锁187
9.3.2 封锁协议188
9.3.3 活锁189
9.3.4 死锁190
9.3.5 两阶段封锁协议192
9.3.6 锁表192
9.4 多粒度封锁194
?*9.5 基于时间戳协议的并发控制196
9.5.1 时间戳196
9.5.2 时间戳协议196
?*9.6 基于有效性确认的并发控制198
9.7 插入与删除操作对并发控制的影响200
9.8 SQL Server中的并发控制202
9.8.1 事务的隔离级别202
9.8.2 专用锁203
9.8.3 锁的使用与管理204
9.9 小结205
习题206
第10章 关系数据库设计理论208
10.1 关系模型的存储异常208
10.2 函数依赖210
10.2.1 函数依赖的定义210
10.2.2 函数依赖的蕴涵性212
10.3 函数依赖公理212
10.3.1 Armstrong公理212
10.3.2 函数依赖集的等价和覆盖216
10.4 模式分解218
10.4.1 无损连接分解219
10.4.2 分解的保持依赖性222
10.5 关系模式的规范化223
10.5.1 第一范式224
10.5.2 第二范式(2NF)225
10.5.3 第三范式226
10.5.4 Boyce-Codd范式(BCNF)227
10.5.5 模式分解算法228
10.6 多值依赖和4NF230
10.6.1 多值依赖230
10.6.2 4NF233
?*10.7 连接依赖和投影-连接范式(Project-Join NF)234
10.7.1 连接依赖234
10.7.2 投影-连接范式(Project-Join NF)235
10.8 小结236
习题236
第11章 数据库设计238
11.1 数据库设计方法238
11.2 数据模型与数据建模240
11.3 IDEF1X数据建模方法242
11.3.1 数据模型的结构243
11.3.2 逻辑模型243
11.3.3 物理模型244
11.4 IDEF1X的语法和语义244
11.5 IDEF1X建模过程250
11.5.1 阶段0--设计的开始250
11.5.2 阶段1--定义实体251
11.5.3 阶段2--定义联系252
11.5.4 阶段3--定义键253
11.5.5 阶段4--定义属性254
11.6 ERwin数据建模254
11.6.1 ERwin的工作空间254
11.6.2 建立实体联系255
11.6.3 两个实体的多个联系的处理256
11.6.4 递归联系258
11.6.5 分类联系258
11.6.6 使用域简化数据类型的设置260
11.6.7 将数据模型导入到数据库261
11.7 合同管理系统数据建模263
11.7.1 合同管理应用需求263
11.7.2 合同管理应用系统功能需求265
11.7.3 实体的确定267
11.7.4 联系的确定267
11.7.5 确定属性268
11.8 小结269
习题269
第12章 数据库编程271
12.1 Transact-SQL271
12.1.1 Transact-SQL元素272
12.1.2 过程的类型275
12.1.3 变量和参数277
12.1.4 控制流程277
12.1.5 错误处理278
12.2 Transact-SQL游标280
12.2.1 游标的基本概念与操作281
12.2.2 处理游标中的行283
12.3 Transact-SQL存储过程285
12.3.1 什么是存储过程285
12.3.2 存储过程的类型286
12.3.3 设计与实现存储过程287
12.4 Transact-SQL用户定义函数290
12.4.1 多语句表值函数292
12.4.2 标量函数293
12.4.3 内联表值函数294
12.5 Transact-SQL触发器295
12.5.1 Transact-SQL触发器基本概念295
12.5.2 DML触发器296
12.5.3 deleted表和inserted表297
12.5.4 AFTER触发器297
12.5.5 INSTEAD OF触发器300
12.6 ADO.NET303
12.6.1 数据提供程序306
12.6.2 数据集308
12.7 小结309
习题310
第13章 数据库的存储结构311
13.1 数据库存储设备311
13.1.1 物理存储设备概述311
13.1.2 存储器的层次结构312
13.1.3 数据库的存储体系313
13.1.4 磁盘容错技术314
13.2 记录的存储结构315
13.3 文件的存储结构317
13.3.1 无序文件318
13.3.2 顺序文件319
13.3.3 散列文件320
13.3.4 多表聚集文件322
13.4 索引文件323
13.4.1 索引概述323
13.4.2 稀疏索引和稠密索引325
13.4.3 聚集索引和辅助索引325
13.4.4 ?B?+树索引327
13.4.5 散列索引330
13.5 典型DBMS的存储结构331
13.5.1 SQL Server的存储结构331
13.5.2 Oracle的存储结构332
13.6 小结333
习题334
第14章 分布式数据库系统335
14.1 分布式数据库系统概述335
14.1.1 分布式数据库系统的定义335
14.1.2 分布式数据系统的基本特征336
14.1.3 分布式数据库系统的组成337
14.1.4 分布式数据库的模式结构338
14.1.5 分布式数据库系统的分类339
14.2 数据分布和分布透明性339
14.2.1 数据分片339
14.2.2 数据分布340
14.2.3 分布透明性341
14.3 分布式查询处理和优化343
14.3.1 分布式查询的分类343
14.3.2 分布式查询处理过程344
14.3.3 分布式查询优化345
14.4 分布式事务管理347
14.4.1 分布式事务恢复348
14.4.2 分布式并发控制350
14.5 分布式目录管理352
14.6 小结352
习题353
第15章 对象和对象关系数据库354
15.1 概述354
15.2 面向对象数据库356
15.2.1 面向对象数据模型357
15.2.2 面向对象数据库语言359
15.2.3 面向对象数据库系统362
15.3 对象关系数据库363
15.3.1 对象关系数据模型363
15.3.2 对象关系数据库系统368
15.4 小结368
习题368
第16章 多媒体数据库369
16.1 多媒体数据库的特点369
16.2 系统体系结构370
16.2.1 多媒体数据库系统的层次结构370
16.2.2 多媒体数据库系统的组织结构371
16.3 多媒体数据模型373
16.3.1 数据模型的需求373
16.3.2 通用数据模型373
16.4 多媒体数据的查询374
16.5 特征提取、索引和相似性度量376
16.6 QoS保证377
16.7 多媒体数据库的实现378
16.8 其他问题380
16.9 小结381
习题382
第17章 数据库新技术与新应用383
17.1 数据库新技术384
17.1.1 面向对象数据库384
17.1.2 实时数据库385
17.1.3 主动数据库386
17.1.4 分布式数据库386
17.1.5 数据挖掘387
17.1.6 多媒体数据库387
17.2 并行数据库387
17.2.1 并行数据库系统的体系结构387
17.2.2 并行处理技术389
17.2.3 商用并行数据库系统的并行策略390
17.3 主动数据库391
17.4 空间数据库395
17.4.1 基本概念395
17.4.2 空间数据操作398
17.4.3 空间数据建模398
17.4.4 空间数据索引400
17.5 XML数据库401
17.5.1 原生XML数据库402
17.5.2 XML数据库的研究问题405
17.6 小结407
习题407
参考文献408