1. 关系代数

关系代数的运算可以分为传统的集合运算和关系运算

运算符 符号 含义
集合运算符 U
-
× 笛卡尔积
专门的关系运算符 σ 选择
π 投影
连接
÷

1.1. 传统的集合运算

是二目运算,包括 并、差、交、笛卡尔积四种运算。

1.1.1. 并(union)

由属于R或属于S的元组组成

1.1.2. 差(except)

属于R但是不属于S的元组组成

1.1.3. 交(intersection)

由既属于R又属于S的元组组成

1.1.4. 笛卡尔积

广义的笛卡尔积

R: n目关系,k1k_1个元组

S: m目关系,k2k_2个元组

R×S

列:(n+m)列元组的集合

元组的前n列是关系R的一个元组

后m列是关系S的一个元组

行: k1×k2 k_1\times k_2 个元组 R×S={trtstrRtsS} R\times S= \{ \overline{t_r t_s}|t_r\in R\land t_s\in S \}

1.2. 专门的关系运算

专门的关系运算包括选择、投影、链接、除运算等。

先引入几个记号

  1. R,tRR,t\in R,t[AiA_i]

    设关系模式为R(A1,A2,,An)R(A_1,A_2,\cdots ,A_n)

    它的一个关系设为R

    tRt\in R表示t是R的一个元组

    t[AiA_i]则表示元组t中相应于属性AiA_i的一个分量

  2. A,t[A],AA,t[A],\overline{A}

    A={Ai1,Ai2,,Aik}A=\{A_{i1},A_{i2},\cdots ,A_{ik}\},其中Ai1,Ai2,,AikA_{i1},A_{i2},\cdots ,A_{ik}A1,A2,,AnA_1,A_2,\cdots ,A_n中的一部分,则称A为属性列或属性组。

    t[A]=(t[Ai1],t[Ai2],,t[Aik])t[A]=(t[A_{i1}],t[A_{i2}],\cdots ,t[A_{ik}])表示元组t在属性列A上诸分量的集合。

    A\overline{A}则表示{A1,A2,,An}\{A_1,A_2,\cdots ,A_n\}中去掉{Ai1,Ai2,,Aik}\{A_{i1},A_{i2},\cdots ,A_{ik}\}后剩余的属性组。

  3. trts\overline{t_r t_s}

    R为n目关系,S为m目关系

    trR,tsSt_r\in R,t_s \in Strts\overline{t_r t_s} 称为元组的连接

    trts\overline {t_r t_s} 是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量是S中的一个m元组

  4. 象集ZxZ_x

    给定一个关系 R(X,Z) ,X,Z是属性组

    当t[X]=x时,x在R中的象集为:

    Zx={t[Z]tR,t[X]=x}Z_x=\{t[Z]|t\in R, t[X]=x \}

    它表示R中属性组X上值为x的诸元组在Z上的分量的集合

1.2.1. 选择(selection)

选择又称为限制,是在关系R中寻找符合条件的元组

σF(R)={ttRF(t)=} \sigma_F(R)=\{t|t\in R\land F(t)= \text{‘真’} \}

运算符 符号 含义
集合运算符 > 大于
>= 大于等于
< 小于
<= < td> 小于等于
= 等于
<> 不等于
集合运算符
¬

1.2.2. 投影(projection)

关系R上的投影是从R中选择出若干属性列组成新的关系。

投影操作是在列的角度进行的运算

投影之后不仅可能取消某些列,还可能取消某些元组(由于重复行的缘故)

1.2.3. 连接(join)

RS={trtstrRtsStr[A]θts[B]} R\bowtie S=\{\overline{t_r t_s}|t_r\in R\land t_s\in S\land t_r[A]\theta t_s[B] \}

从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

A和B:分别为R和S上度数相等且可比的属性组

θ:比较运算符

连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组

两类特殊的连接运算

等值连接

θ为“=”的连接运算称为等值运算

RA=BS={trtstrRtsStr[A]θts[B]} R\bowtie _{A=B} S=\{\overline{t_r t_s}|t_r\in R\land t_s\in S\land t_r[A]\theta t_s[B] \}

自然连接

自然连接是一种特殊的等值连接

两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉

同时从行和列中进行运算

RS={trts[UB]trRtsStr[B]=ts[B]} R\bowtie S=\{ \overline{t_r t_s}[U-B]|t_r\in R\land t_s\in S\land t_r[B]=t_s[B] \}

悬浮元组

在做自然连接的时候,关系R中某些元组有可能在S中不存在公共属性相同值的元组,这部分元组就会被舍弃,同样,S中也有部分被舍弃,这些被舍弃的元组就成为悬浮元组。

如果将悬浮元组也保留,其他属性上填NULL就佳作外连接

左外连接

只保留左边关系R中的悬浮元组

右外连接

只保留右边关系S中的悬浮元组

1.2.4. 除运算(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上投影的集合,记作:

Yx :x在R中的象集,x = tr[X]

除操作是同时从行和列上进行运算的!

1.3. 小结

关系代数运算:并、差、交、笛卡尔积、投影、选择、连接、除

基本运算:并、差、笛卡尔积、投影、选择

专门关系运算:交、连接、除,可以用5种基本运算来表达,引进它们并不增加语言的能力,但可以简化表达。

results matching ""

    No results matching ""