數(shù)據(jù)庫第2章課件_第1頁
數(shù)據(jù)庫第2章課件_第2頁
數(shù)據(jù)庫第2章課件_第3頁
數(shù)據(jù)庫第2章課件_第4頁
數(shù)據(jù)庫第2章課件_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第2章關(guān)系數(shù)據(jù)庫1上一章介紹了三種主要的數(shù)據(jù)模型:層次模型網(wǎng)狀模型關(guān)系模型其中關(guān)系模型簡單靈活,并有著堅(jiān)實(shí)的理論基礎(chǔ),已成為當(dāng)前最流行的數(shù)據(jù)模型。本章主要講述:關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)關(guān)系的定義和性質(zhì)關(guān)系數(shù)據(jù)庫的基本概念關(guān)系運(yùn)算22.1 關(guān)系數(shù)據(jù)庫概述關(guān)系數(shù)據(jù)庫系統(tǒng)是什么?簡單!就是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)結(jié)構(gòu)關(guān)系操作集合完整性約束關(guān)系模型的組成2、關(guān)系操作2.1 關(guān)系數(shù)據(jù)庫概述最主要的部分集合集合關(guān)系操作(查詢):選擇、投影、連接、除、并、交、差關(guān)系操作(修改):增、刪、改關(guān)系操作非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操作模式為一次一記錄的方式2.1 關(guān)系數(shù)據(jù)庫概述關(guān)系模型中的關(guān)系操作:關(guān)系代數(shù)和關(guān)系演算

關(guān)系代數(shù):用關(guān)系運(yùn)算表達(dá)查詢要求

關(guān)系演算:用謂詞表達(dá)查詢要求

例如:

APLHA,QUEL關(guān)系數(shù)據(jù)操作語言關(guān)系代數(shù)語言關(guān)系演算語言具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語言元組關(guān)系演算語言域關(guān)系演算語言例如:ISBL例如:QBE例如:SQL(標(biāo)準(zhǔn)語言)三者等價(jià),評(píng)估標(biāo)準(zhǔn)3、完整性約束2.1 關(guān)系數(shù)據(jù)庫概述實(shí)體完整性參照完整性用戶定義完整性關(guān)系模型必須滿足的2個(gè)約束條件2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)

2)笛卡爾積:

定義一組域D1,D2,···,Dn,這些域可以完全不同,也可以部分或全部相同。則D1,D2,···,Dn的笛卡爾積為

D1×D2×···Dn={(d1,d2,···,dn)|di∈Di,i=1,2,…n}其中每一個(gè)元素(d1,d2,···,dn)叫作一個(gè)n元組(n-tuple),或簡稱為元組.元素中的每一個(gè)值d叫作一個(gè)分量(component)i2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)例:三個(gè)域

D1=導(dǎo)師集合SUPERVISOR=李長江,孫黃河

D2=專業(yè)集合=SPECIALITY=計(jì)算機(jī)專業(yè),信息專業(yè)

D3=研究生集合POSTGRADUATE=米飯,辣椒,青菜SUPERVISORSPECIALITYPOSTGRADUATE李長江計(jì)算機(jī)專業(yè)辣椒李長江信息專業(yè)米飯孫黃河

信息專業(yè)青菜一共有2*2*3=12個(gè)元組D1D2D3(基數(shù))2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)則笛卡爾積為:3)關(guān)系:D1×D2×…

Dn的子集叫作在域D1,D2,…Dn

上的關(guān)系,用R(D1,D2,…Dn)表示。R是關(guān)系的名字,n是關(guān)系的目或度(degree)..關(guān)系中的每個(gè)元素是關(guān)系中的元組,通常用t表示。當(dāng)n=1時(shí),為單元關(guān)系(unaryrelation)

當(dāng)n=2時(shí),為二元關(guān)系(binaryrelation)關(guān)系是笛卡爾積的子集,所以關(guān)系也是一個(gè)二維表;表中的每行對(duì)應(yīng)一個(gè)元組,每列對(duì)應(yīng)一個(gè)域;每列的名字稱為屬性,n目關(guān)系有n個(gè)屬性。2.2 關(guān)系數(shù)據(jù)結(jié)構(gòu)學(xué)號(hào)姓名姓別2辣椒女2米飯男2青菜女若某組屬性的值能唯一地標(biāo)識(shí)一個(gè)元組,而其真子集不行,則該屬性集合稱為候選碼選定一個(gè)候選碼,稱主碼。主碼非主屬性基本關(guān)系(基本表):實(shí)際存在的表,即實(shí)際存儲(chǔ)數(shù)據(jù)的對(duì)應(yīng)的表。

視圖表:基本表或其他視圖表導(dǎo)出的表,是虛表,不對(duì)應(yīng)實(shí)際存儲(chǔ)的數(shù)據(jù)。

查詢表:查詢結(jié)果表。關(guān)系的三種類型:定義關(guān)系的描述稱為關(guān)系模式(relationschema).可以形象化地表示為:R(U,D,DOM,F(xiàn))R:關(guān)系名U:屬性名集合D:屬性組U中屬性所來自的域DOM:屬性向域的映象集合F:屬性間數(shù)據(jù)的依賴關(guān)系集合。簡記為:R(U)或R(A1,A2,…

An)R為關(guān)系名;An為屬性名2、關(guān)系模式

關(guān)系是值,是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容,動(dòng)態(tài)的、隨時(shí)間不斷變化關(guān)系模式是型,關(guān)系模式是靜態(tài)的,穩(wěn)定的但實(shí)際中,常把二者統(tǒng)稱為關(guān)系3、關(guān)系數(shù)據(jù)庫在關(guān)系模型中,實(shí)體以及實(shí)體間的聯(lián)系都是用關(guān)系來表示的。在一個(gè)給定的現(xiàn)實(shí)世界領(lǐng)域中,相應(yīng)于所有的實(shí)體及實(shí)體之間的聯(lián)系的關(guān)系集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫。關(guān)系數(shù)據(jù)庫也有型和值之分。型稱為關(guān)系數(shù)據(jù)庫模式,是對(duì)關(guān)系數(shù)據(jù)庫的描述,定義了域和域間的關(guān)系模式,值稱為關(guān)系數(shù)據(jù)庫。主屬性不能取空值學(xué)號(hào)姓名專業(yè)號(hào)……方飛3259……李想3569……余言4521……不可為空一、實(shí)體完整性(實(shí)體完整性規(guī)則)專業(yè)號(hào)專業(yè)名稱……3259遙感科技……3569物流……4521播音主持……學(xué)號(hào)姓名專業(yè)號(hào)……方飛3259……李想3569……余言4521……外碼二、參照完整性專業(yè)學(xué)生參照關(guān)系被參照關(guān)系現(xiàn)實(shí)世界實(shí)體間存在聯(lián)系,由關(guān)系來描述,存在關(guān)系間的引用。例1:學(xué)生(學(xué)號(hào)#,姓名,性別,專業(yè)號(hào),年齡)

專業(yè)(專業(yè)號(hào)#,專業(yè)名稱)主碼課程號(hào)課程名稱3259遙感科技3569物流4521播音主持學(xué)號(hào)姓名專業(yè)號(hào)……方飛3259……李想3569……余言4521……外碼課程學(xué)生例2:學(xué)生(學(xué)號(hào)#,姓名,性別,專業(yè)號(hào),年齡)

課程(課程號(hào)#,課程名稱)

選修(學(xué)號(hào)#,課程號(hào)#,成績

)學(xué)號(hào)課程號(hào)成績遙感科技96物流90播音主持80選修外碼主碼主碼主碼被參照關(guān)系參照關(guān)系特點(diǎn):同域無須同名參照規(guī)則或者取空或者等于被參照關(guān)系的主碼值參照完整性規(guī)則:實(shí)體完整性和參照完整性適用于任何關(guān)系數(shù)據(jù)庫。用戶根據(jù)實(shí)際情況,對(duì)某一關(guān)系數(shù)據(jù)庫設(shè)定符合語義的約束條件。取值唯一(同班學(xué)生要求不同名)不為空(姓名)取值范圍限定(年齡<28)屬性間的約束條件(買入價(jià)<賣出價(jià))三、用戶定義完整性關(guān)系代數(shù)的分類及其運(yùn)算符關(guān)系代數(shù)是對(duì)關(guān)系進(jìn)行集合代數(shù)運(yùn)算,是基于關(guān)系代數(shù)的操作語言,稱為關(guān)系代數(shù)語言,簡稱關(guān)系代數(shù)。它是由IBM在一個(gè)實(shí)驗(yàn)性的系統(tǒng)上實(shí)現(xiàn)的,稱為ISBL(InformationSystemBaseLanguage)語言。ISBL的每個(gè)語句都類似于一個(gè)關(guān)系代數(shù)表達(dá)式。關(guān)系代數(shù)的運(yùn)算對(duì)象是關(guān)系,運(yùn)算結(jié)果也是關(guān)系,關(guān)系代數(shù)用到的運(yùn)算符主要包括四類:集合運(yùn)算符:∪(并),-(差),∩(交),X(廣義笛卡爾積);專門的關(guān)系運(yùn)算符:σ(選擇),∏(投影),∞(連接),*(自然連接),÷(除);算術(shù)比較運(yùn)算符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于);邏輯運(yùn)算符:∧(與),∨(或),┐(非)29關(guān)系代數(shù)的運(yùn)算按運(yùn)算符的不同主要分為兩類:傳統(tǒng)的集合運(yùn)算:把關(guān)系看成元組的集合,以元組作為集合中元素來進(jìn)行運(yùn)算,其運(yùn)算是從關(guān)系的“水平”方向即行的角度進(jìn)行的。包括∪(并),-(差),∩(交),X(廣義笛卡爾積);專門的關(guān)系運(yùn)算:不僅涉及行運(yùn)算,也涉及列運(yùn)算,這種運(yùn)算是為數(shù)據(jù)庫的應(yīng)用而引進(jìn)的特殊運(yùn)算。包括σ(選擇),∏(投影),∞(連接),*(自然連接),÷(除)302.4.1傳統(tǒng)的集合運(yùn)算傳統(tǒng)的集合運(yùn)算是二目運(yùn)算,是在兩個(gè)關(guān)系中進(jìn)行的。但是并不是任意的兩個(gè)關(guān)系都能進(jìn)行這種集合運(yùn)算,而是要在兩個(gè)滿足一定條件的關(guān)系中進(jìn)行運(yùn)算。那么,對(duì)關(guān)系有什么要求呢?下面先看一個(gè)定義。定義:設(shè)給定兩個(gè)關(guān)系R、S,若滿足:具有相同的度n;R中第i個(gè)屬性和S中第i個(gè)屬性必須來自同一個(gè)域。則說關(guān)系R、S是相容的。除笛卡爾積外,要求參加運(yùn)算的關(guān)系必須滿足上述的相容性定義。311.并(Union)關(guān)系R和關(guān)系S的并由屬于R或?qū)儆赟的元組組成,即R和S的所有元組合并,刪去重復(fù)元組,組成一個(gè)新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:

R∪S={t|t∈R∨t∈S}對(duì)于關(guān)系數(shù)據(jù)庫,記錄的插入和添加可通過并運(yùn)算實(shí)現(xiàn)。32RS2.差(Difference)關(guān)系R與關(guān)系S的差由屬于R而不屬于S的所有元組組成,即R中刪去與S中相同的元組,組成一個(gè)新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:

R-S={t|t∈R∧┐t∈S}通過差運(yùn)算,可實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫記錄的刪除。33RS3.交(Intersection)關(guān)系R與關(guān)系S的交由既屬于R又屬于S的元組組成,即R與S中相同的元組,組成一個(gè)新關(guān)系,其結(jié)果仍為n目關(guān)系。記作:

R∩S={t|t∈Rt∈S}如果兩個(gè)關(guān)系沒有相同的元組,那么它們的交為空。兩個(gè)關(guān)系的并和差運(yùn)算為基本運(yùn)算(即不能用其他運(yùn)算表達(dá)的運(yùn)算),而交運(yùn)算為非基本運(yùn)算,交運(yùn)算可以用差運(yùn)算來表示:R∩S=R-(R-S)34RS4.廣義笛卡爾積(ExtendedCartesianProduct)兩個(gè)分別為n目和m目關(guān)系R和S的廣義笛卡爾積是一個(gè)(n+m)列的元組的集合,元組的前n列是關(guān)系R的一個(gè)元組,后m列是關(guān)系S的一個(gè)元組。若R有k1個(gè)元組,S有k2個(gè)元組,則關(guān)系R和關(guān)系S的廣義笛卡爾積有k1*k2個(gè)元組,記作

R×S={tr⌒ts|tr∈R,∧ts∈S}關(guān)系的廣義笛卡爾積可用于兩關(guān)系的連接操作(連接操作將在一節(jié)中介紹)。35廣義笛卡兒積運(yùn)算實(shí)例362.4.2專門的關(guān)系運(yùn)算由于傳統(tǒng)的集合運(yùn)算,只是從行的角度進(jìn)行,而要靈活地實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫多樣的查詢操作,必須引入專門的關(guān)系運(yùn)算。在講專門的關(guān)系運(yùn)算之前,為敘述上的方便先引入幾個(gè)概念。

(1)設(shè)關(guān)系模式為R(A1,A2,……An),它的一個(gè)關(guān)系為R,t∈R表示t是R的一個(gè)元組,t[Ai]則表示元組t中相應(yīng)于屬性Ai的一個(gè)分量。37(2)若A={Ai1,Ai2,……,Aik},其中Ai1,Ai2,……,Aik是A1,A2,……,An中的一部分,則A稱為屬性列或域列,?則表示{A1,A2,……,An}中去掉{Ai1,Ai2,……,Aik}后剩余的屬性組。t[A]={t[Ai1],t[Ai2],……,t[Aik]}表示元組t在屬性列A上諸分量的集合。(3)R為n目關(guān)系,S為m目關(guān)系,tr∈R,ts∈S,trts稱為元組的連接(concatenation),它是一個(gè)n+m列的元組,前n個(gè)分量為R的一個(gè)n元組,后m個(gè)分量為S中的一個(gè)m元組。(4)給定一個(gè)關(guān)系R(X,Z),X和Z為屬性組,定義當(dāng)t[X]=x時(shí),x在R中的象集(imageset),為Zx={t[Z]|t∈R,t[X]=x},它表示R中的屬性組X上值為x的諸元組在Z上分量的集合。

38樣板數(shù)據(jù)庫(學(xué)生-課程數(shù)據(jù)庫)391.選?。⊿election)選取運(yùn)算是單目運(yùn)算,是根據(jù)一定的條件在給定的關(guān)系R中選取若干個(gè)元組,組成一個(gè)新關(guān)系,記作:σF(R)={t|t∈R∧F(t)為真}其中,σ為選取運(yùn)算符,F(xiàn)為選取的條件,它由運(yùn)算對(duì)象(屬性名、常數(shù)、簡單函數(shù))、算術(shù)比較運(yùn)算符(>,≥,<,≤,=,≠)和邏輯運(yùn)算符(∨∧┐)連接起來的邏輯表達(dá)式,結(jié)果為邏輯值“真”或“假”。選取運(yùn)算實(shí)際上是從關(guān)系R中選取使邏輯表達(dá)式為真的元組,是從行的角度進(jìn)行的運(yùn)算。40412.投影(Projection)投影運(yùn)算也是單目運(yùn)算,關(guān)系R上的投影是從R中選擇出若干屬性列,組成新的關(guān)系,即對(duì)關(guān)系在垂直方向進(jìn)行的運(yùn)算,從左到右按照指定的若干屬性及順序取出相應(yīng)列,刪去重復(fù)元組。記作:ΠA(R)={t[A]|t∈R}其中A為R中的屬性列,Π為投影運(yùn)算符。從其定義可看出,投影運(yùn)算是從列的角度進(jìn)行的運(yùn)算,這正是選取運(yùn)算和投影運(yùn)算的區(qū)別所在。選取運(yùn)算是從關(guān)系的水平方向上進(jìn)行運(yùn)算的,而投影運(yùn)算則是從關(guān)系的垂直方向上進(jìn)行的。

42投影運(yùn)算可以改變關(guān)系的屬性次序

43例4查詢學(xué)生關(guān)系中有哪些系。ΠSdept(Student)結(jié)果如右圖所示

由例4可以看出,投影后取消了某些屬性列后,就可能出現(xiàn)重復(fù)行,應(yīng)該取消這些完全相同的行。所以投影之后,不但減少了屬性,元組也可能減少,新關(guān)系與原關(guān)系不相容。

44SdeptCSISMA例5查詢選項(xiàng)了1課程的學(xué)生號(hào)。ΠSNO(σCNO=’1’(SC))結(jié)果如右圖所示。

本例中選取運(yùn)算和投影運(yùn)算相結(jié)合,先在選課表中選取滿足條件的元組,再于SNO屬性上進(jìn)行投影。

45SNO950013.連接(Join)連接運(yùn)算是二目運(yùn)算,是從兩個(gè)關(guān)系的笛卡爾積中選取滿足連接條件的元組,組成新的關(guān)系。設(shè)關(guān)系R(A1,A2,……An)及S(B1,B2,……Bm),連接屬性集X包含于{A1,A2,……An},及Y包含于{B1,B2,……Bm},X與Y中屬性列數(shù)目相等,且相對(duì)應(yīng)屬性有共同的域。[若Z={A1,A2……An}/X(/X:去掉X之外的屬性)及W={B1,B2……Bm}/Y,則R及S可表示為R(Z,X),S(W,Y)]關(guān)系R和S在連接屬性X和Y上的連接,就是以R×S笛卡爾積中,選取X屬性列上的分量與Y屬性列上的分量滿足給定θ比較條件的那些元組,也就是在R×S上選取在連接屬性X,Y上滿足θ條件的子集,組成新的關(guān)系。新關(guān)系的度為n+m。

46記作:R∞S={tr⌒ts|tr∈R∧ts∈S∧tr[X]θts[Y]為真}

其中,∞是連接運(yùn)算符,θ為算術(shù)比較運(yùn)算符,也稱θ連接;XθY為連接條件;θ為“=”時(shí),稱為等值連接;θ為“<”時(shí),稱為小于連接;θ為“>”時(shí),稱為大于連接。連接運(yùn)算為非基本運(yùn)算,可以用選取運(yùn)算和廣義笛卡爾積運(yùn)算來表示:R∞S=σxθy(R×S)47XθY在連接運(yùn)算中,一種最常用的連接是自然連接。所謂自然連接就是在等值連接的情況下,當(dāng)連接屬性X與Y具有相同屬性組時(shí),把在連接結(jié)果中重復(fù)的屬性列去掉。即如果R與S具有相同的屬性組Y,則自然連接可記作:R*S={tr⌒ts|tr∈R∧ts∈S∧tr[Y]=ts[Y]}自然連接是在廣義笛卡爾積R×S中選出同名屬性上符合相等條件元組,再進(jìn)行投影,去掉重復(fù)的同名屬性,組成新的關(guān)系。

48例2.9如圖2.9(a)、(b)所示的兩個(gè)關(guān)系R與S,(c)為R和S的大于連接(C>D),(d)為R和S的等值連接(C=D),(e)為R和S的等值連接(R.B=S.B),(f)為R和S的自然連接。

RS (a)(b)49ABC

BDa1b12

b15a1b24

b26a2b36

b37a2b48

b38大于連接(C>D)等值連接(C=D)

(c)(d)

50AR.BCS.BD

AR.BCS.BDa2b36b15

a2b36b26a2b48b15

a2b48b38a2b48b26

a2b48b37

等值連接(R.B=S.B)自然連接

(e)(f)

圖2.9連接運(yùn)算舉例

51AR.BCS.BD

ABCDa1b12b15

a1b125a1b24b26

a1b246a2b36b37

a2b367a2b36b38

a2b368結(jié)合上例,我們可以看出等值連接與自然連接的區(qū)別:1.

等值連接中不要求相等屬性值的屬性名相同,而自然連接要求相等屬性值的屬性名必須相同,即兩關(guān)系只有在同名屬性才能進(jìn)行自然連接。如上例R中的C列和S中的D列可進(jìn)行等值連接,但因?yàn)閷傩悦煌?,不能進(jìn)行自然連接。2.等值連接不將重復(fù)屬性去掉,而自然連接去掉重復(fù)屬性,也可以說,自然連接是去掉重復(fù)列的等值連接。如上例R中的B列和S中的B列進(jìn)行等值連接時(shí),結(jié)果有兩個(gè)重復(fù)的屬性列B,而進(jìn)行自然連接時(shí),結(jié)果只有一個(gè)屬性列B。

52例2.10查詢講授數(shù)據(jù)庫課程的教師姓名。ΠTN(σCN=’數(shù)據(jù)庫’(C)*ΠTNO,CNO(TC)*ΠTNO,TN(T))或ΠTN(ΠTNO(σCN=’數(shù)據(jù)庫’(C)*TC)*ΠTNO,TN(T))結(jié)果如右圖所示。

53TN王平劉偉張?zhí)m4.除法(Division)除法運(yùn)算是二目運(yùn)算,設(shè)有關(guān)系R(X,Y)與關(guān)系S(Y,Z),其中X,Y,Z為屬性集合,R中的Y與S中的Y可以有不同的屬性名,但對(duì)應(yīng)屬性必須出自相同的域。關(guān)系R除以關(guān)系S所得的商是一個(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]。除法運(yùn)算為非基本運(yùn)算,可以表示為:R÷S=Πx(R)-Πx(Πx(R)×S-R)

54關(guān)系代數(shù)除(Division)象集:給定一個(gè)關(guān)系R(X,Y),X和Y為屬性組。當(dāng)t[X]=x時(shí),x在R中的象集為:

Yx={t[Y]|tR,t[X]=x}除:給定關(guān)系R(X,Y)和S(Y,Z),其中X,Y,Z為屬性組。R中的Y和S中的Y可以有不同的名字,但必須取自同一個(gè)域,R與S除得到一個(gè)新關(guān)系P(X),P是R中滿足下列條件的元組在X屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合。記作:

RS={tr[X]|trRy(S)

Yx}55象集56ABCDEa1b15d13a1b15d27a1b25d310a2b35d32a4b56d27a4b56d310a4b56d32a6b66d52(a1,b1)的象CDE5d135d27(a1,b2)的象CDE5d310(a4,b5)的象CDE6d276d3106d32XY除57ABCDEa1b15d13a1b15d27a1b25d310a2b35d32a2b15d52a3b26d13a4b56d27a4b56d310a4b56d32a6b66d52XY(a4,b5)=CDEF6d27fa6d310fb6d32fcYR上分量值X的象集Yx包含S在Y上的投影2.4關(guān)系代數(shù)關(guān)系除法運(yùn)算的步驟:將被除關(guān)系屬性分為象集屬性和結(jié)果屬性對(duì)象集屬性進(jìn)行投影—目標(biāo)數(shù)據(jù)集將被除關(guān)系分組:結(jié)果屬性值一樣的元組分為一組找出結(jié)果集58除運(yùn)算實(shí)例59學(xué)號(hào)課號(hào)成績S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A課號(hào)課名C1數(shù)據(jù)結(jié)構(gòu)C3操作系統(tǒng)S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1AC1數(shù)據(jù)結(jié)構(gòu)C3操作系統(tǒng)S1C1AS1C2BS1C3BS2C1AS2C3BS3C1BS3C3BS4C1AS4C2AS5C2BS5C3BS5C1A=S3B選課必修課選擇了所有必修課表中的課程的學(xué)生的學(xué)號(hào)和成績2.5關(guān)系演算

關(guān)系演算是以數(shù)理邏輯中的謂詞演算為基礎(chǔ)的,通過謂詞形式來表示查詢表達(dá)式。根據(jù)謂詞變?cè)牟煌?,可將關(guān)系演算分為元組關(guān)系演算和域關(guān)系演算。2.5.1元組關(guān)系演算語言元組關(guān)系演算是以元組變量作為謂詞變?cè)幕緦?duì)象。元組關(guān)系演算語言的典型代表是E.F.Codd提出的ALPHA語言,這種語言雖然沒有實(shí)際實(shí)現(xiàn),但較有名氣,INGRES關(guān)系數(shù)據(jù)庫上使用的QUEL語言,就是在ALPHA語言的基礎(chǔ)上研制的。這里主要介紹ALPHA語言602.5.1ALPHA語言ALPHA語言是以謂詞公式來定義查詢要求的。在謂詞公式中存在客體變?cè)?,這里稱為元組變量。元組變量是一個(gè)變量,其變化范圍為某一個(gè)命名的關(guān)系。ALPHA語言的基本格式是:<操作符><工作空間名>(<目標(biāo)表>)[:<操作條件>]操作符有GET,PUT,HOLD,UPDATE,DELETE,DROP等。工作空間是指內(nèi)存空間,可以用一個(gè)字母表示,通常用W表示,也可以用別的字母表示。工作空間是用戶與系統(tǒng)的通信區(qū)。目標(biāo)表用于指定操作(如查詢、更新等)出來的結(jié)果,它可以是關(guān)系名或?qū)傩悦粭l操作語句可以同時(shí)對(duì)多個(gè)關(guān)系或多個(gè)屬性進(jìn)行操作。61操作條件是用謂詞公式表示的邏輯表達(dá)式,只有滿足此條件的元組才能進(jìn)行操作,這是一個(gè)可選項(xiàng),缺省時(shí)表示無條件執(zhí)行操作符規(guī)定的操作。除此之外,還可以在基本格式上加上排序要求,定額要求等。下面以教學(xué)數(shù)據(jù)庫(圖1.9)為例,說明ALPHA語言的使用。

1.數(shù)據(jù)查詢(1)簡單查詢例查詢所有學(xué)生的數(shù)據(jù)。GETW(S)GET語句的作用是把數(shù)據(jù)庫中的數(shù)據(jù)讀入內(nèi)存空間W,目標(biāo)表為學(xué)生關(guān)系S,代表查詢出來的結(jié)果,即所有的學(xué)生。冒號(hào)后面的操作條件缺省,表示無條件查詢。62謂詞工作空間名[(數(shù)字)](表達(dá)式)[:操作條件[Down|up表達(dá)式]]排序及條件謂詞操作滿足的元組,可空謂詞的操作對(duì)象,可以為關(guān)系或?qū)傩悦~,指定檢索結(jié)果的元組個(gè)數(shù)自定義,建立緩沖區(qū)查詢:Get更新:Put,Hold,Update,Delete,Drop基本格式:例2.13

查詢所有被選修的課程號(hào)碼。GETW(SC.CNO)目標(biāo)表為選課關(guān)系SC中的屬性CNO,代表所有被選修的課程號(hào)碼,查詢結(jié)果自動(dòng)消去重復(fù)行。(2)條件查詢由冒號(hào)后面的邏輯表達(dá)式給出查詢條件,在表達(dá)式中可以使用如下三類運(yùn)算符:①

比較運(yùn)算符:>,≥,<,≤,=等于,≠;②邏輯運(yùn)算符:∧(與),∨(或),┐(非)③表示執(zhí)行次序的括號(hào):()其中,比較運(yùn)算符的優(yōu)先級(jí)高于邏輯運(yùn)算符,可以使用()改變它們的優(yōu)先級(jí)。64例2.14

查詢計(jì)算機(jī)系工資高于1000元的教師的姓名和工資。GETW(T.TN,T.SAL):T.DEPT=’計(jì)算機(jī)’∧T.SAL>1000目標(biāo)表為教師關(guān)系T中的兩個(gè)屬性SN和SAL組成的屬性列表。

(3)排序查詢例2.15

查詢S3同學(xué)所選課程號(hào)及成績,并按成績降序排列。GETW(SC.CNO,SC.SCORE):SC.SNO=’S3’DOWNSC.SCOREDOWN表示降序,后面緊跟排序的屬性名。升序排列時(shí)使用UP。

65(4)定額查詢例2.15

查詢一名男教師的教師號(hào)和姓名。GETW(1)(T.TNO,T.TN):T.SEX=’男’所謂的定額查詢就是通過在W后面的括號(hào)中加上定額數(shù)量,限定查詢出元組的個(gè)數(shù)。這里(1)表示查詢結(jié)果中男教師的個(gè)數(shù),取出教師表中第一個(gè)男教師的教師號(hào)和姓名。排序和定額查詢可以一起使用。例2.16

查詢一名男教師的教師號(hào)和姓名,并使他的年齡最小。GETW(1)(T.TNO,T.TN):T.SEX=’男’UPT.AGE此語句的執(zhí)行過程為:先查詢所有男教師的教師號(hào)和姓名,再按照年齡由小到大排序,然后找出第一位,也就是年齡最小的男教師。

66(5)帶元組變量的查詢所謂的元組關(guān)系演算就是以元組變量作為謂詞變?cè)幕緦?duì)象,在關(guān)系演算的查詢操作時(shí),可以在相應(yīng)的關(guān)系上定義元組變量。元組變量代表關(guān)系中的元組,其取值是在所定義的關(guān)系范圍內(nèi)變化,所以也稱作范圍變量RangeVariable,一個(gè)關(guān)系可以設(shè)多個(gè)元組變量。例2.17

查詢S3同學(xué)所選課程號(hào)。RANGESCXGETW(X.CNO):X.SNO=’S3’使用RANGE來說明元組變量,X為關(guān)系SC上的元組變量。如果關(guān)系的名字很長,使用起來不方便,這時(shí)可以設(shè)一個(gè)名字較短的元組變量來代替關(guān)系名,簡化關(guān)系名,使操作更加方便。67(6)帶存在量詞的查詢例2.18

查詢S3同學(xué)所選課程名。RANGESCXGETW(C.CN):X(C.CNO=X.CNO∧X.SNO=’S3’)注意:操作條件中使用量詞時(shí)必須用元組變量。例2.19

查詢至少選修一門其課時(shí)數(shù)為80的課程的學(xué)生的姓名。RANGECCXSCSCXGET W(S.SN):SCX(SCX.SNO=S.SNO∧CX(CX.CNO=SCX.CNO∧CX.CT=80))68此查詢涉及三個(gè)關(guān)系,需要對(duì)兩個(gè)關(guān)系(C和SC)作用存在量詞,所以用了兩個(gè)元組變量。此語句的執(zhí)行過程為:先查詢課時(shí)數(shù)為80的課程號(hào),再根據(jù)找到的課程號(hào)在關(guān)系SC中查詢其對(duì)應(yīng)的學(xué)號(hào),然后根據(jù)這些學(xué)號(hào)在關(guān)系S中找到對(duì)應(yīng)的學(xué)生姓名。例2.20

查詢選修全部課程的學(xué)生姓名。RANGECCXSCSCXGET W(S.SN):CXSCX(XSC.SNO=S.SNO∧CX.CNO=SCX.CNO)69(7)庫函數(shù)查詢庫函數(shù)也稱集函數(shù)。用戶在使用查詢語言時(shí),經(jīng)常要作一些簡單的運(yùn)算。例如要統(tǒng)計(jì)某個(gè)關(guān)系中符合某一條件的元組數(shù),或某些元組在某個(gè)屬性上分量的和、平均值等等。在關(guān)系數(shù)據(jù)庫語言中提供了有關(guān)這類運(yùn)算的標(biāo)準(zhǔn)函數(shù),增強(qiáng)了基本檢索能力。常用的庫函數(shù)如下表所示70函數(shù)名稱功能AVG按列計(jì)算平均值TOTAL按列計(jì)算值的總和MAX求一列中的最大值MIN求一列中的最小值COUNT按列值計(jì)算元組個(gè)數(shù)例2.21

求學(xué)號(hào)為S1學(xué)生的平均分。GETW(AVG(SC.SCORE):S.SNO=’S1’例2.22

求學(xué)校共有多少個(gè)系GETW(COUNT(S.DEPT))COUNT函數(shù)自動(dòng)消去重復(fù)行,可計(jì)算字段“DEPT“不同值的數(shù)目。2.數(shù)據(jù)更新更新操作包括修改、插入和刪除。(1)修改修改操作使用UPDATE語句實(shí)現(xiàn),具體操作分為以下三步:71①讀數(shù)據(jù):使用HOLD語句將要修改的元組從數(shù)據(jù)庫中讀到工作空間中;②修改:利用宿主語言修改工作空間中元組的屬性;③送回:使用UPDATE語句將修改后的元組送回?cái)?shù)據(jù)庫中。這里HOLD語句是帶上并發(fā)控制的GET語句。例2.23

把劉偉教師轉(zhuǎn)到信息系。HOLDW(T.DEPT):T.TN=‘劉偉’MOVE’信息’TOW.DEPTUPDATEW在ALPHA語言中,不允許修改關(guān)系的主碼,例如不能使用UPDATE語句修改教師表T中的教師號(hào)。如果要修改主碼,應(yīng)該先使用刪除操作刪除該元組,再插入一條具有新主碼值的元組。72(2)插入插入操作使用PUT語句實(shí)現(xiàn),具體操作分為以下兩步:①建立新元組:利用宿主語言在工作空間中建立新元組;②寫數(shù)據(jù):使用PUT語句將元組寫入到指定的關(guān)系中。例2.24

在SC表中插入一條選課記錄(S6,C1,85)。MOVES6TOW.SNOMOVEC1TOW.CNOMOVE85TOW.SCOREPUTW(SC)73PUT語句的作用是把工作空間W中的數(shù)據(jù)寫到數(shù)據(jù)庫中,此例即把已經(jīng)在工作空間建立的一條選課記錄寫入到選課關(guān)系SC中。注意:PUT語句只能對(duì)一個(gè)關(guān)系進(jìn)行操作,在插入操作時(shí),拒絕接受主碼相同的元組。(3)刪除ALPHA語言中的刪除操作不但可以刪除關(guān)系中的一些元組,還可以刪除一個(gè)關(guān)系。刪除操作使用DELETE語句實(shí)現(xiàn),具體操作分為以下兩步:①讀數(shù)據(jù):使用HOLD語句將要?jiǎng)h除的元組從數(shù)據(jù)庫中讀到工作空間中;②刪除:使用DELETE語句刪除該元組。74例2.25

刪除學(xué)號(hào)為S6的學(xué)生的信息。HOLDW(S):S.SNO=‘S6’DELETEW例2.26

刪除全部學(xué)生的信息。HOLDW(S)DELETEW2.5.2域關(guān)系演算語言QBE域關(guān)系演算是關(guān)系演算的另一種形式。域關(guān)系演算是以元組變量的分量即域變量作為謂詞變?cè)幕緦?duì)象。域關(guān)系演算語言的典型代表是1975年由IBM公司約克城高級(jí)研究試驗(yàn)室的M.M.Zloof提出的QBE語言,該語言于1978年在IBM370上實(shí)現(xiàn)。75QBE是QueryByExample的縮寫,也稱為示例查詢,它是一種很有特色的屏幕編輯語言,其特點(diǎn)如下:(1)以表格形式進(jìn)行操作每一個(gè)操作都由一個(gè)或幾個(gè)表格組成,每一個(gè)表格都顯示在終端的屏幕上,用戶通過終端屏幕編輯程序以填寫表格的方式構(gòu)造查詢要求,查詢結(jié)果也以表格的形式顯示出來,所以它具有直觀和可對(duì)話的特點(diǎn)。(2)通過例子進(jìn)行查詢通過使用一些實(shí)例,使該語言更易于為用戶接受和掌握。(3)查詢順序自由當(dāng)有多個(gè)查詢條件時(shí),不要求使用者按照固定的思路和方式進(jìn)行查詢,使用更加方便。

76使用QBE語言的步驟:(1)用戶根據(jù)要求向系統(tǒng)申請(qǐng)一張或幾張表格,顯示在終端上;(2)用戶在空白表格的左上角的一欄內(nèi)輸入關(guān)系名;(3)系統(tǒng)根據(jù)用戶輸入的關(guān)系名,將在第一行從左至右自動(dòng)填寫各個(gè)屬性名;(4)用戶在關(guān)系名或?qū)傩悦路降囊桓駜?nèi)填寫相應(yīng)的操作命令,操作命令包括:P.(打印或顯示)、U.(修改)、I.(插入)、D.(刪除)。如果要打印或顯示整個(gè)元組時(shí),應(yīng)將“P”填在關(guān)系名的下方,如果只需打印或顯示某一屬性,應(yīng)將“P”填在相應(yīng)屬性名的下方。

77表格形式如表2.2所示

表2.2QBE操作框架表78關(guān)系名屬性1屬性2…屬性n操作命令屬性值或查詢條件屬性值或查詢條件…屬性值或查詢條件數(shù)據(jù)查詢1.簡單查詢例2.33

顯示全部學(xué)生的信息。方法一:將P.填在關(guān)系名的下方方法二:將“P.”填在各個(gè)屬性名的下方79SSNOSNSEXAGEDEPTP.

SSNOSNSEXAGEDEPT

P.95001P.趙亦P.女P.17P.計(jì)算機(jī)注意:只有目標(biāo)屬性包括所有的屬性時(shí),將P.填在關(guān)系名的下方。這種語言之所以稱為示例查詢,就是在操作中采取“示例”的方法,凡用作示例的元素,其下方均加下劃線。如上例中的“趙亦”、“女”等均為示例元素,即域變量。示例元素是所給域中可能的一個(gè)值,而不必是查詢結(jié)果中的元素。比如用作示例的學(xué)生姓名,可以不是學(xué)生表中的學(xué)生,只要給出任意一個(gè)學(xué)生名即可。802.條件查詢例2.34

查詢所有女學(xué)生的姓名。目標(biāo)屬性只有姓名,所以將P.填在屬性名的下方。查詢條件中可以使用比較運(yùn)算符>,≥,<,≤,=和≠,其中=可以省略。本例的查詢條件是SEX=‘女’,“=”被省略。81SSNOSNSEXAGEDEPT

P.趙亦女

例2.35

查詢年齡大于18歲的女學(xué)生的姓名。本例的查詢條件是AGE>18和SEX=‘女’兩個(gè)條件的“與”。在QBE中,表示兩個(gè)條件的“與”有兩種方法:方法一:把兩個(gè)條件寫在同一行上:方法二:把兩個(gè)條件寫在不同行上,但必須使用相同的示例元素

82SSNOSNSEXAGEDEPT

P.趙亦女>18

SSNOSNSEXAGEDEPT

P.趙亦女

P.趙亦

>18

例2.36

查詢既選修了C1號(hào)課程又選修了C2號(hào)課程的學(xué)生的學(xué)號(hào)。本例的查詢條件是CNO=‘C1’和CNO=‘C2’兩個(gè)條件的“與”,但兩個(gè)條件涉及同一屬性CNO,則必須把兩個(gè)條件寫在不同行上,且使用相同的示例元素。例2.37

查詢年齡大于18歲或者女學(xué)生的姓名。本例的查詢條件是AGE>18和SEX=‘女’兩個(gè)條件的“或”。在QBE中,表示兩個(gè)條件的“或”,要把兩個(gè)條件寫在不同行上,且必須

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論