图书目录

第1部分数据库原理第1章数据库基础知识31.1数据管理技术的发展3

1.1.1数据和数据处理3

1.1.2数据管理的三个阶段3

1.2数据库的基本概念5

1.2.1数据库系统5

1.2.2数据模型7

1.2.3数据库的发展8

1.2.4数据库分类10

1.3DBMS体系结构11

习题112

第2章关系数据模型13

2.1关系模型基础13

2.1.1基本术语13

2.1.2关系的数学定义15

2.2关系代数17

2.2.1传统的集合运算17

2.2.2专门的关系运算18

2.2.3关系演算212.3基于包的关系代数22

2.3.1传统的集合运算22

2.3.2专门的关系运算23

2.4关系的三类完整性约束24

2.4.1实体完整性约束24

2.4.2参照完整性约束25

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

实验畅想数据库管理系统26目录数据库原理与实现习题228

第3章结构化查询语言SQL30

3.1SQL概述30

3.1.1SQL的标准和特点30

3.1.2SQL的术语31

3.1.3RDBMS的体系结构32

3.2数据定义32

3.2.1数据类型33

3.2.2定义基表34

3.2.3修改与删除基表38

3.3基本数据查询39

3.3.1SELECT语句的语法39

3.3.2单表查询40

3.3.3分组统计查询43

3.4连接查询45

3.4.1交叉连接45

3.4.2内连接46

3.4.3外连接47

3.4.4多表连接查询49

3.5数据更新51

3.5.1数据插入51

3.5.2数据修改52

3.5.3数据删除523.6复杂的查询条件53

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

3.6.2空值的判断55

3.6.3针对字符数据的查询56

实验SQL实验58

习题360

第4章数据库对象62

4.1视图62

4.1.1视图的概念62

4.1.2创建、删除视图63

4.1.3修改视图64

4.1.4使用视图数据64

4.2索引64

4.2.1索引的概念64

4.2.2使用索引65

4.3序列66

实验使用数据库对象684.4存储过程684.5触发器69

习题470

第5章数据的安全性72

5.1事务和锁的概念72

5.1.1事务的概念72

5.1.2事务的ACID特性73

5.1.3事务生命周期74

5.1.4锁75

5.2使用事务76

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

5.2.2显式模式77

5.2.3隐性模式77

5.2.4自动提交模式785.3特殊事务模型79

5.3.1嵌套事务79

5.3.2保存点79

5.3.3分布式事务80

实验事务的并发与隔离80

5.4SQL中的授权机制84

5.4.1用户84

5.4.2权限84

5.4.3授权85

5.4.4解除授权85

习题586

第2部分数据库设计与开发第6章关系模式的规范化896.1问题提出89

6.2函数依赖和模式分解91

6.2.1函数依赖91

6.2.2模式分解92

6.3关系范式93

6.3.1第一范式95

6.3.2第二范式96

6.3.3第三范式97

6.3.4非规范化996.4BoyceCodd范式(BCNF)100

实验规范化设计案例101

习题6102

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

7.1数据库设计的工作103

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

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

7.3.1基本ER元素108

7.3.2高级ER元素112

7.3.3建立ER模型114

7.4逻辑模式设计117

7.4.1概念模型向关系模式的转化117

7.4.2继续转化为逻辑模式1227.5选择索引123

7.5.1单个索引的收益124

7.5.2主键上的索引125

7.5.3索引的选择125

实验数据库建模实验125

习题7126

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

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

8.1.1数据库的访问127

8.1.2几种常见的体系结构128

8.1.3三层体系结构129

8.2应用程序接口130

8.2.1ODBC130

8.2.2JDBC130

实验使用ODBC连接数据库132

习题8133

第3部分DBMS的实现第9章DBMS的设计1379.1需求分析137

9.1.1关于数据量138

9.1.2关于并发度139

9.1.3CXDB教学版简介139

9.2接口设计140

9.2.1数据接口设计141

9.2.2语言接口设计141

9.2.3编程接口设计142

9.3总体设计143

9.3.1总体设计的任务143

9.3.2DBMS的一般体系结构144

9.3.3CXDBE的体系结构145

实验基于CXDBE的编程147

习题9148

第10章存储管理149

10.1数据存储技术概述149

10.1.1存储器的层次149

10.1.2磁盘的读写150

10.1.3磁盘调度151

10.1.4磁盘缓存(Disk Cache)151

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

10.1.6RAID152

10.2数据在文件中的组织153

10.2.1CXDBE文件格式154

10.2.2CXDBE的文件头格式154

10.3页的寻址155

实验CXDBE的存储管理156

习题10157

第11章数据缓冲158

11.1数据缓冲层概述158

11.1.1缓冲区的概念158

11.1.2散列表159

11.2缓冲区管理160

11.2.1文件页和缓冲区页160

11.2.2缓冲区管理的功能162

11.2.3缓冲区的大小163

11.3缓冲区替换策略163

实验CXDBE的数据缓冲165

习题11165

第12章数据操纵166

12.1记录的存储技术166

12.1.1记录在页中的存放166

12.1.2记录的寻址167

12.1.3溢出页的使用168

12.2CXDBE的数据页格式168

12.2.1数据记录格式169

12.2.2数据页格式170

 12.2.3溢出页格式171

 12.2.4空闲页格式171

12.3游标172

12.3.1游标种类172

12.3.2游标操作173

12.3.3游标结构174

实验CXDBE的记录操纵174

习题12175

第13章索引技术176

13.1索引技术概述176

13.2B树索引178

13.2.1B树的概念178

13.2.2B树的基本算法179

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

13.2.4B+树182

13.3CXDBE的索引页格式18313.4用于索引的B树算法184

13.4.1需要考虑的问题185

13.4.2算法186

实验CXDBE的索引操纵192

13.5其他索引技术193

13.5.1散列表索引193

13.5.2位图索引193

13.5.3多维索引194

习题13194

第14章查询处理195

14.1查询处理的一般过程195

14.1.1编译195

14.1.2优化197

14.1.3执行198

14.2物理查询计划操作符198

14.2.1关系的扫描198

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

14.2.3衡量代价的参数199

14.2.4两阶段多路归并排序200

14.2.5物理操作符迭代器201

14.2.6算法分类202

14.3选择操作203

14.4连接操作205

14.4.1一趟算法205

14.4.2嵌套循环连接205

14.4.3基于排序的两趟算法206

14.4.4基于散列的两趟算法208

14.4.5基于索引的算法209

14.5聚合操作210

14.5.1一趟算法210

14.5.2基于排序的两趟算法212

14.5.3基于散列的两趟算法212

14.5.4基于索引的算法21314.6关系代数的等价性定律213

14.6.1交换律和结合律213

14.6.2与选择有关的定律213

14.6.3与投影有关的定律214

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

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

14.7选择逻辑查询计划215

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

14.7.2逻辑查询计划的优化217

14.8选择物理查询计划217

习题14219

*第15章CXDBE的SQL层221

15.1SQL语句的编译221

15.1.1编译的一般步骤221

15.1.2lex与yacc介绍222

15.1.3SQL语句的语法描述223

15.1.4SQL语句的内存结构225

15.2CXDBE的查询处理226

15.2.1语义分析227

15.2.2选择查询计划228

15.2.3查询执行232

15.2.4条件表达式向索引的转化234

实验SQL层的实现235

习题15235

第16章事务管理236

16.1事务调度236

16.1.1串行调度和并行调度237

16.1.2可串行化238

16.1.3冲突可串行化239

16.2事务隔离级别240

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

16.2.2事务隔离级别242

16.3并发控制243

16.3.1并发控制的分类243

16.3.2基于锁的并发控制244

16.4锁的类型244

16.4.1共享锁与排他锁245

16.4.2锁的相容矩阵245

16.4.3锁升级246

16.4.4更新锁246

16.4.5意向锁247

16.5封锁粒度和封锁协议248

16.5.1锁的粒度248

16.5.2两段锁协议249

16.6加锁产生的问题251

16.6.1阻塞252

16.6.2死锁252

16.6.3死锁的预防252

16.6.4死锁检测与解除253

16.6.5活锁25416.7CXDB加锁的实现254

16.7.1CXDB加锁的粒度254

16.7.2CXDB表级锁的类型255

16.7.3CXDB的死锁检测与解决257

实验死锁257

习题16259

第17章故障恢复261

17.1故障恢复概述261

17.1.1故障类型261

17.1.2故障恢复262

17.2Undo日志263

17.2.1日志的概念264

17.2.2日志记录264

17.2.3使用Undo日志的恢复265

17.2.4检查点267

17.2.5模糊检查点268

17.3Redo日志268

17.3.1使用Redo日志的恢复269

17.3.2Redo日志的检查点270

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

17.4Undo/Redo日志270

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

17.4.2Undo/Redo日志的检查点271

17.5防备介质故障272

17.5.1备份类型272

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

习题17274

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

18.1数据仓库276

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

18.1.2数据仓库的特点277

18.1.3数据仓库的组成278

18.1.4新一代数据仓库279

18.2XML和XQuery280

18.2.1半结构化数据280

18.2.2XML281

18.2.3XPath282

18.2.4XQuery284

附录A人员数据库设计287

A.1表定义和表数据287

A.2创建语句288

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

B.1规章制度291

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

B.3数据库设计293

参考文献300