版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京朗視儀器股份有限公司介紹企業(yè)發(fā)展分析報(bào)告
- 2025年度個(gè)人戶外活動(dòng)組織管理合同范本4篇
- 2025年山東兗礦煤化供銷有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年陜西飛機(jī)工業(yè)有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- 2025年度個(gè)人二手房買賣合同規(guī)范文本8篇
- 2025年河南新鄉(xiāng)投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年浙江嘉興市海寧市水務(wù)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年浙江寧波富達(dá)股份有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年度個(gè)人生活助理服務(wù)合同8篇
- 基于5G技術(shù)的2025年度智能工廠解決方案合同3篇
- 稱量與天平培訓(xùn)試題及答案
- 超全的超濾與納濾概述、基本理論和應(yīng)用
- 2020年醫(yī)師定期考核試題與答案(公衛(wèi)專業(yè))
- 2022年中國(guó)育齡女性生殖健康研究報(bào)告
- 各種靜脈置管固定方法
- 消防報(bào)審驗(yàn)收程序及表格
- 教育金規(guī)劃ppt課件
- 呼吸機(jī)波形分析及臨床應(yīng)用
- 常用緊固件選用指南
- 私人借款協(xié)議書新編整理版示范文本
- 自薦書(彩色封面)
評(píng)論
0/150
提交評(píng)論