版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
DATABASESYSTEMCONCEPTS第六章形式化關(guān)系查詢語言01二月20232數(shù)據(jù)庫系統(tǒng)概念前言
6.1關(guān)系代數(shù)01二月20233數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系模型關(guān)系模型的數(shù)學(xué)定義1域定義:值的集合,一組域D1,D2,…,Dn。2笛卡爾積定義:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}集合元素:(d1,d2,…,dn)為n元組?;鶖?shù):若Di為有限集,mi為Di的取值個數(shù),則笛卡爾積的基數(shù)為:m=Πmi01二月20234數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系模型笛卡爾積為一個二維表。表的行對應(yīng)一個元組,表的每列對應(yīng)一個域。表的行數(shù)為m。例如,給出三個域D1=男人集合={張華,李平}
D2=女人集合={劉琴,許芳}D3=兒童集合={張立新,李國慶}
D1×D2×D3={(張華,劉琴,張立新),(張華,劉琴,李國慶),…,(李平,許芳,李國慶)}三個域的元素窮舉結(jié)合一遍形成的表,共計8行01二月20235數(shù)據(jù)庫系統(tǒng)概念前言二、關(guān)系模式關(guān)系模式及關(guān)系定義關(guān)系模式由關(guān)系名、屬性、域、屬性與域之間的映象、完整性約束、屬性間函數(shù)依賴定義。一般只取關(guān)系名、屬性名表示。關(guān)系模式:R=(A1,A2,…,An),R:關(guān)系名屬性名:Ai(1≤i≤n)屬性集:U={A1,A2,...,An},R=(U)關(guān)系的目:n,n=1,單元關(guān)系,n=2,二元關(guān)系
01二月20236數(shù)據(jù)庫系統(tǒng)概念前言二、關(guān)系模式關(guān)系:定義為D1×D2×…×Dn的子集,有實(shí)際意義。例如,家庭關(guān)系,同屬相關(guān)系關(guān)系表示:
r或r(R),元組表示:tr={t1,t2,…,tm}ti∈D1×D2×…×Dn,1≤i≤mrD1×D2×…×Dn字段表示:Ak(ti),ti在屬性Ak上的取值01二月20237數(shù)據(jù)庫系統(tǒng)概念前言二、關(guān)系模式關(guān)系子模式:R=(X),X為{A1,A2,…,An}子集,部分屬性形成的投影元組投影:ti(X),元組的部分屬性值一個關(guān)系模式下可以建若干個關(guān)系,例如,學(xué)生關(guān)系模式下可以建:學(xué)生1,學(xué)生201二月20238數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述關(guān)系代數(shù):一種抽象的查詢語言,基于集合論,是DML的傳統(tǒng)表達(dá)方式,表達(dá)關(guān)系的查詢,插入,刪除,修改等操作運(yùn)算對象:元組運(yùn)算結(jié)果:仍是關(guān)系,可以再參與其他關(guān)系運(yùn)算,由此復(fù)合成各種復(fù)雜的操作集合運(yùn)算:并、交、差、廣義笛卡爾積。專用運(yùn)算:選擇、投影、連接、除、更名、賦值。01二月20239數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述五種基本運(yùn)算:并、差、笛卡爾積、選擇、投影,其他運(yùn)算可以用基本運(yùn)算表示。關(guān)系代數(shù)的運(yùn)算符:比較運(yùn)算符:大于(>),大于等于(≥),小于(<=),小于等于(≤),等于(=),不等于(≠)邏輯運(yùn)算符:非(
),與(∧),或(∨)一.記號關(guān)系模式R=(A1,A2,…,An),關(guān)系r01二月202310數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述t∈r表示t是r的一個元組t[Ai]表示元組t在屬性Ai的一個分量A={Ai1,Ai2,…,Aik},表示屬性集U的部分A為屬性組,A為{A1,A2,…,An},去掉{Ai1,Ai2,…,Aik}后剩余屬性t[A]=(t[Ai1],t[Ai2],…,t[Aik])是元組t在A上的投影
tr⌒ts:元組的連接,tr∈r,ts∈s,r為n目,s為m目,tr⌒ts為n+m目的元組,前n個值屬于r,后m個值屬于s
01二月202311數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述樣本表:1.教材中圖6-22:employee雇員,works工作,company公司,manages經(jīng)理2.學(xué)生=(學(xué)號,姓名,性別、年齡,系別)課程=(課程號,課程名,先行課號,學(xué)分)選課=(學(xué)號,課程號,成績)01二月202312數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述學(xué)生
學(xué)號姓名性別年齡系別
98001張平男19計算機(jī)98002王欣女19計算機(jī)98003李華女20數(shù)學(xué)98004趙巖男18外語
01二月202313數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述課程
課程號課程名先行課號學(xué)分1數(shù)據(jù)庫54
2數(shù)學(xué)null63軟件工程544操作系統(tǒng)745數(shù)據(jù)結(jié)構(gòu)746計算機(jī)網(wǎng)絡(luò)43
7C語言
null
301二月202314數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述選課
學(xué)號課程號成績9800119098001286980015929800258098002177
98002394
01二月202315數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算集合運(yùn)算
1.并:r∪s≡
{t|t∈r∨t∈s}說明:r和s相同的目n,結(jié)果為關(guān)系仍為n目,作用是插入操作。2.差:r-s≡{t|t∈r∧ts}說明:r和s相同的目n,結(jié)果為關(guān)系仍為n目,由屬于r而不屬于s的元組組成,
作用是刪除操作,修改操作:(r-s)∪s‘01二月202316數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算3.交:r∩s≡{t|t∈r∧t∈s}說明:r和s相同的目n,結(jié)果為關(guān)系仍為n目,由屬于r也屬于s的元組組成,運(yùn)算可由并、差運(yùn)算表示:r∩s≡r-(r-s)4.笛卡爾積:r×s≡
{tr⌒ts|tr∈r∧ts∈s}
說明:結(jié)果為關(guān)系是(n+m)目,前n列是r的元組,后m列是s的元組,區(qū)別相同屬性加表名為前綴,元組連串,窮舉性結(jié)合01二月202317數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算專門運(yùn)算:選擇、投影、連接、除
1.選擇:σF(r)≡{t|t∈r∧F(t)=“真”}說明:將表r掃描一遍,從中選取滿足給定條件F的元組形成新關(guān)系,用于表的檢索。查找效率由比較次數(shù)決定,中間表行數(shù)應(yīng)盡量小,F(xiàn)為邏輯表達(dá)式:(1)αθβ,α,β是屬性、常量或簡單函數(shù),但不能同為常量,θ{,,,,,≠}(2)邏輯運(yùn)算符
,∧,∨連成復(fù)合邏輯條件。01二月202318數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:找出年齡小于20歲且外語系的學(xué)生。解:σ年齡<20)∧系別=“外語”(學(xué)生)
結(jié)果為{(98004,趙巖,18,外語)}例
:找出所有學(xué)生。解:σT(學(xué)生)2.投影
ΠA(r)={t[A]|t∈r}
說明:從r中選擇出若干屬性列組成新的關(guān)系,是單表運(yùn)算,A={Ai1,Ai2,…,Aik}
01二月202319數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:求所有學(xué)生的姓名、年齡。解:
Π姓名,年齡(學(xué)生)
結(jié)果為:{(張平,19),(王欣,19),(李華,20),(趙巖,18)}例:找出小于20歲的學(xué)生姓名和性別。解:
Π姓名,性別(σ年齡<20(學(xué)生))結(jié)果為:{(張平,男),(王欣,女),(趙巖,男)}01二月202320數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:找出已選課的學(xué)生的學(xué)號。解:Π學(xué)號(選課)結(jié)果為:{(98001),(98002)},投影之后,取消重復(fù)行,原表6個元組,變?yōu)閮蓚€,這是關(guān)系性質(zhì)決定的.哪個性質(zhì)?01二月202321數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算3.自然連接與條件連接自然連接:
r∞s={tr⌒ts[
B]|tr∈r∧ts∈S∧tr[B]=ts[B]}設(shè)關(guān)系R與S有共同屬性B={B1,B2,…Bk},兩關(guān)系的共同屬性進(jìn)行等值比較,值相同的連接成一個新元組,其屬性是R的全部屬性和S中去掉共同屬性后的剩余部分01二月202322數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算說明:(1)兩表有共同屬性,沒有,是笛卡爾積(2)比較是對應(yīng)屬性值間的等值比較(3)比較步驟:第一個表走一步,第二個表走一遍,二重循環(huán)。比較次數(shù)是兩表行數(shù)之積,中間表要小,結(jié)果表行數(shù)取決相等的元組數(shù)(4)結(jié)果屬性只保留共有一部分,不用前綴(5)主要作用是通過外碼擴(kuò)展其他屬性(6)另一作用是一個表去選擇另一表的元組01二月202323數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算基本運(yùn)算表示:r∞S=ΠA1,A2,…,An,Bk+1,…,Bm(σAi1=B1∧Ai2=B2…∧Aik=Bk(r×s))例:找出選修數(shù)據(jù)庫課程,且成績大于90的學(xué)生姓名。分析:數(shù)據(jù)庫在課程表中,成績在選課表中,姓名在學(xué)生表中,通過自然連接,把屬性湊齊。01二月202324數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
解:(1)
Π姓名(σ課程名=“數(shù)據(jù)庫”∧成績>90(學(xué)生∞選課∞課程))解:(2)
Π姓名(σ成績>90(σ課程名=“數(shù)據(jù)庫”(課程)∞選課)∞學(xué)生)解:(3)
Π姓名((σ課程名=“數(shù)據(jù)庫”(課程))∞(σ成績>90(選課)∞學(xué)生)對比三種解,比較次數(shù)有差別嗎?01二月202325數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算條件連接:稱為θ連接。選取屬性間滿足比較條件的元組。記作
r∞s
AθB={tr⌒ts|tr∈r∧ts∈s∧tr(A)θts(B)}其中A和B分別是R和S上的度數(shù)相等且類型可比的屬性組,θ是比較運(yùn)算符或邏輯運(yùn)算符連成的條件表達(dá)式說明:等價基本運(yùn)算表達(dá):
r∞s
AθB=σAθB(r×s)01二月202326數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算說明:兩個關(guān)系合并成一個新的關(guān)系,先笛卡爾積再選擇。主要解決屬性名不一樣的屬性之間的值比較比較不僅是等值中間表的屬性名有表前綴例:求課程名和先行課名?01二月202327數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算4.除象集:R=(X,Y),X,Y為R的屬性組,當(dāng)t[X]=x時,x在r中的象集
Yx={t[Y]|t∈r∧t[X]=x}理解:R的屬性任分兩組X,Y,任給值x,r中X部分等于x的行,在Y上的投影形成一個象集。每給具體的x,都有一個象集,可能是空。
01二月202328數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
例:rABCX={A},Y={B,C}a1b1c2X=a1BCa1=BCa2b2c7b1c2a3b4c6b2c3a1b2c3b2c1a4b6c6a2b2c3X=a5BCa5=?
a1b2c101二月202329數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算除運(yùn)算的定義:R=(X,Y),S=(Y),對應(yīng)兩個表r、s則:
r÷s={tr[X]|tr∈r∧SYx}說明:(1)對r中X的每個值x求象集,包含S的,X部分的值作為元組加入到結(jié)果關(guān)系(2)根據(jù)S劃分R為X、Y兩部分基本運(yùn)算表達(dá):
r÷S=ΠX(r)-ΠX(ΠX(r)×S-r)
01二月202330數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算rABC
s=BC
r÷s=Aa1b1c2b1c2a1a3b4c6b2c1a1b2c3b2c3a4b6c6a2b2c3s=C
r÷s=?
a1b2c1
c3
01二月202331數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:找出選修了所有課程的學(xué)生的學(xué)號:
解:Π學(xué)號,課程號(選課)÷Π課程號(課程)注意:1)除運(yùn)算是包含判斷
2)對語義“全部”、“所有”的處理
3)除運(yùn)算要湊準(zhǔn)格式
選課÷Π課程號(課程)是什么結(jié)果?01二月202332數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算四.關(guān)系代數(shù)查詢實(shí)例
例:檢索先行課號為‘5’的課程名。
課程號課程名先行課號學(xué)分
課程名t→
1數(shù)據(jù)庫54→
數(shù)據(jù)庫
2數(shù)學(xué)6軟件工程
3軟件工程544操作系統(tǒng)745數(shù)據(jù)結(jié)構(gòu)746計算機(jī)網(wǎng)絡(luò)43
7C語言3
解:Π課程名(σ先行課號=‘5’(課程))01二月202333數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
例:找張平所選修全部課程的課程名和成績。
學(xué)號姓名…
課程號課程名…
學(xué)號課程號成績
u→
98001張平v→
1數(shù)據(jù)庫w→
98001290
98002王欣2數(shù)學(xué)
98001186
98003李華3軟件工程98001592
98004趙巖4操作系統(tǒng)98002580
5數(shù)據(jù)結(jié)構(gòu)98002177
6計算機(jī)網(wǎng)絡(luò)980023947C語言
第一步:(學(xué)生∞選課)
01二月202334數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
學(xué)號姓名…課程號成績
課程號課程名…u→
98001張平…290v→1數(shù)據(jù)庫98001張平…1862數(shù)學(xué)98001張平…5923軟件工程98002王欣…5804操作系統(tǒng)
98002王欣…1775數(shù)據(jù)結(jié)構(gòu)
98002王欣…3946計算機(jī)網(wǎng)絡(luò)
7C語言
第二步:(學(xué)生∞選課
∞課程)
01二月202335數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
學(xué)號姓名…課程號成績課程名…
u→
98001張平…290數(shù)學(xué)…98001張平…186數(shù)據(jù)庫…98001張平…592數(shù)據(jù)結(jié)構(gòu)…98002王欣…580數(shù)據(jù)結(jié)構(gòu)…
98002王欣…177數(shù)據(jù)庫…
98002王欣…394軟件工程…
第三步:σ姓名=“張平”(學(xué)生∞選課
∞課程)
01二月202336數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
學(xué)號姓名…課程號成績課程名…
u→
98001張平…290數(shù)學(xué)…98001張平…186數(shù)據(jù)庫…98001張平…592數(shù)據(jù)結(jié)構(gòu)…
第四步:Π姓名,課程名,成績(
σ姓名=張平(學(xué)生∞選課
∞課程))
01二月202337數(shù)據(jù)庫系統(tǒng)概念前言
2.2關(guān)系代數(shù)基本運(yùn)算
姓名課程名成績
張平數(shù)學(xué)90張平數(shù)據(jù)庫86張平數(shù)據(jù)結(jié)構(gòu)92
問題:Π姓名,課程名,成績(σ姓名=張平(學(xué)生)∞選課∞課程)對嗎?
01二月202338數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:找出選了98001所選所有課程的學(xué)生學(xué)號。解:1.找出98001所選課的課號
Π課程號(σ學(xué)號=“98001”(選課))
2.找出其他同學(xué)的學(xué)號和所選課的課號
Π學(xué)號,課程號(選課)3.按學(xué)號分組作除法Π學(xué)號,課程號(選課)÷(Π課程號(σ學(xué)號=“98001”(選課))找出選修了98001所選所有課程的學(xué)生姓名,怎么寫
01二月202339數(shù)據(jù)庫系統(tǒng)概念前言
2.2關(guān)系代數(shù)基本運(yùn)算例:找出不選修任何課程的學(xué)生姓名。解:1.所有學(xué)生的學(xué)號減去選課的學(xué)號Π學(xué)號(學(xué)生)-Π學(xué)號(選課)2.自然連接上學(xué)生表,投出姓名Π姓名(學(xué)生∞(Π學(xué)號(學(xué)生)-Π學(xué)號(選課)))
問題:找出不選修98001的任何課程的學(xué)生姓名?01二月202340數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:找出至少選修了98001所選修的一門課的學(xué)生姓名。解:Π姓名(學(xué)生∞(Π學(xué)號(選課∞(Π課程號(σ學(xué)號=“98001”(選課))))))第二個自然連接起什么作用?例:找出至少選修了一門其先行課號為5號課程的學(xué)生姓名。解:Π姓名(Π學(xué)號(σ先行課號=“5”(課程)∞選課)∞學(xué)生)
01二月202341數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:求至少選修了操作系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)課程的學(xué)生學(xué)號。解:Π學(xué)號,課程號(選課)÷Π課程號(σ課程名=“操作系統(tǒng)”V課程名=“數(shù)據(jù)結(jié)構(gòu)”(課程))
還有其他寫法嗎?若“求選修了操作系統(tǒng)或數(shù)據(jù)結(jié)構(gòu)課程的學(xué)生學(xué)號”。怎么寫?01二月202342數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算關(guān)系代數(shù)其他運(yùn)算1.更名運(yùn)算ρx(e)為中間表e賦名xρx(A1,A2,…,An)(e)賦名x,屬性更名為A1,A2,…An
更名的作用:同表連接,屬性區(qū)分01二月202343數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:求選修數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)的學(xué)生學(xué)號Πs1.學(xué)號
(σs1.課程名=“數(shù)據(jù)結(jié)構(gòu)”∧s2.課程名=“數(shù)據(jù)庫”(ρs1(課程∞選課)∞ρs2(課程∞選課))
s1.學(xué)號=s2.學(xué)號
例:求數(shù)據(jù)庫課程的間接課程號?例:求數(shù)學(xué)成績比王欣同學(xué)高的學(xué)生?01二月202344數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算2.賦值運(yùn)算表名←關(guān)系代數(shù)表達(dá)式將表達(dá)式的結(jié)果賦值給一個表名。3.廣義投影Π表達(dá)式as屬性名,,...,表達(dá)式as屬性名
(e)說明:e是中間表,表達(dá)式?jīng)]有屬性名,用as短語缺確定一個屬性名。例:Π姓名,年齡+1as虛歲(學(xué)生)結(jié)果表的屬性名為姓名,虛歲01二月202345數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算
4.聚集函數(shù)
ɡ聚集函數(shù)(屬性)(e)聚集函數(shù)有sum(屬性名),avg(屬性名),min(屬性名),max(屬性名),count(屬性名),count-distinct(屬性名),結(jié)果是單屬性單行的中間表,屬性名:“聚集函數(shù)名(
屬性名)”,若重新確定屬性名,用as子句。ɡ
聚集函數(shù)(屬性)as屬性名(e)01二月202346數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例ɡavg(成績)(選課)結(jié)果:avg(成績)86.5例:
ɡavg(成績)as平均成績(選課)結(jié)果:平均成績86.5例:求數(shù)學(xué)的最高成績ɡMax(成績)(課程名=“數(shù)學(xué)”(課程)∞選課))01二月202347數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算分組聚集分組屬性1,分組屬性2,…ɡ聚集函數(shù)1(屬性1),聚集函數(shù)2(屬性2),…
(e)分組屬性1,分組屬性2,…ɡ聚集函數(shù)1(屬性1)as屬性名,聚集函數(shù)2(屬性2)as屬性名,…(e)例:學(xué)號ɡavg(成績)(選課)結(jié)果:
學(xué)號
avg(成績)
9800189.39800283.601二月202348數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例學(xué)號
ɡavg(成績)as平均成績(選課)結(jié)果:學(xué)號平均成績
9800189.39800283.6例:求選課三門及以上的學(xué)生姓名Π姓名(
(
σ選課次數(shù)>=3(學(xué)號
ɡcount(課程號)as選課次數(shù)(選課)))∞學(xué)生)01二月202349數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算5.空值1)值為空值的字段參加算術(shù)運(yùn)算,結(jié)果為空。2)值為空值的字段參加比較運(yùn)算,結(jié)果為unknown。3)值為空值的字段參加邏輯運(yùn)算,結(jié)果為:
trueandunknown,結(jié)果為unknownfalseandunknown,結(jié)果為falseunknownandunknown,結(jié)果為unknowntrueorunknown,結(jié)果為truefalseorunknown,結(jié)果為unknownunknownorunknown,結(jié)果為unknownnot(unknown),結(jié)果為unknown01二月202350數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算4)選擇運(yùn)算,邏輯值為true,選中,為false或unknown,不選中。5)連接運(yùn)算,按先笛卡爾積后選擇處理,兩元組共有屬性中有空值,不匹配。6)投影后,同一屬性下的空值視為同值。7)集合運(yùn)算,類投影處理。8)聚集,分組時,同一屬性下的空值視為同值。聚集屬性中的空值,不參加聚集。但參加count聚集。01二月202351數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算6.外連接對自然連接的擴(kuò)充1)左外連接左側(cè)表的元組全保留,與右側(cè)表不匹配的元組,用null填充。2)右外連接右側(cè)表的元組全保留,與左側(cè)表不匹配的元組,用null填充。3)全外連接左右側(cè)表的元組全保留,不匹配的元組,用null填充。01二月202352數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算數(shù)據(jù)庫修改刪除:差運(yùn)算與賦值運(yùn)算實(shí)現(xiàn)刪除運(yùn)算。
r←r-e插入:并運(yùn)算與賦值運(yùn)算實(shí)現(xiàn)插入運(yùn)算。r←r∪e更新:廣義投影與賦值運(yùn)算實(shí)現(xiàn)更新運(yùn)算。例:在課程關(guān)系中增加計算機(jī)原理課程,解:課程←課程∪{(“8”,“計算機(jī)原理”,“5”,4)}01二月202353數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算注意:參照完整性例:插入劉林,插入劉林選的課程學(xué)生←學(xué)生∪{(“98005”,“劉林”,“男”,19,“物理”)}選課←選課∪{(“98005”,“1”,86)}例:將所有學(xué)生的年齡增加1歲。學(xué)生←Π學(xué)號,姓名,性別,年齡+1as年齡,系別(學(xué)生)01二月202354數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運(yùn)算例:將王欣從學(xué)生關(guān)系及選課關(guān)系中刪掉。解:選課←選課-(Π學(xué)號(σ姓名=“王欣”(學(xué)生)∞選課)
學(xué)生←學(xué)生-(σ姓名=“王欣”(學(xué)生))例
:將學(xué)生關(guān)系中趙巖的年齡改為20歲:
r←Π學(xué)號,姓名,性別,20as年齡,系別(σ姓名=“趙巖”(學(xué)生))//元組學(xué)生←(學(xué)生-(σ姓名=“趙巖”(學(xué)生)))∪r01二月202355數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)查詢的表達(dá)不是唯一的,各個表達(dá)式有效率上的差別。自然連接有擴(kuò)展屬性的作用,還有選擇元組的作用除運(yùn)算是包含的運(yùn)算,可以處理“全部”一類問題。通過賦值運(yùn)算可以分幾步完成一個復(fù)雜的查詢幾個典型的查詢表達(dá)式的分析01二月202356數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)例:求選修了1號或2號課程的學(xué)號 方案1:
∏學(xué)號(課程號=“1”∨課程號=“2”(選課))
方案2:∏學(xué)號(課程號=“1”
(選課))∪∏學(xué)號(課程號=“2”(選課))01二月202357數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)例:求同時選修了1號和2號課程的學(xué)生號錯誤的寫法:∏學(xué)號(課程號=“1”課程號=“2”
(選課))正確的寫法:∏學(xué)號(課程號=“1”
(選課))∩∏學(xué)號(課程號=“2”
(選課))01二月202358數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)例:求選修了1號而沒有選2號課程的學(xué)號∏學(xué)號(課程號=“1”
(選課))-∏學(xué)號(課程號=“2”
(選課))例:求未選修1號課程的學(xué)生號方案1:∏學(xué)號(學(xué)生)-∏學(xué)號(課程號=“1”
(選課))方案2:∏學(xué)號(課程號≠“1”
(選課))//有些同學(xué)選了很多課包括課程號為1的哪個對?01二月202359數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)思考題:例:找出年齡最小的同學(xué)姓名,不用聚集函數(shù)例:求僅選修了1號課程的學(xué)生號例:找出選修且僅選修了數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)的學(xué)生姓名
01二月202360數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)供應(yīng)商S=(SNO(供應(yīng)商號),SN(供應(yīng)商名),CITY(城市))SSNOSN
CITY
S1精益天津
S2萬勝北京
S3東方北京
S4泰隆上海
S5康建南京01二月202361數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)零件P=(PNO(零件號),PN(名稱),COLOR(顏色),W(重量))PPNO
PN
COLOR
W
P1螺母紅12P2螺栓綠17P3螺絲刀藍(lán)14P4螺絲刀紅14P5凸輪藍(lán)40P6齒輪紅3001二月202362數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)工程項(xiàng)目J=(JNO(項(xiàng)目號),JN(項(xiàng)目名),CITY(城市))JJNOJNCITY
J1三建北京
J2一汽長春
J3彈簧廠天津
J4造船廠天津
J5機(jī)車廠唐山
J6無線電廠常州
J7半導(dǎo)體廠南京01二月202363數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)供應(yīng)SPJSNOPNOJNOQTY(數(shù)量)
S1P1J1200S1P1J3100S1P1J4700S1P2J2100S2P3J1400S2P3J2200S2P3J4500S2P3J540001二月202364數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)S2P5J1400S2P5J2100S3P1J1200S3P3J1200S4P5J1100S4P6J3300S4P6J4200S5P2J4100S5P3J1200S5P6J2200S5P6J450001二月202365數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運(yùn)算小結(jié)求(1)供應(yīng)工程J1零件的供應(yīng)商號。(2)供應(yīng)工程J1零件P1的供應(yīng)商名。(3)供應(yīng)工程J1紅色零件的供應(yīng)商的信息。(4)不用天津供應(yīng)商供應(yīng)的紅色零件的項(xiàng)目號。(5)用了S1供應(yīng)商供應(yīng)的全部零件的項(xiàng)目名。(6)不供應(yīng)螺母和齒輪的供應(yīng)商名。(7)不供應(yīng)S1供應(yīng)零件的供應(yīng)商名。(8)供應(yīng)數(shù)量大于200的藍(lán)色螺絲刀的供應(yīng)商名和項(xiàng)目名
01二月202366數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)表代表一個實(shí)體集或聯(lián)系集,一行一個實(shí)體屬性域的笛卡爾積的子集元組變量用于對表掃描查找元組的順序無關(guān)緊要域是原子的屬性可以取空值null01二月202367數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)數(shù)據(jù)庫模式關(guān)系模式,表結(jié)構(gòu),R=(……)關(guān)系實(shí)例,表,r圖2-1圖2-7實(shí)體表是account、branch、customer、loan。聯(lián)系表是depositor、borrower注意每個表的主碼,實(shí)體完整性約束注意account、loan和兩個聯(lián)系表的外碼。參照關(guān)系01二月202368數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)查詢語言過程化的:關(guān)系代數(shù)非過程化的:關(guān)系演算SQL兩者都有關(guān)系代數(shù)的基本運(yùn)算選擇是對表依次掃描,按條件確定行投影是縱向選擇并運(yùn)算是求“或”01二月202369數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)差是求“有…而無…”笛卡爾積是兩表窮舉結(jié)合,重名屬性綴表名更名,一般是同表操作,如“找出…表中最大..”,見圖2-17例圖2-18用自然連接行嗎?附加的關(guān)系代數(shù)運(yùn)算交運(yùn)算是求“和”,記住r∩s=r-(-s)例圖2-1901二月202370數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)自然連接外碼作用,圖2-20,金額在loan中自然連接可結(jié)合customer
∞
account∞
depositor等價customer
∞
depositor∞
account一個表查找另個表borrower∞
depositor用貸款表查存款表,表示既有貸款又有存款01二月202371數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)除處理“對所有的”分組判包含,對齊格式,結(jié)果是R-S的屬性例:圖2-23是兩個屬性,按第一個屬性分組,看包含圖2-22的表。留第一個屬性為結(jié)果聚集函數(shù)Count-distinct去掉重復(fù)行注意圖2-28中間表的屬性名是sum(salary)01二月202372數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點(diǎn)作業(yè)6.2,6.11d,e6.136.1501二月202373數(shù)據(jù)庫系統(tǒng)概念前言
6.2關(guān)系演算01二月202374數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述概念用一階謂詞演算表示關(guān)系的操作叫關(guān)系演算設(shè)關(guān)系r有元組t1,t2,…tm,則它對應(yīng)一個謂詞P,t1,t2,…,tm是P的成真指派,其它非r中的任意元組則是P的成偽指派。給出一個元組t,當(dāng)它在r中時P(t)為真,否則P(t)為假。注意P(t)是一個謂詞公式,它是由原子公式經(jīng)復(fù)合運(yùn)算而成。01二月202375數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述形式化定義{t|P(t)}表示所有使謂詞P為真的元組集合t為元組變量P是公式由原子公式和運(yùn)算符組成01二月202376數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述原子公式,為三類:
(1)t∈r為原子公式。表示t是r的一個元組。
(2)u[i]θv[j]是原子公式。u,v是元組變量,θ是比較運(yùn)算符,u[i]θv[j]表元組u的第i個分量與元組v的第j個分量間的比較運(yùn)算。
(3)u[i]θC是原子公式。C為常數(shù),θ比較運(yùn)算符,u[i]θC表示元組的第i個分量與常數(shù)的比較運(yùn)算。01二月202377數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述公式的遞歸定義原子公式是公式如果P是公式,那么┑P也是公式如果P1,P2是公式,則P1
P2,
P1
P2,P1→
P2也是公式如果P(t)是公式,r是關(guān)系,則tr(P(t))和tr(P(t))
也是公式01二月202378數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述其中是“全稱”量詞,是“存在量詞”,有或量詞的變量為約束變量,否則為自由變量。
給定集合r={t1,t2,…,tn}tr(P(t))=P(t1)∧P(t2)∧…∧P(tn)tr(P(t))=P(t1)∨P(t2)∨…∨P(tn)
01二月202379數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述公式中運(yùn)算符的優(yōu)先次序?yàn)?/p>
(1)比較運(yùn)算符:>,<,≤,≥,=,≠;
(2)量詞,;
(3)“否定”:┑;
(4)“與”,“或”,“蘊(yùn)含”:∧,∨,→。如果公式中使用括號,括號的優(yōu)先級最高。01二月202380數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述公式的等價性P1
P2
┑(┑P1
┑P2)tr(P(t))
┑tr(┑P(t))P1
P2
┑P1P2TTTFFTTTTFFFFFTTTFTT┑pqpq┑pqp01二月202381數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算987654321CBA965643321CBArS965643CBA{t|tSt[A]>2}654987CBA{t|tr┑tS}01二月202382數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算768738798435CBA{t|ur(vS(u[A]>v[B]t[A]=u[B]t[B]=v[C]t[C]=u[A]))}987654321CBA965643321CBArS01二月202383數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算元組關(guān)系演算與關(guān)系代數(shù)的等價性(1)r∪S={t|t∈r∨t∈s}(2)r-S={t|t∈r∧┑t∈s}(3)σF(r)={t|t∈r∧F′}
(F′為F在謂詞演算中的表示形式)01二月202384數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算(4)ΠAi1、Ai1,…,Aik(r)={t|u∈r(t[Ai1]=u[Ai1]∧t[Ai2]=u[Ai2]∧…∧t[Aik]=u[Aik]}或者
ΠAi1、Ai1,…,Aik(r)={t|u∈r(t[1]=u[Ai1]∧t[2]=u[Ai2]∧…∧t[k]=u[Aik]}結(jié)果元組有k個分量。01二月202385數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算
(5)r×s={t|u∈r(v∈s(t[1]=u[1]∧…∧t[n]=u[n]∧t[n+1]=V[1]∧…∧t(n+m)=V[m]))}注意:并、差、選擇不用量詞,投影、笛卡爾積用量詞表示。量詞是掃描一遍的意義,量詞變量如同指針,依次定位在表中的各個元組上。
01二月202386數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算學(xué)生
學(xué)號姓名性別年齡系別
98001張平男19計算機(jī)98002王欣女19計算機(jī)98003李華女20數(shù)學(xué)
98004趙巖男18外語
01二月202387數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算課程
課程號課程名先行課號學(xué)分1數(shù)據(jù)庫54
2數(shù)學(xué)63軟件工程544操作系統(tǒng)745數(shù)據(jù)結(jié)構(gòu)746計算機(jī)網(wǎng)絡(luò)43
7C語言301二月202388數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算選課
學(xué)號課程號成績9800119098001286980015929800258098002177
98002394
01二月202389數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例例
:檢索學(xué)生關(guān)系中所有學(xué)生的情況。解:{t|t∈學(xué)生}選擇運(yùn)算不用量詞,結(jié)果是學(xué)生表的全部屬性
學(xué)號姓名性別年齡系別
…
…
…
…
…
…
…
…
…
…01二月202390數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例例
:求計算機(jī)系的學(xué)生姓名。解:{t|u∈學(xué)生(t[姓名]=u[姓名]∧u[系別]=“計算機(jī)”)}投影運(yùn)算用量詞,u對學(xué)生表掃描一遍,每一行確定是否選取結(jié)果:列是t[姓名]確定的屬性,行是由u[系別]=“計算機(jī)”確定的各行01二月202391數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
學(xué)號姓名性別年齡系別
u→98001張平男19計算機(jī)98002王欣女19計算機(jī)98003李華女20數(shù)學(xué)
98004趙巖男18外語
↓結(jié)果:姓名
張平王欣
01二月202392數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
例
:求年齡大于20歲女學(xué)生的姓名和系別。解:{t|u∈學(xué)生(t[姓名]=u[姓名]∧t[系別]=u[系別]∧u[年齡]>20∧u[性別]=“女”)}有投影運(yùn)算,用量詞。結(jié)果:姓名系別
王欣計算機(jī)
李華數(shù)學(xué)01二月202393數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
例
:找出選修了課程號為“5”的課程的學(xué)生的姓名和成績。解:{t|u∈學(xué)生(v∈選課(t[姓名]=u[姓名]∧t[成績]=v[成績]∧u[學(xué)號]=v[學(xué)號]∧v[課程號]=“5”)}意義:u對學(xué)生表掃描一遍,定位在每一行時,v對選課表掃描一遍,確定是否選取u指向的行01二月202394數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
學(xué)生
選課
結(jié)果
u→98001張平v→
98001290姓名成績
98002王欣98001186張平92
98003李華98001
592王欣80
98004趙巖98002
5809800217798002394
01二月202395數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例例:找出選修了課程號為‘5’或‘3’的課程的所有學(xué)生的姓名、課程號和成績。解:{t|u∈學(xué)生(v∈選課(t[姓名]=u[姓名]∧t[課程號]=v[課程號]∧t[成績]=v[成績]∧u[學(xué)號]=v[學(xué)號]∧(v[課程號]=‘5’∨v[課程號]=‘3’)]}結(jié)果:姓名課程號成績
張平592王欣580王欣39401二月202396數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例例
:求選修了數(shù)學(xué)課程的學(xué)生姓名、課程名和成績。解:{t|u∈學(xué)生(v∈課程(w∈選課(t[姓名]=u[姓名]∧t[課程名]=v[課程名]∧t[成績]=w[成績]∧u[學(xué)號]=w[學(xué)號]∧v[課程號]=w[課程號]∧v[課程名]=“數(shù)學(xué)”)}意義:u對學(xué)生表掃描一遍,定位在每一行時,v對課程表掃描一遍,w對選課表掃描一遍,確定是否選取u指向的行01二月202397數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
學(xué)生
課程
選課
u→
98001
張平v→
1數(shù)據(jù)庫w→
980012
98002王欣2數(shù)學(xué)
980011
98003李華3軟件工程980015
98004趙巖4操作系統(tǒng)980025
5數(shù)據(jù)結(jié)構(gòu)980021
6計算機(jī)網(wǎng)絡(luò)9800237C語言結(jié)果:姓名課程名
成績張平數(shù)學(xué)86
01二月202398數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例例:求選修了所有課程的學(xué)生姓名,成績。解:{t|u∈學(xué)生(v∈課程(w∈選課(t[姓名]=u[姓名]∧t[成績]=w[成績]∧u[學(xué)號]=w[學(xué)號]∧v[課程號]=w[課程號])))}意義:U定位在一個學(xué)生上,v掃描一遍課程表,每定位在一門課上,就由w在選課表里找一個。如果v的每一個課,w都能找到一個,選取u指向的行。01二月202399數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
學(xué)生
課程
選課
u→98001張平
v→
1數(shù)據(jù)庫w→
980012
98002王欣2數(shù)學(xué)980011
98003李華3軟件工程980015
98004趙巖4操作系統(tǒng)980025
5數(shù)據(jù)結(jié)構(gòu)980021
6計算機(jī)網(wǎng)絡(luò)9800237C語言結(jié)果:姓名成績
01二月2023100數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例例:求選修了課程號為‘5’和‘3’的課程的所有學(xué)生的姓名
解:{t|u∈學(xué)生(v∈選課(w∈選課(t[姓名]=u[姓名]∧u[學(xué)號]=v[學(xué)號]∧u[學(xué)號]=w[學(xué)號]∧v[課程號]=’5’∧w[課程號]=’3’)))}意義:U定位在一個學(xué)生上,v掃描一遍選課表,w掃描一遍選課表,找一個v的課程號為5,w的課程號為3,選取u指向的行。01二月2023101數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實(shí)例
學(xué)生
選課
選課
u→98001張平v→
980012
w→
980012
98002
王欣980011980011
98003李華980015980015
98004趙巖980025980025
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 室內(nèi)外裝修質(zhì)保合同范例
- 運(yùn)營入職合同范例
- 伙房合同范例
- 油桃批發(fā)合同范例
- 農(nóng)路混凝土合同范例
- 外籍合同范例
- 深圳辦公家具采購合同范例
- 工廠訂購貨物合同范例
- 商服租房合同范例
- 茶館作合同范例
- GB/T 29309-2012電工電子產(chǎn)品加速應(yīng)力試驗(yàn)規(guī)程高加速壽命試驗(yàn)導(dǎo)則
- GB 29216-2012食品安全國家標(biāo)準(zhǔn)食品添加劑丙二醇
- 齊魯工業(yè)大學(xué)信息管理學(xué)成考復(fù)習(xí)資料
- 公務(wù)員面試-自我認(rèn)知與職位匹配課件
- 中頻電治療儀操作培訓(xùn)課件
- 柔弱的人課文課件
- 動物寄生蟲病學(xué)課件
- 電梯曳引系統(tǒng)設(shè)計-畢業(yè)設(shè)計
- 三度房室傳導(dǎo)阻滯護(hù)理查房課件
- 講課比賽精品PPT-全概率公式貝葉斯公式-概率論與數(shù)理統(tǒng)計
- 藥理學(xué)39人工合成抗菌藥課件
評論
0/150
提交評論