MOOC 數據庫筆記(四):關係代數

關係代數

關係代數概述

特點

基於集合,提供了一系列的關係代數操作:並、差、笛卡爾積(廣義積)、選擇、投影和更名等基本操作
以及交、連接和關係除等擴展操作,是一種集合思維的操作語言。
關係代數操作以一個或多個關係爲輸入,結果是一個新的關係。
用對關係的運算來表達查詢,需要指明所用的操作,具有一定的過程性。
∩∪×-ρσΠ÷⋈(從左往右分別爲:並、交、廣義積(笛卡爾積)、差、更名、選擇、投影、除、連接)θ ∨∧
Π姓名、課程名課程號=c2(R⋈S))
是一種抽象的語言,是學習其他數據庫語言,如SQL等的基礎。

關係代數的基本操作

可分爲:集合操作和純關係操作
(1)集合操作
①UNION(並) R∪S
②INTERSECTION(交) R∩S
③DIFFERENCE(差) R-S
④CARTESIAN PRODUCT(笛卡爾積) R×S
(2)純關係操作
①PROJECT(投影) ΠA(R)
②SELECT(選擇) σCon(R)
③JOIN(連接) R⋈(AθB)S
④DIVISION(除) R÷S

關係代數之基本操作

(0).並相容性

某些關係代數操作,如並、差、交等,需滿足“並相容性”
參與運算的兩個關係及相關屬性之間有一定的對應性、對比性或意義關聯性。
定義:關係R與關係S存在相容性,當且僅當:
(1)關係R和關係S的屬性數目必須相同;
(2)對於任意i,關係R的第i個屬性的域必須和關係S的第i個屬性的域相同
假設:R(A1,A2,...,An),S(B1,B2,...,Bm)
R和S滿足並相容性:n=m並且Domain(Ai)=Domain(Bi)

(1).並(UNION)

定義:假設關係R和關係S是並相容的,則關係R與關係S的並運算結果也是一個關係,記作:R∪S,它由或者出現在關係R中,或者出現在S中的元組構成。
數學描述:R∪S={t|t∈R∨t∈S},其中t是元組
並運算是將兩個關係的元組合併成一個關係,在合併時去掉重複的元組。
R∪S與SUR運算的結果是同一個關係。
漢語中的“或者...或者...”通常意義是並運算的要求。

(2)差(DIFFERENCE)

定義:假設關係R和關係S是並相容的,則關係R與關係S的差運算結果也是一個關係,記作:R-S,它由或者出現在關係R中但不出現在S中的元組構成。
數學描述:R-S={t|t∈R∧t?S},其中t是元組
R-S與S-R是不同的
漢語中的“是...但不含...”通常意義是差運算的要求。

(3)廣義笛卡爾積(CARTESIAN PRODUCT)

定義:關係R(<a1,a2,...,an>)與關係S(<b1,b2,...,bm>)的廣義笛卡爾積(簡稱廣義積,或者積或者笛卡爾積)運算結果也是一個關係,記作:R×S,它由關係R中的關係S的元組進行所有可能的拼接(或串接)構成。
數學描述:R×S={<a1,a2,...,an,b1,b2,...,bm>|<a1,a2,...,an>∈R∧<b1,b2,...,bm>∈S}
當一個檢索設計到很多表時(如學生表和課程表),便需要將這些表串接或拼接起來,染後才能檢索,這時,就要使用廣義笛卡爾積運算
是後面學習各種連接運算的基礎。
R×S=S×R
兩個關係R和S,它們的屬性個數分別爲n和m,元組個數分別爲x和y(R是n度關係,S是m度關係)。
則笛卡爾積R×S的屬性個數=n+m。
則笛卡爾積R×S的元組個數=x×y。

(4)選擇(SELECT)

定義:給定一個關係R,同時給定一個選擇的條件condition(簡記con),選擇運算結果也是一個關係,記作σcon(R),它從關係R中選擇出滿足給定條件condition的元組構成。
數學描述:σcon(R)={t|t∈R∧con(t)=true},
設R(A1,A2,...,An),t是R的元組,t的分量記爲t[Ai],或者簡寫爲Ai
條件con由邏輯運算符連接比較表達式組成(邏輯運算符∨,∧,┐,或者寫爲and,or,not)
比較表達式:XθY,其中X,Y是t的分量、常量或簡單函數,θ是比較運算符,θ∈{>,≥,<,≤,=,≠}。

(5)投影(PROJECT)

定義:給定一個關係R,投影運算結果也是一個關係,記作ΠA(R),它從關係R中選出屬性包含在A中的列構成。
數學描述:ΠAi1,Ai2,...,Aik(R)={<t[Ai1],t[Ai2],...,t[Aik]>|t∈R}
設R(A1,A2,...,An)
{Ai1,Ai2,...,Aik}∈{A1,A2,...,An}
t[Ai]表示元組t中相應於屬性中的分量。
投影運算可以對原關係的列在投影后重新排列
投影操作從給定關係中選出某些列組成新的關係,而選擇操作是從給定關係中選出某些行組成新的關係。

關係代數之擴展操作

(1)交(INTERSECTION)

定義:假設關係R和關係S是並相容的,則關係R與關係S的交運算結果也是一個關係,記作:R∩S,它由同時出現在關係R和關係S中的元組構成。
數學描述:R∩S={t|t∈R∧t∈S},其中t是元組
R∩S和S∩R的運算結果是同一個關係。
交運算可以通過差運算來實現:
R∩S=R-(R-S)=S-(S-R)
漢語中的“既...又...”,“...,並且...”通常意義是交運算的要求。

(2)θ-連接(θ-JOIN,theta-JOIN)

投影與選擇操作只是對單個關係(表)進行操作,而實際引用中往往涉及多個表之間的操作,這就需要θ-連接操作。
定義:給定關係R和關係S,R與S的θ連接運算結果也是一個關係,記作R⋈S(AθB),它由關係R和關係S的笛卡爾積中,選取R中屬性A與S中屬性B之間滿足θ條件的元組構成。
數學描述:R⋈S(AθB)=σt[A]θs[B](R×S)
設R(A1,A2,...,An),A∈{A1,A2,...,An}
設S(A1,A2,...,An),B∈{A1,A2,...,An}
t是關係R中的元組,s是關係S中的元組
屬性A和屬性B具有可比性。
θ是比較運算符,θ∈{>,≥,<,≤,=,≠}
在實際引用中θ-連接操作經常與投影、選擇操作一起使用。

關係與自身的θ-連接

有時在使用連接操作時我們需要自連接。這時候我們就要用到更名操作ρ。
使用ρ進行更名操作,ρnname(oname)
其中nname爲新的名字,oname爲以前的名字。

等值連接(Equi-Join)

當θ爲=,就是等值連接,等值連接是θ-連接的一個特例(區別於自然連接)。

(1)自然連接(Natural-Join)

定義:給定關係R和關係S,R與S的而自然連接運算也是一個關係,記作R⋈S,它由關係R和關係S的笛卡爾積中,選取相同屬性組B上相等的元組所構成。
數學描述:R⋈S=σt[B]=s[B](R×S)
自然連接是一種特殊的等值連接。
要求關係R和關係S必須有相同的屬性組B(如R,S共有一個屬性B1,則B是B1,如R,S共有一組屬性B1,B2,...,Bn,則B是這些共有的所有屬性)
R,S屬性相同,值必須相等才能連接,即:
R.B1=S.B1 AND R.B2=S.B2 ... R.Bn=S.Bn才能連接。
要在結果中去掉重複的屬性列(因結果中R.Bi始終是等於S.Bi所以可只保留一列即可)。

關係代數之複雜擴展操作

(1)除(Division)

除法運算常用於求解“查詢...全部的/所有的...”問題
前提條件:給定關係R(A1,A2,...,An)爲n度關係,關係S(B1,B2,...,Bm)爲m度關係。如果可以進行關係R與關係S的除運算,當且僅當:屬性集{B1,B2,...,Bm}是屬性集{A1,A2,...,An}的真子集,即m<n。
定義:關係R和S的除運算結果也是一個關係,記作R÷S,分兩部分來定義。
先定義R÷S結果的屬性應有哪些?
設屬性集{C1,C2,...,Ck}={A1,A2,...,An}-{B1,B2,...,Bm},則有k=n-m則R÷S的結果關係是k度關係,由{C1,C2,...,Ck}屬性構成。
再定義R÷S的元組怎樣組成?
再設關係R(a1,a2,...,an)和關係S(b1,b2,...,bm),那麼R÷S結果關係爲元組<c1,c2,...,ck>的集合,元組<c1,c2,...,ck>滿足下列條件:
它與S中每一個元組<b1,b2,bm>組合形成的一個新元組都是R中的某一個元組<a1,a2,...,an>。(其中,a1,...,an,b1,...,bm,c1,...,ck分別是屬性A1,...,An,B1,...,Bm,C1,...,Ck的值)
數學描述:R÷S={t|t∈ΠR-S(R)∧∀u∈S(tu∈R)}=ΠR-S(R)-ΠR-S((ΠR-S(R)×S)-R)

(1)外連接(Outer-Join)

外連接問題的提出:有時在進行自然連接操作時會忽略掉沒有某一項屬性的元組,而我們恰恰需要整理出所有元組,這時候我們就需要外連接。
定義:兩個關係R與S進行連接時,如果R(或S)中的元組在S(或R)中找不到相匹配的元組,則爲了避免該元組信息丟失,從而將該元組與S(或R)中假定存在的全爲空值的元組連接,放置在結果關係中,這種連接稱之爲外連接(Outer Join)。
外連接=自然連接(或θ連接)+失配的元組(與全空元組形成的連接)
外連接的形式:左外連接、右外連接、全外連接。
左外連接=自然連接(或θ連接)+左側表中失配的元組
右外連接=自然連接(或θ連接)+右側表中失配的元組
全外連接=自然連接(或θ連接)+兩側表中失配的元組
左外連接(Left Outer join)記爲:R⋊S
右外連接(Right Outer Join)記爲:R⋉S
全外連接(Full Outer Join)記爲:R⋈S

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