版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
DATABASESYSTEMCONCEPTS第六章形式化關(guān)系查詢語言2023/2/11數(shù)據(jù)庫系統(tǒng)概念前言
6.1關(guān)系代數(shù)2023/2/12數(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=Πmi2023/2/13數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系模型笛卡爾積為一個二維表。表的行對應(yīng)一個元組,表的每列對應(yīng)一個域。表的行數(shù)為m。例如,給出三個域D1=男人集合={張華,李平}
D2=女人集合={劉琴,許芳}D3=兒童集合={張立新,李國慶}
D1×D2×D3={(張華,劉琴,張立新),(張華,劉琴,李國慶),…,(李平,許芳,李國慶)}三個域的元素窮舉結(jié)合一遍形成的表,共計8行2023/2/14數(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)系
2023/2/15數(shù)據(jù)庫系統(tǒng)概念前言二、關(guān)系模式關(guān)系:定義為D1×D2×…×Dn的子集,有實際意義。例如,家庭關(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上的取值2023/2/16數(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é)生22023/2/17數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述關(guān)系代數(shù):一種抽象的查詢語言,基于集合論,是DML的傳統(tǒng)表達方式,表達關(guān)系的查詢,插入,刪除,修改等操作運算對象:元組運算結(jié)果:仍是關(guān)系,可以再參與其他關(guān)系運算,由此復(fù)合成各種復(fù)雜的操作集合運算:并、交、差、廣義笛卡爾積。專用運算:選擇、投影、連接、除、更名、賦值。2023/2/18數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述五種基本運算:并、差、笛卡爾積、選擇、投影,其他運算可以用基本運算表示。關(guān)系代數(shù)的運算符:比較運算符:大于(>),大于等于(≥),小于(<=),小于等于(≤),等于(=),不等于(≠)邏輯運算符:非(
),與(∧),或(∨)一.記號關(guān)系模式R=(A1,A2,…,An),關(guān)系r2023/2/19數(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
2023/2/110數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述樣本表:1.教材中圖6-22:employee雇員,works工作,company公司,manages經(jīng)理2.學(xué)生=(學(xué)號,姓名,性別、年齡,系別)課程=(課程號,課程名,先行課號,學(xué)分)選課=(學(xué)號,課程號,成績)2023/2/111數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述學(xué)生
學(xué)號姓名性別年齡系別
98001張平男19計算機98002王欣女19計算機98003李華女20數(shù)學(xué)98004趙巖男18外語
2023/2/112數(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計算機網(wǎng)絡(luò)43
7C語言
null
32023/2/113數(shù)據(jù)庫系統(tǒng)概念前言三、關(guān)系代數(shù)概述選課
學(xué)號課程號成績9800119098001286980015929800258098002177
98002394
2023/2/114數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算集合運算
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‘2023/2/115數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算3.交:
r∩s
≡{t|t∈r∧t∈s}說明:r和s相同的目n,結(jié)果為關(guān)系仍為n目,由屬于r也屬于s的元組組成,運算可由并、差運算表示: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é)合2023/2/116數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算專門運算:選擇、投影、連接、除
1.選擇:σF(r)≡{t|t∈r∧F(t)=“真”}說明:將表r掃描一遍,從中選取滿足給定條件F的元組形成新關(guān)系,用于表的檢索。查找效率由比較次數(shù)決定,中間表行數(shù)應(yīng)盡量小,F(xiàn)為邏輯表達式:(1)αθβ,α,β是屬性、常量或簡單函數(shù),但不能同為常量,θ{,,,,,≠}(2)邏輯運算符
,∧,∨連成復(fù)合邏輯條件。2023/2/117數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:找出年齡小于20歲且外語系的學(xué)生。解:σ年齡<20)∧系別=“外語”(學(xué)生)
結(jié)果為{(98004,趙巖,18,外語)}例
:找出所有學(xué)生。解:σT(學(xué)生)2.投影
ΠA(r)={t[A]|t∈r}
說明:從r中選擇出若干屬性列組成新的關(guān)系,是單表運算,A={Ai1,Ai2,…,Aik}
2023/2/118數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:求所有學(xué)生的姓名、年齡。解:
Π姓名,年齡(學(xué)生)
結(jié)果為:{(張平,19),(王欣,19),(李華,20),(趙巖,18)}例:找出小于20歲的學(xué)生姓名和性別。解:
Π姓名,性別(σ年齡<20(學(xué)生))結(jié)果為:{(張平,男),(王欣,女),(趙巖,男)}2023/2/119數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:找出已選課的學(xué)生的學(xué)號。解:Π學(xué)號(選課)結(jié)果為:{(98001),(98002)},投影之后,取消重復(fù)行,原表6個元組,變?yōu)閮蓚€,這是關(guān)系性質(zhì)決定的.哪個性質(zhì)?2023/2/120數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算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)系的共同屬性進行等值比較,值相同的連接成一個新元組,其屬性是R的全部屬性和S中去掉共同屬性后的剩余部分2023/2/121數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算說明:(1)兩表有共同屬性,沒有,是笛卡爾積(2)比較是對應(yīng)屬性值間的等值比較(3)比較步驟:第一個表走一步,第二個表走一遍,二重循環(huán)。比較次數(shù)是兩表行數(shù)之積,中間表要小,結(jié)果表行數(shù)取決相等的元組數(shù)(4)結(jié)果屬性只保留共有一部分,不用前綴(5)主要作用是通過外碼擴展其他屬性(6)另一作用是一個表去選擇另一表的元組2023/2/122數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算基本運算表示:r∞S=ΠA1,A2,…,An,Bk+1,…,Bm(σAi1=B1∧Ai2=B2…∧Aik=Bk(r×s))例:找出選修數(shù)據(jù)庫課程,且成績大于90的學(xué)生姓名。分析:數(shù)據(jù)庫在課程表中,成績在選課表中,姓名在學(xué)生表中,通過自然連接,把屬性湊齊。2023/2/123數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
解:(1)
Π姓名(σ課程名=“數(shù)據(jù)庫”∧成績>90(學(xué)生∞選課∞課程))解:(2)
Π姓名(σ成績>90(σ課程名=“數(shù)據(jù)庫”(課程)∞選課)∞學(xué)生)解:(3)
Π姓名((σ課程名=“數(shù)據(jù)庫”(課程))∞(σ成績>90(選課)∞學(xué)生)對比三種解,比較次數(shù)有差別嗎?2023/2/124數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算條件連接:稱為θ連接。選取屬性間滿足比較條件的元組。記作
r∞s
AθB
={tr⌒
ts|tr∈r∧ts∈s∧tr(A)θts(B)}其中A和B分別是R和S上的度數(shù)相等且類型可比的屬性組,θ是比較運算符或邏輯運算符連成的條件表達式說明:等價基本運算表達:
r∞s
AθB
=σAθB(r×s)2023/2/125數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算說明:兩個關(guān)系合并成一個新的關(guān)系,先笛卡爾積再選擇。主要解決屬性名不一樣的屬性之間的值比較比較不僅是等值中間表的屬性名有表前綴例:求課程名和先行課名?2023/2/126數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算4.除象集:R=(X,Y),X,Y為R的屬性組,當t[X]=x時,x在r中的象集
Yx={t[Y]|t∈r∧t[X]=x}理解:R的屬性任分兩組X,Y,任給值x,r中X部分等于x的行,在Y上的投影形成一個象集。每給具體的x,都有一個象集,可能是空。
2023/2/127數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
例:rABCX={A},Y={B,C}a1b1c2X=a1BCa1=BCa2b2c7b1c2a3b4c6b2c3a1b2c3b2c1a4b6c6a2b2c3X=a5BCa5=?
a1b2c12023/2/128數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算除運算的定義:R=(X,Y),S=(Y),對應(yīng)兩個表r、s則:
r÷s={tr[X]|tr∈r∧S
Yx
}說明:(1)對r中X的每個值x求象集,包含S的,X部分的值作為元組加入到結(jié)果關(guān)系(2)根據(jù)S劃分R為X、Y兩部分基本運算表達:
r÷S=ΠX(r)-ΠX(ΠX(r)×S-r)
2023/2/129數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算rABC
s=BC
r÷s=Aa1b1c2b1c2a1a3b4c6b2c1a1b2c3b2c3a4b6c6a2b2c3s=C
r÷s=?
a1b2c1
c3
2023/2/130數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:找出選修了所有課程的學(xué)生的學(xué)號:
解:Π學(xué)號,課程號(選課)÷Π課程號(課程)注意:1)除運算是包含判斷
2)對語義“全部”、“所有”的處理
3)除運算要湊準格式
選課÷Π課程號(課程)是什么結(jié)果?2023/2/131數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算四.關(guān)系代數(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計算機網(wǎng)絡(luò)43
7C語言3
解:Π課程名(σ先行課號=‘5’(課程))2023/2/132數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
例:找張平所選修全部課程的課程名和成績。
學(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計算機網(wǎng)絡(luò)980023947C語言
第一步:(學(xué)生∞選課)
2023/2/133數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
學(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計算機網(wǎng)絡(luò)
7C語言
第二步:(學(xué)生∞選課
∞課程)
2023/2/134數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
學(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é)生∞選課
∞課程)
2023/2/135數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
學(xué)號姓名…課程號成績課程名…
u→
98001張平…290數(shù)學(xué)…98001張平…186數(shù)據(jù)庫…98001張平…592數(shù)據(jù)結(jié)構(gòu)…
第四步:Π姓名,課程名,成績(
σ姓名=張平(學(xué)生∞選課
∞課程))
2023/2/136數(shù)據(jù)庫系統(tǒng)概念前言
2.2關(guān)系代數(shù)基本運算
姓名課程名成績
張平數(shù)學(xué)90張平數(shù)據(jù)庫86張平數(shù)據(jù)結(jié)構(gòu)92
問題:Π姓名,課程名,成績(σ姓名=張平(學(xué)生)∞選課∞課程)對嗎?
2023/2/137數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:找出選了98001所選所有課程的學(xué)生學(xué)號。解:1.找出98001所選課的課號
Π課程號(σ學(xué)號=“98001”(選課))
2.找出其他同學(xué)的學(xué)號和所選課的課號
Π學(xué)號,課程號(選課)3.按學(xué)號分組作除法Π學(xué)號,課程號(選課)÷(Π課程號(σ學(xué)號=“98001”(選課))找出選修了98001所選所有課程的學(xué)生姓名,怎么寫
2023/2/138數(shù)據(jù)庫系統(tǒng)概念前言
2.2關(guān)系代數(shù)基本運算例:找出不選修任何課程的學(xué)生姓名。解:1.所有學(xué)生的學(xué)號減去選課的學(xué)號Π學(xué)號(學(xué)生)-Π學(xué)號(選課)2.自然連接上學(xué)生表,投出姓名Π姓名(學(xué)生∞(Π學(xué)號(學(xué)生)-Π學(xué)號(選課)))
問題:找出不選修98001的任何課程的學(xué)生姓名?2023/2/139數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:找出至少選修了98001所選修的一門課的學(xué)生姓名。解:Π姓名(學(xué)生∞(Π學(xué)號(選課∞(Π課程號(σ學(xué)號=“98001”(選課))))))第二個自然連接起什么作用?例:找出至少選修了一門其先行課號為5號課程的學(xué)生姓名。解:Π姓名(Π學(xué)號(σ先行課號=“5”(課程)∞選課)∞學(xué)生)
2023/2/140數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:求至少選修了操作系統(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é)號”。怎么寫?2023/2/141數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算關(guān)系代數(shù)其他運算1.更名運算ρx(e)為中間表e賦名xρx(A1,A2,…,An)(e)賦名x,屬性更名為A1,A2,…An
更名的作用:同表連接,屬性區(qū)分2023/2/142數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:求選修數(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é)生?2023/2/143數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算2.賦值運算表名←關(guān)系代數(shù)表達式將表達式的結(jié)果賦值給一個表名。3.廣義投影Π表達式as屬性名,,...,表達式as屬性名
(e)說明:e是中間表,表達式?jīng)]有屬性名,用as短語缺確定一個屬性名。例:Π姓名,年齡+1as虛歲(學(xué)生)結(jié)果表的屬性名為姓名,虛歲2023/2/144數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算
4.聚集函數(shù)
ɡ聚集函數(shù)(屬性)(e)聚集函數(shù)有sum(屬性名),avg(屬性名),min(屬性名),max(屬性名),count(屬性名),count-distinct(屬性名),結(jié)果是單屬性單行的中間表,屬性名:“聚集函數(shù)名(
屬性名)”,若重新確定屬性名,用as子句。ɡ
聚集函數(shù)(屬性)as屬性名(e)2023/2/145數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例ɡavg(成績)(選課)結(jié)果:avg
(成績)86.5例:
ɡ
avg(成績)as平均成績(選課)結(jié)果:平均成績86.5例:求數(shù)學(xué)的最高成績ɡMax(成績)(課程名=“數(shù)學(xué)”(課程)∞選課))2023/2/146數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算分組聚集分組屬性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.62023/2/147數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例學(xué)號
ɡavg(成績)as平均成績(選課)結(jié)果:學(xué)號平均成績
9800189.39800283.6例:求選課三門及以上的學(xué)生姓名Π姓名(
(
σ選課次數(shù)>=3(學(xué)號
ɡcount(課程號)as選課次數(shù)(選課)))∞學(xué)生)2023/2/148數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算5.空值1)值為空值的字段參加算術(shù)運算,結(jié)果為空。2)值為空值的字段參加比較運算,結(jié)果為unknown。3)值為空值的字段參加邏輯運算,結(jié)果為:
trueandunknown,結(jié)果為unknownfalseandunknown,結(jié)果為falseunknownandunknown,結(jié)果為unknowntrueorunknown,結(jié)果為truefalseorunknown,結(jié)果為unknownunknownorunknown,結(jié)果為unknownnot(unknown),結(jié)果為unknown2023/2/149數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算4)選擇運算,邏輯值為true,選中,為false或unknown,不選中。5)連接運算,按先笛卡爾積后選擇處理,兩元組共有屬性中有空值,不匹配。6)投影后,同一屬性下的空值視為同值。7)集合運算,類投影處理。8)聚集,分組時,同一屬性下的空值視為同值。聚集屬性中的空值,不參加聚集。但參加count聚集。2023/2/150數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算6.外連接對自然連接的擴充1)左外連接左側(cè)表的元組全保留,與右側(cè)表不匹配的元組,用null填充。2)右外連接右側(cè)表的元組全保留,與左側(cè)表不匹配的元組,用null填充。3)全外連接左右側(cè)表的元組全保留,不匹配的元組,用null填充。2023/2/151數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算數(shù)據(jù)庫修改刪除:差運算與賦值運算實現(xiàn)刪除運算。
r←r-e插入:并運算與賦值運算實現(xiàn)插入運算。
r←r∪e更新:廣義投影與賦值運算實現(xiàn)更新運算。例:在課程關(guān)系中增加計算機原理課程,解:課程←課程∪{(“8”,“計算機原理”,“5”,4)}2023/2/152數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算注意:參照完整性例:插入劉林,插入劉林選的課程學(xué)生←學(xué)生∪{(“98005”,“劉林”,“男”,19,“物理”)}選課←選課∪{(“98005”,“1”,86)}例:將所有學(xué)生的年齡增加1歲。學(xué)生←Π學(xué)號,姓名,性別,年齡+1as年齡,系別(學(xué)生)2023/2/153數(shù)據(jù)庫系統(tǒng)概念前言四、關(guān)系代數(shù)運算例:將王欣從學(xué)生關(guān)系及選課關(guān)系中刪掉。解:選課←選課-(Π學(xué)號(σ姓名=“王欣”(學(xué)生)∞選課)
學(xué)生←學(xué)生-(σ姓名=“王欣”(學(xué)生))例
:將學(xué)生關(guān)系中趙巖的年齡改為20歲:
r←Π學(xué)號,姓名,性別,20as年齡,系別(σ姓名=“趙巖”(學(xué)生))學(xué)生←(學(xué)生-(σ姓名=“趙巖”(學(xué)生)))∪r2023/2/154數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)查詢的表達不是唯一的,各個表達式有效率上的差別。自然連接有擴展屬性的作用,還有選擇元組的作用除運算是包含的運算,可以處理“全部”一類問題。通過賦值運算可以分幾步完成一個復(fù)雜的查詢幾個典型的查詢表達式的分析2023/2/155數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)例:求選修了1號或2號課程的學(xué)號 方案1:
∏學(xué)號(課程號=“1”∨課程號=“2”(選課))
方案2:∏學(xué)號(課程號=“1”
(選課))∪∏學(xué)號(課程號=“2”(選課))2023/2/156數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)例:求同時選修了1號和2號課程的學(xué)生號錯誤的寫法:∏學(xué)號(課程號=“1”課程號=“2”
(選課))正確的寫法:∏學(xué)號(課程號=“1”
(選課))∩∏學(xué)號(課程號=“2”
(選課))2023/2/157數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)例:求選修了1號而沒有選2號課程的學(xué)號∏學(xué)號(課程號=“1”
(選課))-∏學(xué)號(課程號=“2”
(選課))例:求未選修1號課程的學(xué)生號方案1:∏學(xué)號(學(xué)生)-∏學(xué)號(課程號=“1”
(選課))方案2:∏學(xué)號(課程號≠“1”
(選課))哪個對?2023/2/158數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)思考題:例:找出年齡最小的同學(xué)姓名,不用聚集函數(shù)例:求僅選修了1號課程的學(xué)生號例:找出選修且僅選修了數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)的學(xué)生姓名
2023/2/159數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)供應(yīng)商S=(SNO(供應(yīng)商號),SN(供應(yīng)商名),CITY(城市))SSNOSN
CITY
S1精益天津
S2萬勝北京
S3東方北京
S4泰隆上海
S5康建南京2023/2/160數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)零件P=(PNO(零件號),PN(名稱),COLOR(顏色),W(重量))PPNO
PN
COLOR
W
P1螺母紅12P2螺栓綠17P3螺絲刀藍14P4螺絲刀紅14P5凸輪藍40P6齒輪紅302023/2/161數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)工程項目J=(JNO(項目號),JN(項目名),CITY(城市))JJNOJNCITY
J1三建北京
J2一汽長春
J3彈簧廠天津
J4造船廠天津
J5機車廠唐山
J6無線電廠常州
J7半導(dǎo)體廠南京2023/2/162數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)供應(yīng)SPJSNOPNOJNOQTY(數(shù)量)
S1P1J1200S1P1J3100S1P1J4700S1P2J2100S2P3J1400S2P3J2200S2P3J4500S2P3J54002023/2/163數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(jié)S2P5J1400S2P5J2100S3P1J1200S3P3J1200S4P5J1100S4P6J3300S4P6J4200S5P2J4100S5P3J1200S5P6J2200S5P6J45002023/2/164數(shù)據(jù)庫系統(tǒng)概念前言五、關(guān)系代數(shù)運算小結(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)的紅色零件的項目號。(5)用了S1供應(yīng)商供應(yīng)的全部零件的項目名。(6)不供應(yīng)螺母和齒輪的供應(yīng)商名。(7)不供應(yīng)S1供應(yīng)零件的供應(yīng)商名。(8)供應(yīng)數(shù)量大于200的藍色螺絲刀的供應(yīng)商名和項目名
2023/2/165數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點表代表一個實體集或聯(lián)系集,一行一個實體屬性域的笛卡爾積的子集元組變量用于對表掃描查找元組的順序無關(guān)緊要域是原子的屬性可以取空值null2023/2/166數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點數(shù)據(jù)庫模式關(guān)系模式,表結(jié)構(gòu),R=(……)關(guān)系實例,表,r圖2-1圖2-7實體表是account、branch、customer、loan。聯(lián)系表是depositor、borrower注意每個表的主碼,實體完整性約束注意account、loan和兩個聯(lián)系表的外碼。參照關(guān)系2023/2/167數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點查詢語言過程化的:關(guān)系代數(shù)非過程化的:關(guān)系演算SQL兩者都有關(guān)系代數(shù)的基本運算選擇是對表依次掃描,按條件確定行投影是縱向選擇并運算是求“或”2023/2/168數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點差是求“有…而無…”笛卡爾積是兩表窮舉結(jié)合,重名屬性綴表名更名,一般是同表操作,如“找出…表中最大..”,見圖2-17例圖2-18用自然連接行嗎?附加的關(guān)系代數(shù)運算交運算是求“和”,記住r∩s=r-(-s)例圖2-192023/2/169數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點自然連接外碼作用,圖2-20,金額在loan中自然連接可結(jié)合customer
∞
account∞
depositor等價customer
∞
depositor∞
account一個表查找另個表borrower∞
depositor用貸款表查存款表,表示既有貸款又有存款2023/2/170數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點除處理“對所有的”分組判包含,對齊格式,結(jié)果是R-S的屬性例:圖2-23是兩個屬性,按第一個屬性分組,看包含圖2-22的表。留第一個屬性為結(jié)果聚集函數(shù)Count-distinct去掉重復(fù)行注意圖2-28中間表的屬性名是sum(salary)2023/2/171數(shù)據(jù)庫系統(tǒng)概念前言六、
課本上的要點作業(yè)6.2,6.11d,e6.136.152023/2/172數(shù)據(jù)庫系統(tǒng)概念前言
6.2關(guān)系演算2023/2/173數(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,當它在r中時P(t)為真,否則P(t)為假。注意P(t)是一個謂詞公式,它是由原子公式經(jīng)復(fù)合運算而成。2023/2/174數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述形式化定義{t|P(t)}表示所有使謂詞P為真的元組集合t為元組變量P是公式由原子公式和運算符組成2023/2/175數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述原子公式,為三類:
(1)t∈r
為原子公式。表示t是r的一個元組。
(2)u[i]θv[j]是原子公式。u,v是元組變量,θ是比較運算符,u[i]θv[j]表元組u的第i個分量與元組v的第j個分量間的比較運算。
(3)u[i]θC是原子公式。C為常數(shù),θ比較運算符,u[i]θC表示元組的第i個分量與常數(shù)的比較運算。2023/2/176數(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))
也是公式2023/2/177數(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)
2023/2/178數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述公式中運算符的優(yōu)先次序為
(1)比較運算符:>,<,≤,≥,=,≠;
(2)量詞,;
(3)“否定”:┑;
(4)“與”,“或”,“蘊含”:∧,∨,→。如果公式中使用括號,括號的優(yōu)先級最高。2023/2/179數(shù)據(jù)庫系統(tǒng)概念前言一、關(guān)系演算概述公式的等價性P1
P2
┑(┑P1
┑P2)
tr(P(t))
┑tr(┑P(t))P1
P2
┑P1P2TTTFFTTTTFFFFFTTTFTT┑pqpq┑pqp2023/2/180數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算987654321CBA965643321CBArS965643CBA{t|tSt[A]>2}654987CBA{t|tr┑tS}2023/2/181數(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]))}987654321CBA965643321CBArS2023/2/182數(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在謂詞演算中的表示形式)2023/2/183數(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個分量。2023/2/184數(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]))}注意:并、差、選擇不用量詞,投影、笛卡爾積用量詞表示。量詞是掃描一遍的意義,量詞變量如同指針,依次定位在表中的各個元組上。
2023/2/185數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算學(xué)生
學(xué)號姓名性別年齡系別
98001張平男19計算機98002王欣女19計算機98003李華女20數(shù)學(xué)
98004趙巖男18外語
2023/2/186數(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計算機網(wǎng)絡(luò)43
7C語言32023/2/187數(shù)據(jù)庫系統(tǒng)概念前言二、元組關(guān)系演算選課
學(xué)號課程號成績9800119098001286980015929800258098002177
98002394
2023/2/188數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例例
:檢索學(xué)生關(guān)系中所有學(xué)生的情況。解:{t|t∈學(xué)生}選擇運算不用量詞,結(jié)果是學(xué)生表的全部屬性
學(xué)號姓名性別年齡系別
…………………………2023/2/189數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例例
:求計算機系的學(xué)生姓名。解:{t|u∈學(xué)生(t[姓名]=u[姓名]∧u[系別]=“計算機”)}投影運算用量詞,u對學(xué)生表掃描一遍,每一行確定是否選取結(jié)果:列是t[姓名]確定的屬性,行是由u[系別]=“計算機”確定的各行2023/2/190數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
學(xué)號姓名性別年齡系別
u→98001張平男19計算機98002王欣女19計算機98003李華女20數(shù)學(xué)
98004趙巖男18外語
↓結(jié)果:姓名
張平王欣
2023/2/191數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
例
:求年齡大于20歲女學(xué)生的姓名和系別。解:{t|u∈學(xué)生(t[姓名]=u[姓名]∧t[系別]=u[系別]∧u[年齡]>20∧u[性別]=“女”)}有投影運算,用量詞。結(jié)果:姓名系別
王欣計算機
李華數(shù)學(xué)2023/2/192數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
例
:找出選修了課程號為“5”的課程的學(xué)生的姓名和成績。解:{t|u∈學(xué)生(v∈選課(t[姓名]=u[姓名]∧t[成績]=v[成績]∧u[學(xué)號]=v[學(xué)號]∧v[課程號]=“5”)}意義:u對學(xué)生表掃描一遍,定位在每一行時,v對選課表掃描一遍,確定是否選取u指向的行2023/2/193數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
學(xué)生
選課
結(jié)果
u→98001張平v→
98001290姓名成績
98002王欣98001186張平92
98003李華98001
592王欣80
98004趙巖98002
5809800217798002394
2023/2/194數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例例:找出選修了課程號為‘5’或‘3’的課程的所有學(xué)生的姓名、課程號和成績。解:{t|u∈學(xué)生(v∈選課(t[姓名]=u[姓名]∧t[課程號]=v[課程號]∧t[成績]=v[成績]∧u[學(xué)號]=v[學(xué)號]∧(v[課程號]=‘5’∨v[課程號]=‘3’)]}結(jié)果:姓名課程號成績
張平592王欣580王欣3942023/2/195數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例例
:求選修了數(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指向的行2023/2/196數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
學(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計算機網(wǎng)絡(luò)9800237C語言結(jié)果:姓名課程名
成績張平數(shù)學(xué)86
2023/2/197數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例例:求選修了所有課程的學(xué)生姓名,成績。解:{t|u∈學(xué)生(v∈課程(w∈選課(t[姓名]=u[姓名]∧t[成績]=w[成績]∧u[學(xué)號]=w[學(xué)號]∧v[課程號]=w[課程號])))}意義:U定位在一個學(xué)生上,v掃描一遍課程表,每定位在一門課上,就由w在選課表里找一個。如果v的每一個課,w都能找到一個,選取u指向的行。2023/2/198數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
學(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計算機網(wǎng)絡(luò)9800237C語言結(jié)果:姓名成績
2023/2/199數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例例:求選修了課程號為‘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指向的行。2023/2/1100數(shù)據(jù)庫系統(tǒng)概念前言三、元組關(guān)系演算實例
學(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雞眼病因介紹
- 債務(wù)如何轉(zhuǎn)讓協(xié)議書
- 關(guān)于就業(yè)協(xié)議
- 個人單位租車協(xié)議
- 1.2《風(fēng)景談》【中職專用】高一語文(高教版2023基礎(chǔ)模塊上冊)
- (2024)年產(chǎn)噸鋰電池負極材料石墨化項目可行性研究報告寫作模板(一)
- 2022-2023學(xué)年天津一中高一(上)期末語文試卷
- 2023年天津市南開區(qū)高考語文一模試卷
- 解析:內(nèi)蒙古通遼市科爾沁左翼中旗2024-2025學(xué)年七年級上學(xué)期期中語文試題(原卷版)-A4
- 2024(半成品預(yù)制菜篇)餐飲供應(yīng)鏈指南
- GB/T 30661.10-2024輪椅車座椅第10部分:體位支撐裝置的阻燃性要求和試驗方法
- 2024年聯(lián)通合作合同范本
- 實+用法律基礎(chǔ)-形成性考核任務(wù)二-國開(ZJ)-參考資料
- 城關(guān)中學(xué)學(xué)校食堂校長現(xiàn)場辦公制度
- 自動化生產(chǎn)線設(shè)備調(diào)試方案
- 2024-2030年中國醫(yī)藥冷鏈物流行業(yè)競爭格局及投資模式研究報告
- 人教版英語八年級下冊 Unit 10 .現(xiàn)在完成時練習(xí)
- GB/T 19274-2024土工合成材料塑料土工格室
- 2024-2025學(xué)年浙江Z20名校聯(lián)盟高三第一次聯(lián)考英語試題(解析版)
- 2023-2024學(xué)年浙江省杭州市拱墅區(qū)八年級(上)期末科學(xué)試卷
- 北京市2024年中考物理真題試卷(含答案)
評論
0/150
提交評論