數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(第5章)_第1頁
數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(第5章)_第2頁
數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(第5章)_第3頁
數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(第5章)_第4頁
數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(第5章)_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1,第5章 關(guān)系代數(shù),2,關(guān)系模型中的運(yùn)算,在關(guān)系模式設(shè)計已確定的前提下,在這些關(guān)系上可進(jìn)行哪些運(yùn)算?得到怎樣的新關(guān)系? 關(guān)系操作有兩種不同的表示方式:代數(shù)的和邏輯的。 關(guān)系代數(shù)不僅可以表示運(yùn)算,也可以表示對數(shù)據(jù)庫的約束。 關(guān)系操作可在無重復(fù)元組的集合set上運(yùn)算,也能在有重復(fù)元組的包bag上運(yùn)算。,3,5.1 關(guān)系代數(shù)操作,4,什么是關(guān)系代數(shù)Relational Algebra,在關(guān)系模型上定義的一組標(biāo)準(zhǔn)運(yùn)算,可由已知的關(guān)系計算得到新的關(guān)系。 注意:結(jié)果關(guān)系的屬性是什么?結(jié)果關(guān)系中的元組是什么? 考慮各種運(yùn)算的特征。,5,關(guān)系代數(shù)有哪些運(yùn)算,四大類共九種: 一般集合運(yùn)算:并、交、差 (在兩個

2、相同模式的關(guān)系上進(jìn)行) 刪減運(yùn)算:在一個關(guān)系上進(jìn)行 投影:刪去某些屬性(列) 選擇:刪去某些元組(行) 合并運(yùn)算:在兩個關(guān)系之間進(jìn)行 笛卡爾積:兩個關(guān)系中所有元組的所有可能的組合(無條件)。 連接:兩個關(guān)系中元組有選擇條件的組合。 自然連接 笛卡爾積加投影和選擇運(yùn)算 連接 笛卡爾積加選擇運(yùn)算 改名:在一個關(guān)系上進(jìn)行,改變關(guān)系或?qū)傩缘拿?,而不影響其中的元組。,6,關(guān)系中的集合運(yùn)算,對于兩個關(guān)系R和S,有哪些集合運(yùn)算? RS = t|tR OR tS :并,由R或S中的元組構(gòu)成的集合,同一元組只出現(xiàn)一次。 RS = t|tR AND tS :交,由屬于R且屬于S的元組構(gòu)成的集合。 R-S = t

3、|tR AND NOT tS :差,由屬于R且不屬于S的元組構(gòu)成的集合。 注意:前兩者可交換,差運(yùn)算不能交換。,7,集合運(yùn)算需要什么條件,R和S的模式具有相同的屬性集; 計算之前可能需調(diào)整屬性次序,先保證R和S具有相同的屬性次序。,8,例子,設(shè)有關(guān)系R與S如下:,R,S,RS,RS,R-S,9,投影(projection),對于一個關(guān)系R,投影產(chǎn)生一個新關(guān)系,只包含R屬性集的一個子集。 表示為:A1,A2,An (R) 結(jié)果:屬性為A1,A2,An;其中元組由R中元組在屬性A1,A2,An上的分量構(gòu)成,元組不重復(fù)。 關(guān)系分解時使用。,10,例子,Movies,title, year, leng

4、th (Movie),inColor (Movie),11,選擇(selection),對于一個關(guān)系R,選擇產(chǎn)生一個新關(guān)系,只包含滿足特定條件的元組。 表示為:c(R) 其中c是結(jié)果關(guān)系中每個元組都要滿足的條件。 結(jié)果:保持R屬性集且屬性次序也相同;元組是R中滿足條件c的元組集合。,12,如何表示條件,運(yùn)算對象:屬性名和常量 算術(shù)比較運(yùn)算: 邏輯運(yùn)算:NOT AND OR,13,例子,Movies,length 100 (Movies),length 100 AND studioName =FOX (Movies),14,笛卡爾積,對于關(guān)系R和S,笛卡爾積表示為:RS。 結(jié)果:屬性集是R和S屬

5、性集合的并集; 區(qū)別R和S中的同名屬性:“關(guān)系名.屬性名”。 元組是R中的每個元組與S中每個元組的組合。元組數(shù)量是MRNS。,15,例子,R,S,RS,16,自然連接,對于兩個關(guān)系R和S,自然連接表示為R S 結(jié)果: 屬性是R和S中的屬性的并集,去掉同名的屬性; 其元組是R和S在同名屬性上一致的元組的所有組合。 確切說,設(shè)A1,A2,An是R和S的公共屬性,當(dāng)且僅當(dāng)R的元組r與S的元組s在A1,A2,An上都一致時,元組s和r組合成為R S的一個元組,稱為一個連接元組。,17,例子,R,S,R S,注意:若R和S沒有同名的公共屬性,則自然連接是無效運(yùn)算(并非空元組)。,18,例子,U,V,U

6、V,19,懸掛元組,若R中元組與S中任何元組均不匹配,則在R S中沒有該元組出現(xiàn),這種元組稱為懸掛元組。懸掛元組在R中有,在S中也有。 例如: 姓名=張平(學(xué)生 選修) 或 姓名=張平(學(xué)生) 選修,20,連接,在笛卡爾積的基礎(chǔ)上,增加條件以限制元組。 對于兩個關(guān)系R和S,基于條件c的連接表示為 R cS,計算步驟: 計算RS ,即笛卡爾積; 用條件c做選擇運(yùn)算:c(RS)。,21,例子,U,V,U As0),那么RS是一個(r-s)元的元組集合。 RS是滿足下列條件的關(guān)系:其中每個元組t與S中的每個元組u組成的新元組(t,u)必須在關(guān)系R中。 RS的具體計算過程: T=1,2,r-s(R)

7、W=(TS)-R V=1,2,r-s(W) RS=T-V 即 RS=1,2,r-s(R)-1,2,r-s(1,2,r-s(R)S)-R),32,例子,R,S,RS,即 (RS)S R,33,綜合例子,設(shè)有關(guān)系: 學(xué)生(學(xué)號,姓名,性別,年齡) 選修(學(xué)號,課號,成績) 課程(課號,課名,教師) 求: 1. 選修c2的學(xué)生學(xué)號 學(xué)號(課號 = c2(選修) 2.選修c2的學(xué)生學(xué)號和姓名 學(xué)號,姓名(課號 =c2 (學(xué)生 選修),34,綜合例子,3. 既選修課名為Maths的學(xué)生學(xué)號和姓名 學(xué)號,姓名(課名 = Maths(學(xué)生 選修 課程) 4. 選修c1或選修c2的學(xué)生學(xué)號 學(xué)號(課號 = c

8、1(選修) 學(xué)號(課號 = c2(選修) 5. 既選修c1,亦選修c2的學(xué)生學(xué)號 學(xué)號(課號 = c1(選修) 學(xué)號(課號 = c2(選修),35,綜合例子,6. 沒選修c1的學(xué)生學(xué)號 學(xué)號(選修) 學(xué)號(課號 = c1(選修) 7. 學(xué)習(xí)全部課程的學(xué)生姓名 姓名(學(xué)生 (學(xué)號,課號(選修)課號(課程) 8. 所學(xué)課程包含S3所學(xué)課程的學(xué)生學(xué)號 學(xué)號,課號(選修)課號(學(xué)號 = S3(選修),36,思考在銷售系統(tǒng)的情況,Customer (custid, name, prov, city,phone, unit),Salesman (empid, idno, name, gender, pho

9、ne, deptid),Product (prodid, factory, type, spec, price, desc),Department (deptid, name, headerid),Salesitem (orderno, lineno, prodid, singlecost, quantity),Salesorder (orderno, signdate, empid, custid),37,思考在銷售系統(tǒng)的情況,1.計算名為“張三”的銷售員的員工號及其電話號碼。 2.計算員工號為“A0043”的銷售員所經(jīng)辦的客戶的姓名及其電話號碼。 3.計算員工號為“A0043”的銷售員所銷

10、售的商品的種類和規(guī)格。,38,5.2 包的關(guān)系運(yùn)算,39,什么是包bag,一組元素的一種聚集形式,允許重復(fù)元素出現(xiàn)。而集合set中不允許元素重復(fù)出現(xiàn)。 對一個包去掉其中重復(fù)元素,就可得到一個集合。 一個集合可認(rèn)為是一個特殊的包,其中沒有重復(fù)元組。,40,為何需要包,關(guān)系中的元組應(yīng)該不重復(fù),但經(jīng)運(yùn)算得到的新關(guān)系中的元組可以重復(fù)。數(shù)據(jù)庫系統(tǒng)支持。 提高投影計算效率。 對聚合運(yùn)算有用(匯總值、平均值、計數(shù)等)。,41,在包上如何進(jìn)行運(yùn)算,集合運(yùn)算(并、交、差)、投影、選擇、乘積和連接都允許運(yùn)算之前和之后元組重復(fù)。 設(shè)R和S是包,若元組t在R和S中分別出現(xiàn)n和m次,則: t在RS中出現(xiàn)n+m次 t在R

11、S中出現(xiàn)min(n,m)次 t在RS中出現(xiàn)max(0,n-m)次,42,5.3 關(guān)系代數(shù)的擴(kuò)展操作,43,關(guān)系代數(shù)的擴(kuò)展操作,1. 消除重復(fù) 清除包中的重復(fù)元素,只保留一個副本在關(guān)系中。 2. 聚集操作 獨(dú)立于同一關(guān)系中的其它元組而對某些元組進(jìn)行運(yùn)算。 3. 分組 根據(jù)元組的值對他們在一個或多個屬性上分組。 4. 排序 根據(jù)一個或多個屬性對關(guān)系的元組來排序。 5. 擴(kuò)展投影 以原有的列作為參數(shù)來計算,并產(chǎn)生新的列。 6. 外連接運(yùn)算 連接運(yùn)算的變體,它防止了懸掛元組的出現(xiàn)。,44,消除重復(fù),把包中的重復(fù)元素都去掉,只保留一個副本在關(guān)系中。,R,(R),45,聚集操作,1. SUM用來產(chǎn)生一列總

12、和,得到的是一個數(shù)字值。 2. AVG用來產(chǎn)生一列平均值,結(jié)果也是數(shù)字值。 3. MAX和MIN當(dāng)用于數(shù)字值列的時候,產(chǎn)生的分別是這一列中最大的和最小的值;當(dāng)應(yīng)用于字符列的時候產(chǎn)生是字典序的最大者和最小者。 4. COUNT產(chǎn)生一列中的“值”的數(shù)目(并不一定指不同的值)。同樣,COUNT應(yīng)用于一個關(guān)系的任何屬性時,產(chǎn)生的是這個關(guān)系的元組數(shù),包括重復(fù)的元組。,46,例子,考慮關(guān)系,1. SUM(B)=2+4+2+2=10 2. AVG(A)=(1+3+1+1)/4=1.5 3. MIN(A)=1 4. MAX(B)=4 5. COUNT(A)=4,47,分組操作,為什么要分組 分組是便于各分組中

13、元組的聚集操作。 如何分組 算符的下標(biāo)是一個元素的列表,其中每個元素是下列情況之一: 是應(yīng)用操作的那個關(guān)系的一個屬性,這個屬性是那些可以把R分組的屬性其中之一。這個元素稱為分組屬性。 應(yīng)用到關(guān)系的一個屬性上的聚集操作符。為了在結(jié)果中對應(yīng)此聚集,給屬性一個名稱,一個箭頭和一個新的名字附在這個聚集的后面,稱為聚集屬性。,48,分組操作,表達(dá)式L(R)所產(chǎn)生的關(guān)系 把關(guān)系R的元組分組。每一組有具有L中分組屬性為特定賦值的所有元組構(gòu)成。 對于每一組,產(chǎn)生如下內(nèi)容的元組: 那個組的分組屬性值。 本組中所有元組對列表L的屬性聚集操作的結(jié)果。,49,例子,設(shè)有關(guān)系模式 StarsIn(title,year,

14、starName) 現(xiàn)在要找出至少出演了三部電影,以及他們最先出演的電影的拍攝時間。 starName,minYear(ctTitle3(starName,MIN(year)minYear,COUNT(title)ctTitle(StarsIn),50,擴(kuò)展的投影操作,擴(kuò)展投影操作L(R),使它支持在元組上的操作,其投影列表可以是以下所列出的元素之一: 1. R的一個屬性。 2. 形如xy的表達(dá)式,其中,x和y都是屬性的名字。xy表示R中的x屬性取來并重命名為y。 3. 形如Ez的表達(dá)式,其中E是一個涉及R的屬性、常量、代數(shù)運(yùn)算或字符串運(yùn)算的表達(dá)式。z是表達(dá)式E得到結(jié)果屬性的新名字。,51,例

15、子,設(shè)有關(guān)系R,A,B+CX(R),B-AX,C-BY(R),52,排序操作,表達(dá)式L(R),其中R是關(guān)系,L是R中的某些屬性的列表。這個表達(dá)式表示的就是關(guān)系R的本身,只是結(jié)果中的所有元組是按L來排序的。 設(shè)L是由A1,A2,An組成,那么R的元組就先按A1的值排序,對于A1屬性相等的元組則按A2的值排序,依次類推。,53,排序操作的特殊之處,它是關(guān)系代數(shù)中唯一一個結(jié)果是元組列表的操作。因此,從查詢的表達(dá)方面來看,它只能作為一串操作的最后一個運(yùn)算來使用才具有實際意義。,54,外連接,連接操作的缺陷 連接操作的一個性質(zhì)是可能產(chǎn)生懸掛元組。而這些元組不能跟另外關(guān)系的任何一個元組匹配,所以這種連接操

16、作并不能完全反映原始關(guān)系的全部信息。 什么是外連接 考慮兩個關(guān)系R和S的自然連接,然后再把來自R或S的懸浮元組加入其中,用null的表示符號 補(bǔ)齊結(jié)果元組中那些不具有值的屬性。我們稱之為外連接,用符號 表示。,55,例子,設(shè)有關(guān)系,U,V,U V,56,外連接的不同變體,只是將左變量R的懸浮元組補(bǔ)齊 加入到結(jié)果中,稱之左外連接,用符號R LS表示。 只是將右變量S的懸浮元組補(bǔ)齊 加入到結(jié)果中,稱之左外連接,用符號R RS表示。 外連接的操作是,先進(jìn)行連接,然后將那些不能匹配其他關(guān)系的元組,也用 補(bǔ)齊,用U CV表示一個帶條件C的外連接。同樣,可用L或R來修飾這個算符,使其表示的左外連接或右外連

17、接。,57,例子,U AV.CV,U LV,U RV,58,5.4 對關(guān)系的約束,59,關(guān)系代數(shù)作為約束語言,兩種表示約束的方式: 1 若R是一個關(guān)系代數(shù)表達(dá)式,則R是一個約束,表示R中沒有元組。 2 若R和S是兩個關(guān)系代數(shù)表達(dá)式,則R S是一個約束,表示R中的每個元組都在S中。 這兩種方式都能表示等價的語義。 R 等價于 R R S 等價于RS,60,參照完整性約束,考慮電影數(shù)據(jù)庫模式 movies(title,year,inColor,stidioName,ProducerC#) MovieExec(name,address,cert#,netWorth) StarsIn(starTitl

18、e,starYear,starName) 用關(guān)系表達(dá)式表示一個參照完整性約束: producerC#(Movie) cert#(MovieExec) 或者可表示為: producerC#(Movie)-cert#(MovieExec)= 用關(guān)系表達(dá)式表示一個參照完整性約束: starTitle,starYear(StarsIn) title,year(Movie),61,其他約束,如何用關(guān)系表達(dá)式表示函數(shù)依賴? MovieStar(name,address,gender,birthday) nameaddress = AND ms1.addressms2. address(ms1ms2) 其中 ms1為 ms1(MovieStar) 如何用關(guān)系表達(dá)式表示域約束? 如MovieStar中的gender 屬性值0表示女,1表示男,其它值無效。 gender 0 AND gender 1(MovieStar) ,62,其他

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論