《03第3 章关系数据库介绍》.pdf
文本预览下载声明
下载
第3章 关系数据库介绍
3.1 引言
在第1章中已经介绍,本书的重点主要是在关系系统。特别是第二部分比较深入地阐述了
这些系统(关系模型)的理论基础。为了更好地理解本书随后部分的内容,本章对第二部分
的内容(附带随后的部分)做一个直观、非正式的介绍。本章所述的多数论题将在后面章节
做更详细、更正式的讨论。
3.2 关系模型概述
如前所述,关系系统基于正规的关系基础或理论,即关系数据模型。直观地说,关系系
统是这样的系统:
1) 结构化方面:数据库中的数据对用户来说是表,并且只是表;
2) 完整性方面:数据库中的这些表满足一定的完整性约束(在本节最后讨论);
3) 操纵性方面:用户可以使用用于表操作的操作符—例如,为了检索数据,需要使用
从一个表导出另一个表的操作符。其中,选择、投影和连接这三种尤为重要。
图3 - 1 中显示的是一个简单的关系数据库,即部门和雇员数据库。正像你所看到的,数据
库给人的感觉就是一张张的表(这些表的含义是不言而喻的)。
图3-1 部门和雇员数据库(样本值)
图3 - 2 中显示了对图3 - 1 中数据库的选择、投影和连接操作。下面给出这些操作的定义:
• 选择操作是从表中提取特定的几行。
• 投影操作是从表中提取特定的几列。
• 连接操作是根据某一列的值将两个表连接起来。
以上三个例子中,最后一个关于连接的例子需要进一步解释。先观察到 D E P T和E M P两个
表都有一个共同的列 D E P T # ,因此它们可以根据这一列的相同值连接起来。当且仅当两个表
中对应行的D E P T #值相同时,D E P T 的一行才能连接E M P表中对应的一行(产生结果表的一行)。
第3章 关系数据库介绍使用39
下载
图3-2 选择、投影和连接(例子)
例如,D E P T和E M P行
连接起来产生如下的结果行:
因为在公共列它们有相同的值 D 1 。注意在结果行中相同的值只出现一次。连接的结果包含了
这样所有可能得到的行。尤其注意尽管在 D E P T表中有D 3 一行,但因为E M P 行中没有D E P T #
的值D 3 ,结果中就没有出现D 3行。
现在,图3 - 2 中清楚地显示出三种操作的每个结果都是一个表(如前所述,实际上是从一个
表导出另一个表的操作)。这是关系系统的闭包特性,这一特性非常重要。基本上,因为任何操
作的输出和其输入的对象种类相同—它们都是表—所以一个操作的输出能变成另一个的输
入。因此,可以采取如连接的投影、两个选择后的连接或一个投影的选择等等操作。即我们可
以编写嵌套的表达式来处理数据—操作数本身也是由一个表达式来表示的,而不仅仅是一个
表名。这样随之而来又有许多重要结论,在后面会见到(在本章和后面的许多章)。
顺便提一下,当提到一个操作的输出是另一个表时,要知道这是从概念视图的角度来说
的,这一点非常重要。这并不是意味着系统实际上必须将每个单独操作的结果实例化。例如,
假设要计算一个连接的选择,那么,连接后的行一形成,系统就立即检查该行是否满足指定
的条件以判定是否属于最终结果,如果不是就立即抛弃。也就是说,连接操作的中间结果根
本不会以完整的实例表形式存在。在实际操作中,通常为了提高效率,系统尽可能不将中间
结果生成完整的表。注意:如果中间结果全部实例化,整个表达式的计算策略就是实例化的
计算;如果中间结果分块地提供给下一步操作,就称作流水线计算。
图3 - 2 中还清楚地说明了一点:操作是一次一集合,而不是一次一行;也就是说,操作数和
40使用第一部分 基 础 知 识
下载
结果是完整的表,而不只是单行,是包含行集的表(当然,只包含一行的表是合法的;空表,
即根本不包含任何行的表,也是合法的)。例如,图3 - 2中,分别对两个表对应的3行和4行的连接
操作,就返回一个4行的结果表。相
显示全部