新書推薦:
《
千万别喝南瓜汤(遵守规则绘本)
》
售價:NT$
204.0
《
大模型启示录
》
售價:NT$
510.0
《
东法西渐:19世纪前西方对中国法的记述与评价
》
售價:NT$
918.0
《
养育男孩:官方升级版
》
售價:NT$
230.0
《
小原流花道技法教程
》
售價:NT$
500.0
《
少女映像室 唯美人像摄影从入门到实战
》
售價:NT$
505.0
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:NT$
398.0
《
武当内家散手
》
售價:NT$
230.0
|
編輯推薦: |
本书介绍了基本的数据库设计原理,并基于MySQL数据库对基本的关系数据库的使用进行了详细讲解。全书共有9章,分别介绍了数据库基础知识、数据库设计的原理和方法、MySQL数据库基础知识、数据库的基本对象及相关操作、数据库的查询语句、存储过程与触发器的基本使用方法、用户与权限管理、数据的备份与恢复、数据库设计综合案例。本书内容翔实、语言流畅、图文并茂、突出实用性,并提供了大量的操作示例和代码,较好地将学习与应用结合在一起。本书提供配套的电子教学课件、源代码、习题参考答案等资源。
|
內容簡介: |
本书重点介绍了数据库的原理、设计与实现技术,对传统的数据库理论进行了精练,保留了核心与实用部分,并适当增加了实验内容,以突出实践能力的培养。全书由三部分共18章组成: *部分介绍数据库基本原理,包括数据库的基础知识、数据模型、结构化查询语言SQL和数据的安全性等内容;第二部分介绍数据库的设计与开发,包括关系模式的规范化和数据库的设计与建模等内容;第三部分讨论数据库管理系统DBMS的设计与实现,以一个实际的DBMS为例,介绍DBMS的设计、存储管理、数据缓冲、数据操纵、索引技术、查询处理、事务管理和故障恢复等知识。 本书适合于高等院校计算机及相关专业的本科生和研究生教学使用,也可供相关领域技术人员参考。
|
關於作者: |
赵文栋 博士,陆军工程大学副教授,主要研究方向为计算机网络、服务计算,先后主持几十项军内外科研项目,发表学术论文60余篇。曾获多项军队科技进步奖。
|
目錄:
|
第一部分数据库原理
第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章结构化查询语言SQL35
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.4BoyceCodd范式BCNF109
实验规范化设计案例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.3CXDBE的体系结构158
实验基于CXDBE的编程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提高磁盘IO速度的方法166
10.1.6RAID167
10.2数据在文件中的组织168
10.2.1CXDBE文件格式168
10.2.2CXDBE的文件头格式169
10.3页的寻址170
实验CXDBE的存储管理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
实验CXDBE的数据缓冲181
习题11181
第12章数据操纵183
12.1记录的存储技术183
12.1.1记录在页中的存放183
12.1.2记录的寻址185
12.1.3溢出页的使用185
12.2CXDBE的数据页格式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
实验CXDBE的记录操纵192
习题12193
第13章索引技术195
13.1索引技术概述195
13.2B树索引197
13.2.1B树的概念197
13.2.2B树的基本算法198
13.2.3B树基本算法的讨论202
13.2.4B 树203
13.3CXDBE的索引页格式204
13.4用于索引的B树算法205
13.4.1需要考虑的问题205
13.4.2算法206
实验CXDBE的索引操纵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章CXDBE的SQL层245
15.1SQL语句的编译245
15.1.1编译的一般步骤246
15.1.2lex与yacc介绍246
15.1.3SQL语句的语法描述248
15.1.4SQL语句的内存结构249
15.2CXDBE的查询处理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.7CXDB加锁的实现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.4UndoRedo日志299
17.4.1使用UndoRedo日志的恢复299
17.4.2UndoRedo日志的检查点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
|
內容試閱:
|
数据库是计算机专业公认比较枯燥难学的一门课程,但又是绝对重要和必须学好的基础理论。它的重要性不仅在于数据库技术本身不可替代的重要价值,还在于贯穿其中的计算机科学的理论精华和思维模式。对于广大读者来说,学习数据库相关知识是构筑自身计算机理论体系,建立计算机思维的必要训练过程。
真正掌握数据库知识需要大量的理论学习与实践。本书选取数据库理论的精要内容,并突出实验环节,追求的目标是在尽可能短的时间内,使读者清晰了解数据库的完整概念框架,理解其核心理论的本质,并通过实际动手操作真正掌握数据库原理的要义,在此基础上培养优秀数据库开发者应具备的全面素质,从而推开数据库开发殿堂的大门。
1. 目标读者群
本书适合于计算机及相关专业的本科生和研究生教学使用,也可作为软件开发人员包括但不限于数据库开发人员的技术参考书。希望本书的出版能够为计算机专业学生以及所有计算机爱好者提供一个快速学习数据库入门知识的渠道。
2. 学习理念与途径
数据库的应用方式有多种,学习的目的也有所不同。对数据库开发人员,主要有两类情形,一类是以管理大量结构化数据为目的,完成信息系统的开发。在网络化和SOA架构普及的今天,很少有应用或服务能够离开后台数据的支持,这是数据库应用的主要方式。另一类是对数据库技术的应用,典型的情形就是内嵌式数据库,这类应用的场合越来越多,很多系统内部都会内嵌一个精巧的数据库来实现数据的高效管理操作,或利用数据库管理系统的设计实现思想来开发其他专用系统。不论何种应用方式,能否获得成功越来越取决于开发者对数据库原理本身的掌握程度。因此本书在学习理念上,更推崇在深入理解理论知识基础上的应用开发,使开发者不但知其然,还要知其所以然,从而能够以最合理的技术实现开发目标。
在本书的撰写过程中,特别研究借鉴了国外优秀数据库教材和课程的教学经验。对比以往国内在数据库教学方面的做法,明显感觉我们常常满足于平铺直叙地讲解理论,而忽视了通过实践让学生主动掌握知识这条重要的学习途径。很多学生感觉数据库理论十分抽象,主要原因一方面是对数据结构等基本理论的学习不够清晰,更重要的是忽视了数据库的操作实践,特别是对数据库实现原理的实验性剖析。当你要学习和研究一个系统时,最有效的办法是把自己置于原创者的位置,从设计的角度提出、思考和解决问题,这样会更敏锐和直接地接触所涉及知识的本质,从而专注于系统实现的原理,而非被动地接受和理解系统封装后的功能。本书一个重要的宗旨就是带读者进入到数据库内部去看看,将读者置于数据库设计者的位置进行研究性的学习。
数据库原理前言3. 本书特色
本书将数据库原理及与设计实现关系最为密切的理论知识精心抽取出来,重点讲解并辅以实验代码,以尽可能降低学习难度。而增加实验内容,目的是为了让读者更快形成对数据库总体架构的直观认识,并能专注于核心概念的理解。注重数据库原理与数据库实现技术的结合,在本书的第三部分专门安排了与数据库管理系统DBMS设计相关的内容,特别是精心准备了一个典型的精简型DBMS的源代码,作为开放资源供读者研究和实验。跟随这个实验性系统的实现过程,读者将能够真正了解数据库系统内部的实现机理。这一收获对于数据库应用开发者也是有益的,带来的直接好处是能够洞察数据库应用系统开发中不同实现方法在技术本质上的区别,更容易设计出高效、稳固的系统。例如,在探究了数据存储管理、索引、查询优化等一系列技术实现细节之后,您将有能力在对海量数据进行复杂查询时,找到快速获得结果的最佳方案。
4. 使用本书的建议
本书内容兼顾数据库初学者和有一定开发经验的读者。为了让所有读者都能在这本书中学有所获并享受学习的乐趣,对于本书的使用有以下建议:
对于课程教学,建议从最基本的数据库理论讲起,包括数据模型和数据库体系结构等,这部分内容篇幅不大,即使以前学过,再复习一遍也不会感到乏味并能有所收获。具体安排上,本科生侧重第一、二部分,研究生侧重第二、三部分。程序设计爱好者可从头开始研读,并可在任何一章停止,都会有所收获。其中带有星号的部分章节为选修内容,供读者拓展阅读。
本书编写力求严谨,每个术语的使用都经过认真思考,希望读者在进行理论学习时也能秉承严谨作风,从细节入手,深入研究。
本书的实验用DBMS选用我们自行开发的畅想数据库管理系统CXDB。CXDB是一个小型、内嵌式的数据库管理系统,小巧易用,免安装维护,特别适合数据库的入门学习。CXDB的SQL语句的语法与Oracle极其相似但有所简化,执行结果也与Oracle几乎完全相同。CXDB的管理工具CXDBManager是绿色软件,免安装,用它来做演示和实验都很方便。即使对于有数据库使用和开发经验的读者,CXDB也是比较新颖的内容,不会产生学习的枯燥感。当然读者也可以选用任何一个主流的DBMS产品作为实验环境。无论如何,强烈建议读者在实际的数据库环境中完成实验操作,不仅包括通用的数据库原理实验,还包括作者精心设计的、与CXDB有关的研究和实验。
对于本书所列参考资料,建议读者在系统学习本书的同时随时查阅,对有精力和兴趣的读者,建议有选择地对所列书目进行深入阅读。
特殊说明部分书中灰色背景的部分为特殊说明,其内容一般是解释性的。数据库相关的理论比较抽象,作者试图用解释性的语言进一步说明问题,以方便读者理解。其中有的类比不一定贴切,有些内容仅代表作者本人的观点,供读者参考。另外,特殊说明部分中的有些内容是综合论述,不一定限于所在章节,涉及的某些概念可能会在后续章节中深入讨论。
作者
2019年2月
|
|