数据库系统概念


第 1 章、引言


数据库管理系统由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这些数据用以描述某个特定的企业。DBMS 的基本目标是要提供一个可以让人们方便地、高效地存取信息的环境。


数据库系统用于存储大量信息。对数据的管理既涉及到信息存储结构的定义,又涉及到信息操作机制的提供。另外,数据库系统还必须提供所存储数据的安全性保证。即使在系统崩溃或有人企图越权访问时也应如此。如果数据被多用户共享,那么系统还必须设法避免可能产生的异常结果。数据库系统的一个主要目的是要提供给用户数据的抽象视图,也就是说,系统隐藏了数据存储和维护的细节。这是通过定义三个可对数据库系统进行观察的抽象层次来实现的。这三个层次是:物理层、逻拼层和视图层。


数据库结构的基础是数据模型,一个用于描述数据、数据间关系、数据语义和数据约束的概念工具的集合。现有的不同数据模型分为三类:基于对象的逻辑模型、基于记录的逻辑模型以及物理数据模型。


随着时间的推移,信息会被插人或删除,数据库随之也发生了改变。特定时刻存储在数据库中的信息的集合称作数据库的一个实例。数据库的总体设计称作数据库模式。


在某个层次上修改模式而不影响较高一层模式的能力叫做数据独立性。有两个层次的数据独立性:物理数据独立性和逻样数据独立性。


数据库模式通过一系列用数据定义语言(DDL)表达的定义来描述。DDL 语句经过编译,产生存储在一个特殊文件中的一系列表,这个文件称作数据字典,因此数据字典中存储的是元数据。


数据操纵语言(DML)是使得用户可以访问和操纵数据的语言,主要有两种:过程化的 DML,和非过程化的 DML。过程化的 DML 要求用户指明需要什么数据以及如何获得这些数据,非过程化的 DML 只要求用户指明需要什么数据,而不必指明如何获得这些数据。


事务管理器负责保证无论是否有故障发生,数据库都要处于一致的(正确的)状态。事务管理器还保证并发事务的执行互不冲突。


存储管理器是在数据库中存储的低层数据与应用程序及向系统提交的查询之间提供接口的程序模块。存储管理器负贵与磁盘上存储的数据进行交互。



第 2 章、实体-联系模型


实体-联系(E-R)数据模型基于对现实世界的这样一种认识:世界由一组基本对象(称作实体)及这些对象间的联系组成。此模型的主要目的是服务于数据库设计过程,‘它的发展是为了帮助数据库设计,这是通过允许定义企业模式来实现的。企业模式代表了数据库的全局逻辑结构,这种全局结构可以用 E-R 图进行图形化表示。


实体是实际存在的可区别于其他对象的对象,我们通过把每个实体同描述该实体的一组属性相联系来将它与其他对象相区别。联系是多个实体间的相互关联。相同类型的所有实体的集合构成实体集,相同类型的所有联系的集合构成联系集。


映射的基数指明另一实体通过联系集可以和实体集中的多少个实体相联。有一种约束是存在依赖,它表明实体 x 的存在依赖于实体 y 的存在。数据库建模的一个重要任务是要说明实体之间以及联系之间如何相互区别。概念上来说,各个实体或联系是互不相同的,但从数据库的角度来看,它们的差异必须用属性表示出来。为了进行这样的区别,为每个实体集指定一个主码。主码是一个或多个属性的集合,这些属性的整体可以使我们在实体集中唯一确定一个实体或在联系集中唯一确定一个联系。如果一个实体集没有足够形成主码的属性集合,就称其为弱实体集,而有主码的实体集称为强实体集。


特珠化和概括定义了一个高层实体集和一个或多个低层实体集之间内容上的联系。特殊化是取出高层实体集的一个子集来形成一个低层实体集。概括是用两个或多个不相交的(低层)实体集的并集来形成一个高层实体集。高层实体集的属性被低层实体集继承。


E-R 模型的一个局限是它不能表示联系间的联系,解决的办法是采用聚集。聚集是一种抽象,它将联系集看作高层实体集,这样,联系集及其相关实体集就可以像其他实体一样被看作高层实体集。


E-R 模型各种各样的特征提供给数据库设计者大量的选择机会,使得设计者可以最好地表现被建模的企业。在不同的场合,概念和对象可以用实体、联系或属性来表示。企业总体结构的某些方面可以用弱实体集、概括、特殊化或聚集来表示。设计者常常需要在简单的、紧凑的模型与更精确但也更复杂的模型之间做出恰当的选择。


符合 E-R 图的数据库可以用表的集合来表示。数据库的每个实体集和联系集都有唯一的表与之对应,表名即为相应的实体集或联系集的名称。每个表有多个列,每列有其唯一列名。将数据库的表示从 E-R 图转向表的形式是由 E-R 图产生关系数据库设计的基础。



第 3 章、关系模型


关系数据模型建立在表的集合的基础上。数据库系统的用户可以对这些表进行查询,可以插人新元组、删除元组以及更新(修改)元组。表达这些操作的语言有几种。元组关系演算和城关系演算是非过程化语言,代表了关系杳询语言所需的基本能力。关系代数是一种过程化语言,在能力上它等价于限制在安全表达式范围内的关系演算的两种形式。关系代数定义了关系查询语言中使用的基本运算。


关系代数和关系演算是简洁的形式化语言,不适合于那些偶尔使用数据库系统的用户。因此,商用数据库系统采用有更多 “语法修饰” 的语言。第 4 章和第 5 章我们将讨论三种最有影响力的商用语言: SQL 、 Q BE 和 Quel,除此之外还会讲到用于研究的语言 Datalog。


数据库可以通过插人、删除或更新元组来修改。用包含赋值运算符的关系代数来表达这些修改。


共享数据库的不同用户可以得益于数据库的个性化的视图。视图是通过查询表达式定义的 “虚关系”。以关系代数为例说明了视图如何定义和使用。通过用定义视图的表达式替换视图来对涉及视图的查询求值。视图是简化数据库查询的有用机制,但是通过视图对数据库进行修改却可能产生不利的后果。因此,数据库系统严格限制通过视图进行更新。出于查询处理效率的考虑,视图可以被实体化 —— 即物理上存储视图,影响到实体化视图的更新会带来额外开销。



第 4 章、SQL


商业数据库系统并不使用第 3 章的简洁的、形式化查询语言,而在形式化查询语言基础上提供许多便利的方法。商业数据库系统不仅提供对数据库的查询结构,还提供用于更新、插人、删除信息的结构。在这里讨论的 SQL 语言已被商品化产品广泛接受。


我们学习了用 SQL 语言表达查询和修改数据库(对效据库的修改可能在元组中产生空值);讨论了空值的产生以及 SQL 查询语言如何处理在含有空值的关系上的查询;展示了如何定义关系和视图。更多的有关 SQL DDL 的细节见第 6 章和第 19 章。



第 5 章、其他关系语言


我们已经学习了三种查询语言: QBE 、 Quel 和 Datalog。 QBE 基于一种可视化范例,查询看起来很像表格。由于可视化范例因符合直觉而具有简单性,因此 QBE 和其变形在非专业的数据库用户中十分流行。 Quel 基于元组关系演算,在许多方面与 SQL 类似,但避免了后者的许多复杂性。Datalog 是从 Prolog 派生出来的,但不像 Prolog,它有声明性的语义,使简单查询易于书写,查询求值易于优化。在 Datalog 中定义视图特别简单,并且 Datalog 所支持的递归视图使我们可以写出像传递闭包查询这样的不用递归或迭代就无法写出的查询。然而,Datalog 中很多重要特性如分组或聚集并没有广泛接受的统一标准,Datalog 仍主要作为一种研究性语言。



第 6 章、完整约束性


完整性约束保证了授权用户对数据库的修改不会导致数据一致性的破坏。前面几章考虑了几种约束,包括码定义及联系的形态的定义(多对多、多对一、一对一)。本章讨论了其他几种约束以及保证这些约束的机制。


域约束指出了与属性相关联的可取值的集合。它也可以禁止某属性上取空值。


参照完整性约束保证一个关系的给定属性集上的取值也出现在另一关系的某个属性集上。


函数依赖是码依赖的扩展。它要求某属性集的值唯一确定另一属性集的值。使用函数依赖的形式化定义,可以确定给定函数依赖集 F 逻辑蕴涵的所有函数依赖的集合ÿ

目 录 译者序 第7版序言 第一部分 基础知识 第1章 数据库管理概述 1 1.1 引言 1 1.2 什么是数据库系统 3 1.3 什么是数据库 6 1.4 为什么用数据库 10 1.5 数据独立性 12 1.6 关系系统及其他 15 1.7 小结 17 练习 17 参考文献和简介 19 部分练习答案 19 第2章 数据库系统体系结构 22 2.1 引言 22 2.2 三级体系结构 22 2.3 外模式 24 2.4 概念模式 26 2.5 内模式 26 2.6 映象 27 2.7 数据库管理员 27 2.8 数据库管理系统 28 2.9 数据通信管理器 31 2.10 客户/服务器体系结构 31 2.11 工具 33 2.12 分布式处理 33 2.13 小结 35 练习 35 参考文献和简介 36 第3章 关系数据库介绍 38 3.1 引言 38 3.2 关系模型概述 38 3.3 关系和关系变量 41 3.4 关系的含义 42 3.5 优化 44 3.6 数据字典 45 3.7 基本关系变量和视图 46 3.8 事务 49 3.9 供应商和零件数据库 49 3.10 小结 51 练习 52 参考文献和简介 53 部分练习答案 54 第4章 SQL概述 55 4.1 引言 55 4.2 综述 56 4.3 目录 58 4.4 视图 59 4.5 事务 59 4.6 嵌入式SQL 59 4.7 SQL是不完美的 66 4.8 小结 66 练习 67 参考文献和简介 68 部分练习答案 73 第二部分 关系数据模型 第5章 域、关系和基本关系变量 77 5.1 引言 77 5.2 域 79 5.3 关系值 86 5.4 关系变量 90 5.5 SQL的支持 93 5.6 小结 96 练习 97 参考文献和简介 98 部分练习答案 101 第6章 关系代数 106 6.1 引言 106 6.2 关系封闭性 107 6.3 语 109 6.4 语义 110 6.5 举例 117 6.6 关系代数的作用 119 6.7 附加的操作符 120 6.8 分组与分组还原 125 6.9 关系比较 127 6.10 小结 128 练习 129 参考文献和简介 131 部分练习答案 133 第7章 关系演算 140 7.1 引言 140 7.2 元组演算 141 7.3 举例 147 7.4 关系演算与关系代数的比较 149 7.5 计算能力 152 7.6 域演算 153 7.7 SQL语言 155 7.8 小结 162 练习 163 参考文献和简介 165 部分练习答案 167 第8章 完整性 179 8.1 引言 179 8.2 类型约束 180 8.3 属性约束 181 8.4 关系变量约束 182 8.5 数据库约束 182 8.6 黄金则 183 8.7 静态约束和动态约束 184 8.8 码 185 8.9 SQL对完整性的支持 191 8.10 小结 194 练习 194 参考文献和简介 196 部分练习答案 201 第9章 视图 209 9.1 引言 209 9.2 视图的用途 211 9.3 视图检索 213 9.4 视图更新 214 9.5 快照 225 9.6 SQL对视图的支持 226 9.7 小结 227 练习 228 参考文献和简介 229 部分练习答案 232 第三部分 数据库设计 第10章 函数依赖 238 10.1 引言 238 10.2 基本概念 239 10.3 平凡的函数依赖和非平凡的函数 依赖 241 10.4 依赖集的闭包 241 10.5 属性集的闭包 242 10.6 最小函数依赖集 244 10.7 小结 245 练习 246 参考文献和简介 247 部分练习答案 249 第11章 进一步规范化Ⅰ:1NF、2NF、 3NF和BCNF 252 11.1 引言 252 11.2 无损分解和函数依赖 254 11.3 第一、第二和第三范式 257 11.4 保持函数依赖 262 11.5 BOYCE/CODD范式 264 11.6 具有关系值属性的关系变量 268 11.7 小结 270 练习 270 参考文献和简介 272 部分练习答案 274 第12章 进一步规范化Ⅱ:高级范式 282 12.1 引言 282 12.2 多值依赖与第四范式 282 12.3 连接依赖与第五范式 285 12.4 规范化过程小结 289 12.5 逆规范化 291 12.6 正交设计 292 12.7 其他的规范化形式 295 12.8 小结 296 练习 296 参考文献和简介 297 部分练习答案 302 第13章 语义建模 306 13.1 引言 306 13.2 总体方 307 13.3 E/R模型 309 13.4 E/R图 312 13.5 基于E/R模型的数据库设计 313 13.6 简单分析 317 13.7 小结 319 练习 320 参考文献和简介 321 第四部分 事务管理 第14章 恢复 333 14.1 引言 333 14.2 事务 334 14.3 事务恢复 335 14.4 系统恢复 337 14.5 介质恢复 338 14.6 两阶段提交 338 14.7 SQL对事务的支持 339 14.8 小结 340 练习 341 参考文献和简介 341 部分练习答案 345 第15章 并发 347 15.1 引言 347 15.2 三个并发问题 347 15.3 锁 349 15.4 重提三个并发问题 350 15.5 死锁 352 15.6 可串行性 353 15.7 隔离级别 354 15.8 意向锁 355 15.9 SQL的支持 357 15.10 小结 358 练习 359 参考文献和简介 360 部分练习答案 365 第五部分 高级专题 第16章 安全性 369 16.1 引言 369 16.2 自主存取控制 371 16.3 强制存取控制 375 16.4 统计数据库 377 16.5 数据加密 381 16.6 SQL的支持 384 16.7 小结 386 练习 387 参考文献和简介 388 部分练习答案 390 第17章 优化 394 17.1 引言 394 17.2 一个启发性的例子 395 17.3 查询处理概述 396 17.4 表达式变换 399 17.5 数据库统计信息 403 17.6 分而治之的策略 404 17.7 关系操作的实现算 406 17.8 小结 410 练习 411 参考文献和简介 413 部分练习答案 430 第18章 信息空缺 432 18.1 引言 432 18.2 3VL方概述 433 18.3 上述方案所造成的某些结果 437 18.4 空值和码 440 18.5 外连接 442 18.6 特殊值 444 18.7 SQL的支持 444 18.8 小结 447 练习 448 参考文献和简介 449 部分练习答案 452 第19章 类型继承 454 19.1 引言 454 19.2 类型的层次结构 457 19.3 多态性和可置换性 459 19.4 变量与赋值 462 19.5 约束特化 465 19.6 比较 467 19.7 操作、版本和签名 470 19.8 一个圆是一个椭圆吗 473 19.9 约束特化—再次讨论 476 19.10 小结 478 练习 479 参考文献和简介 480 部分练习答案 481 第20章 分布式数据库 484 20.1 引言 484 20.2 一些预备知识 484 20.3 十二个目标 487 20.4 分布式系统面对的问题 493 20.5 客户/服务器系统 502 20.6 DBMS独立性 504 20.7 SQL的支持 508 20.8 小结 509 练习 509 参考文献和简介 510 第21章 决策支持 518 21.1 引言 518 21.2 决策支持的特征 519 21.3 决策支持的数据库设计 520 21.4 数据准备 525 21.5 数据仓库和数据集市 527 21.6 联机分析处理 530 21.7 数据挖掘 535 21.8 小结 536 练习 537 参考文献和简介 538 部分练习答案 540 第22章 时态数据库 541 22.1 引言 541 22.2 时态数据 542 22.3 问题是什么 544 22.4 时间间隔 548 22.5 间隔类型 549 22.6 间隔上的标量操作符 551 22.7 间隔上的聚集操作符 551 22.8 与间隔有关的关系操作符 552 22.9 间隔上的约束 557 22.10 间隔上的更新操作符 559 22.11 关于数据库设计 560 22.12 小结 562 练习 563 参考文献和简介 563 部分练习答案 565 第23章 基于逻辑的数据库 567 23.1 引言 567 23.2 综述 567 23.3 命题演算 569 23.4 谓词演算 572 23.5 数据库的证明理论观点 577 23.6 演绎数据库系统 580 23.7 递归查询过程 583 23.8 小结 588 练习 589 参考文献和简介 590 部分练习答案 596 第六部分 对象和对象/关系数据库 第24章 对象数据库 599 24.1 引言 599 24.2 对象、类、方和消息 602 24.3 进一步的分析 605 24.4 一个详实的例子 611 24.5 混合性问题 618 24.6 小结 624 练习 626 参考文献和简介 627 部分练习答案 634 第25章 对象/关系数据库 637 25.1 引言 637 25.2 第一个根本性错误 639 25.3 第二个根本性错误 644 25.4 实现上的问题 645 25.5 真正融合的好处 647 25.6 小结 648 参考文献和简介 649 附 录 附录A SQL表达式 657 附录B SQL3概览 666 附录C 缩略语和符号 678
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值