2.2.2 专门的关系运算

2.2.2 专门的关系运算

(1) 选择(Selection)

选择又称为限制(Restriction)。它是在给定关系R中选择满足条件的元组。记为:

σF(R)={t|t∈R∧F(t)='真'}¬,∧,∨

其中F表示选择条件,它是一个逻辑表达式,逻辑表达式由逻辑运算符连接各算术表达式组成。取逻辑值‘真’或‘假’。

逻辑表达式F的基本形式为:X θ Y

θ表示比较运算符,它可以是>、≥、<、≤、=或≠。X、Y等是属性名或常量或简单函数。

因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。

设有一个学生-课程关系数据库如图2.3所示,包括学生关系xs、课程关系kc、选修关系xs_kc。下面通过一些例子对这3个关系进行运算。

【例2.2】查询通信工程专业的全体学生。

σ专业名='通信工程'(XS)或σ3='通信工程'(XS)

其中下角标“3”为专业名的属性序号。结果如图2.4(a)所示。【例2.3】查询学生党员的信息。

σ党员否=1(XS)

结果如图2.4(b)所示。

【例2.4】 查询身高在170公分以上的男生。

σ身高>170∧性别='男'(XS)

结果如图2.4(c)所示。

img34

图2.3 学生-课程数据库

img35

img36

图2.4 选择运算举例

(2)投影(Projection)

在给定关系R(U)中选择若干属性列组成的新关系。记为:

∏A(R)={t[A]|t∈R}

其中A为R中属性组,且A⊆U。在关系二维表中,选择是一种水平操作,它针对二维表中行,而投影是一种垂直操作,它针对二维表中的属性列。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,按关系的要求应取消这些完全相同的行。

【例2.5】 查询所有课程的课程号及课程名。即求KC关系在课程号和课程名两个属性上的投影。

∏课程号,课程名(KC) 或 ∏1,( 2KC)

结果如图2.5(a)所示。

【例2.6】 查询选修了课程的学生的学号。即查询xs_kc关系在课程号上的投影。Π学号(XS_KC)

结果如图2.5(b)所示。

img37

图2.5 投影运算举例

(3)连接(Join)

连接也称为θ连接。它是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记做:

img38

其中A和B分别为R和S上度数相等且可比的属性组。θ是比较运算符。连接运算从R和S的笛卡儿积R×S中选取R关系在A属性组上的值与S关系在B属性组上值满足比较关系θ的元组。

连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equi-join),另一种是自然连接(Natural join)。 θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡儿积中选取A、B属性值相等的那些元组。即等值连接为:

img39

自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记做:

img40

一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。

自然连接与等值连接的区别是:

(1)自然连接要求两个关系中进行比较的属性或属性组必须同名和相同值域,而等值连接只要求比较属性有相同的值域。

(2)自然连接的结果中,同名的属性只保留一个。

【例2.7】 设有关系R、S,计算R∞S,img41。如图2.6所示。

img42

img43

图2.6 连接运算举例

(3)除(Division)

给定关系R(X,Y)和S(Y,Z),其中X ,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记做:

R÷S={tr[X]|tr∈R∧πy(S)⊆Yx}

其中Yx为值x在R中的象集,即表示R中属性组X上的值为x(x=tr[X])的元组在属性组Y上分量的集合。

关系的除操作能用其他基本操作表示为:

R÷S=∏X(R)-∏X(∏X(R)×∏Y(S)-R)

【例2.8】 关系R和S如图2.7所示,求R÷S。

令X=A,Y={B,C},x=tr[X],其值有三个a1,a2,a3,则Yx分别为:

a1的象集为{(b1,c1),(b1,c2),(b3,c2)} a2的象集为{(b2,c3)} a3的象集为{(b2,c1)}

S在Y(即B,C)的投影∏y(S)={(b1,c1),(b1,c2),(b3,c2)}

所以只有a1的象集(B,C)a1包含S在Y上的投影,即∏Y(S)⊆Yα1。故此R÷S={a1}。

img44

图2.7 除运算举例