關(guān)系模型之關(guān)系代數(shù)_第1頁(yè)
關(guān)系模型之關(guān)系代數(shù)_第2頁(yè)
關(guān)系模型之關(guān)系代數(shù)_第3頁(yè)
關(guān)系模型之關(guān)系代數(shù)_第4頁(yè)
關(guān)系模型之關(guān)系代數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

空間數(shù)據(jù)庫(kù)第五章-關(guān)系模型之關(guān)系代數(shù)2019.1.16本講學(xué)習(xí)什么?基本內(nèi)容1.關(guān)系代數(shù)之基本操作2.關(guān)系代數(shù)之?dāng)U展操作3.關(guān)系代數(shù)之組合與應(yīng)用訓(xùn)練4.關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作重點(diǎn)與難點(diǎn)關(guān)系代數(shù)基本操作:并、差、積、選擇、投影、(更名)。關(guān)系代數(shù)擴(kuò)展操作:交、-連接、自然連接。關(guān)系代數(shù)復(fù)雜擴(kuò)展操作:除、外連接書寫關(guān)系代數(shù)的基本思維訓(xùn)練:“一個(gè)集合,施加一個(gè)操作得到一個(gè)集合,依次施加關(guān)系代數(shù)操作,進(jìn)而得到所需結(jié)果”“以集合為中心”關(guān)系代數(shù)概述關(guān)系代數(shù)概述(1)關(guān)系代數(shù)運(yùn)算的特點(diǎn)?基于集合,提供了一系列的關(guān)系代數(shù)操作:并、差、笛卡爾積(廣義積)、選擇、投影和更名等基本操作以及交、連接和關(guān)系除等擴(kuò)展操作,是一種集合思維的操作語(yǔ)言。關(guān)系代數(shù)操作以一個(gè)或多個(gè)關(guān)系為輸入,結(jié)果是一個(gè)新的關(guān)系。用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢,需要指明所用操作,具有一定的過(guò)程性。是一種抽象的語(yǔ)言,是學(xué)習(xí)其他數(shù)據(jù)庫(kù)語(yǔ)言,如SQL等的基礎(chǔ)關(guān)系代數(shù)操作:集合操作和純關(guān)系操作(1)集合操作(2)純關(guān)系操作關(guān)系代數(shù)概述(2)關(guān)系代數(shù)運(yùn)算的基本操作?基本動(dòng)作對(duì)基本動(dòng)作的抽象與控制“并”動(dòng)作“差”動(dòng)作“積”動(dòng)作“選擇”動(dòng)作“投影”動(dòng)作解釋這種組合,

并按次序調(diào)用基本動(dòng)作予以執(zhí)行程序執(zhí)行機(jī)構(gòu)程序指令基本動(dòng)作SelectWhereSname From

Student,SCStudent.S#

=

SC.S#

andSC.C#

=‘001’Order

ByScoreDESC;Sname(student.s#=sc.s#(Student

SC))復(fù)雜動(dòng)作

=

基本動(dòng)作的各種方式的組合關(guān)系模型基本運(yùn)算關(guān)系模型基本運(yùn)算的各種組合SQL語(yǔ)言數(shù)據(jù)庫(kù)管理系統(tǒng)“與”動(dòng)作“或”動(dòng)作“非”動(dòng)作i i i((Ai

XOR

Bi)

AND

Ci)

OR

(Ai

AND

Bi)……

基本動(dòng)作

對(duì)基本動(dòng)作的抽象與控制ANDORNOT

指令解釋這種組合,并按次序調(diào)用基本動(dòng)

執(zhí)行作予以執(zhí)行程序機(jī)構(gòu)基

動(dòng)

作復(fù)雜動(dòng)作=

基本動(dòng)作的各種方式的組合程序

(A

XOR

B

)

XOR

C關(guān)系代數(shù)概述(3)為什么要提出關(guān)系代數(shù)關(guān)系代數(shù)的基本操作某些關(guān)系代數(shù)操作,如并、差、交等,需滿足“并相容性”并相容性

參與運(yùn)算的兩個(gè)關(guān)系及其相關(guān)屬性之間有一定的對(duì)應(yīng)性、可比性或意義關(guān)聯(lián)性

定義:關(guān)系R與關(guān)系S存在相容性,當(dāng)且僅當(dāng):(1)關(guān)系R和關(guān)系S的屬性數(shù)目必須相同;(2)對(duì)于任意i,關(guān)系R的第i個(gè)屬性的域必須和關(guān)系S的第i個(gè)屬性的域相同假設(shè):R(A1,

A2,

…,An),

S(B1,B2,…,Bm)R和S滿足并相容性:n

=

m

并且

Domain(Ai)=

Domain(Bi)關(guān)系代數(shù)之基本操作(0)關(guān)系代數(shù)運(yùn)算的約束關(guān)系代數(shù)之基本操作(0)關(guān)系代數(shù)運(yùn)算的約束并相容性的示例STUDENT(SID

char(10),

Sname

char(8),

Age

char(3))TEACHER(PID

char(10),

Pname

char(8),

Age

char(3))關(guān)系STUDENT與關(guān)系PROFESSOR是相容的,因?yàn)椋?1)關(guān)系R和關(guān)系S的屬性數(shù)目都是3(2)關(guān)系R的屬性SID與關(guān)系S的屬性PID的域都是char(10)(3)關(guān)系R的屬性Sname與關(guān)系S的屬性Sname的域都是char(8)(4)關(guān)系R的屬性Age與關(guān)系S的屬性Age的域都是char(3)并(Union)

定義:假設(shè)關(guān)系R和關(guān)系S是并相容的,則關(guān)系R與關(guān)系S的并運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:R∪S,

它由或者出現(xiàn)在關(guān)系R中,或者出現(xiàn)在S中的元組構(gòu)成。數(shù)學(xué)描述:

RS={

t

|tR

tS

}

,其中t是元組并運(yùn)算是將兩個(gè)關(guān)系的元組合并成一個(gè)關(guān)系,在合并時(shí)去掉重復(fù)的元組。

R

∪S

S

∪R

運(yùn)算的結(jié)果是同一個(gè)關(guān)系SRRS關(guān)系代數(shù)之基本操作(1)“并”操作

并操作的示例一(抽象的)

假設(shè)R與S是并相容的兩個(gè)關(guān)系,則R

S是幾個(gè)元組呢?關(guān)系代數(shù)之基本操作(1)“并”操作

并操作的示例二(語(yǔ)義的)

查詢或者參加體育隊(duì)或者參加文藝隊(duì)所有學(xué)生的信息R(參加體育隊(duì)的學(xué)生)S(參加文藝隊(duì)的學(xué)生)關(guān)系代數(shù)之基本操作(1)“并”操作R∪S(或者參加體育隊(duì)或者文藝隊(duì)的學(xué)生)至少參加了兩者之一的學(xué)生

并操作的示例三(語(yǔ)義的)

若R為空間系的學(xué)生,S為國(guó)土系的學(xué)生則:R∪S為兩系所有的學(xué)生

若R為學(xué)過(guò)數(shù)據(jù)庫(kù)課程的學(xué)生,S為學(xué)過(guò)地形測(cè)量課程的學(xué)生則:R∪S為至少學(xué)過(guò)兩門課之一的所有學(xué)生

漢語(yǔ)中的“或者…或者…”通常意義是并運(yùn)算的要求。

首先要準(zhǔn)確理解漢語(yǔ)的查詢要求,然后再找到正確的操作

同學(xué)可舉出更多的示例…關(guān)系代數(shù)之基本操作(1)“并”操作差(Difference)

定義:假設(shè)關(guān)系R

和關(guān)系S是并相容的,則關(guān)系R

與關(guān)系S

的差運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:R

S,

它由出現(xiàn)在關(guān)系R中但不出現(xiàn)在關(guān)系S中的元組構(gòu)成。

數(shù)學(xué)描述:

R

S={

t

|

tR

t

S

}

,其中t是元組

R

S與

S

R是不同的RSR

SRSS

R關(guān)系代數(shù)之基本操作(2)“差”操作

差操作的示例一(抽象的)

假設(shè)R與S是并相容的兩個(gè)關(guān)系,則R-S是?S-R是?關(guān)系代數(shù)之基本操作(2)“差”操作

差操作的示例二(語(yǔ)義的)

查詢只參加體育隊(duì)而未參加文藝隊(duì)的學(xué)生信息

查詢只參加文藝隊(duì)而未參加體育隊(duì)的學(xué)生信息R(參加體育隊(duì)的學(xué)生)S(參加文藝隊(duì)的學(xué)生)關(guān)系代數(shù)之基本操作(2)“差”操作R-S(參加體育隊(duì)而未參加文藝隊(duì)的學(xué)生)S-R(參加文藝隊(duì)而未參加體育隊(duì)的學(xué)生)

差操作的示例三(語(yǔ)義的)

若R為空間系的學(xué)生,S為二年級(jí)的學(xué)生,則:R-

S為

空間系非二年級(jí)的學(xué)生S-

R為二年級(jí)非空間系的學(xué)生

若R為學(xué)過(guò)數(shù)據(jù)庫(kù)課程的學(xué)生,S為學(xué)過(guò)地形測(cè)量課程的學(xué)生,

則:R-

S為

學(xué)過(guò)數(shù)據(jù)庫(kù)課程但沒學(xué)過(guò)自控理論課程的所有學(xué)生

漢語(yǔ)中的“是…但不含…”通常意義是差運(yùn)算的要求。

首先要準(zhǔn)確理解漢語(yǔ)的查詢要求,然后再找到正確的操作

同學(xué)可舉出更多的示例…關(guān)系代數(shù)之基本操作(2)“差”操作廣義笛卡爾積

(Cartesian

Product)

定義:關(guān)系R

(<a1

,

a2,…,an>)

與關(guān)系S(<b1,

b2,

…,

bm>)的廣義笛卡爾積(簡(jiǎn)稱廣義積,或

或笛卡爾積)

運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:

RxS,

它由關(guān)系R中的元組與關(guān)系S的元組進(jìn)行所有可能的拼接(或串接)構(gòu)成。關(guān)系代數(shù)之基本操作(3)“笛卡爾積”操作R(A1,

A2,

…,An),

S(B1,B2,…,Bm)R

(<a1

,

a2,…,an>),S(<b1,

b2,

…,

bm>)學(xué)號(hào)(A1)課程號(hào)(A2)成績(jī)(A3)20141111(a1)1001(a2)96(a3)20141111(a1)1003(a2)79(a3)20141111(a1)1004(a2)63(a3)成績(jī)(R)數(shù)學(xué)描述:

Rx

S={

<a1

,

a2,

…,

an,b1,

b2,…,bm>|<a1,

a2,

…,an

>

R

<b1,b2,…,

bm>S

}

廣義積操作的示例一(抽象的)

關(guān)系R的元組數(shù)目是3,度數(shù)是3;

關(guān)系S的元組數(shù)目是4,度數(shù)是3;

則R

xS的元組數(shù)目是12,

度數(shù)是6?關(guān)系代數(shù)之基本操作(3)“笛卡爾積”操作

再看一個(gè)示例

(抽象的)關(guān)系代數(shù)之基本操作(3)“笛卡爾積”操作

廣義積操作的示例二(語(yǔ)義的)

當(dāng)一個(gè)檢索涉及到多個(gè)表時(shí)(如學(xué)生表和課程表),便需要將這些表串接或拼接起來(lái),然后才能檢索,這時(shí),就要使用廣義笛卡爾積運(yùn)算

是后面學(xué)習(xí)各種連接運(yùn)算的基礎(chǔ)關(guān)系代數(shù)之基本操作(3)“笛卡爾積”操作關(guān)系代數(shù)之基本操作(3)“笛卡爾積”操作

RxS=SxR:

RxS為R中的每一個(gè)元組都和S中的所有元組進(jìn)行串接。

SxR為S中的每一個(gè)元組都和R中的所有元組進(jìn)行串接。結(jié)果是相同的。

兩個(gè)關(guān)系R和S,它們的屬性個(gè)數(shù)分別為n和m(R是n度關(guān)系,S是m度關(guān)系)則笛卡爾積

RxS的屬性個(gè)數(shù)

=

n

+

m。即元組的前n個(gè)分量是R中元組的分量,后m個(gè)分量是S中元組的分量(R

x

S是n+m度關(guān)系).

兩個(gè)關(guān)系R和S,它們的元組個(gè)數(shù)分別為x和y(關(guān)系R的基數(shù)x,S的基數(shù)y),則笛卡爾積R

x

S的元組個(gè)數(shù)

=

x

y。(R

x

S的基數(shù)是x

y).選擇(Select)

定義:給定一個(gè)關(guān)系R,

同時(shí)給定一個(gè)選擇的條件condition(簡(jiǎn)記con),

選擇運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作con(R)

,

它從關(guān)系R中選擇出滿足給定條件condition的元組構(gòu)成。

數(shù)學(xué)描述:

con(R)={t|t

R

con(t)=

‘真’}

,

條件con由邏輯運(yùn)算符連接比較表達(dá)式組成

邏輯運(yùn)算符:,,

或?qū)憺?/p>

and

,

or,

not

比較表達(dá)式:X

Y,

其中X,

Y

是t的分量、常量或簡(jiǎn)單函數(shù),

是比較運(yùn)算符,

{

,

,

,

,

,

≠}關(guān)系代數(shù)之基本操作(4)“選擇”操作關(guān)系代數(shù)之基本操作(4)“選擇”操作選擇操作的示例一(抽象的)選擇A3值大于0的元組?選擇A2值為a或者b的元組?選擇A3大于0且A1等于A2的元組

選擇操作的示例二(語(yǔ)義的)R(學(xué)生表)查詢所有男同學(xué)的信息查詢所有年齡小于20同學(xué)的信息查詢所有3系或5系的同學(xué)信息關(guān)系代數(shù)之基本操作(4)“選擇”操作

Ssex

=“男”(R)Sage<20

(學(xué)生表)

D#=“03”ν

D#=“05”(學(xué)生表)

選擇操作的示例三(語(yǔ)義的)R(學(xué)生表)查詢不在(年齡大于20的3系同學(xué))要求之內(nèi)的所有其它同學(xué)的信息查詢所有年齡大于20的3系同學(xué)的信息關(guān)系代數(shù)之基本操作(4)“選擇”操作

Sage>20

D#=“03”(R)

?(Sage>20D#=“03”)

(學(xué)生表)

選擇操作的示例四(語(yǔ)義的)

選擇操作從給定的關(guān)系中選出滿足條件的行

條件的書寫很重要,尤其是當(dāng)不同運(yùn)算符在一起時(shí),要注意運(yùn)算符的優(yōu)先次序,優(yōu)先次序自高至低為{

括??;

;

;

;

}

例如:Sage<20

Sage>18

D#=“03”與(Sage<20

Sage>18)

D#

=

“03”

同學(xué)可舉出更多的示例…關(guān)系代數(shù)之基本操作(4)“選擇”操作投影(Project)

定義:給定一個(gè)關(guān)系R,

投影運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作

A(R)

,

它從關(guān)系R中選出屬性包含在A中的列構(gòu)成。

數(shù)學(xué)描述:

(R

)=A ,

A ,…,Ai1 i2 ik{<t[Ai1],

t[Ai2],…,t[Aik]>

|

tR}

設(shè)R(A1

,A2,

…,An)

{Ai1,

Ai2,…,Aik

}

{

A1

,A2,

…,An

}

t[Ai]表示元組t中相應(yīng)于屬性Ai的分量

投影運(yùn)算可以對(duì)原關(guān)系的列在投影后重新排列投影操作從給定關(guān)系中選出某些列組成新的關(guān)系選擇操作是從給定關(guān)系中選出某些行組成新的關(guān)系關(guān)系代數(shù)之基本操作(5)“投影”操作投影操作的示例一(抽象的)投影出A3列的元組?投影出A3,A1兩列的元組?關(guān)系代數(shù)之基本操作(5)“投影”操作

如果投影后有重復(fù)元組,則應(yīng)去掉

投影操作的示例二(語(yǔ)義的)R(學(xué)生表)查詢所有學(xué)生的姓名和年齡查詢所有學(xué)生的姓名及其所在的系關(guān)系代數(shù)之基本操作(5)“投影”操作Sname,Sage

(學(xué)生表)

Sname,

D#

(R)

投影與選擇操作一起使用的示例(語(yǔ)義的)查詢所有在3系就讀的且年齡大于19的學(xué)生的學(xué)號(hào)和姓名R(學(xué)生表)查詢所有在4系就讀的且男同學(xué)的學(xué)號(hào)和姓名用戶可以根據(jù)需要通過(guò)投影、選擇操作查詢他所關(guān)心的數(shù)據(jù)信息。關(guān)系代數(shù)之基本操作(5)“投影”操作

S#,

Sname(

D#=“03”Sage>19

(學(xué)生表))

S#,

Sname(

D#=“04”Ssex=‘男’

(學(xué)生表))關(guān)系代數(shù)“并” “差” “積”選擇 投影關(guān)系代數(shù)的基本書寫思路:選出將用到的關(guān)系/表做“積”運(yùn)算做選擇運(yùn)算保留所需的行/元組做投影運(yùn)算保留所需的列/屬性關(guān)系代數(shù)之基本操作(6)小結(jié)選擇投影關(guān)系代數(shù)的擴(kuò)展操作交(Intersection)

定義:假設(shè)關(guān)系R和關(guān)系S是并相容的,則關(guān)系R與關(guān)系S的交運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作:R∩S,

它由同時(shí)出現(xiàn)在關(guān)系R和關(guān)系S中的元組構(gòu)成。數(shù)學(xué)描述:

RS={

t

|tR

tS

}

,其中t是元組

R∩S

S∩R運(yùn)算的結(jié)果是同一個(gè)關(guān)系交運(yùn)算可以通過(guò)差運(yùn)算來(lái)實(shí)現(xiàn):R

S=R

(R

S)=S

(S

R)RSRS關(guān)系代數(shù)之?dāng)U展操作(1)“交”操作R

S=R

(R

S)=R

R+S

=S=S

(S

R)=S

S+

R=R

交操作的示例一(抽象的)

假設(shè)R與S是并相容的兩個(gè)關(guān)系,則R

S?關(guān)系代數(shù)之?dāng)U展操作(1)“交”操作

交操作的示例二(語(yǔ)義的)

查詢既參加體育隊(duì)又參加文藝隊(duì)的學(xué)生信息R(參加體育隊(duì)的學(xué)生)S(參加文藝隊(duì)的學(xué)生)關(guān)系代數(shù)之?dāng)U展操作(1)“交”操作R∩S(既參加體育隊(duì)又參加文藝隊(duì)的學(xué)生)

交操作的示例三(語(yǔ)義的)

若R為年齡小于20歲的學(xué)生,S為空間系的學(xué)生,則:

R

S為空間系且年齡小于20歲的所有學(xué)生

若R為學(xué)過(guò)數(shù)據(jù)庫(kù)課程的學(xué)生,S為學(xué)過(guò)地形測(cè)量的學(xué)生,

則:

R

S為既學(xué)過(guò)數(shù)據(jù)庫(kù)課程又學(xué)過(guò)地形測(cè)量的所有學(xué)生

漢語(yǔ)中的“既…又…”,“…,

并且…”通常意義是交運(yùn)算的要求首先要準(zhǔn)確理解漢語(yǔ)的查詢要求,然后再找到正確的操作

同學(xué)可舉出更多的示例…關(guān)系代數(shù)之?dāng)U展操作(1)“交”操作-連接(-Join,

theta-Join)

投影與選擇操作只是對(duì)單個(gè)關(guān)系(表)進(jìn)行操作,

而實(shí)際應(yīng)用中往往涉及多個(gè)表之間的操作,

這就需要-連接操作

比如:查詢數(shù)據(jù)庫(kù)成績(jī)?cè)?0分以上的學(xué)生姓名(涉及Student,

Course,

SC)關(guān)系代數(shù)之?dāng)U展操作(2)“-連接”操作

定義:給定關(guān)系R和關(guān)系S,

R與S的連接運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作

,它由關(guān)系R和關(guān)系S的笛卡爾積中,

選取R中屬性A與S中屬性B之間滿足

條件的元組構(gòu)成。

數(shù)學(xué)描述:

設(shè)R(A1

,A2,

…,An),

A

{

A1

,A2

,…

,An}

S(B1

,B2,…,Bm),

B

{

B1

,B2,

…,Bm

}

t是關(guān)系R中的元組,s是關(guān)系S中的元組

屬性A和屬性B具有可比性

是比較運(yùn)算符,

{

,

,

,

,

,

≠}

在實(shí)際應(yīng)用中,-連接操作經(jīng)常與投影、選擇操作一起使用關(guān)系代數(shù)之?dāng)U展操作(2)“-連接”操作(2)“-連接”操作

-連接(-Join)操作的示例一(抽象的)關(guān)系代數(shù)之?dāng)U展操作

-連接操作的示例二(語(yǔ)義的)員工表Worker(W#,Wname,Wsex,Wage,Degree),職位限定表Position(Type,Limited_Degree)競(jìng)聘的崗位必須由不低于其最低學(xué)歷要求的人員擔(dān)任,1:本科2:碩士3:博士找出所有員工的姓名及其可能競(jìng)聘職位的名稱關(guān)系代數(shù)之?dāng)U展操作(2)“-連接”操作πWname,

Type(workerposition)degree

>=

limited_degree第一步:對(duì)兩個(gè)表進(jìn)行廣義笛卡爾積關(guān)系代數(shù)之?dāng)U展操作(2)“-連接”操作第三步:在(Wname,Type)上進(jìn)行投影操作,得到最終的結(jié)果第二步:從廣義笛卡爾積中選取出符合(degree

>=

limited_degree)條件的元組×××

-連接操作的示例三(續(xù))

關(guān)系與自身的-連接

查詢至少98030101號(hào)同學(xué)和98040202號(hào)同學(xué)學(xué)過(guò)的所有課程號(hào)注:上式SC1

(SC)表更名操作,即將表SC更名為SC1,當(dāng)一個(gè)表需要和其自身進(jìn)行連接運(yùn)算時(shí),通常要使用更名操作πSC.C#

(σSC.S#=“98030101”

SC1.S#=“98040202”(SC

SC1

(SC))SC.C#=SC1.C#關(guān)系代數(shù)之?dāng)U展操作(2)“-連接”操作關(guān)系代數(shù)之?dāng)U展操作(2)“-連接”操作

特別注意:雖然我們?cè)谥v解-連接操作時(shí),使用笛卡爾積然后再進(jìn)行選擇來(lái)得到-連接結(jié)果。這主要是方便大家理解。但當(dāng)引入連接操作后,DBMS可直接進(jìn)行連接操作,而不必先形成笛卡爾積。等值連接(Equi-Join)

定義:給定關(guān)系R和關(guān)系S,

R與S的等值連接運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作

,它由關(guān)系R和關(guān)系S的笛卡爾積中選取R中屬性A與S中屬性B上值相等的元組所構(gòu)成。

數(shù)學(xué)描述:當(dāng)-連接中運(yùn)算符為“=”時(shí),就是等值連接,等值連接是-連接的一個(gè)特例;

廣義積的元組組合并不是都有意義的,另廣義積的元組組合數(shù)目也非常龐大,因此采用-連接/等值連接運(yùn)算可大幅度降低中間結(jié)果的保存量,提高速度。關(guān)系代數(shù)之?dāng)U展操作(3)“等值-連接”操作

等值連接(Equi-Join)操作的示例一(抽象的)關(guān)系代數(shù)之?dāng)U展操作(3)“等值-連接”操作

等值連接(Equi-Join)操作的示例二(語(yǔ)義的)員工表Worker(W#,Wname,Wsex,Wage,Honor_type),獲獎(jiǎng)?lì)悇e表Honor(Type,

Title)

找出所有獲獎(jiǎng)員工姓名、年齡及其獲獎(jiǎng)的名稱Type關(guān)系代數(shù)之?dāng)U展操作(3)“等值-連接”操作πWname,

Wage,

Title(workerHonor)Honor_type=

Type第一步:對(duì)兩個(gè)表進(jìn)行廣義笛卡爾積關(guān)系代數(shù)之?dāng)U展操作(3)“等值-連接”操作第三步:在(Wname,

Wage,

Title)上進(jìn)行投影運(yùn)算,得到最終結(jié)果第二步:從廣義笛卡爾積中選取出符合(Honor_type=Type)條件

的元組√√√自然連接(Natural-Join)

定義:給定關(guān)系R和關(guān)系S,

R與S的自然連接運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作

,它由關(guān)系R和關(guān)系S的笛卡爾積中選取相同屬性組B上值相等的元組所構(gòu)成。

數(shù)學(xué)描述:自然連接是一種特殊的等值連接要求關(guān)系R和關(guān)系S必須有相同的屬性組B(如R,S共有一個(gè)屬性B1,則B是B1

,

如R,

S共有一組屬性B1,B2,…,Bn,則B是這些共有的所有屬性)

R,

S屬性相同,值必須相等才能連接,即R.B1

=S.B1 and

R.B2=

S.B2 …

and

R.Bn=S.Bn才能連接

要在結(jié)果中去掉重復(fù)的屬性列(因結(jié)果中R.Bi始終是等于S.Bi

所以可只保留一列即可)關(guān)系代數(shù)之?dāng)U展操作(4)“自然連接”操作

自然連接(Natural-Join)操作的示例一(抽象的)關(guān)系代數(shù)之?dāng)U展操作(4)“自然連接”操作

自然連接(Natural-Join)操作的示例二(語(yǔ)義的)

學(xué)生選課表SC(S#,C#,Score),課程表Course

(C#,

Cname,

Chours,Credit,

T#)關(guān)系代數(shù)之?dāng)U展操作(4)“自然連接”操作查詢所有學(xué)生選課的成績(jī)(包括學(xué)號(hào),課程名稱,成績(jī))πS#,Cname,Score(SCCourse)第一步:對(duì)兩個(gè)表進(jìn)行廣義笛卡爾積第三步:去掉重復(fù)的列關(guān)系代數(shù)之?dāng)U展操作(4)“自然連接”操作第二步:從廣義笛卡爾積中選取在相同列(C#)上值相同的元組√√√第四步:在(S#,

Cname,

Score)上進(jìn)行投影操作,得到最終結(jié)果提問:如果查詢所有學(xué)生選課的成績(jī)(包括學(xué)生姓名,課程名稱,成績(jī))πSname,Cname,Score(SCCourse

Student)關(guān)系代數(shù)之?dāng)U展操作(4)“自然連接”操作關(guān)系代數(shù)“并” “差” “積”選擇 投影關(guān)系代數(shù)的基本書寫思路:選出將用到的關(guān)系/表做“積”運(yùn)算(可用連接運(yùn)算替換)做選擇運(yùn)算保留所需的行/元組做投影運(yùn)算保留所需的列/屬性關(guān)系代數(shù)之?dāng)U展操作(5)小結(jié)“交”自然連接連接等值連接關(guān)系代數(shù)的應(yīng)用實(shí)例查詢表達(dá)式組合各種運(yùn)算查詢學(xué)習(xí)課程號(hào)為002的學(xué)生學(xué)號(hào)和成績(jī)?chǔ)蠸#,Score(

C#=“002”(

SC

)

)

查詢學(xué)習(xí)課程號(hào)為001的學(xué)生學(xué)號(hào)、姓名

查詢學(xué)習(xí)課程名稱為數(shù)據(jù)結(jié)構(gòu)的學(xué)生學(xué)號(hào)、姓名和這門課程的成績(jī)?chǔ)蠸#,Sname(C#=“001”(StudentSC

))StudentSCCourse關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(1)集合操作思維訓(xùn)練πS#,Sname,Score(σCname=“數(shù)據(jù)結(jié)構(gòu)”(StudentSCCourse))σCname=“數(shù)據(jù)結(jié)構(gòu)”(StudentSCCourse)查詢表達(dá)式注意連接與積的差別

查詢學(xué)習(xí)課程號(hào)為001的學(xué)生學(xué)號(hào)、姓名πS#,Sname(

C#=“001”(StudentSC

))πS#,Sname(

C#=“001”

Student.S#

=SC.S#

(Student SC

)

)連接條件關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(1)集合操作思維訓(xùn)練查詢學(xué)習(xí)課程號(hào)為001或002的學(xué)生的學(xué)號(hào)πS#(σC#=“001”ν

C#=“002”(SC))關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(2)注意有可能寫錯(cuò)喲,雖然語(yǔ)法看起來(lái)是正確的,但語(yǔ)義是錯(cuò)誤的查詢至少學(xué)習(xí)課程號(hào)為001和002的學(xué)生的學(xué)號(hào)

是否可寫成如下形式呢?πS#(σC#=“001”

C#=“002”(SC))

查詢至少學(xué)習(xí)課程號(hào)為001和002的學(xué)生的學(xué)號(hào)請(qǐng)問:上式使用的是等值連接,換成自然連接,寫成如下形式是否正確?πSC.S#(σSC.C#=“001”

SC1.C#=“002”(SCSC1

(SC))

SC.S#=SC1.S#πSC.S#(σ

SC.C#=“001”

SC1.C#=“002”(SCSC1

(SC))關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(2)注意有可能寫錯(cuò)喲,雖然語(yǔ)法看起來(lái)是正確的,但語(yǔ)義是錯(cuò)誤的πSname,Sage

(σC#<>“002”(S

SC))

前例我們也可以采用交運(yùn)算來(lái)實(shí)現(xiàn)πS#(σC#=“001”(SC))

πS#(σC#=“002”(SC))πSname,Sage

(S

(σC#=“002”

(SSC))關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(2)注意有可能寫錯(cuò)喲,雖然語(yǔ)法看起來(lái)是正確的,但語(yǔ)義是錯(cuò)誤的

再舉一個(gè)例子:查詢未學(xué)習(xí)課程號(hào)為002的學(xué)生姓名和年齡

同學(xué)給出了如下的查詢表達(dá)式,

這些表達(dá)式的結(jié)果是什么?

正確嗎?

查詢不學(xué)習(xí)課程號(hào)為002的學(xué)生姓名和年齡πSname,Sage

(S)

πSname,Sage

(σC#=“002”(SSC))關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(3)要特別注意語(yǔ)義

書寫關(guān)系代數(shù)表達(dá)式的基本思路

檢索是否涉及多個(gè)表,如不涉及,則可直接采用并、差、交、選擇與投影,只要注意條件書寫正確與否即可

如涉及多個(gè)表,則檢查

能否使用自然連接,將多個(gè)表連接起來(lái)(多數(shù)情況是這樣的)

如不能,能否使用等值或不等值連接(-連接)

還不能,則使用廣義笛卡爾積,注意相關(guān)條件的書寫

連接完后,可以繼續(xù)使用選擇、投影等運(yùn)算,即所謂數(shù)據(jù)庫(kù)的“選投連”操作πSname,Sage

(σC#=“002”

(SSC))關(guān)系代數(shù)操作之組合與應(yīng)用訓(xùn)練(4)書寫關(guān)系代數(shù)的思維…關(guān)系代數(shù)的復(fù)雜擴(kuò)展操作除(Division)除法運(yùn)算經(jīng)常用于求解“查詢…

全部的/所有的…”問題前提條件:給定關(guān)系R(A1

,A2,

,An)為n度關(guān)系,關(guān)系S(B1

,B2,

…,Bm)為m度關(guān)系

。如果可以進(jìn)行關(guān)系R與關(guān)系S的除運(yùn)算,當(dāng)且僅當(dāng):屬性集{

B1

,B2

,

…,

Bm}是屬性集{

A1

,A2,

…,An

}的真子集,即m

<

n。

定義:關(guān)系R和關(guān)系S的除運(yùn)算結(jié)果也是一個(gè)關(guān)系,記作R

S,分兩部分來(lái)定義。先定義RS結(jié)果的屬性應(yīng)有哪些?設(shè)屬性集{C1,C2,

…,Ck}

={A1,A2,

…,An

}

{B1,B2,

…,Bm},

則有k=n–m則RS結(jié)果關(guān)系是一k度(n-m度)關(guān)系,由{C1,C2,

…,Ck}屬性構(gòu)成關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作再定義RS的元組怎樣形成?再設(shè)關(guān)系R(<a1,…,

an>)和關(guān)系S

(<b1,…,bm

>),

那么RS結(jié)果關(guān)系為元組

<c1,…,

ck>的集合,元組

<c1,…,

ck>滿足下述條件:它與S中每一個(gè)元組<b1,…,bm

>組合形成的一個(gè)新元組都是R中的某一個(gè)元組<a1,…,an>

。(其中,a1,…,

an,b1,…,bm,c1,…,

ck分別是屬性A1

,

…,An,B1

,

…,Bm

C1,

…,Ck

的值)

數(shù)學(xué)描述:

R

S

={

t | t

R-S(R)

u

S

(

tu

R)

}=

R-S

(

R)

- R-S

(

(

R-S(R)

S)

-

R)關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作

除(Division)操作的示例一(抽象的)(1)(2)(3)(4)關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作

除(Division)操作的示例一(抽象的)(3)R

S

=

R-S(

R)

- R-S

(

(

R-S

(R)

S

)

-

R)關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作SC(學(xué)生選課表)Course

(課程表)

除(Division)操作的示例二(語(yǔ)義的)

查詢選修了全部課程的學(xué)生的學(xué)號(hào)

πC#(Course)πS#,C#(SC)選修了全部課程的學(xué)生的學(xué)號(hào)關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作(πS#,C#(SC)πC#(σS#=“98030102”(SC))))

除(Division)操作的示例三(語(yǔ)義的)

查詢選修了學(xué)號(hào)98030102學(xué)生所學(xué)全部課程的同學(xué)的姓名πSname(

S關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作(πS#,C#(SC)πC#(σS#=“98030102”(SC))))

除(Division)操作的示例三(語(yǔ)義的)

查詢選修了學(xué)號(hào)98030102學(xué)生所學(xué)全部課程的同學(xué)的姓名πSname(

S(SCπC#(σS#=“98030102”(SC))))πSname(

S

請(qǐng)問下述寫法與上有何不同?結(jié)果是否一樣關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(1)“除”操作=外連接(Outer-Join)外連接問題的提出(示例)Teacher(T#,Tname,Salary), Course(C#,

Cname),Teach(T#,C#)請(qǐng)列出所有老師的有關(guān)信息,包括姓名,工資,所教課程等。按上式連接的結(jié)果,003號(hào)教師的姓名和工資信息丟失了。因?yàn)樵赥each表中沒有和003號(hào)教師相匹配的元組,元組003號(hào)教師(又稱為失配元組)不能和其他表的元組形成連接元組。怎樣保證使003號(hào)教師信息仍舊出現(xiàn)在結(jié)果關(guān)系中呢?----這就需要外連接

T#,

Tname,

Salary,

C#,

CName

(TeacherTeach Course)關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(2)“外連接”操作定義:兩個(gè)關(guān)系R與S進(jìn)行連接時(shí),如果關(guān)系R(或S)中的元組在S(或R)中找不到相匹配的元組,則為了避免該元組信息丟失,從而將該元組與S(或R)中假定存在的全為空值的元組形成連接,放置在結(jié)果關(guān)系中,這種連接稱之為

外連接(Outer

Join)。關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(2)“外連接”操作關(guān)系代數(shù)之復(fù)雜擴(kuò)展操作(2)“外連接”操作

外連接

=

自然連接

(或連接)

+

失配的元組(與全空元組形成的連接)

外連接的形式:左外連接、右外連接、全外連接

左外連接

=

自然連接(或連接)

+

左側(cè)表中失配的元組

右外連接

=

自然連接(或連接)

+

右側(cè)表中失配的元組

全外連接

=

自然連接(或連接)

+

兩側(cè)表中失配的元組左外連接(LeftOuterJoin)記為:

R右外連接(RightOuterJoin)記為:R全外連接(FullOuterJoin)記為:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論