
1.2.2 专门的关系运算
在关系数据库中查询用户所需的数据时,需要对关系进行一定的关系运算。关系运算主要有选择、投影和连接3种。
1.选择
选择运算是根据某些条件对关系做水平分割,即从关系中找出满足条件的记录。它可以根据用户的要求从关系中筛选出满足一定条件的记录,这种运算可以得到一个新的关系,其中的元组是原关系的一个子集,但不影响原关系的结构。条件可用命题公式(即计算机语言中的条件表达式)F表示。关系R关于公式F的选择运算用σF(R)表示,形式定义如下:
σF(R)={t|t∈R∧F(t)=true}
其中,σ为选择运算符;σF(R)表示从R中挑选满足公式F为真的元组所构成的关系。这是从行的角度进行的运算。
例如,σ2>'3'(R)表示从R中挑选第2个分量值大于3的元组所构成的关系。
2.投影
投影运算是从关系内选择出若干属性列组成新的关系。它可以根据用户的要求从关系中选出若干字段组成新的关系,字段的个数或顺序往往不同。关系R的投影运算用πA(R)表示,形式定义如下:
πA(R)={t[A]|t∈R}
其中,A为R的属性列。投影操作是从列的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且取消完全相同的元组。
例如,π3,1(R)表示关系R中取第1,3列,组成新的关系,新关系中第1列为R的第3列,新关系的第2列为R的第1列。
有了上述两个运算后,对一个关系内的任意行、列的数据都可以方便地找到。
3.连接
在数学上,可以用笛卡儿积建立两个关系间的连接,但这样得到的关系数据冗余度大,在实际应用中一般两个相互关联的关系需要满足一定的条件,使所得的结果一目了然,这就是连接运算。连接也称θ连接,它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组组成新的关系。关系R和S的连接运算形式定义如下:

其中,A和B分别为关系R和S上度数相同且可比的属性组。
连接运算中有两种最为常用的连接,分别是等值连接和自然连接。
(1)等值连接(Equi-join)
等值连接即将连接中的θ换成=,功能是从关系R和S的笛卡儿积中选取A,B属性值相等的那些元组。它的形式定义如下:

(2)自然连接(Natural-join)
自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中将重复的属性去掉。它的形式定义如下:

【例1-5】利用表1-3和表1-9所示的数据,将两表按学号进行等值连接。等值连接的结果如表1-10所示。
表1-9 成绩表

表1-10 等值连接

【例1-6】利用表1-3和表1-9所示的数据,将两表进行自然连接。自然连接的结果如表1-11所示。
表1-11 自然连接
