關係數據庫之關係代數

關係數據庫的關係代數運算符有8種,分爲兩大類,如下表所示:

分類 運算符 含義
傳統關係運算符
×× 笛卡爾積
專用關係運算符 σ 選擇
投影
連接
÷

1 傳統的關係運算

傳統的集合運算是二元運算,包括並、差、交、笛卡爾積4種運算。設有兩關係R、S。

1.1 並 union

關係R與關係S的並記作:RS={t  tRtS}R\cup S=\{t\ |\ t\in R \lor t\in S\}合併R和S所有元組

1.2 交 intersection

關係R與關係S的交記作:RS={t  tRtS}R\cap S=\{t\ |\ t\in R \land t\in S\}關係的交也可用差來表示:RS=R(RS)R\cap S=R-(R-S)取出R與S中共有的元組

1.3 差 except

關係R與關係S的差記作:RS={t  tRtS}R- S=\{t\ |\ t\in R \land t\notin S\}去掉R中屬於S的元素

1.4 笛卡爾積 cartesian product

關係R與關係S的並記作:R×S={tRtS  tRRtSS}R\times S=\{\overset{\large\frown}{t_Rt_S}\ |\ t_R\in R \land t_S\in S\}這裏的笛卡爾積指的是廣義笛卡爾積,對元組進行笛卡爾積有點類似於小學數學課上學過的握手遊戲。

對於R×SR\times S來說,表示每個R中的元組都要與S中的元組連接一次
在這裏插入圖片描述

1.5 傳統關係運算舉例

RR:

color pattern size
A 5
B 10
B 5

SS:

color pattern size
B 10
C 10
B 5

則有:

  • RRSS的並RSR\cup S:
color pattern size
A 5
B 10
B 5
C 10
  • RRSS的交RSR\cap S:
color pattern size
B 10
B 5
  • RRSS的差RSR- S:
color pattern size
A 5
  • RRSS的笛卡爾積R×SR\times S
R.color R.pattern R.size S.color S.pattern S.size
A 5 B 10
A 5 C 10
A 5 B 5
B 10 B 10
B 10 C 10
B 10 B 5
B 5 B 10
B 5 C 10
B 5 B 5

2 專用的關係運算

專用的關係運算符包括選擇、投影、連接、除運算

在具體介紹運算符之前爲了方便表達,先引入幾個符號:

  • RR:關係。R={r1,r2,...,rn}R=\{r_1,r_2,...,r_n\},其中rir_i表示RR中的列。類似的,SS等符號也代表一個關係
  • tt:元組。tt代表RR的某一行,稱tt爲元組。
  • t[ri]t[r_i]:分量。t[ri]t[r_i]表示tt行中rir_i列的值,稱t[ri]t[r_i]爲分量。
  • Zt[ri]Z_{t[r_i]}:象集。Zt[ri]Z_{t[r_i]}表示tt行中除rir_i列外其他列的值,稱Zt[ri]Z_{t[r_i]}爲象集。
  • θ\theta:比較運算符。比較運算符有6種,分別是==>>\geq<<\leq<><>
2.1 選擇 selection

選擇關係運算記作:σriθt[ri](R)={ t  tRriθt[ri]=true}\sigma_{r_i\theta t[r_i]}(R)=\{\ t\ |\ t\in R\land r_i\theta t[r_i]=true\}即取出RR表中rir_i列的值與t[ri]t[r_i]具有θ\theta關係的行
例如:
σSage<20(Student)\sigma_{Sage<20}(Student)表示取出StudentStudent表中SageSage列值小於數值20的行
σSname=(Student)\sigma_{Sname='李勇'}(Student)表示取出StudentStudent表中SnameSname列值等於字符串李勇的行

2.2 投影 projection

投影關係運算記作: ri(R)={t[ri]  tR}\prod\ _{r_i}(R)=\{t[r_i]\ |\ t\in R\}即取出RR表中的rir_i
例如:
 Sage(Student)\prod\ _{Sage}(Student)表示從表StudentStudent取出SageSage列形成新的關係
 Sage,Sname(Student)\prod\ _{Sage,Sname}(Student)表示從表StudentStudent取出SageSageSnameSname列形成新的關係

2.3 連接 join

連接關係運算記作:riθrjRS={tRtS tRRtSRtR[ri]θtS[rj] }\overset{R\Join S}{_{r_{i}\theta r_{j}}}=\{\overset{\large\frown}{t_Rt_S\ |t_R\in R \land t_S\in R\land t_R[r_i]\theta t_S[r_j]\ }\}即選取RRSS的笛卡爾積中tR[ri]t_R[r_i]tS[rj]t_S[r_j]滿足關係θ\theta的行

連接有四種特殊形式:

  • 非等值連接。就是指θ\theta不爲等號的連接,例如ri<rjRS\overset{R\Join S}{_{r_{i}< r_{j}}}表示連接滿足R.ri<S.rjR.r_i<S.r_j關係的RRSS中的元組
  • 等值連接。就是指θ\theta爲等號的連接,例如ri=rjRS\overset{R\Join S}{_{r_{i}=r_{j}}}表示連接滿足R.ri=S.rjR.r_i=S.r_j關係的RRSS中的元組
  • 自然連接。自然連接是一種特殊的等值連接,就是rir_irjr_j的屬性名一致且值相等的等值連接,並在連接結果中去掉重複列,而在一般的等值連接中只需要滿足rir_irjr_j的值相等即可,記作RSR\Join S
  • 外連接。外連接是一種特殊的自然連接,在自然連接的過程中,若連接後元組裏的某個屬性出現Null值就會捨去該元組,而外連接則會保留該元組。外連接分爲三種:
  • 1、外連接。保留兩邊關係自然連接後出現Null值屬性的元組,記作R::SR:\Join: S
  • 2、左外連接。保留左邊關係自然連接後出現Null值屬性的元組,記作R:SR:\Join S
  • 3、右外連接。保留右邊關係自然連接後出現Null值屬性的元組,記作R:SR\Join: S
2.4 除 division

除關係運算記作:R÷S={ tR[ri]  tRR rj(S)rj tR[ri] }R\div S=\{\ t_R[r_i]\ |\ t_R\in R\land\prod\ _{r_j}(S)\subseteq r_{j\ t_R[r_i]}\ \}即取出RR中使R.rjR.r_j完全等於S.rjS.r_jR.riR.r_i元組
例如:
 Sname,Sage(R)÷ SageS\prod\ _{Sname,Sage}(R)\div \prod\ _{Sage}S表示取RR投影中使R.SageR.Sage完全等於S.ageS.ageR.nameR.name元組,形成新的關係

2.5 專用關係運算舉例

RR:

color pattern size
A 5
B 6
C 8
D 12

SS:

pattern weight
A 3
B 7
C 10
C 2
E 2
  • RR的選擇,σcolor=(R)\sigma_{color='紅'}(R),取出RR表中colorcolor列值爲字符串’紅’的行形成新的關係:
color pattern size
A 5
B 6
  • RR的投影, color,size(R)\prod\ _{color,size}(R),從表RR取出color,sizecolor,size列形成新的關係:
color size
5
6
8
12
  • RRSS的連接

非等值連接,size<weightRS\overset{R\Join S}{_{size< weight}},連接滿足size<weightsize< weight關係的RRSS中的元組

color R.pattern size S.pattern weight
A 5 B 7
A 5 C 10
B 6 B 7
B 6 C 10
C 8 C 10

等值連接,R.pattern=S.patternRS\overset{R\Join S}{_{R.pattern= S.pattern}},連接滿足R.pattern=S.patternR.pattern= S.pattern關係的RRSS中的元組

color R.pattern size S.pattern weight
A 5 A 3
B 6 B 7
C 8 C 10
C 8 C 2

自然連接,RSR\Join S,連接RRSS中同名屬性值相等的元組:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2

外連接,R::SR:\Join: S,保留兩邊關係自然連接後出現Null值屬性的元組:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2
D 12 null
null E null 2

左外連接,R:SR:\Join S,保留左邊關係自然連接後出現Null值屬性的元組:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2
D 12 null

右外連接,R:SR\Join: S,保留右邊關係自然連接後出現Null值屬性的元組:

color pattern size weight
A 5 3
B 6 7
C 8 10
C 8 2
null E null 2
  • RR的除運算
    設有除關係KK
color size
5
6

R÷KR\div K表示取出RR中使R.colorR.color完全等於S.colorS.colorR.sizeR.size完全等於S.sizeS.sizeR.parttenR.partten元組

partten
A
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章