《数据库系统基础 第5版》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)埃尔姆斯里(Elmasri,R.E.),(美)内瓦西(Navathe,S.B.)著;邵佩英等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2007
  • ISBN:7115164088
  • 页数:409 页
图书介绍:本书是一本讲述数据库系统原理的教材,重点强调数据库建模与设计的基础、数据库管理系统提供的语言和工具以及系统实现技术。全书共分4个部分,第一部分介绍最基本的概念、术语及建模原则,第二部分描述了关系数据模型和关系型DBMS,第三部分讨论数据库设计的一些主题,第四部分主要描述数据库系统中使用的物理文件结构和存取方法。书中涉及的内容非常广泛,包括DBMS的概念、术语和体系结构,ER模型和ER图的概念,数据抽象和语义数据建模,UML类图表示法,基本关系模型,关系代数和关系演算,SQL语言,规范化,磁盘上组织记录文件的主要方法,文件的索引技术,查询处理与优化,以及物理数据库的设计与调优。

第一部分 引言与概念建模 2

第1章 数据库与数据库用户 2

1.1 引言 2

1.2 一个示例 4

1.3 数据库方法的特征 6

1.3.1 数据库系统的自描述性 7

1.3.2 程序与数据分离和数据抽象 7

1.3.3 支持数据的多视图 9

1.3.4 数据共享和多用户事务处理 9

1.4 幕前角色 10

1.4.1 数据库管理员 10

1.4.2 数据库设计者 10

1.4.3 最终用户 10

1.4.4 系统分析员和应用程序员(软件工程师) 11

1.5 幕后工作者 11

1.6 使用DBMS方法的优势 12

1.6.1 控制冗余 12

1.6.2 限制非授权的访问 12

1.6.3 为程序对象提供持久性存储 13

1.6.4 提供高效查询处理的存储结构 13

1.6.5 提供备份与恢复 14

1.6.6 提供多用户界面 14

1.6.7 表示数据间复杂联系 14

1.6.8 确保完整性约束 14

1.6.9 允许使用规则进行推理和动作 15

1.6.10 使用数据库方法的其他含义 15

1.7 数据库应用简史 16

1.7.1 使用分层和网状系统的早期数据库应用 16

1.7.2 关系数据库提供应用灵活性 16

1.7.3 面向对象的应用和对更复杂数据库的需求 16

1.7.4 在Web上交换数据实现电子商务 17

1.7.5 为新应用扩展数据库功能 17

1.7.6 数据库与信息检索 17

1.8 什么时候不应该使用DBMS 18

1.9 小结 18

复习题 18

练习题 19

选读文献 19

第2章 数据库系统的概念和体系结构 20

2.1 数据模型、模式和实例 20

2.1.1 数据模型的分类 21

2.1.2 模式、实例和数据库状态 21

2.2 三层模式体系结构和数据独立性 23

2.2.1 三层模式体系结构 23

2.2.2 数据独立性 24

2.3 数据库语言和界面 25

2.3.1 DBMS的语言 25

2.3.2 DBMS界面 26

2.4 数据库系统的环境 27

2.4.1 DBMS的组成模块 27

2.4.2 数据库系统实用工具 29

2.4.3 工具、应用环境和通信软件 29

2.5 DBMS的集中式和客户/服务器体系结构 30

2.5.1 集中式DBMS体系结构 30

2.5.2 基本的客户/服务器体系结构 31

2.5.3 DBMS两层客户/服务器体系结构 32

2.5.4 面向Web应用的三层和n层体系结构 32

2.6 数据库管理系统的分类 33

2.7 小结 35

复习题 36

练习题 36

选读文献 37

第3章 使用实体-联系(ER)模型的数据建模 38

3.1 使用高级概念数据模型进行数据库设计 39

3.2 一个数据库应用示例 40

3.3 实体类型、实体集、属性和码 40

3.3.1 实体和属性 41

3.3.2 实体类型、实体集、码和值集 43

3.3.3 COMPANY数据库的初步概念设计 45

3.4 联系类型、联系集、角色和结构约束 46

3.4.1 联系类型、联系集和联系实例 47

3.4.2 联系度、角色名称和递归联系 48

3.4.3 联系类型的约束 49

3.4.4 联系类型的属性 50

3.5 弱实体类型 51

3.6 COMPANY数据库ER设计的改进 52

3.7 ER图、命名约定和设计问题 53

3.7.1 ER图表示法小结 53

3.7.2 模式结构的正确命名 53

3.7.3 ER概念设计的设计选择 54

3.7.4 ER图的候选表示法 55

3.8 其他表示法示例:UML类图 55

3.9 高于2度的联系类型 57

3.9.1 对二元和三元(或高度)联系的选择 57

3.9.2 三元(或高度)联系上的约束 60

3.10 小结 60

复习题 61

练习题 61

实验题 66

选读文献 66

第4章 增强的实体-联系(EER)建模 68

4.1 子类、超类和继承 68

4.2 特化和泛化 69

4.2.1 特化 69

4.2.2 泛化 71

4.3 特化和泛化层次的约束和特征 71

4.3.1 特化与泛化的约束 72

4.3.2 特化和泛化的层次和格 73

4.3.3 利用特化与泛化改进概念模型 75

4.4 采用类别的并类型建模 76

4.5 示例UNIVERSITY的EER模式设计选择和形式化定义 78

4.5.1 UNIVERSITY数据库示例 78

4.5.2 特化/泛化的设计选择 79

4.5.3 EER模型概念的形式化定义 80

4.6 其他表示法的示例:UML类图中的特化/泛化 81

4.7 数据抽象、知识表示和本体论概念 82

4.7.1 分类和实例化 82

4.7.2 标识 83

4.7.3 特化和泛化 83

4.7.4 聚集和关联 83

4.7.5 本体论和语义网 85

4.8 小结 86

复习题 86

练习题 86

实验题 91

选读文献 93

第二部分 关系模型:概念、约束、语言、设计和编程第5章 关系数据模型和关系数据库约束 96

5.1 关系模型概念 96

5.1.1 域、属性、元组和关系 97

5.1.2 关系的特性 99

5.1.3 关系模型表示法 101

5.2 关系模型约束和关系数据库模式 101

5.2.1 域约束 102

5.2.2 码约束和NULL值约束 102

5.2.3 关系数据库和关系数据库模式 103

5.2.4 实体完整性、参照完整性和外码 104

5.2.5 其他类型的约束 106

5.3 更新操作、事务和处理违例约束 107

5.3.1 插入操作 107

5.3.2 删除操作 108

5.3.3 更新操作 109

5.3.4 事务的概念 109

5.4 小结 109

复习题 110

练习题 110

选读文献 113

第6章 关系代数和关系演算 114

6.1 一元关系操作:SELECT和PROJECT 115

6.1.1 SELECT操作 115

6.1.2 PROJECT操作 116

6.1.3 操作序列和RENAME操作 117

6.2 基于集合论的关系代数操作 118

6.2.1 UNION、INTERSECTION和MINUS操作 118

6.2.2 笛卡儿积(或叉积)操作 120

6.3 二元关系操作:JOIN和DIVISION 121

6.3.1 JOIN操作 121

6.3.2 JOIN的变体EQUIJOIN和NATURAL JOIN 122

6.3.3 关系代数操作的完备集 124

6.3.4 DIVISION操作 124

6.3.5 查询树表示法 126

6.4 其他关系操作 127

6.4.1 广义投影 127

6.4.2 聚集函数和分组 127

6.4.3 递归闭包操作 128

6.4.4 OUTER JOIN操作 130

6.4.5 OUTER UNION操作 130

6.5 关系代数中的查询示例 131

6.6 元组关系演算 133

6.6.1 元组变量和值域关系 133

6.6.2 元组关系演算中的表达式与公式 134

6.6.3 存在量词与全称量词 134

6.6.4 使用存在量词的查询示例 135

6.6.5 查询图表示法 136

6.6.6 全称量词与存在量词的转换 137

6.6.7 使用全称量词 137

6.6.8 安全表达式 138

6.7 域关系演算 139

6.8 小结 140

复习题 141

练习题 141

实验题 144

选读文献 146

第7章 使用ER到关系的映射和EER到关系的映射进行关系数据库设计 147

7.1 使用ER到关系的映射进行关系数据库设计 147

7.1.1 ER到关系的映射算法 147

7.1.2 ER模型构造映射的讨论和总结 151

7.2 EER模型构造到关系的映射 152

7.2.1 特化或泛化的映射 153

7.2.2 共享子类(多重继承)的映射 154

7.2.3 类别的映射(并类型) 155

7.3 小结 156

复习题 156

练习题 156

实验题 157

选读文献 157

第8章 SQL-99:模式定义、约束、查询和视图 158

8.1 SQL数据定义和数据类型 159

8.1.1 SQL2中模式和目录的概念 159

8.1.2 SQL的CREATE TABLE命令 160

8.1.3 SQL中的属性数据类型和域 161

8.2 在SQL中定义约束 162

8.2.1 指定属性约束和属性默认值 162

8.2.2 指定码和参照完整性约束 163

8.2.3 为约束命名 164

8.2.4 使用CHECK指定元组约束 164

8.3 SQL中的模式更改语句 165

8.3.1 DROP命令 165

8.3.2 ALTER命令 165

8.4 SQL中的基本查询 166

8.4.1 基本SQL查询的SELECT-FROM-WHERE结构 166

8.4.2 多义属性名、别名和元组变量 168

8.4.3 未指定WHERE子句的查询语句和星号(*)的用法 170

8.4.4 SQL中作为集合的表 170

8.4.5 子串样式匹配和算术操作符 172

8.4.6 查询结果排序 173

8.5 更复杂的SQL查询 173

8.5.1 包含NULL和三值逻辑的比较 173

8.5.2 嵌套查询、元组与集/多集比较 174

8.5.3 关联嵌套查询 176

8.5.4 SQL中的EXISTS和UNIQUE函数 177

8.5.5 SQL中的显式集合和属性重新命名 178

8.5.6 SQL中的连接表和外连接 179

8.5.7 SQL中的聚集函数 180

8.5.8 分组:GROUP BY和HAVING子句 181

8.5.9 SQL查询的讨论与小结 183

8.6 SQL中的插入、删除和更新语句 184

8.6.1 INSERT命令 184

8.6.2 DELETE命令 185

8.6.3 UPDATE命令 186

8.7 指定约束作为断言和触发器 186

8.8 SQL中的视图(虚表) 187

8.8.1 SQL中视图的概念 187

8.8.2 SQL中的视图规范 188

8.8.3 视图的实现和更新 188

8.9 SQL的其他特性 190

8.10 小结 190

复习题 192

练习题 192

实验题 194

选读文献 195

第9章 SQL程序设计技术简介 197

9.1 数据库程序设计:问题与技术 197

9.1.1 数据库程序设计方法 198

9.1.2 阻抗失配 198

9.1.3 数据库程序设计中的典型交互序列 199

9.2 嵌入式SQL、动态SQL和SQLJ 199

9.2.1 用嵌入式SQL检索单个元组 199

9.2.2 在嵌入式SQL中使用游标检索多个元组 202

9.2.3 使用动态SQL在运行时指定查询 203

9.2.4 SQLJ:Java中嵌入SQL命令 204

9.2.5 SQLJ中使用迭代器检索多个元组 206

9.3 使用函数调用的数据库程序设计:SQL/CLI和JDBC 207

9.3.1 以C语言为宿主语言,使用SQL/CLI进行数据库程序设计 208

9.3.2 JDBC:面向Java程序设计的SQL函数调用 211

9.4 数据库存储过程与SQL/PSM 214

9.4.1 数据库存储过程和函数 214

9.4.2 SQL/PSM:扩展SQL以指定持久存储模块 215

9.5 小结 216

复习题 216

练习题 216

实验题 217

选读文献 218

第三部分 数据库设计理论和方法学第10章 函数依赖和关系数据库的规范化 220

10.1 关系模式的非形式化设计准则 221

10.1.1 给予关系中的属性以清晰的语义 221

10.1.2 元组中的冗余信息和更新异常 223

10.1.3 元组中的NULL值 225

10.1.4 生成寄生元组 226

10.1.5 总结和讨论设计准则 227

10.2 函数依赖 228

10.2.1 函数依赖的定义 228

10.2.2 函数依赖的推理规则 229

10.2.3 函数依赖集的等价 232

10.2.4 最小函数依赖集 232

10.3 基于主码的范式 233

10.3.1 关系的规范化 233

10.3.2 范式的实际使用 234

10.3.3 码的定义和参与码的属性 234

10.3.4 第一范式 235

10.3.5 第二范式 238

10.3.6 第三范式 239

10.4 第二范式和第三范式的通用定义 239

10.4.1 第二范式的通用定义 240

10.4.2 第三范式的通用定义 241

10.4.3 解释第三范式的通用定义 241

10.5 Boyce-Codd范式 241

10.6 小结 243

复习题 244

练习题 244

实验题 247

选读文献 248

第11章 关系数据库设计算法和其他依赖 249

11.1 关系分解的性质 250

11.1.1 关系分解和范式的不足 250

11.1.2 分解的依赖保持性质 250

11.1.3 分解的非加性(无损)连接性质 251

11.1.4 检验二元分解的非加性连接性质 253

11.1.5 连续非加性连接分解 254

11.2 关系数据库模式设计算法 254

11.2.1 依赖保持分解成3NF模式 254

11.2.2 非加性连接分解成BCNF模式 255

11.2.3 依赖保持和非加性(无损)连接分解成3NF模式 256

11.2.4 NULL值和悬挂元组问题 258

11.2.5 规范化算法的讨论 258

11.3 多值依赖和第四范式 261

11.3.1 多值依赖的形式化定义 261

11.3.2 函数依赖和多值依赖的推理规则 263

11.3.3 第四范式 263

11.3.4 非加性连接分解成4NF关系 264

11.4 连接依赖和第五范式 265

11.5 包含依赖 266

11.6 其他依赖和范式 267

11.6.1 模板依赖 267

11.6.2 域-码范式 268

11.7 小结 268

复习题 268

练习题 269

实验题 270

选读文献 270

第12章 实际数据库设计方法学和UML图的使用 271

12.1 组织中信息系统的角色 271

12.1.1 使用数据库系统的组织环境 271

12.1.2 信息系统的生命周期 273

12.1.3 数据库应用系统的生命周期 274

12.2 数据库设计与实现过程 275

12.2.1 第1阶段:需求汇集和分析 276

12.2.2 第2阶段:概念数据库设计 277

12.2.3 第3阶段:DBMS的选择 284

12.2.4 第4阶段:数据模型映射(逻辑数据库设计) 285

12.2.5 第5阶段:物理数据库设计 286

12.2.6 第6阶段:数据库系统的实现和调优 286

12.3 使用UML图作为数据库设计规范说明的辅助工具 287

12.3.1 UML作为设计规范说明的标准 287

12.3.2 将UML用于数据库应用设计 287

12.3.3 各种UML图 288

12.3.4 建模和设计的示例:UNIVERSITY数据库 291

12.4 基于UML的设计工具:Rational Rose 293

12.4.1 面向数据库设计的Rational Rose 293

12.4.2 Rational Rose Data Modeler 293

12.4.3 使用Rational Rose Data Modeler的数据建模 294

12.5 自动化数据库设计工具 297

12.6 小结 299

复习题 299

选读文献 300

第四部分 数据存储、索引、查询处理和物理设计第13章 磁盘存储、基本文件结构和散列 304

13.1 概述 304

13.1.1 存储层次和存储设备 304

13.1.2 数据库的存储 305

13.2 二级存储设备 306

13.2.1 磁盘设备的硬件描述 306

13.2.2 磁带存储设备 310

13.3 块缓冲 311

13.4 把文件记录保存在磁盘上 312

13.4.1 记录和记录类型 312

13.4.2 文件、定长记录和变长记录 313

13.4.3 记录块、跨块记录与非跨块记录 314

13.4.4 在磁盘上分配文件块 315

13.4.5 文件首部 315

13.5 文件操作 315

13.6 无序记录文件(堆文件) 317

13.7 有序记录文件(排序文件) 318

13.8 散列技术 320

13.8.1 内部散列 321

13.8.2 磁盘文件的外部散列法 323

13.8.3 允许动态文件扩展的散列技术 324

13.9 其他主文件组织 327

13.9.1 混合记录文件 327

13.9.2 B树和其他数据结构作为主组织 327

13.10 使用RAID技术的并行磁盘访问 327

13.10.1 用RAID增强可靠性 328

13.10.2 用RAID改善性能 329

13.10.3 RAID组织体系和级别 329

13.11 新的存储系统 331

13.11.1 存储局域网 331

13.11.2 网络连接存储 331

13.12 小结 332

复习题 332

练习题 333

选读文献 335

第14章 文件的索引结构 336

14.1 单级有序索引的类型 336

14.1.1 主索引 337

14.1.2 聚簇索引 339

14.1.3 辅助索引 339

14.1.4 小结 344

14.2 多级索引 344

14.3 使用B树与B+树的动态多级索引 346

14.3.1 搜索树和B树 347

14.3.2 B+树 350

14.4 多码上的索引 357

14.4.1 多属性上的有序索引 357

14.4.2 分区散列法 357

14.4.3 网格文件 358

14.5 其他类型的索引 358

14.5.1 使用散列和其他数据结构作为索引 358

14.5.2 逻辑索引与物理索引 359

14.5.3 讨论 359

14.6 小结 359

复习题 360

练习题 360

选读文献 362

第15章 查询处理和优化的算法 363

15.1 把SQL查询转换成关系代数 364

15.2 外排序算法 365

15.3 SELECT与JOIN操作的算法 366

15.3.1 SELECT操作的实现 366

15.3.2 JOIN操作的实现 369

15.4 PROJECT和集合操作的算法 374

15.5 聚集操作和外连接的实现 375

15.5.1 聚集操作的实现 375

15.5.2 外连接的实现 375

15.6 用流水线组合操作 376

15.7 在查询优化中使用启发式规则 376

15.7.1 查询树和查询图的表示法 377

15.7.2 查询树的启发式优化 378

15.7.3 将查询树转换为查询执行计划 383

15.8 利用选择性和代价估算进行查询优化 383

15.8.1 查询执行的代价成分 383

15.8.2 代价函数中使用的目录信息 384

15.8.3 SELECT操作的代价函数示例 384

15.8.4 JOIN的代价函数示例 386

15.8.5 多关系查询和连接顺序 387

15.8.6 说明基于代价的查询优化的示例 388

15.9 Oracle中的查询优化概述 390

15.10 语义查询优化 390

15.11 小结 391

复习题 391

练习题 391

选读文献 392

第16章 物理数据库设计和调优 393

16.1 关系数据库中的物理数据库设计 393

16.1.1 影响物理数据库设计的因素 393

16.1.2 物理数据库设计决策 394

16.2 关系系统中的数据库调优概述 396

16.2.1 索引的调优 396

16.2.2 数据库设计的调优 397

16.2.3 查询的调优 398

16.2.4 其他的查询调优原则 399

16.3 小结 400

复习题 400

选读文献 400

附录A ER模型的可选图形表示法 401

附录B 磁盘参数 403

附录C QBE语言概述 405