当前位置:首页 > 工业技术
数据库-模型、语言与设计
数据库-模型、语言与设计

数据库-模型、语言与设计PDF电子书下载

工业技术

  • 电子书积分:18 积分如何计算积分?
  • 作 者:(美)James L.Johnson著;李天柱等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2004
  • ISBN:7505393359
  • 页数:633 页
图书介绍:本书详细讲解了数据库的基本理论和技术,包括数据模型、查询结构、存储结构、逻辑设计以及与实现和性能有关的问题,如开发、恢复、安全和优化等。全书分四个部分,共20章,每章后面附有小结和练习。此书的最大特点是对数据模型做了较全面的论述,讲解了5种数据模型:关系模型、面向对象模型、逻辑模型、网状模型、层次模型。每种数据模型都围绕数据模型的三要素来讲解,并对不同数据模型进行了比较分析;此外,还讲述了不同数据模型的存储结构。关系模型是现在流行的数据模型;面向对象模型和逻辑模型在20世纪80年代至90年代形成,虽然没有流行起来,但其不少研究成果被关系模型所吸收;网状模型和层次模型已成为历史,但在数据库新技术的研究中继续发挥着借鉴作用。
上一篇:人工智能下一篇:企业供配电
《数据库-模型、语言与设计》目录

第一部分 数据库模型与访问方法 2

第1章 数据库导论 2

1.1 数据库系统的动机 2

目录 2

1.2 数据库系统的定义 4

1.3 数据库模型概述 6

1.3.1 关系数据库模型 6

1.3.2 面向对象数据库模型 6

1.3.3 演绎数据库模型 6

1.3.4 层次数据库模型 7

1.3.5 网状数据库模型 8

1.3.6 其他方面的比较 8

1.4 数据库系统的组成 9

1.4.2 概念层 10

1.4.1 物理层 10

1.4.3 外层 11

1.4.4 数据库管理员 11

1.5 一个连续的例子 12

小结 12

第2章 关系数据库 14

2.1 关系数据库的一个非正式的描述 14

2.2 关系术语 16

2.3 二元联系 20

2.3.1 一对多联系 21

2.3.2 多对多联系 23

2.3.3 分解多对多联系 25

2.3.4 一对一联系 27

2.4 高阶联系 29

2.5 递归联系 32

2.5.1 一对多递归联系 32

2.5.2 多对多递归联系 32

2.6 约束 34

2.6.1 关键字约束 35

2.6.2 函数依赖约束 36

2.6.3 实体和参照完整性 37

2.7 基本的实体-联系图 38

2.7.1 ER图中的实体及其属性 38

2.7.2 ER图中的二元联系 39

2.7.3 ER图中的联系属性 41

2.7.4 ER图中的高阶联系 42

2.7.5 ER图中的递归联系 44

2.8 模式规范 45

2.9 元数据和系统目录 46

小结 48

练习 49

第3章 关系代数 53

3.1 重命名和集合运算 53

3.2 选择、投影和连接运算 55

3.2.1 一元运算:选择和投影 55

3.2.2 笛卡儿乘积 56

3.2.3 自然连接 58

3.2.4 有关连接的其他变种 60

3.3 存在型查询 62

3.3.1 连接到锚元组的较长路径 63

3.3.2 存在型查询的一种解决方案 64

3.4 全称查询 65

3.4.1 除法运算 67

3.4.2 全称查询的一种解决方案 68

3.4.3 商关系的大小 69

3.4.4 广义除法 70

3.5 聚集和划分 72

3.5.1 聚集运算的语法变种 72

3.5.2 聚集查询进一步的例子 73

3.5.3 聚集中的算术运算 74

3.6 关系代数表达能力的限制 75

3.7 初步的查询优化 76

小结 78

练习 79

第4章 关系演算 83

4.1 谓词演算的回顾 83

4.2 通过谓词进行选择 86

4.3 存在型查询 89

4.4 全称查询 90

4.5 聚集与划分 93

4.5.1 等价类和商集 94

4.5.2 多划分 95

4.6 域关系演算 96

4.6.1 存在型查询 97

4.6.2 全称查询 98

小结 99

练习 99

第5章 基本SQL 103

5.1 简单检索查询的概念模型 103

5.1.1 从单一的表中进行查询 103

5.1.3 从多个表中进行查询 106

5.1.2 名称限定和别名 106

5.1.4 使用表的多个副本进行查询 109

5.2 子查询 111

5.3 存在型查询 115

5.4 全称查询 117

5.4.1 集合包含解决方案 117

5.4.2 双重否定结构 118

5.4.3 较长的全称路径束 119

5.4.4 混合式全称和存在查询 120

5.5 聚集和划分 121

5.5.1 orderby子句 121

5.5.2 groupby子句 122

5.5.3 orderby和groupby之间的区别 123

5.6 抑制划分 125

5.5.4 划分组中出现重复表示元组的情况 125

5.7 完整的select语法 127

5.7.1 将SQL操作可视化的一种思维模型 127

5.7.2 从SQL到关系代数 128

5.7.3 几个语法上的细节 130

5.8 数据编辑操作 131

5.8.1 SQL插入 131

5.8.2 SQL删除 133

5.8.3 SQL修改 134

5.9 嵌入式SQL 135

5.9.1 立即执行 135

5.9.2 结束和错误反馈 136

5.9.3 准备SQL语句 137

5.9.4 SQL游标 138

5.9.5 输入和输出描述符 141

小结 143

练习 143

第6章 高级SQL 148

6.1 视图 148

6.1.1 from子句中表的表达 148

6.1.2 视图作为虚表 149

6.1.3 通过视图更新元组 151

6.1.4 视图的check选项 154

6.2 空值 154

6.2.1 空值操作 155

6.2.2 聚集函数中的空值操作和SQL谓词 157

6.2.3 match谓词和引用完整性 158

6.2.4 具有any和all的谓词 160

6.3 外操作 161

6.3.1 外连接 162

6.3.2 外并 164

6.4 约束 166

6.4.1 SQL约束的目的和格式 166

6.4.2 域约束 167

6.4.3 表约束:主关键字、外关键字和check约束 169

6.4.4 列约束:主关键字、引用和check约束 170

6.4.5 全局约束 170

6.5 触发器 171

6.6 关系数据库的扩展定义 173

6.7 关系模型的缺陷 174

小结 176

练习 178

7.1 面向对象数据库的非正式介绍 181

第7章 面向对象数据库 181

7.1.1 属性值可以是其他对象 182

7.1.2 从对象中抽取查询解决方案 183

7.1.3 通过逻辑包含表示联系 186

7.2 面向对象术语 187

7.2.1 使用信号的对象通信 187

7.2.2 属性信号 188

7.2.3 类和方法 189

7.2.4 类层次和继承 190

7.2.5 常用类的内置类层次 191

7.2.6 方法的放置和多态 192

7.2.7 信号优先级:一元、二元、关键字 195

7.3 面向对象数据库定义 196

7.3.1 将应用类放置在内置层次中 197

7.3.2 属性方法和错误捕获 199

7.3.3 创建应用对象 200

7.4 联系 200

7.4.1 二元联系 200

7.4.2 高阶联系 201

7.4.3 递归联系 205

7.5 约束 206

7.5.1 一般性约束:域、键、实体完整性和引用完整性 206

7.5.2 函数依赖约束 206

7.5.3 触发器:用于更一般性的约束 207

7.5.4 进一步讨论约束 209

7.5.5 使用读属性信号可能破坏对象封装 210

7.6 面向对象与关系数据库的比较 211

小结 214

练习 215

第8章 面向对象查询 218

8.1 简单数据检索的概念模型 218

8.1.1 涉及单个类的查询 218

8.1.2 涉及多个类的查询 221

8.1.3 等价于SQL子查询的信号表达式 223

8.1.4 其他一些说明中间对象的计算的例子 224

8.2 存在型查询 225

8.2.1 直接检测属性对象 225

8.2.2 使用数据库路径的简化语法 226

8.3 全称查询 230

8.3.1 模仿SQL中的集合包含解决方案 230

8.3.2 使用双重否定模仿SQL解决方案 231

8.3.3 进一步的例子 232

8.4 聚集和划分 233

8.4.1 模仿SQL的orderby子句 233

8.4.2 模仿SQL的groupby子句 234

8.5 递归查询 236

8.5.1 一对多的递归联系 236

8.5.2 多对多的递归联系 237

8.6 数据编辑操作 238

8.6.1 插入新对象 238

8.6.2 删除对象 239

8.6.3 更新对象 240

8.7 从SQL到信号表达式 240

8.7.1 对特定SQL形式的限制转换 241

8.7.2 将关系表转换成类 241

8.7.4 转换算法的概括形式 243

8.7.3 转换select-project-join查询的一般形式 243

8.7.5 最初转换形式的另一种转换 245

8.7.6 将算法扩展到子查询 246

8.7.7 将算法扩展到划分和聚集 247

8.8 对象查询语言(Object Query Language,OQL) 248

8.8.1 OQL符号 248

8.8.2 OQL举例 249

小结 249

练习 251

第9章 演绎数据库 255

9.1 数据库环境下的逻辑程序设计 255

9.1.1 数据库与算术谓词 255

9.1.2 演绎规则与导出谓词 256

9.1.3 可能世界与演绎规则模型 258

9.1.4 最小模型 260

9.1.5 逻辑程序 261

9.2 演绎数据库的非正式介绍 261

9.2.1 查询语法 261

9.2.2 持久演绎规则和源于查询的逻辑程序 263

9.3 演绎数据库的定义 265

9.3.1 公理的表示 265

9.3.2 对联系、约束和隐含事实的演绎规则 267

9.3.3 无环演绎数据库和惟一最小模型 268

9.4 作为满足的目标的查询解 271

9.4.1 无否定自由变量的查询解算法 271

9.4.2 消除否定自由变量 273

9.4.3 从首选最小模型提交解的算法 274

9.5 联系 275

9.5.1 二元联系 276

9.5.2 高阶联系 277

9.5.3 递归联系 278

9.6 约束 279

9.6.1 用演绎规则设置结构性约束 280

9.6.2 函数依赖约束 282

9.6.3 聚集谓词和相关约束 283

小结 285

练习 287

第10章 演绎查询 290

10.1 存在型查询 290

10.1.1 包括一个应用对象的查询 290

10.1.2 包括多个应用对象的查询 292

10.2 全称查询 293

10.3 聚集和划分 295

10.4 逻辑程序与关系代数 298

10.4.1 关系和数据库谓词的对应 298

10.4.2 从关系代数到演绎规则 299

10.4.3 综合转换的例子 303

10.4.4 反向过程:从导出谓词到关系代数 303

10.5 超出无环演绎数据库 305

10.5.1 Horn(霍恩)子句系统 305

10.5.2 在依赖图中存在受限环的系统 306

10.6 递归查询 309

小结 313

练习 314

第11章 网状数据库 319

11.1 对网状数据库的非正式介绍 319

11.2.1 网状记录类型 323

11.2 网状数据库定义 323

11.2.2 系 325

11.2.3 Insertion和retention子句 327

11.2.4 完整性考虑:set-selection和check子句 328

11.3 网状数据操纵语言(DML) 330

11.3.1 当前指针 330

1 1.3.2 在记录中导航 331

1 1.3.3 记录的插入、修改和删除 334

11.3.4 记录到系的连接 336

11.4 联系 338

11.4.1 高阶联系 338

11.4.2 一对多的递归联系 340

11.4.3 多对多递归联系 342

11.5 约束 345

11.6.1 存在型查询 347

11.6 网状查询 347

11.6.2 全称查询 349

11.6.3 聚集查询 350

11.7 网状数据库和以前模型的比较 350

小结 351

练习 352

第12章 层次数据库 355

12.1 层次数据库的非正式介绍 355

12.1.1 实体和其实例的树结构 355

12.1.2 通过逻辑邻接来表示联系 358

12.1.3 在相关记录中导航 360

12.1.4 针对层次数据库的查询形式概览 362

12.2 联系 364

12.2.1 线性化层次之外的虚孩子 365

12.2.2 高阶联系 367

12.3 层次定义和数据操纵 368

12.3.1 层次模式 368

12.3.2 使用get命令定位记录 369

12.3.3 插入记录 371

12.3.4 删除和修改记录 372

12.4 约束 373

12.5 层次查询 374

12.5.1 存在型查询 374

12.5.2 全称查询 375

12.5.3 聚集查询 376

小结 376

练习 377

13.1 模型的相似之处 381

第13章 数据库模型之间的比较 381

13.2 各个模型的优点和缺点 383

13.2.1 层次和网状模型 383

13.2.2 关系模型 385

13.2.3 面向对象模型 385

13.2.4 演绎模型 386

第二部分 磁盘存储管理 388

第14章 文件结构 388

14.1 磁盘存储单元的物理组织 388

14.2 块定位模式 391

14.3 索引顺序文件 394

14.4 散列文件 397

14.4.1 选择散列函数 398

14.4.2 计算记录在桶中的分布 399

14.4.3 单次随机检索需要的平均磁盘探测次数 402

14.4.4 对α〉1.0展开分析 403

14.4.5 散列非数字值 405

14.5 动态文件结构 406

14.5.1 动态索引顺序文件 406

14.5.2 通过模数加倍进行动态散列 407

14.5.3 通过目录加倍进行动态散列 411

14.5.4 其他散列模式 414

小结 415

练习 416

第15章 索引 418

15.1 稀疏层次索引 418

15.1.1 无重复关键字的稀疏索引 418

15.1.2 有重复关键字的稀疏索引 422

15.1.3 在删除期间维护稀疏层次索引 423

15.1.4 在插入期间维护稀疏层次索引 426

15.2 稠密索引 429

15.3 B树 432

15.3.1 查找范围 433

15.3.2 定义B+树的特性 434

15.3.3 在插入期间维护B+树的平衡 435

15.3.4 在删除期间维持B+树的平衡 441

15.3.5 B+树的性能统计 443

15.3.6 B树家族的其他成员 446

小结 447

练习 448

第16章 数据库模型的文件结构 451

16.1 关系模型 451

16.2 网状模型 454

16.3 层次模型 459

16.4 面向对象模型 462

16.5 演绎模型 465

小结 465

练习 466

第三部分 数据库设计 470

第17章 应用设计描述 470

17.1 实体联系模型 470

17.2 类层次和继承 471

17.2.1 类的特化和概化 472

17.2.2 重叠子类和多继承 474

17.3 从ER图到数据库模式的映射 477

17.3.1 映射为关系模式 477

17.3.2 映射为网状模式 486

17.3.3 映射为层次模式 489

17.3.4 映射为面向对象模式 492

17.3.5 映射为演绎模式 494

17.4 对象建模技术(OMT) 496

小结 500

练习 501

第18章 函数依赖分析 503

18.1 函数依赖约束的起源 503

18.1.1 泛关系和它的投影 503

18.1.2 函数依赖集的闭包 506

18.1.3 Armstrong公理 507

18.2 最小覆盖集 509

18.2.1 一个判断闭包成员的算法 509

18.2.2 确定关键字和超关键字 510

18.2.3 确定最小覆盖集 511

18.2.4 计算最小覆盖集的算法 512

18.2.5 一个综合的例子 515

18.2.6 水族馆数据库约束的最小覆盖集 517

18.3 无损连接分解 517

18.4 Boyce-Codd范式(BCNF) 519

18.4.1 使用函数依赖减少冗余 519

18.4.2 通过分解删除违反BCNF的约束 520

18.4.3 分解水族馆数据库为BCNF 522

18.4.4 一个BCNF分解的算法 523

18.5 保持函数依赖 524

18.5.1 一个检查保持函数依赖的算法 525

18.6 前三种范式 527

18.6.1 第一范式 527

18.6.2 第二范式 528

18.6.3 第三范式 529

18.6.4 一个3NF、无损连接、保持函数依赖的分解算法 532

18.7 FD分析的有限性和扩展 534

小结 536

练习 537

第19章 连接依赖分析 540

19.1 多值依赖 540

19.1.1 由MVD引起的冗余 542

19.2 多值依赖和函数依赖的相互作用 543

19.2.1 函数依赖和多值依赖集合的闭包 544

19.2.2 函数依赖可以强制某些多值依赖进入闭包 544

19.2.3 函数依赖和多值依赖能够强制新的函数依赖进入闭包 545

19.2.4 补充律与增补律 546

19.2.5 FD-MVD推理规则 546

19.3.1 集合群的最小基 549

19.2.6 属性决定因素的必要条件 549

19.3 依赖基 549

19.3.2 决定因素的依赖基 551

19.3.3 FD-MVD推理规则的完备性 555

19.3.4 存在MVD时无损连接的一个新准则 555

19.4 第四范式 558

19.4.1 由MVD引入的冗余 558

19.4.2 利用分解消除违反4NF的情况 558

19.4.3 4NF关系集合严格地被包含在BCNF关系集合中 561

19.4.4 在水族馆数据库语境中的MVD 562

19.4.5 左部为空的MVD约束 562

19.5 普通的连接依赖 563

19.5.1 由多分量连接产生的元组 563

19.5.2 由普通连接依赖引入的冗余 564

19.5.3 从已有的JD推出新的JD 565

19.5.4 允许JD没有冗余的条件 565

19.5.5 由FD和MVD强制的JD 567

19.5.6 一个JD允许没有冗余当且仅当它由某些FD所蕴含 568

19.5.7 嵌入的连接依赖 569

19.5.8 一个引入冗余的JD的例子 570

19.6 第5范式 572

19.6.1 5NF包含4NF 574

19.6.2 一个满足4NF却不满足5NF的实例 574

19.6.3 确定JD在闭包中的追赶算法 575

19.6.4 单关键字提供的简化 577

19.7 连接依赖以外的话题 578

19.7.1 模板约束 579

小结 580

19.7.2 域关键字范式 580

练习 582

第四部分 后记 586

第20章 性能 586

20.1 并发 586

20.1.1 事务 587

20.1.2 可串行化调度 588

20.1.3 通过锁实现可串行化 589

20.1.4 死锁和事务依赖图 590

20.1.5 脏读、不可重复读和幻像 591

20.1.6 隔离级别 594

20.1.7 通过时间戳实现可串行化 595

20.2 恢复 599

20.2.1 日志文件在事务回滚和故障恢复中的作用 599

20.2.2 利用检查点来限制大范围的日志文件搜索 602

20.2.3 从数据库备份中恢复 603

20.2.4 对重启长事务的特殊防范 603

20.3 安全性 606

20.3.1 权限描述符 606

20.3.2 权限收回和失控权限问题 610

20.4 查询优化 611

20.4.1 在关系代数表达式树中记录操作 612

20.4.2 转换计算树的启发信息 613

20.4.3 一个综合的例子 614

20.4.4 估计连接操作的代价:写输出 616

20.4.5 估计连接操作的代价:组织输入流 617

小结 619

参考文献 621

术语表 625

返回顶部