《数据库原理》是2019年10月清华大学出版社出版的图书,作者是赵文栋,张少娴,徐正芹,彭来献,高屹,李艾静,徐任晖,王向东,本书介绍了基本的数据库设计原理,并基于MySQL数据库对基本的关系数据库的使用进行了详细讲解。

书名

数据库原理

作者

赵文栋、张少娴、徐正芹、彭来献、高屹、李艾静、徐任晖、王向东

出版社

清华大学出版社

ISBN

9787302535942

内容简介

本书重点介绍了数据库的原理、设计与实现技术,对传统的数据库理论进行了精练,保留了核心与实用部分,并适当增加了实验内容,以突出实践能力的培养。全书由三部分共18章组成: 第一部分介绍数据库基本原理,包括数据库的基础知识、数据模型、结构化查询语言SQL和数据的安全性等内容;第二部分介绍数据库的设计与开发,包括关系模式的规范化和数据库的设计与建模等内容;第三部分讨论数据库管理系统(DBMS)的设计与实现,以一个实际的DBMS为例,介绍DBMS的设计、存储管理、数据缓冲、数据操纵、索引技术、查询处理、事务管理和故障恢复等知识。本书适合于高等院校计算机及相关专业的本科生和研究生教学使用,也可供相关领域技术人员参考。

图书目录

第一部分数据库原理

第1章数据库基础知识3

1.1数据管理技术的发展3

1.1.1数据和数据处理3

1.1.2数据管理的三个阶段4

1.2数据库的基本概念5

1.2.1数据库系统5

1.2.2数据模型8

1.2.3数据库的发展9

1.2.4数据库分类11

1.3DBMS体系结构12

习题113

第2章关系数据模型15

2.1关系模型基础15

2.1.1基本术语15

2.1.2关系的数学定义17

2.2关系代数19

2.2.1传统的集合运算20

2.2.2专门的关系运算22

2.2.3关系演算24

2.3基于包的关系代数25

2.3.1传统的集合运算25

2.3.2专门的关系运算272.4关系的三类完整性约束27

2.4.1实体完整性约束28

2.4.2参照完整性约束28

2.4.3用户自定义的完整性约束29

实验畅想数据库管理系统29

习题232

数据库原理目录第3章结构化查询语言(SQL)35

3.1SQL概述35

3.1.1SQL的标准和特点35

3.1.2SQL的术语36

3.1.3RDBMS的体系结构37

3.2数据定义38

3.2.1数据类型38

3.2.2定义基表40

3.2.3修改与删除基表44

3.3基本数据查询45

3.3.1SELECT语句的语法45

3.3.2单表查询45

3.3.3分组统计查询49

3.4连接查询51

3.4.1交叉连接51

3.4.2内连接52

3.4.3外连接53

3.4.4多表连接查询56

3.5数据更新57

3.5.1数据插入57

3.5.2数据修改58

3.5.3数据删除59

3.6复杂的查询条件60

3.6.1查询条件表达式的语法60

3.6.2空值的判断62

3.6.3针对字符数据的查询62

实验SQL实验64

习题367

第4章数据库对象69

4.1视图69

4.1.1视图的概念69

4.1.2创建和删除视图70

4.1.3修改视图71

4.1.4使用视图数据71

4.2索引72

4.2.1索引的概念72

4.2.2使用索引73

4.3序列73

实验使用数据库对象75

4.4存储过程75

4.5触发器77

习题478

第5章数据的安全性79

5.1事务和锁的概念79

5.1.1事务的概念79

5.1.2事务的ACID特性80

5.1.3事务生命周期82

5.1.4锁83

5.2使用事务83

5.2.1用户、连接和事务的关系83

5.2.2显式模式84

5.2.3隐性模式85

5.2.4自动提交模式86

5.3特殊事务模型86

5.3.1嵌套事务86

5.3.2保存点87

5.3.3分布式事务87

实验事务的并发与隔离88

5.4SQL中的授权机制92

5.4.1用户92

5.4.2权限92

5.4.3授权93

5.4.4解除授权93

习题594第二部分数据库设计与开发

第6章关系模式的规范化97

6.1问题提出97

6.2函数依赖和模式分解99

6.2.1函数依赖99

6.2.2模式分解101

6.3关系范式102

6.3.1范式104

6.3.2第二范式105

6.3.3第三范式107

6.3.4非规范化108

6.4BoyceCodd范式(BCNF)109

实验规范化设计案例111

习题6111

第7章数据库设计与建模113

7.1数据库设计的工作113

7.2数据库系统的设计方法及步骤116

7.3概念模型设计与ER模型118

7.3.1基本ER元素118

7.3.2高级ER元素123

7.3.3建立ER模型125

7.4逻辑模式设计128

7.4.1概念模型向关系模式的转换129

7.4.2继续转换为逻辑模式134

7.5选择索引135

7.5.1单个索引的收益135

7.5.2主键上的索引136

7.5.3索引的选择136

实验数据库建模实验137

习题7137

第8章数据库应用程序开发139

8.1数据库系统的体系结构139

8.1.1数据库的访问139

8.1.2几种常见的体系结构140

8.1.3三层体系结构142

8.2应用程序接口142

8.2.1ODBC143

8.2.2JDBC143

实验使用ODBC连接数据库145

习题8146

第三部分DBMS的实现

第9章DBMS的设计149

9.1需求分析149

9.1.1关于数据量150

9.1.2关于并发度151

9.1.3CXDB教学版简介152

9.2接口设计153

9.2.1数据接口设计153

9.2.2语言接口设计153

9.2.3编程接口设计154

9.3总体设计155

9.3.1总体设计的任务155

9.3.2DBMS的一般体系结构156

9.3.3CXDBE的体系结构158

实验基于CXDBE的编程160

习题9161

第10章存储管理163

10.1数据存储技术概述163

10.1.1存储器的层次163

10.1.2磁盘的读写164

10.1.3磁盘调度165

10.1.4磁盘缓存166

10.1.5提高磁盘I/O速度的方法166

10.1.6RAID167

10.2数据在文件中的组织168

10.2.1CXDBE文件格式168

10.2.2CXDBE的文件头格式169

10.3页的寻址170

实验CXDBE的存储管理171

习题10171

第11章数据缓冲173

11.1数据缓冲层概述173

11.1.1缓冲区的概念173

11.1.2散列表174

11.2缓冲区管理175

11.2.1文件页和缓冲区页175

11.2.2缓冲区管理的功能177

11.2.3缓冲区的大小178

11.3缓冲区替换策略179

实验CXDBE的数据缓冲181

习题11181

第12章数据操纵183

12.1记录的存储技术183

12.1.1记录在页中的存放183

12.1.2记录的寻址185

12.1.3溢出页的使用185

12.2CXDBE的数据页格式186

12.2.1数据记录格式186

12.2.2数据页格式187

12.2.3溢出页格式188

12.2.4空闲页格式189

12.3游标190

12.3.1游标种类190

12.3.2游标操作190

12.3.3游标结构191

实验CXDBE的记录操纵192

习题12193

第13章索引技术195

13.1索引技术概述195

13.2B树索引197

13.2.1B树的概念197

13.2.2B树的基本算法198

13.2.3B树基本算法的讨论202

13.2.4B 树203

13.3CXDBE的索引页格式204

13.4用于索引的B树算法205

13.4.1需要考虑的问题205

13.4.2算法206

实验CXDBE的索引操纵213

13.5其他索引技术214

13.5.1散列索引214

13.5.2位图索引215

13.5.3多维索引215

习题13216

第14章查询处理217

14.1查询处理的一般过程217

14.1.1编译218

14.1.2优化219

14.1.3执行220

14.2物理查询计划操作符220

14.2.1关系的扫描221

14.2.2物理操作符的代价计算模型221

14.2.3衡量代价的参数221

14.2.4两阶段多路归并排序222

14.2.5物理操作符迭代器224

14.2.6算法分类225

14.3选择操作226

14.4连接操作228

14.4.1一趟算法228

14.4.2嵌套循环连接228

14.4.3基于排序的两趟算法229

14.4.4基于散列的两趟算法231

14.4.5基于索引的算法232

14.5聚合操作233

14.5.1一趟算法234

14.5.2基于排序的两趟算法235

14.5.3基于散列的两趟算法236

14.5.4基于索引的算法236

14.6关系代数的等价性定律236

14.6.1交换律和结合律236

14.6.2与选择有关的定律237

14.6.3与投影有关的定律238

14.6.4与连接和积有关的定律238

14.6.5与分组和聚合有关的定律238

14.7选择逻辑查询计划238

14.7.1将分析树转换为关系代数表达式树239

14.7.2逻辑查询计划的优化240

14.8选择物理查询计划241

习题14242

第15章CXDBE的SQL层245

15.1SQL语句的编译245

15.1.1编译的一般步骤246

15.1.2lex与yacc介绍246

15.1.3SQL语句的语法描述248

15.1.4SQL语句的内存结构249

15.2CXDBE的查询处理250

15.2.1语义分析251

15.2.2选择查询计划252

15.2.3查询执行256

15.2.4条件表达式向索引的转换259

实验SQL层的实现259

习题15260

第16章事务管理261

16.1事务调度261

16.1.1串行调度和并行调度262

16.1.2可串行化265

16.1.3冲突可串行化266

16.2事务隔离级别267

16.2.1并行调度造成的不一致现象267

16.2.2事务隔离级别269

16.3并发控制270

16.3.1并发控制的分类270

16.3.2基于锁的并发控制270

16.4锁的类型271

16.4.1共享锁与排他锁271

16.4.2锁的相容矩阵271

16.4.3锁升级272

16.4.4更新锁273

16.4.5意向锁274

16.5封锁粒度和封锁协议275

16.5.1锁的粒度275

16.5.2两段锁协议276

16.6加锁产生的问题279

16.6.1阻塞279

16.6.2死锁280

16.6.3死锁的预防280

16.6.4死锁检测与解除281

16.6.5活锁282

16.7CXDB加锁的实现282

16.7.1CXDB加锁的粒度282

16.7.2CXDB表级锁的类型283

16.7.3CXDB的死锁检测与解决285

实验死锁285

习题16287

第17章故障恢复289

17.1故障恢复概述289

17.1.1故障类型289

17.1.2故障恢复基础290

17.2Undo日志292

17.2.1日志的概念292

17.2.2日志记录293

17.2.3使用Undo日志的恢复294

17.2.4检查点295

17.2.5模糊检查点296

17.3Redo日志297

17.3.1使用Redo日志的恢复297

17.3.2Redo日志的检查点298

17.3.3使用带检查点的Redo日志的恢复299

17.4Undo/Redo日志299

17.4.1使用Undo/Redo日志的恢复299

17.4.2Undo/Redo日志的检查点300

17.5防备介质故障301

17.5.1备份类型301

17.5.2使用备份和日志的恢复302

习题17302

第18章数据库技术的发展305

18.1数据仓库306

18.1.1数据仓库的发展与定义306

18.1.2数据仓库的特点307

18.1.3数据仓库的组成308

18.1.4新一代数据仓库309

18.2XML和XQuery310

18.2.1半结构化数据311

18.2.2XML311

18.2.3XPath313

18.2.4XQuery314

附录A人员数据库设计319

A.1表定义和表数据319

A.2创建语句321

附录B图书借阅数据库设计323

B.1规章制度323

B.2与藏书有关的需求324

B.3数据库设计325

参考文献333

作者简介

赵文栋 博士,陆军工程大学副教授,主要研究方向为计算机网络、服务计算,先后主持几十项军内外科研项目,发表学术论文60余篇。曾获多项军队科技进步奖。