資料庫 筆記 關係代數以及相關運算

2021-10-09 02:08:36 字數 3450 閱讀 1774

總結關係代數是一種抽象的查詢語言,通過關係的運算來表達查詢

關係代數常使用的運算子由如下幾類

其中算數比較符的使用就不多說,組要對集合運算子和關係運算子進行學習

需要注意的是,∩與∧兩中運算子,前者是針對集合的,後者是針對元素的

前提

關係r、s需要滿足相容

具有相同的度n

相同的屬性需要來自同乙個域(可以說是r、s具有相同的屬性集u)

給出如下兩個表

rab

ca1b1c1

a1b1

c2a2

b2c1sa

bca1b1

c1a2

b2c1

a2b3

c2交(∩)

r∩s = ,(t是乙個元組)那麼得到的結果如下 a

bca1b1

c1a2

b2c1

並(∪)

r∪s = ,結果如下 a

bca1b1

c1a2

b2c1

a1b1

c2a2

b3c2

差(-)

r-s = ,結果如下 a

bca1b1

c2

r-s就是,在r中取出與s相同的元組

廣義笛卡爾積(×)

r×s = ,結果如下 ar

brcr

asbs

csa1

b1c1

a1b1

c1a1

b1c1

a2b2

c1a1

b1c1

a2b3

c2a1

b1c2

a1b1

c1a1

b1c2

a2b2

c1a1

b1c2

a2b3

c2a2

b2c1

a1b1

c1a2

b2c1

a2b2

c1a2

b2c1

a2b3

c2

為什麼說是廣義笛卡爾積呢?

應為在前面的笛卡爾積中,是只有單一資料的值域之間進行的計算,而這裡是通過連線符⌒,來得到兩個關係元組的組合

由此能夠發現,對於廣義笛卡爾積,不需要兩個關係滿足相容

在此之前需要先了解幾個東西

關係模式為r(a1,a2,a3,…,an),它的乙個關係為r,t是r的乙個元組,t∈r,t[ai]表示t中的乙個分量a=, ~ a=,a(還有~ a)稱為屬性列或域列,t[a]=表示元組t在a上的分量集合(a+~a=r)

r、s分別為n、m目關係,tr∈r,ts∈s,tr⌒ts稱為元組的連線,連線後的得到的是m + n列的元組

給定關係r(x,z),x和z為兩個屬性組(x、z可能代表多個屬性,也就是將u分為x、z兩部分),當t[x]=x時,x在r中的象集為zx=,它表示r中的屬性組x上,值為x的元組集合在z上的分量集合,這個集合稱為象集(就是在t中t[x]=x部分的t[z]的集合稱為x在r中的象集)

上面的前三個都很好理解,最後乙個象集看著比較繞口

用人話來說就是將關係r的屬性集u分為兩個部分x和z,x與z是x和z的某乙個值

因此有:t = t[x] + t[z]

在r中r的元組中找到符合t[x] = x的元組t(也許會找到多個,也許沒有)

則t[z] = t - t[x]就是x在r中的象集

例子,用前面的r表

x代表a,z代表b和c,那麼x=a1時,象集為

前面的幾樣弄清楚後,關係運算子理解起來就很簡單了

選取(σ)

σf ( r ) =

σ是運算子,f是規定的選取條件,f(t) = '真』表示元組t滿足條件

條件是根據需要自定義的

所以,選取的含義就是:選取滿足條件的元組

比如:σa=a1 ( r ),表示在r中尋找a=a1的元組,結合之前的r的表,答案為前兩行

投影(∏)

∏a( r ) =

∏是運算子,a是乙個屬性列

含義是:列出r中屬性列a的分量集合(得到的資料是不重複的,重複部分會刪除的)

例子:∏a( r ) =

連線(⌒)

∞與⌒都是連線運算子,只不過乙個連線關係,乙個連線元組

θ是比較運算子,可以是大於,小於等

x是r的屬性列,y是s的屬性列,x、y需要來自同乙個域

含義:將r與s中符合條件的元組連線起來

還可寫作σxθy( r×s )

arbcr

asbcsa1

b1c1

a1b1

c1a1

b1c2

a1b1

c1a2

b2c1

a2b2c1

arbcras

csa1

b1c1

a1c1

a1b1

c2a1

c1a2

b2c1

a2c1

除(÷)

給定關係r(x,y)和s(y,z),其中x,y,z為屬性組,r中的y與s中的y可以有不同的屬性名,但必須來自相同的域

p(x)=r÷s,為r與s的除運算(得到的是x的屬性列上的投影)

其中r÷s =

yx是x在r中的象集

這個是這樣的,假設t[x]的取值範圍為

則當t[x]=x1時,計算此時的x在r中的象集(得到關於t[y]的集合),判斷s中,屬性列y的分量集合是否是該象集的子集,若是,這個t[x]就進入除法計算結果中,以此類推,計算t[x]=x2,····類推得到最後結果。

下面給個課本上的例子ra

bcda1

b2c3

d5a1

b2c4

d6a2

b4c1

d3a3

b5c2d8s

cdec3

d5f3

c4d6

f4r(x,y),s(y,z)

x代表a、b,y代表c、d,z代表e

ty[s] =

步驟如下

所以最後的結果為ab

a1b2

元組、分量需要分清楚

集合運算和關係運算的最主要區別是關係是否需要相容

資料庫 關係代數與關係運算

概述 傳統的集合運算 並,差,交,笛卡爾積 專門的關係運算 r和s具有相同的目n 即兩個關係都有n個屬性 相應的屬性取自同乙個域 r s 仍為n目關係,由屬於r或屬於s的元組組成 r s r和s 具有相同的目n 相應的屬性取自同乙個域 r s 仍為n目關係,由屬於r而不屬於s的所有元組組成 r s ...

關係代數運算集(資料庫)

舉個栗子 現有兩個課程關係表course1 和 course2 表 2 1 course1 courseid coursename credit 101計算機網路 4102 資料庫原理 3103 網路開發 4表 2 2 course2 courseid coursename credit 101計算...

資料庫關係代數之除運算

除運算的 含義 給定關係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 x,y ...