第2章 關(guān)系數(shù)據(jù)庫(kù)_第1頁(yè)
第2章 關(guān)系數(shù)據(jù)庫(kù)_第2頁(yè)
第2章 關(guān)系數(shù)據(jù)庫(kù)_第3頁(yè)
第2章 關(guān)系數(shù)據(jù)庫(kù)_第4頁(yè)
第2章 關(guān)系數(shù)據(jù)庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

12.1

關(guān)系模型

2.2

關(guān)系代數(shù)*2.3

關(guān)系演算

2.4

查詢優(yōu)化

2.5

關(guān)系系統(tǒng)22.1關(guān)系模型2.1.1關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系的非形式化定義:滿足一定條件的二維表?;拘g(shù)語(yǔ)1.域:一組具有相同數(shù)據(jù)類型的值的集合。32.笛卡爾積(CartesianProduct)給定一組域D1,D2,…,Dn,這些域中可以有相同的。D1,D2,…,Dn的笛卡爾積為:

D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}元組(Tuple):每一個(gè)元素(d1,d2,…,dn)分量:元素中的每一個(gè)值di若Di(i=1,2,…,n)為有限集,其基數(shù)(Cardinalnumber)為mi(i=1,2,…,n),則D1×D2×…×Dn的基數(shù)為:

n

M=∏mi

i=1

2.1關(guān)系模型4例如:D1={孫悟空,宋江,林黛玉}D2={男,女}D3={西游記,水滸傳,紅樓夢(mèng)}D1ХD2ХD3={{孫悟空,男},{宋江,男},{林黛玉,男},{孫悟空,女},{宋江,女},{林黛玉,女}}ХD3={{孫悟空,男,西游記},{宋江,男,西游記},{林黛玉,男,西游記},{孫悟空,女,西游記},{宋江,女,西游記},{林黛玉,女,西游記},

{孫悟空,男,水滸傳},{宋江,男,水滸傳},{林黛玉,男,水滸傳},{孫悟空,女,水滸傳},{宋江,女,水滸傳},{林黛玉,女,水滸傳},

{孫悟空,男,紅樓夢(mèng)},{宋江,男,紅樓夢(mèng)},{林黛玉,男,紅樓夢(mèng)},{孫悟空,女,紅樓夢(mèng)},{宋江,女,紅樓夢(mèng)},{林黛玉,女,紅樓夢(mèng)}}

2.1關(guān)系模型53.關(guān)系(Relation)的數(shù)學(xué)定義

D1×D2×…×Dn的子集叫作在域D1、D2、…、Dn上的關(guān)系,用

R(D1,D2,…,Dn)表示。R:關(guān)系的名字n:關(guān)系的目或度(Degree)。單元關(guān)系(Unaryrelation)n=1二元關(guān)系(Binaryrelation)n=22.1關(guān)系模型6

小說名

人物名

性別西游記孫悟空

男水滸傳宋江

男紅樓夢(mèng)林黛玉

女小說人物對(duì)照表對(duì)于一個(gè)笛卡爾積只有取它的子集才有意義,這也和用戶看待的二維表一樣,只有滿足一定條件的二維表才是研究的對(duì)象。2.1關(guān)系模型74.碼候選碼(CandidateKey):在一個(gè)關(guān)系中,能惟一標(biāo)識(shí)元組的屬性或最小屬性集稱為關(guān)系的候選碼。主碼(PrimaryKey):若一個(gè)關(guān)系中有多個(gè)候選碼,則選其中的一個(gè)為主碼。包含在任何一個(gè)候選碼中的屬性稱為主屬性(PrimaryAttribute),不包含在任何候選碼中的屬性稱為非主屬性(Non-primaryAttribute)或非碼屬性(Non-keyAttribute)。2.1關(guān)系模型8外碼(ForeignKey):設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是R的碼。Ks是基本關(guān)系S的主碼。如果F與Ks相對(duì)應(yīng),則稱F是R的外碼。并稱基本關(guān)系R為參照關(guān)系(ReferencingRelation),基本關(guān)系S為被參照關(guān)系(ReferencedRelationship)。2.1關(guān)系模型4.碼9例如:學(xué)生關(guān)系和專業(yè)關(guān)系分別為:學(xué)生(學(xué)生編號(hào),姓名,性別,年齡,專業(yè)編號(hào),身份證號(hào)碼)專業(yè)(專業(yè)編號(hào),專業(yè)名稱,專業(yè)負(fù)責(zé)人)在關(guān)系數(shù)據(jù)庫(kù)中,表與表的聯(lián)系就是通過公共屬性實(shí)現(xiàn)的,這個(gè)公共屬性是一個(gè)表的主碼和另外一個(gè)表的外碼

2.1關(guān)系模型4.碼105.關(guān)系的性質(zhì)1)分量必須取原子值2)列是同質(zhì)的,即每一列的分量是同一類型的數(shù)據(jù),來自同一個(gè)域。3)表中的列稱為屬性,給每列起一個(gè)名稱即屬性名,不同屬性要起不同的屬性名。4)列的順序無關(guān)5)關(guān)系中任意兩行不能相同。6)行的順序無關(guān)。2.1關(guān)系模型112.1.2關(guān)系操作1操作對(duì)象是關(guān)系2基本操作方式

屬性指定元祖選擇關(guān)系合并

元組插入元組刪除檢索更新2.1關(guān)系模型12關(guān)系代數(shù)語(yǔ)言關(guān)系演算語(yǔ)言具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語(yǔ)言域關(guān)系數(shù)據(jù)語(yǔ)言元組關(guān)系數(shù)據(jù)語(yǔ)言ISBLAPLHAQUELQBESQL關(guān)系數(shù)據(jù)語(yǔ)言關(guān)系數(shù)據(jù)語(yǔ)言2.1關(guān)系模型132.1.3關(guān)系完整性約束實(shí)體完整性參照完整性用戶自定義完整性2.1關(guān)系模型14實(shí)體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。2.1關(guān)系模型15導(dǎo)師編號(hào)姓名性別職稱1001劉易男副教授1002張清枚男教授1003王敏女教授研究生編號(hào)姓名性別研究方向?qū)熅幪?hào)2004001李勇男網(wǎng)絡(luò)安全10012004002劉晨女IPv610022004003張三男數(shù)據(jù)倉(cāng)庫(kù)10032004004李立男數(shù)據(jù)挖掘10022004005趙兵男網(wǎng)格安全導(dǎo)師研究生2.1關(guān)系模型16外碼:設(shè)F是基本關(guān)系R的一個(gè)或一組屬性,但不是關(guān)系R的碼。如果F與基本關(guān)系S的主碼Ks相對(duì)應(yīng),則稱F是基本關(guān)系R的外碼。規(guī)則:若F是基本關(guān)系R的外碼,并與S的主碼Ks相對(duì)應(yīng),則對(duì)于R中每個(gè)元組在F上的值必須為:取空值(F的每個(gè)屬性值均為空值)等于S中某個(gè)元組的主碼值參照完整性2.1關(guān)系模型參照完整性17例如:學(xué)生(學(xué)號(hào)、姓名、性別…)課程(課程號(hào)、課程名、學(xué)時(shí)…)學(xué)習(xí)(學(xué)號(hào)、課程號(hào)、成績(jī))思考:每個(gè)關(guān)系的主碼哪個(gè)關(guān)系有外碼2.1關(guān)系模型18某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。職稱(助教,講師,副教授,教授)性別(男,女)用戶自定義的完整性2.1關(guān)系模型2.1

關(guān)系模型

2.2

關(guān)系代數(shù)*2.3

關(guān)系演算

2.4

查詢優(yōu)化

2.5

關(guān)系系統(tǒng)

概述

傳統(tǒng)的集合運(yùn)算專門的關(guān)系運(yùn)算2.2關(guān)系代數(shù)概述1.關(guān)系代數(shù)2.關(guān)系代數(shù)運(yùn)算的三個(gè)要素3.關(guān)系代數(shù)運(yùn)算的分類4.表示記號(hào)2.2關(guān)系代數(shù)1.關(guān)系代數(shù)用戶對(duì)關(guān)系數(shù)據(jù)的操作通過關(guān)系代數(shù)表達(dá)式描述。2.關(guān)系代數(shù)運(yùn)算的三個(gè)要素運(yùn)算對(duì)象:關(guān)系運(yùn)算結(jié)果:關(guān)系運(yùn)算符:四類2.2關(guān)系代數(shù)概述集合運(yùn)算符∪-∩×并差交廣義笛卡爾積比較運(yùn)算符>≥<≤=≠大于大于等于小于小于等于等于不等于運(yùn)算符含義運(yùn)算符含義表1關(guān)系代數(shù)運(yùn)算符

2.2關(guān)系代數(shù)概述專門的關(guān)系運(yùn)算符σπ

÷選擇投影連接除邏輯運(yùn)算符

∧∨非與或運(yùn)算符含義運(yùn)算符含義表2關(guān)系代數(shù)運(yùn)算符(續(xù))

2.2關(guān)系代數(shù)概述集合運(yùn)算將關(guān)系看成元組的集合運(yùn)算是從關(guān)系的“水平”方向即行的角度來進(jìn)行專門的關(guān)系運(yùn)算不僅涉及行而且涉及列算術(shù)比較輔助專門的關(guān)系運(yùn)算符進(jìn)行操作邏輯運(yùn)算輔助專門的關(guān)系運(yùn)算符進(jìn)行操作2.2關(guān)系代數(shù)概述3.關(guān)系代數(shù)運(yùn)算的分類 傳統(tǒng)的集合運(yùn)算并、差、交、廣義笛卡爾積 專門的關(guān)系運(yùn)算選擇、投影、連接、除2.2關(guān)系代數(shù)概述4.表示記號(hào)設(shè)關(guān)系模式為R(A1,A2,…,An)R,t

R,t[Ai]它的一個(gè)關(guān)系設(shè)為R。t

R表示t是R的一個(gè)元組t[Ai]則表示元組t中相應(yīng)于屬性Ai的一個(gè)分量2.2關(guān)系代數(shù)概述2.2

關(guān)系代數(shù)

概述

傳統(tǒng)的集合運(yùn)算

專門的關(guān)系運(yùn)算2.2.1傳統(tǒng)的集合運(yùn)算并差交廣義笛卡爾積1.并(Union)R和S(相容關(guān)系)具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性)相應(yīng)的屬性取自同一個(gè)域R∪S

仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成

R∪S={t|t

R∨t

S}2.2.1傳統(tǒng)的集合運(yùn)算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∪S

1.并(Union)2.2.1傳統(tǒng)的集合運(yùn)算R和S(相容關(guān)系)具有相同的目n相應(yīng)的屬性取自同一個(gè)域R-S

仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成

R-S={t|t

R∧t

S}2.差(Difference)2.2.1傳統(tǒng)的集合運(yùn)算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1ABCa1b2c2a1b3c2a2b2c1RSR-S

2.差(Difference)2.2.1傳統(tǒng)的集合運(yùn)算R和S(相容關(guān)系)具有相同的目n相應(yīng)的屬性取自同一個(gè)域R∩S仍為n目關(guān)系,由既屬于R又屬于S的元組組成

R∩S={t|t

R∧t

S} R∩S=R

–(R-S)3.交(Intersection)2.2.1傳統(tǒng)的集合運(yùn)算ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR∩S

3.交(Intersection)2.2.1傳統(tǒng)的集合運(yùn)算Rn目關(guān)系,k1個(gè)元組Sm目關(guān)系,k2個(gè)元組R×S

列:(n+m)列的元組的集合元組的前n列是關(guān)系R的一個(gè)元組后m列是關(guān)系S的一個(gè)元組行:k1×k2個(gè)元組R×S={tr

ts|tr

R∧ts

S}4.廣義笛卡爾積(ExtendedCartesianProduct)2.2.1傳統(tǒng)的集合運(yùn)算ABCa1b1c1a1b2c2a2b2c1ABCa1b1c1a1b1c1a1b1c1a1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR×S

ABCa1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c1a1b2c2a1b3c2a2b2c14.廣義笛卡爾積(ExtendedCartesianProduct)2.2.1傳統(tǒng)的集合運(yùn)算2.2

關(guān)系代數(shù)概述傳統(tǒng)的集合運(yùn)算專門的關(guān)系運(yùn)算選擇投影連接除2.2.2專門的關(guān)系運(yùn)算1)選擇又稱為限制(Restriction)2)選擇運(yùn)算符的含義在關(guān)系R中選擇滿足給定條件的元組組成一個(gè)新的關(guān)系

σF(R)={t|t

R∧F(t)='真'}F:選擇條件,是由比較運(yùn)算符和/或邏輯運(yùn)算符組合構(gòu)成的表達(dá)式選擇運(yùn)算是單目運(yùn)算,運(yùn)算符為“σ”2.2.2專門的關(guān)系運(yùn)算1.選擇(Selection)3)選擇運(yùn)算是從行的角度進(jìn)行的運(yùn)算4)舉例 設(shè)有一個(gè)學(xué)生-課程數(shù)據(jù)庫(kù),包括學(xué)生關(guān)系Student、課程關(guān)系Course和選修關(guān)系SC。σ2.2.2專門的關(guān)系運(yùn)算1.選擇(Selection)42學(xué)生學(xué)號(hào)姓名性別籍貫出生年份學(xué)院091501王英女河北1997計(jì)算機(jī)091502王小梅女江蘇2000信電091503張小飛男江西1996計(jì)算機(jī)091504孫志鵬男海南1998計(jì)算機(jī)091505徐穎女江蘇1997信電091506錢易蒙男河北2000外文………………2.2.2專門的關(guān)系運(yùn)算43[例1]查詢計(jì)算機(jī)全體學(xué)生情況

學(xué)院=“計(jì)算機(jī)”(學(xué)生)

6=“計(jì)算機(jī)”(學(xué)生)學(xué)號(hào)姓名性別籍貫出生年份學(xué)院091501王英女河北1997計(jì)算機(jī)091503張小飛男江西1996計(jì)算機(jī)091504孫志鵬男海南1998計(jì)算機(jī)………………2.2.2專門的關(guān)系運(yùn)算44選擇運(yùn)算的關(guān)鍵問題確定操作對(duì)象是哪個(gè)關(guān)系?操作的條件是什么?如何表示?2.2.2專門的關(guān)系運(yùn)算45[例2]查詢90年代出生的全體學(xué)生情況

出生年份>=1990∧出生年份<=1999

(學(xué)生)學(xué)號(hào)姓名性別籍貫出生年份學(xué)院091501王英女河北1997計(jì)算機(jī)091503張小飛男江西1996計(jì)算機(jī)091504孫志鵬男海南1998計(jì)算機(jī)091505徐穎女江蘇1997信電….……………2.2.2專門的關(guān)系運(yùn)算46[例3]查詢信電學(xué)院江蘇籍全體學(xué)生情況

學(xué)院=“信電”∧籍貫=“江蘇”(學(xué)生)學(xué)號(hào)姓名性別籍貫出生年份學(xué)院091502王小梅女江蘇2000信電091505徐穎女江蘇1997信電………………2.2.2專門的關(guān)系運(yùn)算47[例4]查詢江蘇或者河北全體學(xué)生情況

籍貫=“江蘇”∨籍貫=“河北”

(學(xué)生)學(xué)號(hào)姓名性別籍貫出生年份學(xué)院091501王英女河北1997計(jì)算機(jī)091502王小梅女江蘇2000信電091505徐穎女江蘇1997信電091506錢易蒙男河北2000外文………………2.2.2專門的關(guān)系運(yùn)算1)投影運(yùn)算符的含義從R中選擇出若干屬性列組成新的關(guān)系

πA(R)={t[A]|t

R} A:R中的屬性列

2.2.2專門的關(guān)系運(yùn)算2.投影(Projection)2)投影操作主要是從列的角度進(jìn)行運(yùn)算但投影之后不僅取消了原關(guān)系中的某些列,而且還可能取消某些元組(避免重復(fù)行)π2.2.2專門的關(guān)系運(yùn)算2.投影(Projection)502.2.2專門的關(guān)系運(yùn)算學(xué)生學(xué)號(hào)姓名性別籍貫出生年份學(xué)院091501王英女河北1997計(jì)算機(jī)091502王小梅女江蘇2000信電091503張小飛男江西1996計(jì)算機(jī)091504孫志鵬男海南1998計(jì)算機(jī)091505徐穎女江蘇1997信電091506錢易蒙男河北2000外文………………51[例5]查詢所有學(xué)生的姓名和籍貫

姓名,籍貫

(學(xué)生)

2,4

(學(xué)生)姓名籍貫王英河北王小梅江蘇張小飛江西孫志鵬海南徐穎江蘇錢易蒙河北….…2.2.2專門的關(guān)系運(yùn)算52[例6]查詢學(xué)生生源來自哪些省份?

籍貫(學(xué)生)籍貫河北江蘇江西海南…

4(學(xué)生)投影之后不僅取消了原關(guān)系中的某些列,而且還取消了某些元組。2.2.2專門的關(guān)系運(yùn)算53[例7]查找出生年份在1998年以前(不含1998年)的學(xué)生的姓名、籍貫及其出生年份情況。

Π姓名,籍貫,出生年份(σ出生年份<1998(學(xué)生))姓名籍貫出生年份王英河北1997張小飛江西1996徐穎江蘇1997………2.2.2專門的關(guān)系運(yùn)算1)連接也稱為θ連接2)連接運(yùn)算的含義從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組

RS={trts|tr

R∧ts

S∧tr[A]θts[B]}A和B:分別為R和S上度數(shù)相等且可比的屬性組θ:比較運(yùn)算符

連接運(yùn)算從R和S的廣義笛卡爾積R×S中選取(R關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系的元組。

AθB2.2.2專門的關(guān)系運(yùn)算3.連接(Join)3)兩類常用連接運(yùn)算等值連接(equijoin)什么是等值連接θ為“=”的連接運(yùn)算稱為等值連接

等值連接的含義從關(guān)系R與S的廣義笛卡爾積中選取A、B屬性值相等的那些元組,即等值連接為:RS={trts|tr

R∧ts

S∧tr[A]=ts[B]}A=B2.2.2專門的關(guān)系運(yùn)算3.連接(Join)自然連接(Naturaljoin)

什么是自然連接自然連接是一種特殊的等值連接兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組在結(jié)果中把重復(fù)的屬性列去掉自然連接的含義

R和S具有相同的屬性組B

R

S={trts|tr

R∧ts

S∧tr[B]=ts[B]}2.2.2專門的關(guān)系運(yùn)算3.連接(Join)4)一般的連接操作是從行的角度進(jìn)行運(yùn)算。自然連接還需要取消重復(fù)列,所以是同時(shí)從行和列的角度進(jìn)行運(yùn)算。

AθBRS2.2.2專門的關(guān)系運(yùn)算3.連接(Join)5)舉例ABCa1b15a1b26a2b38BEb13b27b310b32RS2.2.2專門的關(guān)系運(yùn)算3.連接(Join)R

S

AR.BCS.BEa1b15b27a1b15b310a1b26b27a1b26b310a2b38b310

C<E2.2.2專門的關(guān)系運(yùn)算3.連接(Join)

等值連接R

SR.B=S.B

AR.BCS.BEa1b15b13a1b26b27a2b38b3102.2.2專門的關(guān)系運(yùn)算3.連接(Join)

自然連接R

S

ABCEa1b153a1b267a2b38102.2.2專門的關(guān)系運(yùn)算3.連接(Join)ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSR×S

R.AR.BR.C

a1b1c1

a1b1c1a1b1c1a1b2c2

a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1S.AS.BS.C

a1b2c2a1b3c2

a2b2c1a1b2c2a1b3c2

a2b2c1a1b2c2a1b3c2

a2b2c1R×S2.2.2專門的關(guān)系運(yùn)算3.連接(Join)63R.AR.BR.C

a1b1c1

a1b1c1a1b1c1a1b2c2

a1b2c2a1b2c2a2b2c1a2b2c1a2b2c1S.AS.BS.C

a1b2c2a1b3c2

a2b2c1a1b2c2a1b3c2

a2b2c1a1b2c2a1b3c2

a2b2c1RSR.B≠S.BR.AR.BR.C

a1b1c1

a1b1c1a1b1c1a1b2c2a2b2c1S.AS.BS.C

a1b2c2a1b3c2

a2b2c1a1b3c2a1b3c2R×SR.AR.BR.CS.AS.BS.Ca1b2c2a1b2c2a1b2c2a2b2c1a2b2c1a1b2c2a2b2c1a2b2c1RSR.B=S.BRS64關(guān)系SC和關(guān)系C的自然聯(lián)接SNOCNOGRADES3C387S1C288S4C379S9C483CNOCNAMECDEPTTNAMEC2離散數(shù)學(xué)計(jì)算機(jī)汪宏偉C3高等數(shù)學(xué)通信錢紅C4數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)馬良C1計(jì)算機(jī)原理計(jì)算機(jī)李兵關(guān)系C關(guān)系SC第一步,計(jì)算SC×C;第二步,計(jì)算滿足SC.CNO=C.CNO條件的元組;第三步,去掉重復(fù)列,操作結(jié)果為:2.2.2專門的關(guān)系運(yùn)算65關(guān)系SC和關(guān)系C的自然聯(lián)接SNOCNOGRADECNAMECDEPTTNAMES3C387高等數(shù)學(xué)通訊錢紅S1C288離散數(shù)學(xué)計(jì)算機(jī)汪宏偉S4C379高等數(shù)學(xué)通信錢紅S9C483數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)馬良2.2.2專門的關(guān)系運(yùn)算66自然連接和等值連接的區(qū)別①等值連接要求相等的分量,但不一定是公共屬性,而自然連接要求相等的分量必須是公共屬性②等值連接不做投影運(yùn)算,而自然連接要把重復(fù)的屬性去掉;③自然連接一定是等值連接,但等值連接不一定是自然連接。2.2.2專門的關(guān)系運(yùn)算67查詢選修課程號(hào)為180103的學(xué)生情況和課程號(hào)、成績(jī)

課程號(hào)=“180103”(學(xué)生課程)學(xué)生(

課程號(hào)=“180103”

(學(xué)習(xí)))

課程號(hào)=“180103”(學(xué)生學(xué)習(xí))學(xué)生(

課程號(hào)=“180103”

(課程))學(xué)生學(xué)習(xí)

課程號(hào)=“180103”

(課程)思考:1、找出全部課程的課程號(hào)2、找出每個(gè)學(xué)生選修的課程號(hào)3、每個(gè)學(xué)生選修的課程號(hào)是否包含全部課程的課程號(hào)?68查詢選修了全部課程的學(xué)生的學(xué)號(hào)?2.2.2專門的關(guān)系運(yùn)算象集Z給定一個(gè)關(guān)系R(X,Z),X和Z為屬性組。當(dāng)t[X]=x時(shí),x在R中的象集(ImagesSet)為:

Zx={t[Z]|t

R,t[X]=x}

它表示R中屬性組X上值為x的諸元組在Z上分量的集合。2.2.2專門的關(guān)系運(yùn)算5.除(Division)ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1RA=a1的象集BCb1c2b2c3b2c12.2.2專門的關(guān)系運(yùn)算5.除(Division)給定關(guān)系R(X,Y)

和S(Y,Z),其中X,Y,Z為屬性組。R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。R與S的除運(yùn)算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。

R÷S={tr[X]|tr

R∧πY(S)

Yx}

Yx:x在R中的象集,x=tr[X]2.2.2專門的關(guān)系運(yùn)算5.除(Division)除操作是同時(shí)從行和列角度進(jìn)行運(yùn)算

÷RS2.2.2專門的關(guān)系運(yùn)算5.除(Division)ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2RS2.2.2專門的關(guān)系運(yùn)算5.除(Division)在關(guān)系R中,A可以取四個(gè)值{a1,a2,a3,a4}a1的象集為{(b1,c2),(b2,c3),(b2,c1)}

a2的象集為{(b3,c7),(b2,c3)}

a3的象集為{(b4,c6)}

a4的象集為{(b6,c6)}S在(B,C)上的投影為

{(b1,c2),(b2,c1),(b2,c3)}只有a1的象集包含了S在(B,C)屬性組上的投影所以R÷S={a1}Aa1R÷S2.2.2專門的關(guān)系運(yùn)算5.除(Division)75除法的代數(shù)表示方法R÷S=

x(R)—

x((

x(R)×

y(S))—R)2.2.2專門的關(guān)系運(yùn)算5.除(Division)學(xué)號(hào)課程號(hào)S1C1S1C2S2C1S2C2S2C3S3C2課程號(hào)C1C2C3第一步:求

x(R)

T=Π學(xué)號(hào)(SC)

SC(R)C(S)求選修了全部課程的學(xué)生學(xué)號(hào)學(xué)號(hào)S1S2S3課程號(hào)C1C2C3第三步:求T

S

學(xué)號(hào)S1S1S1學(xué)號(hào)C1C2C3S2S2S2S3C1C2C3C1S3S3C2C3第二步:求

y(S)S=Π課程號(hào)(C)

課程名高數(shù)英語(yǔ)體育學(xué)號(hào)課程號(hào)S1C1S1C2S2C1S2C2S2C3S3C2學(xué)號(hào)S2SC(R)第四步:計(jì)算W=(T

S)-RC(S)求選修了全部課程的學(xué)生學(xué)號(hào)課程號(hào)C1C2C3課程名高數(shù)英語(yǔ)體育第六步:R÷S=T-V學(xué)號(hào)課程號(hào)S1C3S3C1S3C3第五步:求

x(W)V=Π學(xué)號(hào)(W)學(xué)號(hào)S1S3SnoSnameSsexSageSdept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19IS

Student5.綜合舉例2.2.2專門的關(guān)系運(yùn)算CourseCnoCnameCpnoCcredit1數(shù)據(jù)庫(kù)542數(shù)學(xué)

23信息系統(tǒng)144操作系統(tǒng)635數(shù)據(jù)結(jié)構(gòu)746數(shù)據(jù)處理

27PASCAL語(yǔ)言642.2.2專門的關(guān)系運(yùn)算

SnoCnoGrade9500119295001285950013889500229095002380SC2.2.2專門的關(guān)系運(yùn)算首先建立一個(gè)臨時(shí)關(guān)系K:

然后求:πSno,Cno(SC)÷K

Cno

1

3以學(xué)生-課程數(shù)據(jù)庫(kù)為例例

查詢至少選修1號(hào)課程和3號(hào)課程的學(xué)生學(xué)號(hào)2.2.2專門的關(guān)系運(yùn)算πSno.Cno(SC)SnoCno950011950012950013950022950023

95001象集{1,2,3} 95002象集{2,3}

πCno(K)={1,3}

于是:πSno,Cno(SC)÷K={95001}2.2.2專門的關(guān)系運(yùn)算例

查詢至少選修1號(hào)課程和3號(hào)課程的學(xué)生學(xué)號(hào)πSno,Cno(SC)÷πCno(σCno=‘1’∨Cno=‘3’(Course))={95001}2.2.2專門的關(guān)系運(yùn)算2.2.3關(guān)系代數(shù)舉例學(xué)號(hào)姓名性別籍貫出生年份學(xué)院090101王英女河北1989計(jì)算機(jī)090102王小梅女江蘇1990信電090103張小飛男宜昌1990計(jì)算機(jī)090104孫志鵬男海南1991計(jì)算機(jī)090105徐穎女江蘇1991信電090106錢易蒙男河北1990外文………………課程號(hào)課程名學(xué)時(shí)開課學(xué)期課程性質(zhì)180101數(shù)據(jù)結(jié)構(gòu)722必修180102操作系統(tǒng)883必修180103數(shù)據(jù)庫(kù)原理564必修……………學(xué)號(hào)課程號(hào)成績(jī)090101180101720901011801028809010118010377090102180101700901021801026509010218010370………學(xué)生學(xué)習(xí)課程(1)找出計(jì)算機(jī)學(xué)院女同學(xué)的名單Π姓名(σ學(xué)院=“計(jì)算機(jī)”∧性別=“女”(學(xué)生))(2)求選修180101號(hào)課程的學(xué)生名單Π姓名(σ課程號(hào)=“180101”(學(xué)習(xí)

學(xué)生))(3)求同時(shí)選修數(shù)據(jù)庫(kù)及數(shù)學(xué)的學(xué)生名單Π姓名,課程號(hào)(學(xué)習(xí)

學(xué)生)÷Π課程號(hào)(σ課程名=“數(shù)據(jù)庫(kù)”∨課程名=“數(shù)學(xué)”(課程))(4)沒有選修任何課程的學(xué)生名單及所在系Π姓名,學(xué)院(學(xué)生)-Π姓名,學(xué)院(學(xué)習(xí)

學(xué)生)852.2.3關(guān)系代數(shù)舉例86與關(guān)系代數(shù)不同,關(guān)系演算是非過程化語(yǔ)言,它只描述所需要的信息,而不給出獲得該信息的具體過程。按照謂詞變?cè)牟煌?,關(guān)系演算分為元組關(guān)系演算和域關(guān)系演算兩種。

*2.3關(guān)系演算元組關(guān)系是以元組變量作為謂詞變?cè)幕緦?duì)象元組關(guān)系演算語(yǔ)言ALPHA

共有GET、PUT、HOLD、UPDATE、DELETE、DROP6條語(yǔ)句操作語(yǔ)句工作空間名(表達(dá)式):操作條件*2.3.1元組關(guān)系演算查詢所有學(xué)生的數(shù)據(jù)GETW(學(xué)生)查詢學(xué)生表中有哪些院系GETW(學(xué)生.學(xué)院)查詢所有1980年以后出生的學(xué)生學(xué)號(hào)和籍貫GET

W(學(xué)生.學(xué)號(hào),學(xué)生.籍貫):學(xué)生.出生年份>1980查詢所有學(xué)生的數(shù)據(jù),結(jié)果按出生年份降序排序GETW(學(xué)生)

DOWN出生年份*2.3.1元組關(guān)系演算查詢所有學(xué)生的數(shù)據(jù)GETW(學(xué)生)查詢學(xué)生表中有哪些院系GETW(學(xué)生.學(xué)院)查詢所有1980年以后出生的學(xué)生學(xué)號(hào)和籍貫GET

W(學(xué)生.學(xué)號(hào),學(xué)生.籍貫):學(xué)生.出生年份>1980查詢所有學(xué)生的數(shù)據(jù),結(jié)果按出生年份降序排序GETW(學(xué)生)

DOWN出生年份*2.3.1元組關(guān)系演算90域關(guān)系演算表達(dá)式的定義用域變量代替元組變量的每一個(gè)分量,域變量的變化范圍是某個(gè)值域而不是一個(gè)關(guān)系域關(guān)系演算的查詢表達(dá)式為:{t1,t2,…,tk|P(t1,t2,…,tk)}

其中t1,t2,…,tk代表域變量,P是域演算公式。*2.3.1域關(guān)系演算91用戶輸入查詢查詢的內(nèi)部表示執(zhí)行查詢步驟向用戶報(bào)告查詢結(jié)果查詢語(yǔ)句的句法分析查詢優(yōu)化處理查詢

1、響應(yīng)用戶查詢的一般過程

2.4查詢優(yōu)化92例:查詢學(xué)號(hào)為091502的學(xué)生選修的課程名稱。E1=π課程名(σ課程.學(xué)號(hào)=學(xué)習(xí).學(xué)號(hào)∧學(xué)習(xí).學(xué)號(hào)=‘091502’(課程×學(xué)習(xí)))E2=π課程名(σ課程.學(xué)號(hào)=學(xué)習(xí).學(xué)號(hào)(課程×σ學(xué)號(hào)=‘091502’(學(xué)習(xí))))E3=π課程名(課程∞σ學(xué)號(hào)=‘091502’(學(xué)習(xí)))查詢效率:E3>E2>E12.4.1查詢優(yōu)化的必要性93關(guān)系代數(shù)表達(dá)式的等價(jià)變換規(guī)則1)連接、笛卡爾積交換律

E1×E2≡E2×E1

E1E2≡E2E1

E1E2≡E2E1FF2)連接、笛卡爾積結(jié)合律

(E1×E2)×E3≡E1×(E2×E3)

(E1E2)E3≡E1(E2E3)

(E1E2)E3≡E1(E2E3)F1F2F1F22.4.1查詢優(yōu)化的必要性943、投影的串接定律(注意條件)πA1,A2,…,An(πB1,B2,…,Bm(E))≡πA1,A2,…,An(E)4、選擇的串接定律σF1(σF2(E))≡σF1∧F2(E)5、選擇與投影的交換律(注意條件)σF(πA1,A2,…,An(E))≡πA1,A2,…,An(σF(E))(F只涉及A1,A2,…,An)πA1,A2,…,An(σF(E))≡πA1,A2,…,AnσF(πA1,…,An,B1,…,Bm(E)))6、選擇與笛卡爾積的交換律σF(E1×E2)≡σF(E1)

×E2σF(E1×E2)≡σF1(E1)

×σF2(E2)σF(E1×E2)≡σF2(σF1(E1)

×E2)957、選擇與并的交換σF(E1∪E2)≡σF(E1)

∪σF(E2)8、選擇與差的交換σF(E1-E2)≡σF(E1)

-σF(E2)9、投影與笛卡爾積的交換律πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡πA1,A2,…,An(E1)×πB1,B2,…,Bm(

E2)10、投影與并的交換πA1,A2,…,An(E1∪E2)≡πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)2.4.1查詢優(yōu)化的必要性965、關(guān)系代數(shù)表達(dá)式的優(yōu)化算法輸入:一個(gè)關(guān)系表達(dá)式的語(yǔ)法樹輸出:計(jì)算該表達(dá)式的程序方法:1)把σF1∧F2∧...∧Fn(E)變換為

σF1(σF2(…(σFn(E))…))

2)對(duì)每一個(gè)選擇盡可能把它移到樹的葉端。

3)對(duì)每一個(gè)投影盡可能把它移到樹的葉端。4)合并選擇和投影或一個(gè)選擇后跟一個(gè)投影。5)將得到的語(yǔ)法樹的內(nèi)節(jié)點(diǎn)分組。(每一雙目運(yùn)算和它所有的直接祖先為一組。6)生成一個(gè)程序,每組節(jié)點(diǎn)的計(jì)算是程序中的一步。求值順序?yàn)橄茸訉O,后祖先。[規(guī)則4][規(guī)則3,5,9,10][規(guī)則4-8][規(guī)則3-5]97

1、盡可能早地執(zhí)行選擇操作(減少中間運(yùn)算結(jié)果)

2、合并笛卡爾積和其后的選擇操作,使之稱為一個(gè)連接運(yùn)算

3、合并連續(xù)的選擇和投影操作,以免分開運(yùn)算造成多次掃描文件,從而節(jié)省了操作時(shí)間

4、找出表達(dá)式里的公共子表達(dá)式。

5、適當(dāng)?shù)貙?duì)關(guān)系文件做預(yù)處理2.4.2查詢優(yōu)化的策略和算法98例:求001001號(hào)學(xué)生所選修的課程名及成績(jī)

πCN,G

(σSC.S#=‘001001’∧SC.C#=C.C#

(SC×C))πCN,GσSC.S#=‘001001’∧SC.C#=C.C#SCC×2.4.2查詢優(yōu)化的策略和算法99πCN,GσSC.C#=C.C#SCC×σSC.S#=‘001001’πCN,GσSC.C#=C.C#SCC×σSC.S#=‘001001’選擇的串接定律選擇與笛卡爾積的交換100

πCN,GσSC.C#=C.C#SCC×σSC.S#=‘001001’πCN,G,SC.C#,C.C#5、選擇與投影的交換律σF(πA1,A2,…,An(E))≡πA1,A2,…,An(σF(E))(F只涉及A1,A2,…,An)πA1,A2,…,An(σF(E))≡πA1,A2,…,AnσF(πA1,…,An,B1,…,Bm(E)))101πCN,GσSC.C#=C.C#SCC×σSC.S#=‘001001’πC#,CNπG,C#

投影與笛卡爾積的交換律102∏CN,G(∏C#,G(σSC.S#=‘001001’(SC))∞∏CN,C#(C))優(yōu)化后的表達(dá)式103例:查詢選修了數(shù)據(jù)庫(kù)原理的學(xué)生姓名和成績(jī)

π姓名,成績(jī)(σ課程名=‘?dāng)?shù)據(jù)庫(kù)原理’∧學(xué)生.學(xué)號(hào)=學(xué)習(xí).

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論