数据库系统概念


第 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 逻辑蕴涵的所有函数依赖的集合ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值