前言
有關數據庫原理與統計的筆記,內容爲書本的原文概括。
建議可以多理解理解附帶的例題,相比理論會更容易理解些。
關係代數是一種抽象的查詢語言,它用對關係的運算來表達查詢。
運算對象、運算符、運算結果是運算的三大要素。
關係代數的運算對象是關係,運算結果也爲關係。
運算符有兩類:集合運算符和專門的關係運算符。
關係代數的運算按運算符的不同可分爲傳統的集合運算和專門的運算兩類。
傳統的集合運算將關係看成元組的集合,其運算是從行的角度來進行;
而專門的關係運算不僅涉及行,而且涉及列。
比較運算符和邏輯運算符是用來輔助專門的關係運算符進行操作的。
運算符 |
含義 |
∪ |
並 |
- |
差 |
∩ |
交 |
X |
笛卡爾積 |
σ |
選擇 |
Π |
投影 |
∞ |
連接 |
÷ |
除 |
一、傳統的集合運算
傳統的集合運算是二目運算,包括並、差、交、笛卡爾積4種運算。
運算 |
介紹 |
並 |
關係R與關係S的並記作R∪S={t|t∈RVt∈S} ,其結果仍爲n目關係,由屬於R或屬於S的元組組成。 |
差 |
關係R與關係S的差記作R-S={t|t∈RΛt∉S} ,其結果關係仍爲n目關係,由屬於R而不屬於S的所有元組組成。 |
交 |
關係R與關係S的交記作R∩S={t|t∈RΛt∈S} ,其結果關係仍爲n目關係,由既屬於R又屬於S的元組組成,關係的交可以用差來表示即R∩S=R-(R-S) |
笛卡爾積 |
關係R和關係S的笛卡爾積有k1xk2個元組,記作RXS={tr ts|tr∈RΛts∈S} 。n目關係R和m目關係S的笛卡爾積是一個m+n列的元組的集合,元組的前n列是關係R的一個元組,後m列是關係S的一個元組。R有k1個元組、S有k2個元組。 |
例:
關係R如下:
A |
B |
C |
a1 |
b1 |
c1 |
a1 |
b2 |
c2 |
a2 |
b2 |
c1 |
關係S如下:
A |
B |
C |
a1 |
b2 |
c2 |
a1 |
b3 |
c2 |
a2 |
b2 |
c1 |
(1) R∪S
A |
B |
C |
a1 |
b1 |
c1 |
a1 |
b2 |
c2 |
a2 |
b2 |
c1 |
a1 |
b3 |
c2 |
(2)R∩S
(3)R-S
(4)RXS
R.A |
R.B |
R.C |
S.A |
S.B |
S.C |
a1 |
b1 |
c1 |
a1 |
b2 |
c2 |
a1 |
b1 |
c1 |
a1 |
b3 |
c2 |
a1 |
b1 |
c1 |
a2 |
b2 |
c1 |
a1 |
b2 |
c2 |
a1 |
b2 |
c2 |
a1 |
b2 |
c2 |
a1 |
b3 |
c2 |
a1 |
b2 |
c2 |
a2 |
b2 |
c1 |
a2 |
b2 |
c1 |
a1 |
b2 |
c2 |
a2 |
b2 |
c1 |
a1 |
b3 |
c2 |
a2 |
b2 |
c1 |
a2 |
b2 |
c1 |
二、專門的關係運算
專門的關係運算包括選擇、投影、連接、除運算等。
[1]. 選擇
選擇又稱爲限制,它是在關係R中選擇滿足給定條件的諸元組,記作σF(R)={t|t∈RΛF(t)='真'}
其中F表示選擇條件,它是一個邏輯表達式,取邏輯值真或假。
邏輯表達式F的基本形式爲:X1θY1,其中的θ表示比較運算符,可以是>、≥、<、≤、=或<>。X1、Y1是屬性名,或爲常量,或爲簡單函數;屬性名可以用其序號來代替。
運算符 |
含義 |
> |
大於 |
≥ |
大於等於 |
< |
小於 |
≤ |
小於等於 |
= |
等於 |
<> |
不等於 |
¬ |
非 |
Λ |
與 |
V |
或 |
選擇運算實際上是從關係R中選擇使邏輯表達式F爲真的元組,選擇運算是從行的角度進行的運算。
例:有Student表如下,
學號Sno |
姓名Sname |
性別Ssex |
年齡Sage |
所在系Sdept |
21 |
李勇 |
男 |
20 |
CS |
22 |
劉晨 |
女 |
19 |
CS |
23 |
王敏 |
女 |
18 |
MA |
25 |
張立 |
男 |
19 |
IS |
(1)查詢信息系(IS系)全體學生。
σSdept=‘IS’(Student)
Sno |
Sname |
Ssex |
Sage |
Sdept |
25 |
張立 |
男 |
19 |
IS |
(2)查詢年齡小於20歲的學生。
σSage<20(Student)
Sno |
Sname |
Ssex |
Sage |
Sdept |
22 |
劉晨 |
女 |
19 |
CS |
23 |
王敏 |
女18 |
MA |
|
25 |
張立 |
男 |
19 |
IS |
[2]. 投影
關係R上的投影是從R中選擇若干屬性列組成新的關係。記作πA(R)={t[A]|t∈R}
,其中A爲R中的屬性列,投影操作是從列的角度進行的運算。
例:有Student表如下,
學號Sno |
姓名Sname |
性別Ssex |
年齡Sage |
所在系Sdept |
21 |
李勇 |
男 |
20 |
CS |
22 |
劉晨 |
女 |
19 |
CS |
23 |
王敏 |
女 |
18 |
MA |
25 |
張立 |
男 |
19 |
IS |
(1)查詢學生的姓名和所在系
即求Student關係上學生姓名和所在系兩個屬性上的投影。πSname(Student)
Sname |
Sdept |
李勇 |
CS |
劉晨 |
CS |
王敏 |
MA |
張立 |
IS |
(2)查詢學生關係Student中都有哪些系
即查詢關係Student上所在系屬性上的投影。πSdept(Student)
[3]. 連接
連接也稱θ連接。它是從兩個關係的笛卡爾積中選取屬性間滿足一定條件的元組記作R∞S={tr ts|tr∈RΛts∈SΛtr[A]θts[B]}
,A和B分別爲R何S上列數相等且可比的屬性組,θ是比較運算符。連接運算從R和S的笛卡爾積RXS中選取R關係在A屬性組上的值與S關係在B屬性組上的值滿足比較關係θ的元組。
θ爲=的連接運算稱爲等值連接。
則等值連接爲R∞S={tr ts|tr∈RΛts∈SΛtr[A]=ts[B]}
自然連接是一種特殊的等值連接,它要求兩個關係中進行比較的分量必須是同名的屬性組,並且在結果中把重複的屬性列去掉。
則自然連接爲R∞S={tr ts[U-B]|tr∈RΛts∈SΛtr[B]=ts[B]},B爲R何S種具有的相同屬性組,U爲R何S的全體屬性集合。
例:
關係R
A |
B |
C |
a1 |
b1 |
5 |
a1 |
b2 |
6 |
a2 |
b3 |
8 |
a2 |
b4 |
12 |
關係S
B |
E |
b1 |
3 |
b2 |
7 |
b3 |
10 |
b3 |
2 |
b5 |
2 |
(1)等值連接
R∞S(R.B=S.B)
A |
R.B |
C |
S.B |
E |
a1 |
b1 |
5 |
b1 |
3 |
a1 |
b2 |
6 |
b2 |
7 |
a2 |
b3 |
8 |
b3 |
10 |
a2 |
b3 |
8 |
b3 |
2 |
(2)非等值連接
R∞S(C<E)
A |
R.B |
C |
S.B |
E |
a1 |
b1 |
5 |
b2 |
7 |
a1 |
b1 |
5 |
b3 |
10 |
a1 |
b2 |
6 |
b2 |
7 |
a1 |
b2 |
6 |
b3 |
10 |
a2 |
b3 |
8 |
b3 |
10 |
(3)自然連接
R∞S
A |
B |
C |
E |
a1 |
b2 |
5 |
3 |
a1 |
b2 |
6 |
7 |
a2 |
b3 |
8 |
10 |
a2 |
b3 |
8 |
2 |
當兩個關係R和S在做自然連接時,則兩個關係在公共屬性上值相等的元組構成新的關係。關係R中年某些元組有可能在S中不存在公共屬性上值相等的元組,從而造成R中這些元組在操作時被捨棄了,同樣,S中某些元組也可能被捨棄。這些被捨棄的元組稱爲懸浮元組。
如果把懸浮元組也保存在結果關係中,而在其他屬性上填空值,那麼這種連接爲外連接,如果只保留左邊關係R中1懸浮元組爲左外連接,如果只保留右邊關係S中的懸浮元組爲右外連接。
例:
關係R
A |
B |
C |
a1 |
b1 |
5 |
a1 |
b2 |
6 |
a2 |
b3 |
8 |
a2 |
b4 |
12 |
關係S
B |
E |
b1 |
3 |
b2 |
7 |
b3 |
10 |
b3 |
2 |
b5 |
2 |
(4)外連接
A |
B |
C |
E |
a1 |
b1 |
5 |
3 |
a1 |
b2 |
6 |
7 |
a2 |
b3 |
8 |
10 |
a2 |
b3 |
8 |
2 |
a2 |
b4 |
12 |
NULL |
NULL |
b5 |
NULL |
2 |
(5)左外連接
A |
B |
C |
E |
a1 |
b1 |
5 |
3 |
a1 |
b2 |
6 |
7 |
a2 |
b3 |
8 |
10 |
a2 |
b3 |
8 |
2 |
a2 |
b4 |
12 |
NULL |
(6)右外連接
A |
B |
C |
E |
a1 |
b1 |
5 |
3 |
a1 |
b2 |
6 |
7 |
a2 |
b3 |
8 |
10 |
a2 |
b3 |
8 |
2 |
NULL |
b5 |
NULL |
2 |
[4]. 除運算
設關係R除以關係S的結果爲關係T,則T包含所有在R但不在S中的屬性及其值,且T的元組與S的元組的所有組合都在R中。
給定關係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中的象集,x=tr[X]。除操作是是從行和列角度進行運算。
例:
關係R
A |
B |
C |
a1 |
b1 |
c2 |
a2 |
b3 |
c7 |
a3 |
b4 |
c6 |
a1 |
b2 |
c3 |
a4 |
b6 |
c6 |
a2 |
b2 |
c3 |
a1 |
b2 |
c1 |
關係S
B |
C |
C |
b1 |
c2 |
d1 |
b2 |
c1 |
d1 |
b2 |
c3 |
d2 |
(1)R÷S