1
数据库原理与应用技术
1.3.2.2 2.2.2 特殊的关系运算
2.2.2 特殊的关系运算

特殊的关系运算包括选择、投影、连接和除法,这些运算主要用于数据查询服务。

1. 选择

选择(Selection)是按照给定条件从指定的关系中挑选出满足条件的元组构成新的关系的运算。或者说,选择运算的结果是表的行的子集。

选择运算的一般方法表示为:

SELECT <关系名> WHERE <条件>

选择运算的关系代数表达式记为:

σF(R),即σ〈条件表达式〉(R)

其中,σ为选择运算符;R为关系名。

【例2-3】选择操作。设有“学生”关系,如表2-10所示,要求从中选择所有的男同学。

解:其关系代数表达式记为:

σ性别=“男”(学生)

选择运算的一般表达式为:

SELECT 学生 WHERE 性别=“男”

运算结果如表2-11所示。

表2-10 学生

表2-11 σ性别=“男”(学生)

2. 投影

投影(Projection)是从指定的关系中挑选出某些属性构成新的关系的运算。或者说,投影运算的结果是表的列的子集,是对关系垂直方向的操作。

投影运算的方法表示为:

PROJECT <关系名> (属性1,属性2,…)

投影运算的关系代数表达式记为:

πA(R)

其中,A为R的属性序列;π为投影运算符;R代表关系名。投影是对原关系进行列的选择,并且投影将取消由于取消了某些列而产生的重复元组。

【例2-4】投影操作。设有例2-3学生表所示“学生”关系,要求查看所有的系。

解:其关系代数表达式为:

π所在系(学生)

投影运算的一般表达式为:

PROJECT 学生(所在系)

投影运算的结果如表2-12所示。

表2-12 π所在系(学生)

3. 连接

连接(Join)操作是关系代数中最有用的操作之一。它最常用的方式是合并两个或多个关系的信息。

1)条件连接

连接是将两个或多个关系连接在一起,形成一个新的关系的运算。条件连接运算是按照给定条件,把满足条件的各关系的所有元组按照一切可能组合成新的关系的运算。或者说,连接运算的结果是在两个关系的笛卡儿积上的选择。

连接运算的方法表示为:

JOIN <关系1> AND <关系2> WHERE <条件>

连接运算的关系代数表达式记为:

iθj  R S

在这里,θ可以是等于号、大于号、小于号、不等号,等等,是指对R和S满足条件θ的连接。其中,i和j分别表示R和S这两个关系中的第i列和第j列,i和j可以用属性名表示,也可以用属性所在列的位置来表示。

【例2-5】连接操作。设有两个关系R和S,如表2-13和表2-14所示,求

表2-13 关系R

表2-14 关系S

解:这是一个典型的连接操作,是指关系R中的Y列大于关系S中的B列的连接。在这里,关系R中的Y列大于关系S中的B列,Y列和B列分别在关系R 和关系S中的第2列。还可以用另外一种方式表示,即。在条件2>2中,左面的2表示关系R中的第2列,右面的2表示关系S中的第2列。用列名或用列所在位置的值,这两种表示方法是相同的。

连接运算后的结果如表2-15所示。

表2-15 关系T

连接的关系代数表达式为:

T=R S  Y>B

该连接运算的一般表达式为:

JOIN R AND S WHERE Y>B

连接运算中有两种特殊形式,也是最为重要、最为常用的连接,分别是等值连接和自然连接。

2)等值连接

等值连接是连接的一种特殊形式,它是θ为等于号时的连接,它从关系R和S的笛卡儿积中选取这两个关系中指定列的属性值相等的那些元组。对于例2-5,若条件变为等于,则连接后的结果T1如表2-16所示。

T1=R S  Y=B

表2-16 关系T1

3)自然连接

自然连接是连接中最为特殊的一种形式,它规定连接的两个关系中的所有同名字段都相等。此时,可以省略连接条件,默认的连接条件是所有同名字段相等时的连接,可记为:

R S

自然连接要求两个关系中必须有共同的或公用的属性组,它是公共属性相等时的连接,并且在结果中去掉了重复的属性组。R与S的自然连接要完成以下三件事:

(1) 计算R×S;

(2) 在R×S上选择同时满足条件R.Ai = S.Ai的所有元组,其中Ai为属性名;

(3) 去掉重复属性。

【例2-6】关系R和关系S如表2-17和表2-18所示,求关系R和关系S的自然连接。

表2-17 关系R

表2-18 关系S

解:自然连接关系R和关系S,是指在这两个关系中的公共属性B列相等时的连接。连接后的结果如表2-19所示。

该连接的关系代数的表达式为:

T = R S

表2-19 关系T

对上述关系R和关系S,求其等值连接,结果如表2-20所示。

表2-20 关系T1

比较表2-16与表2-20的等值连接与表2-19自然连接的结果,知道等值连接与自然连接的主要区别如下。

(1) 等值连接和自然连接都是对参与运算的两个关系先做笛卡儿积,然后对笛卡儿积的结果做选择运算。

(2) 等值连接的连接条件属性不要求是同名属性,而自然连接要求公共属性相等。

(3) 等值连接后不要求去掉同名属性,而自然连接要求去掉同名属性。

4. 除法运算

设关系R和关系S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组集合。R÷S的计算过程如下:

(1) T =π1,2,…,r-s(R);

(2) W =(T×S)–R;

(3) V =π1,2,…,r-s(W);

(4) R÷S=T –V。

关系除法运算不同于数值运算中的除法,参与运算的对象是两个关系。当被除关系 R是r元关系,除关系S是s元关系时,商为r-s元关系。商的结果是,将被除关系R中的r-s列按其值分成若干个组,检查每一组对应的另外s列值的集合是否包含除关系,若包含,则取r-s列的值作为商的一个元组;否则不取。

【例2-7】关系R和关系S如表2-21和表2-22所示,求T=R÷S。

表2-21 关系R

解:运算结果如表2-23所示。

表2-22 关系S

表2-23 关系T

关系代数在关系数据库理论和实践中处于非常重要的地位,下面结合本章所学内容给出一个关系代数表达式的例子。

【例2-8】设有三个关系S、C和SC,如表2-24至表2-26所示,试用关系代数表示下列查询语句。

表2-24 关系S

表2-25 关系C

表2-26 SC

(1) 检索籍贯为上海的学生的姓名、选修的课程号和成绩。

(2) 检索选修“操作系统”的学生姓名、课程号和成绩。

(3) 检索选修了全部课程的学生姓名和年龄。

解:(1) R1=π2,6,7(σ籍贯=“上海”(S SC)),结果如表2-27所示。

(2) R2=π2,6,7(S SCσ课程名=“操作系统”(C)),结果如表2-28所示。

(3) R3=π2,3(S (π1,2(SC)÷π1(C))),结果如表2-29所示。

表2-27 关系R1

表2-28 关系R2

表2-29 关系R3

注:本例中属性名全都用列值代替。

在例2-8中,运用本节介绍过的关系代数运算经过有限次的复合后形成的式子称为关系代数表达式。

在介绍的8种关系代数运算中,笛卡儿积、并、差、投影和选择为基本运算;而交、连接和除法运算可用上述5种基本运算来表达,故将这3种运算称为非基本运算,引入它们并不增加语言的能力,但可以简化表达。

5种基本运算及作用如下。

积运算:R×S用于实现两个关系的组合连接,是所有连接操作的基础。

并运算:R∪S用于实现两个关系的合并或关系中元组的插入。

差运算:R–S用于实现关系中元组的删除。

投影运算:πA(R) 用于实现关系中列(属性)的选择。

选择运算:σF(R) 用于实现关系中行(元组)的选择。