2.4 关系运算

2.4 关系运算关系运算 SQL 语言是继承了关系代数和关系演算各自的优点所形成的

大家好,欢迎来到IT知识分享网。

关系运算

SQL语言是继承了关系代数和关系演算各自的优点所形成的。常用的关系运算是关系代数和关系演算。关系演算可分为关系元组演算和关系域演算。关系代数则是以集合代数为基础发展起来的,它是以关系为运算对象的一组高级运算集合;关系代数可以分为基本的集合运算和专门的关系运算两大类。关系代数的运算用关系演算(关系元组演算和关系域演算)表达。

关系代数操作符

(1)基本算符

逻辑运算符(与、或、非:∧、∨、¬)

关系运算符(=,>,<,≥,≤,≠)

集合运算符(并、交、差、笛卡尔乘积):∪,∩,−,×

左箭头←为赋值操作

(2)Join操作

定义关系模式R(A,B,C,D)和S(E,B,D)的实例r、s的自然连接为:r⋈s=Πr.A,r.B,r.C,r.D,s.E(ρr.B=s.B∧r.D=s.D(r×s))

(3)除操作

定义关系模式R(A1,…,Am,B1,…,Bn)和S(B1,…,Bn)的实例r、s的除法结果(商)为:R−S={A1,…,Am}

r÷s={t|t∈ΠR−S®∧∀u∈s(tu∈r)}R−S={A1,…,Am}r÷s={t|t∈ΠR−S®∧∀u∈s(tu∈r)}

用完全的关系代数表示为:r÷s=ΠR−S®−ΠR−S(ΠR−S®×s−ΠR−S,S®)r÷s=ΠR−S®−ΠR−S(ΠR−S®×s−ΠR−S,S®)

(4)聚合操作

聚合函数定义如SQL,包括了avg、min、max、sum、count等。

1.传统的集合运算

传统的集合操作包括并、差、交、笛卡儿积4种,均为二目运算。这些针对集合的运算是以元组为运算的基本元素进行的,是从行的角度展开的运算。

并、差、交集合运算必须满足运算双方相容的条件。

设给定两个关系R、S,若满足:

1)具有相同的度n;

2)R中第i个属性和S中第i个属性必须来自同一个域。

则说关系R、S是相容的。

(1)并运算

关系R与关系S的并记为:

R∪S={t | t∈R∨t∈S },t是元组变量,∨是或

其结果仍是n目关系,由属于R或属于S的元组组成。

关系的并运算是将两个关系中的所有元组合并构成新的关系,并且运算的结果中必须消除重复值。

关系R与关系S的差记为:

R-S={t | t∈R ∧tS } ,t是元组变量,∈是属于,是不属于

其结果仍是n目关系,由属于R并且也属于S的元组组成。

关系的差运算的运算结果是由属于一个关系并且不属于另一个关系的元组构成的新关系,就是从一个关系中减去另一个关系。

关系R与关系S的交记为:

R∩S={t | t∈R ∧t∈S },t是元组变量,∧是且

其结果仍是n目关系,由属于R并且也属于S的元组组成。

根据差的定义还可以得出交的另一种表示方法:R∩S = R –(R–S)

关系的交运算的运算结果将两个关系中的公共元组构成新的关系。

两个分别为n目和m目的关系R和关系S的广义笛卡尔积是一个(m+n)列的元组的集合。

元组的前n个列是关系R的一个元组,后m个列是关系S的一个元组。

交、并、差、笛卡儿积是所有集合都遵循的运算,是从元组的角度进行的运算,也就是从行的角度展开的运算。关系作为数据库中数据的表现形式,以有条件的查询为主要操作方式,需要一些既涉及行(元组),也涉及列(属性)的运算,这类运算通过一些专门的关系运算来实现,其中包括投影、选择、连接、除。

(1)选择(Selection)

σF(R)={ t | t∈R ∧ F(t)=‘真’ }

其中:σ是选择运算符,R是关系名,t是元组,F是条件(逻辑值表达式),取逻辑“真”值或“假”值。θ比较运算符,φ逻辑运算符。

其中F是一个针对于元组t的逻辑表达式,作为选择的条件,如果F为真,那么当前的元组t作为结果中的一个元组被选择出来,否则丢弃t。

F的基本形式为AθB,A、B为元组中的属性名,θ为二目比较运算符,从>、≥、<、≤、=、≠中选择,除了二目运算符之外,在逻辑表达式F中还可以进行与(∧)、或(∨)、非(┐)的单目逻辑运算,φ为单目逻辑运算符。

πA(R)= { t.A | t∈R }

其中:π是投影运算符,

R是关系名,A是被投影的属性或属性组。

t.A表示t这个元组中相应于属性(或属性集)A的分量,也可以表示为t[A]。

其中:

-A和B分别是关系R和S上可比的属性组,

-θ是比较运算符,

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

【例】设有关系R和S如下,计算 R ⋈ R . B < S . B S \mathrm{R} \underset{\mathrm{R} .{\rm B}<{\rm S}.\mathrm{B}}{\bowtie} \mathrm{S} RR.B<S.BS
2.4 关系运算
①等值连接(equijoin)
R ⋈ A = B S = { t r t ^ s ∣ t r ∈ R ∧ t s ∈ S ∧ t r [   A ] = t s [   B ] } \mathrm{R} \underset{A=B}{\bowtie} \mathrm{S}=\left\{t_{r} \hat{t}_{s} \mid t_{r} \in \mathrm{R} \wedge t_{s} \in S \wedge t_{r}[\mathrm{~A}]=t_{s}[\mathrm{~B}]\right\} RA=BS={
trt^strRtsStr[ A]=ts[ B]}

当θ为“=”时的连接为等值连接,是从关系R与关系S的广义笛卡尔积中选取A,B属性值相等的那些元组。



②自然连接(naturaljoin)

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

R ⋈ S = { t r t s [ U − B ] ∣ t r ∈ R ∧ t s ∈ S ∧ t r [   B ] = t s [   B ] } \mathrm{R} \bowtie \mathrm{S}=\left\{t_{r} t_{s}[\mathrm{U}-\mathrm{B}] \mid t_{r} \in \mathrm{R} \wedge t_{s} \in S \wedge t_{r}[\mathrm{~B}]=t_{s}[\mathrm{~B}]\right\} RS={
trts[UB]trRtsStr[ B]=ts[ B]}

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

自然连接与等值连接的差别为:

-自然连接要求相等的分量必须有共同的属性名,等值连接则不要求;

-自然连接要求把重复的属性名去掉,等值连接却不这样做。

内连接(Inner join),把舍弃的元组也保存在结果中,其它属性上填空值Null,这种连接叫外连接(Outer join),保留左边关系R的为左外连(Left outer join),保留右边关系S的为右外连(Right outer join),全外连(Full outer join)。

(4)除(Division)

选择运算是按照一定的条件从关系中选出特定的元组,是从行的角度进行的运算;投影运算是从关系中选出特定的属性列,是从列的角度进行的运算;连接运算将两个关系按照某个条件连接在一起,一般的连接运算是从行的角度进行的,自然连接由于需要取消重复列,所以是同时从行和列的角度进行的运算。除了上述运算,关系代数中还定义了除(Division)运算。设关系R除以关系S的结果为关系T,则T包含所有在R中但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。除法也是同时从行和列的角度进行的运算。

在讲除运算之前先介绍两个概念—分量和象集。

1)分量

2)象集

给定一个关系R(X,Z),X和Z为属性组.可以定义,当t[X]=x 时,x 在R中的象集为Zx={t[Z]|t∈R,t[X]=x},它表示R 中属性组X 上值为x 的诸元组在Z上分量的集合。

3)除操作

R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。其形式定义如下:

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

其中Yx 为x 在R中的象集,x=tr[X]。

关系的除操作能用其他基本操作表示,即

R÷S=ΠX®-ΠX(ΠX®×ΠY(S)-R)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130480.html

(0)
上一篇 2025-08-15 12:15
下一篇 2025-08-15 12:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信