第2章關(guān)模型和關(guān)系運(yùn)算理論2011_第1頁(yè)
第2章關(guān)模型和關(guān)系運(yùn)算理論2011_第2頁(yè)
第2章關(guān)模型和關(guān)系運(yùn)算理論2011_第3頁(yè)
第2章關(guān)模型和關(guān)系運(yùn)算理論2011_第4頁(yè)
第2章關(guān)模型和關(guān)系運(yùn)算理論2011_第5頁(yè)
已閱讀5頁(yè),還剩117頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第2章章 關(guān)系模型和關(guān)系運(yùn)算理關(guān)系模型和關(guān)系運(yùn)算理 論論 本章重要概念(一)本章重要概念(一) (1)基本概念)基本概念 關(guān)系模型,關(guān)鍵碼(主鍵和外鍵),關(guān)系關(guān)系模型,關(guān)鍵碼(主鍵和外鍵),關(guān)系 的定義和性質(zhì),三類(lèi)完整性規(guī)則,的定義和性質(zhì),三類(lèi)完整性規(guī)則,ER模模 型到關(guān)系模型的轉(zhuǎn)換規(guī)則,過(guò)程性語(yǔ)言與型到關(guān)系模型的轉(zhuǎn)換規(guī)則,過(guò)程性語(yǔ)言與 非過(guò)程性語(yǔ)言。非過(guò)程性語(yǔ)言。 (2)關(guān)系代數(shù))關(guān)系代數(shù) 五個(gè)基本操作,四個(gè)組合操作,七個(gè)擴(kuò)充五個(gè)基本操作,四個(gè)組合操作,七個(gè)擴(kuò)充 操作。操作。 本章重要概念(二)本章重要概念(二) (3)關(guān)系演算)關(guān)系演算 元組關(guān)系演算和域關(guān)系演算的原子公式、元組關(guān)系演算和

2、域關(guān)系演算的原子公式、 公式的定義。關(guān)系演算的安全性和等價(jià)性。公式的定義。關(guān)系演算的安全性和等價(jià)性。 (4)關(guān)系代數(shù)表達(dá)式的優(yōu)化)關(guān)系代數(shù)表達(dá)式的優(yōu)化 關(guān)系代數(shù)表達(dá)式的等價(jià)及等價(jià)轉(zhuǎn)換規(guī)則,關(guān)系代數(shù)表達(dá)式的等價(jià)及等價(jià)轉(zhuǎn)換規(guī)則, 啟化式優(yōu)化算法。啟化式優(yōu)化算法。 本章概要本章概要 l本章先介紹關(guān)系模型的基本概念;然后介紹關(guān)本章先介紹關(guān)系模型的基本概念;然后介紹關(guān) 系運(yùn)算的三種理論:關(guān)系代數(shù)、關(guān)系演算和關(guān)系運(yùn)算的三種理論:關(guān)系代數(shù)、關(guān)系演算和關(guān) 系邏輯。系邏輯。 關(guān)系模型和關(guān)系運(yùn)算理關(guān)系模型和關(guān)系運(yùn)算理 l2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念 l2.2 2.2 關(guān)系代數(shù)關(guān)系代數(shù) l2

3、.3 2.3 關(guān)系演算關(guān)系演算 l2.4 2.4 關(guān)系代數(shù)表達(dá)式的優(yōu)化關(guān)系代數(shù)表達(dá)式的優(yōu)化 2.1 2.1 關(guān)系模型的基本概念關(guān)系模型的基本概念 l2.1.1 2.1.1 基本術(shù)語(yǔ)基本術(shù)語(yǔ) l2.1.2 2.1.2 關(guān)系的定義和性質(zhì)關(guān)系的定義和性質(zhì) l2.1.3 2.1.3 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則 l2.1.4 2.1.4 ERER模型向關(guān)系模型的轉(zhuǎn)換規(guī)則模型向關(guān)系模型的轉(zhuǎn)換規(guī)則 l2.1.5 2.1.5 關(guān)系模型的三級(jí)體系結(jié)構(gòu)關(guān)系模型的三級(jí)體系結(jié)構(gòu) l2.1.6 2.1.6 關(guān)系模型的形式定義和優(yōu)點(diǎn)關(guān)系模型的形式定義和優(yōu)點(diǎn) l2.1.7 2.1.7 關(guān)系查詢(xún)語(yǔ)言和關(guān)

4、系運(yùn)算關(guān)系查詢(xún)語(yǔ)言和關(guān)系運(yùn)算 返 回 基本術(shù)語(yǔ)基本術(shù)語(yǔ)(1) l定義定義2.1 用二維表格表示實(shí)體集,用關(guān)鍵碼表示實(shí)體間用二維表格表示實(shí)體集,用關(guān)鍵碼表示實(shí)體間 聯(lián)系的數(shù)據(jù)模型稱(chēng)為聯(lián)系的數(shù)據(jù)模型稱(chēng)為關(guān)系模型關(guān)系模型(relational Model)。)。 圖2.1 職工登記表 基本術(shù)語(yǔ)基本術(shù)語(yǔ)(2) l 在關(guān)系模型中,在關(guān)系模型中, l字段稱(chēng)為屬性,字段稱(chēng)為屬性, l字段值稱(chēng)為屬性值,字段值稱(chēng)為屬性值, l記錄類(lèi)型稱(chēng)為關(guān)系模式。記錄類(lèi)型稱(chēng)為關(guān)系模式。 l關(guān)系模式名是關(guān)系模式名是R R。 l記錄稱(chēng)為元組(記錄稱(chēng)為元組(tupletuple),), l元組的集合稱(chēng)為關(guān)系(元組的集合稱(chēng)為關(guān)系(re

5、lationrelation)或?qū)嵗ǎ┗驅(qū)嵗╥nstanceinstance)。)。 l關(guān)系為表或表格,元組為行關(guān)系為表或表格,元組為行(row)(row),屬性為列,屬性為列(column)(column)。 l關(guān)系中屬性個(gè)數(shù)稱(chēng)為關(guān)系中屬性個(gè)數(shù)稱(chēng)為“元數(shù)元數(shù)”(arityarity),元組個(gè)數(shù)為),元組個(gè)數(shù)為 “基數(shù)基數(shù)”(cardinality)(cardinality)。 基本術(shù)語(yǔ)基本術(shù)語(yǔ)(3) l關(guān)系元數(shù)為關(guān)系元數(shù)為5 5,基數(shù)為,基數(shù)為4 4 圖2.2 關(guān)系模型的術(shù)語(yǔ) 一般術(shù)語(yǔ) 關(guān)系模型術(shù)語(yǔ) 字段、數(shù)據(jù)項(xiàng)屬性 記錄類(lèi)型關(guān)系模式 記錄1元組1 記錄2元組2 記錄3元組3 記錄4元組

6、4 字段值屬性值 基本術(shù)語(yǔ)基本術(shù)語(yǔ)(4) l 關(guān)鍵碼關(guān)鍵碼(key,(key,簡(jiǎn)稱(chēng)鍵簡(jiǎn)稱(chēng)鍵) )由一個(gè)或多個(gè)屬性組成。在實(shí)際由一個(gè)或多個(gè)屬性組成。在實(shí)際 使用中,有下列幾種鍵。使用中,有下列幾種鍵。 (1 1)超鍵()超鍵(super Keysuper Key)在關(guān)系中能唯一標(biāo)識(shí)元組的屬)在關(guān)系中能唯一標(biāo)識(shí)元組的屬 性集性集 (2 2)候選鍵()候選鍵(candidate Keycandidate Key)不含有多余屬性的超鍵)不含有多余屬性的超鍵 (3 3)主鍵)主鍵(primary Key) (primary Key) 在圖在圖2.12.1中,(工號(hào),姓名)中,(工號(hào),姓名) 是模式的一個(gè)

7、超鍵,但不是候選鍵,而(工號(hào))是候選是模式的一個(gè)超鍵,但不是候選鍵,而(工號(hào))是候選 鍵。在實(shí)際使用中,如果選擇(工號(hào))作為刪除或查找鍵。在實(shí)際使用中,如果選擇(工號(hào))作為刪除或查找 元組的標(biāo)志,那么稱(chēng)(工號(hào))是主鍵。元組的標(biāo)志,那么稱(chēng)(工號(hào))是主鍵。 (4 4)外鍵()外鍵(foreign Keyforeign Key)如果模式中屬性是其他)如果模式中屬性是其他 模式的主鍵,那么在模式中稱(chēng)為外鍵模式的主鍵,那么在模式中稱(chēng)為外鍵。 關(guān)系的定義和性質(zhì)關(guān)系的定義和性質(zhì) l定義定義2.2 2.2 關(guān)系是一個(gè)屬性數(shù)目相同的元組的集合。關(guān)系是一個(gè)屬性數(shù)目相同的元組的集合。 l 在關(guān)系模型中,對(duì)關(guān)系作了下

8、列規(guī)范性限制:在關(guān)系模型中,對(duì)關(guān)系作了下列規(guī)范性限制: (1 1)關(guān)系中每一個(gè)屬性值都是不可分解的;)關(guān)系中每一個(gè)屬性值都是不可分解的; (2 2)關(guān)系中不允許出現(xiàn)重復(fù)元組(即不允許出現(xiàn)相同的)關(guān)系中不允許出現(xiàn)重復(fù)元組(即不允許出現(xiàn)相同的 元組);元組); (3 3)由于關(guān)系是一個(gè)集合,因此不考慮元組間的順序,)由于關(guān)系是一個(gè)集合,因此不考慮元組間的順序, 即沒(méi)有行序;即沒(méi)有行序; (4 4)元組中的屬性在理論上也是無(wú)序的,但使用時(shí)按習(xí))元組中的屬性在理論上也是無(wú)序的,但使用時(shí)按習(xí) 慣考慮列的順序。慣考慮列的順序。 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則(1)(1) l 實(shí)體完整性規(guī)

9、則(實(shí)體完整性規(guī)則(entity integrity ruleentity integrity rule) 要求關(guān)系中元組在組成主鍵的屬性上不能有空值。如要求關(guān)系中元組在組成主鍵的屬性上不能有空值。如 果出現(xiàn)空值,那么主鍵值就起不了唯一標(biāo)識(shí)元組的作用。果出現(xiàn)空值,那么主鍵值就起不了唯一標(biāo)識(shí)元組的作用。 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則 (2) l參照完整性規(guī)則(參照完整性規(guī)則(reference integrity rule) l定義定義2.3 參照完整性規(guī)則的形式定義如下:參照完整性規(guī)則的形式定義如下: 如果屬性集如果屬性集K是關(guān)系模式是關(guān)系模式R1的主鍵,的主鍵,K也是關(guān)系

10、模式也是關(guān)系模式 R2的外鍵,那么在的外鍵,那么在R2的關(guān)系中,的關(guān)系中,K的取值只允許兩種的取值只允許兩種 可能,或者為空值,或者等于可能,或者為空值,或者等于R1關(guān)系中某個(gè)主鍵值。關(guān)系中某個(gè)主鍵值。 這條規(guī)則的實(shí)質(zhì)是這條規(guī)則的實(shí)質(zhì)是“不允許引用不存在的實(shí)體不允許引用不存在的實(shí)體”。 關(guān)系模式關(guān)系模式R1R1的關(guān)系稱(chēng)為的關(guān)系稱(chēng)為“參照關(guān)系參照關(guān)系”,關(guān)系模式,關(guān)系模式R2R2的的 關(guān)系稱(chēng)為關(guān)系稱(chēng)為“依賴(lài)關(guān)系依賴(lài)關(guān)系”?!爸鞅碇鞅怼焙秃汀案北砀北怼?,“父表父表” 和和“子表子表”。 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則 (3) l例例2.1 2.1 下面各種情況說(shuō)明了參照完整性規(guī)則

11、在關(guān)系中如下面各種情況說(shuō)明了參照完整性規(guī)則在關(guān)系中如 何實(shí)現(xiàn)的。何實(shí)現(xiàn)的。 在關(guān)系數(shù)據(jù)庫(kù)中有下列兩個(gè)關(guān)系模式:在關(guān)系數(shù)據(jù)庫(kù)中有下列兩個(gè)關(guān)系模式: S S(S#S#,SNAMESNAME,AGEAGE,SEXSEX) SCSC(S#S#,C#C#,GRADEGRADE) 這里帶下劃線者為主鍵,帶波浪線者為外鍵。據(jù)規(guī)這里帶下劃線者為主鍵,帶波浪線者為外鍵。據(jù)規(guī) 則要求關(guān)系則要求關(guān)系SCSC中的中的S# S# 值應(yīng)該在關(guān)系值應(yīng)該在關(guān)系S S中出現(xiàn)。如果關(guān)系中出現(xiàn)。如果關(guān)系 SCSC中有一個(gè)元組(中有一個(gè)元組(S7,C4,80S7,C4,80),而學(xué)號(hào)),而學(xué)號(hào)S7S7卻在關(guān)系卻在關(guān)系S S中中 找不

12、到,那么我們就認(rèn)為在關(guān)系找不到,那么我們就認(rèn)為在關(guān)系SCSC中引用了一個(gè)不存在中引用了一個(gè)不存在 的學(xué)生實(shí)體,這就違反了參照完整性規(guī)則。的學(xué)生實(shí)體,這就違反了參照完整性規(guī)則。 另外,在關(guān)系另外,在關(guān)系SCSC中中S# S# 不僅是外鍵,也是主鍵的一不僅是外鍵,也是主鍵的一 部分,因此這里部分,因此這里S# S# 值不允許空。值不允許空。 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則 (4) 設(shè)工廠數(shù)據(jù)庫(kù)中有兩個(gè)關(guān)系模式:設(shè)工廠數(shù)據(jù)庫(kù)中有兩個(gè)關(guān)系模式: DEPT(DEPT(D#D#,DNAME)DNAME) EMP(EMP(E#E#,ENAMEENAME,SALARYSALARY,D#D#

13、) ) 車(chē)間模式車(chē)間模式DEPTDEPT的屬性為車(chē)間編號(hào)、車(chē)間名,職工模式的屬性為車(chē)間編號(hào)、車(chē)間名,職工模式 EMPEMP的屬性為工號(hào)、姓名、工資、所在車(chē)間的編號(hào)。每的屬性為工號(hào)、姓名、工資、所在車(chē)間的編號(hào)。每 個(gè)模式的主鍵與外鍵已標(biāo)出。在個(gè)模式的主鍵與外鍵已標(biāo)出。在EMPEMP中,由于中,由于D# D# 不在主不在主 鍵中,因此鍵中,因此D# D# 值允許空。值允許空。 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則 (5) 設(shè)課程之間有先修、后繼聯(lián)系。模式如下:設(shè)課程之間有先修、后繼聯(lián)系。模式如下: R(R(C#C# ,CNAMECNAME,PC#PC# ) ) 其屬性表示課程號(hào)、課程名

14、、先修課的課程號(hào)。如其屬性表示課程號(hào)、課程名、先修課的課程號(hào)。如 果規(guī)定,每門(mén)課程的直接先修課只有一門(mén),那么模式果規(guī)定,每門(mén)課程的直接先修課只有一門(mén),那么模式R R 的主鍵是的主鍵是C#C#,外鍵是,外鍵是PC#.PC#.。這里參照完整性在一個(gè)模式。這里參照完整性在一個(gè)模式 中實(shí)現(xiàn)。即每門(mén)課程的直接先修課必須在關(guān)系中出現(xiàn)。中實(shí)現(xiàn)。即每門(mén)課程的直接先修課必須在關(guān)系中出現(xiàn)。 關(guān)系模型的三類(lèi)完整性規(guī)則關(guān)系模型的三類(lèi)完整性規(guī)則 (6) l用戶(hù)定義的完整性規(guī)則用戶(hù)定義的完整性規(guī)則 在建立關(guān)系模式時(shí),對(duì)屬性定義了數(shù)據(jù)類(lèi)型,即使在建立關(guān)系模式時(shí),對(duì)屬性定義了數(shù)據(jù)類(lèi)型,即使 這樣可能還滿(mǎn)足不了用戶(hù)的需求。此時(shí)

15、,用戶(hù)可以針對(duì)這樣可能還滿(mǎn)足不了用戶(hù)的需求。此時(shí),用戶(hù)可以針對(duì) 具體的數(shù)據(jù)約束,設(shè)置完整性規(guī)則,由系統(tǒng)來(lái)檢驗(yàn)實(shí)施,具體的數(shù)據(jù)約束,設(shè)置完整性規(guī)則,由系統(tǒng)來(lái)檢驗(yàn)實(shí)施, 以使用統(tǒng)一的方法處理它們,不再由應(yīng)用程序承擔(dān)這項(xiàng)以使用統(tǒng)一的方法處理它們,不再由應(yīng)用程序承擔(dān)這項(xiàng) 工作。工作。 例如學(xué)生的年齡定義為兩位整數(shù),范圍還太大,我們例如學(xué)生的年齡定義為兩位整數(shù),范圍還太大,我們 可以寫(xiě)如下規(guī)則把年齡限制在可以寫(xiě)如下規(guī)則把年齡限制在15153030歲之間:歲之間: CHECKCHECK(AGE BETWEEN 15 AND 30AGE BETWEEN 15 AND 30) 返 回 ERER模型向關(guān)系模型的

16、轉(zhuǎn)換規(guī)則模型向關(guān)系模型的轉(zhuǎn)換規(guī)則 (1) lERER模型向關(guān)系模型的轉(zhuǎn)換,實(shí)際上就是把模型向關(guān)系模型的轉(zhuǎn)換,實(shí)際上就是把ERER圖轉(zhuǎn)換成關(guān)圖轉(zhuǎn)換成關(guān) 系模式的集合。系模式的集合。 l規(guī)則規(guī)則2.12.1(實(shí)體類(lèi)型的轉(zhuǎn)換):將每個(gè)實(shí)體類(lèi)型轉(zhuǎn)換成(實(shí)體類(lèi)型的轉(zhuǎn)換):將每個(gè)實(shí)體類(lèi)型轉(zhuǎn)換成 一個(gè)關(guān)系模式,實(shí)體的屬性即為關(guān)系模式的屬性,實(shí)體一個(gè)關(guān)系模式,實(shí)體的屬性即為關(guān)系模式的屬性,實(shí)體 標(biāo)識(shí)符即為關(guān)系模式的鍵。標(biāo)識(shí)符即為關(guān)系模式的鍵。 l規(guī)則規(guī)則2.22.2(二元聯(lián)系類(lèi)型的轉(zhuǎn)換)(二元聯(lián)系類(lèi)型的轉(zhuǎn)換) 若實(shí)體間聯(lián)系是若實(shí)體間聯(lián)系是1:11:1。 若實(shí)體間聯(lián)系是若實(shí)體間聯(lián)系是1:N1:N。 若實(shí)體間聯(lián)系

17、是若實(shí)體間聯(lián)系是M:NM:N。 ERER模型向關(guān)系模型的轉(zhuǎn)換規(guī)則模型向關(guān)系模型的轉(zhuǎn)換規(guī)則 (2) 圖2.3 一對(duì)一聯(lián)系 ERER模型向關(guān)系模型的轉(zhuǎn)換規(guī)則模型向關(guān)系模型的轉(zhuǎn)換規(guī)則 (3) 圖2.4 一對(duì)多聯(lián)系 ERER模型向關(guān)系模型的轉(zhuǎn)換規(guī)則模型向關(guān)系模型的轉(zhuǎn)換規(guī)則 (4) 圖2.5 多對(duì)多聯(lián)系 返 回 關(guān)系模型的三級(jí)體系結(jié)構(gòu)關(guān)系模型的三級(jí)體系結(jié)構(gòu) - 關(guān)系關(guān)系 模式模式 l在關(guān)系模型中,記錄類(lèi)型稱(chēng)為關(guān)系模式,而關(guān)系模在關(guān)系模型中,記錄類(lèi)型稱(chēng)為關(guān)系模式,而關(guān)系模 式的集合就是數(shù)據(jù)庫(kù)的概念模式。在系統(tǒng)實(shí)現(xiàn)時(shí),關(guān)系式的集合就是數(shù)據(jù)庫(kù)的概念模式。在系統(tǒng)實(shí)現(xiàn)時(shí),關(guān)系 模式和屬性的命名一般都用英文單詞。譬

18、如圖模式和屬性的命名一般都用英文單詞。譬如圖2.52.5的的ERER 圖轉(zhuǎn)換成的關(guān)系模式集可用圖圖轉(zhuǎn)換成的關(guān)系模式集可用圖2.62.6表示。而圖表示。而圖2.72.7是這個(gè)是這個(gè) 關(guān)系模型的三個(gè)具體關(guān)系。關(guān)系模型的三個(gè)具體關(guān)系。 學(xué)生關(guān)系模式S(S#,SNAME,AGE,SEX) 選課關(guān)系模式SC(S#,C#,GRADE) 課程關(guān)系模式C(C#,CNAME,TEACHER) 圖2.6 關(guān)系模式集 關(guān)系模型的三級(jí)體系結(jié)構(gòu)關(guān)系模型的三級(jí)體系結(jié)構(gòu) -子模子模 式式 l子模式是用戶(hù)所用到的那部分?jǐn)?shù)據(jù)的描述。除此之外,子模式是用戶(hù)所用到的那部分?jǐn)?shù)據(jù)的描述。除此之外, 還應(yīng)指出數(shù)據(jù)與關(guān)系模式中相應(yīng)數(shù)據(jù)的聯(lián)

19、系。例如,用還應(yīng)指出數(shù)據(jù)與關(guān)系模式中相應(yīng)數(shù)據(jù)的聯(lián)系。例如,用 戶(hù)需要用到子模式戶(hù)需要用到子模式G G(圖(圖2.82.8)。)。 成績(jī)子模式 G(S#,SNAME,C#,GRADE) 圖2.8 子模式 關(guān)系模型的三級(jí)體系結(jié)構(gòu)關(guān)系模型的三級(jí)體系結(jié)構(gòu) -存儲(chǔ)存儲(chǔ) 模式模式 圖2.10 關(guān)系S和SC的環(huán)結(jié)構(gòu) 在有些DBMS中,關(guān)系存儲(chǔ)是作為文件看待的,每個(gè)元 組就是一個(gè)記錄。由于關(guān)系模式有鍵,因此存儲(chǔ)一個(gè)關(guān) 系可用散列方法或索引方法實(shí)現(xiàn)。如果關(guān)系的元組數(shù)目 較少(100個(gè)以?xún)?nèi)),那么也可以用“堆文件”方式實(shí)現(xiàn) (即沒(méi)有特定的次序)。此外,還可對(duì)任意的屬性集建 立輔助索引。 關(guān)系模型的形式定義關(guān)系模型

20、的形式定義 l 關(guān)系模型有三個(gè)重要組成部分:數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操縱,關(guān)系模型有三個(gè)重要組成部分:數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操縱, 數(shù)據(jù)完整性規(guī)則。數(shù)據(jù)完整性規(guī)則。 (1 1)數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)庫(kù)中全部數(shù)據(jù)及其相互聯(lián)系都被組)數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)庫(kù)中全部數(shù)據(jù)及其相互聯(lián)系都被組 織成織成“關(guān)系關(guān)系”(二維表格)的形式。關(guān)系模型基本的數(shù)(二維表格)的形式。關(guān)系模型基本的數(shù) 據(jù)結(jié)構(gòu)是關(guān)系。據(jù)結(jié)構(gòu)是關(guān)系。 (2 2)數(shù)據(jù)操縱:關(guān)系模型提供一組完備的高級(jí)關(guān)系運(yùn)算,)數(shù)據(jù)操縱:關(guān)系模型提供一組完備的高級(jí)關(guān)系運(yùn)算, 以支持對(duì)數(shù)據(jù)庫(kù)的各種操作。關(guān)系運(yùn)算分成關(guān)系代數(shù)、以支持對(duì)數(shù)據(jù)庫(kù)的各種操作。關(guān)系運(yùn)算分成關(guān)系代數(shù)、 關(guān)系演算和關(guān)系邏輯等三

21、類(lèi)。關(guān)系演算和關(guān)系邏輯等三類(lèi)。 (3 3)數(shù)據(jù)完整性規(guī)則:數(shù)據(jù)庫(kù)中數(shù)據(jù)必須滿(mǎn)足實(shí)體完)數(shù)據(jù)完整性規(guī)則:數(shù)據(jù)庫(kù)中數(shù)據(jù)必須滿(mǎn)足實(shí)體完 整性,參照完整性和用戶(hù)定義的完整性等三類(lèi)完整性規(guī)整性,參照完整性和用戶(hù)定義的完整性等三類(lèi)完整性規(guī) 則。則。 關(guān)系模型的優(yōu)點(diǎn)關(guān)系模型的優(yōu)點(diǎn) l與其它數(shù)據(jù)模型相比,關(guān)系模型突出的優(yōu)點(diǎn)如下:與其它數(shù)據(jù)模型相比,關(guān)系模型突出的優(yōu)點(diǎn)如下: (1 1)關(guān)系模型提供單一的數(shù)據(jù)結(jié)構(gòu)形式,具有高度的簡(jiǎn))關(guān)系模型提供單一的數(shù)據(jù)結(jié)構(gòu)形式,具有高度的簡(jiǎn) 明性和精確性。明性和精確性。 (2 2)關(guān)系模型的邏輯結(jié)構(gòu)和相應(yīng)的操作完全獨(dú)立于數(shù)據(jù))關(guān)系模型的邏輯結(jié)構(gòu)和相應(yīng)的操作完全獨(dú)立于數(shù)據(jù) 存儲(chǔ)方

22、式,具有高度的數(shù)據(jù)獨(dú)立性。存儲(chǔ)方式,具有高度的數(shù)據(jù)獨(dú)立性。 (3 3)關(guān)系模型使數(shù)據(jù)庫(kù)的研究建立在比較堅(jiān)實(shí)的數(shù)學(xué)基)關(guān)系模型使數(shù)據(jù)庫(kù)的研究建立在比較堅(jiān)實(shí)的數(shù)學(xué)基 礎(chǔ)上。礎(chǔ)上。 (4 4)關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言與一階謂詞邏輯的固有內(nèi)在聯(lián)系,)關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言與一階謂詞邏輯的固有內(nèi)在聯(lián)系, 為以關(guān)系數(shù)據(jù)庫(kù)為基礎(chǔ)的推理系統(tǒng)和知識(shí)庫(kù)系統(tǒng)的研究為以關(guān)系數(shù)據(jù)庫(kù)為基礎(chǔ)的推理系統(tǒng)和知識(shí)庫(kù)系統(tǒng)的研究 提供了方便。提供了方便。 返 回 關(guān)系查詢(xún)語(yǔ)言和關(guān)系運(yùn)算關(guān)系查詢(xún)語(yǔ)言和關(guān)系運(yùn)算 l關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)操縱語(yǔ)言(關(guān)系數(shù)據(jù)庫(kù)的數(shù)據(jù)操縱語(yǔ)言(DML)的語(yǔ)句分成查詢(xún)語(yǔ))的語(yǔ)句分成查詢(xún)語(yǔ) 句和更新語(yǔ)句兩大類(lèi)。查詢(xún)語(yǔ)句用于描述用戶(hù)的各種

23、檢句和更新語(yǔ)句兩大類(lèi)。查詢(xún)語(yǔ)句用于描述用戶(hù)的各種檢 索要求;更新語(yǔ)句用于描述用戶(hù)進(jìn)行插入、刪除、修改索要求;更新語(yǔ)句用于描述用戶(hù)進(jìn)行插入、刪除、修改 等操作。關(guān)于查詢(xún)的理論稱(chēng)為等操作。關(guān)于查詢(xún)的理論稱(chēng)為“關(guān)系運(yùn)算理論關(guān)系運(yùn)算理論”。 l關(guān)系查詢(xún)語(yǔ)言根據(jù)其理論基礎(chǔ)的不同分成三類(lèi):關(guān)系查詢(xún)語(yǔ)言根據(jù)其理論基礎(chǔ)的不同分成三類(lèi): (1)關(guān)系代數(shù)語(yǔ)言。)關(guān)系代數(shù)語(yǔ)言。 (2)關(guān)系演算語(yǔ)言。)關(guān)系演算語(yǔ)言。 (3)關(guān)系邏輯語(yǔ)言。)關(guān)系邏輯語(yǔ)言。 返 回 2.2 2.2 關(guān)系代數(shù)關(guān)系代數(shù) l2.2.1 2.2.1 關(guān)系代數(shù)的五個(gè)基本操作關(guān)系代數(shù)的五個(gè)基本操作 l2.2.2 2.2.2 關(guān)系代數(shù)的四個(gè)組合操作關(guān)

24、系代數(shù)的四個(gè)組合操作 l2.2.3 2.2.3 關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例 l2.2.4 2.2.4 關(guān)系代數(shù)的七個(gè)擴(kuò)充操作關(guān)系代數(shù)的七個(gè)擴(kuò)充操作 返 回 關(guān)系代數(shù)的五個(gè)基本操作關(guān)系代數(shù)的五個(gè)基本操作 (2) 1.1.投影(投影(ProjectionProjection) 這個(gè)操作是對(duì)一個(gè)關(guān)系進(jìn)行垂直分割,消去某些列,這個(gè)操作是對(duì)一個(gè)關(guān)系進(jìn)行垂直分割,消去某些列, 并重新安排列的順序。并重新安排列的順序。 設(shè)關(guān)系設(shè)關(guān)系R R是是k k元關(guān)系,元關(guān)系,R R在其分量在其分量A Ai1 i1, ,A Aim im( (mkmk, i i1 1,i im m為為1 1到到k k間的

25、整數(shù))上的投影用間的整數(shù))上的投影用i1 i1,imim( (R R) 表示,它是一個(gè)表示,它是一個(gè)m m元元組集合,形式定義如下:元元組集合,形式定義如下: i1 i1,imim( (R R) t | t t | tt ti1 i1,t timim t t1 1,t tk kR R l例如,例如,3 3, ,1 1( (R R)表示關(guān)系)表示關(guān)系R R中取第中取第1 1、3 3 列,組成新的關(guān)系,新關(guān)系中第列,組成新的關(guān)系,新關(guān)系中第1 1列為列為R R的的 第第3 3列,新關(guān)系的第列,新關(guān)系的第2 2列為列為R R的第的第1 1列。如果列。如果 R R的每列標(biāo)上屬性名,那么操作符的每列標(biāo)上

26、屬性名,那么操作符的下的下 標(biāo)處也可以用屬性名表示。標(biāo)處也可以用屬性名表示。 l例如,關(guān)系例如,關(guān)系R R(A A,B B,C C),那么),那么C C, ,A A( (R R )與)與3 3, ,1 1( (R R)是等價(jià)的。)是等價(jià)的。 投影投影 l示例示例 給出所有學(xué)生的姓名和年齡給出所有學(xué)生的姓名和年齡 SN, AGE(S) 關(guān)系代數(shù)的五個(gè)基本操作關(guān)系代數(shù)的五個(gè)基本操作 (3) 2. 選擇(選擇(Selection) 選擇操作是根據(jù)某些條件對(duì)關(guān)系做水平分割,即選取符選擇操作是根據(jù)某些條件對(duì)關(guān)系做水平分割,即選取符 合條件的元組。條件可用命題公式(即計(jì)算機(jī)語(yǔ)言中的合條件的元組。條件可用命

27、題公式(即計(jì)算機(jī)語(yǔ)言中的 條件表達(dá)式)條件表達(dá)式)F表示。表示。F中有兩種成分:運(yùn)算對(duì)象;運(yùn)中有兩種成分:運(yùn)算對(duì)象;運(yùn) 算符算符 關(guān)系關(guān)系R關(guān)于公式關(guān)于公式F的選擇操作用的選擇操作用F(R)表示,形式定義)表示,形式定義 如下:如下: F(R) t | tR F(t)= true 為選擇運(yùn)算符,為選擇運(yùn)算符,F(xiàn)(R)表示從)表示從R中挑選滿(mǎn)足公式中挑選滿(mǎn)足公式F為為 真的元組所構(gòu)成的關(guān)系。真的元組所構(gòu)成的關(guān)系。 l例如,例如,2 3( (R)表示從)表示從R中挑選第中挑選第2個(gè)個(gè) 分量值大于分量值大于3的元組所構(gòu)成的關(guān)系。書(shū)寫(xiě)的元組所構(gòu)成的關(guān)系。書(shū)寫(xiě) 時(shí),為了與屬性序號(hào)區(qū)別起見(jiàn),常量用引時(shí),為

28、了與屬性序號(hào)區(qū)別起見(jiàn),常量用引 號(hào)括起來(lái),而屬性序號(hào)或?qū)傩悦灰靡?hào)括起來(lái),而屬性序號(hào)或?qū)傩悦灰靡?號(hào)括起來(lái)。號(hào)括起來(lái)。 選擇運(yùn)算選擇運(yùn)算 ABC 367 257 723 443 R A5(R) ABC 367 257 443 A5 C=7(R) ABC 367 257 選擇運(yùn)算選擇運(yùn)算 l示例示例 l找年齡不小于找年齡不小于20的男學(xué)生的男學(xué)生 AGE20 SEX=M( (S) 找001號(hào)學(xué)生所選修的號(hào) C#( S#=001 (SC) 關(guān)系代數(shù)的五個(gè)基本操作關(guān)系代數(shù)的五個(gè)基本操作 (1) 3并(并(Union) 設(shè)關(guān)系設(shè)關(guān)系R和和S具有相同的關(guān)系模式,具有相同的關(guān)系模式,R和和S 的并

29、是由屬于的并是由屬于R或?qū)儆诨驅(qū)儆赟的元組構(gòu)成的集的元組構(gòu)成的集 合,記為合,記為RS。形式定義如下:。形式定義如下: RSt | tR tS,t是元組變量,是元組變量, R和和S的元數(shù)相同。的元數(shù)相同。 R S 關(guān)系R和S進(jìn)行并運(yùn)算的前提是它們 必須是相容的:關(guān)系R和S必須是同 元的,即它們的屬性數(shù)目必須相同 對(duì)i,R的第i個(gè)屬性的域必須和 S的第i個(gè)屬性的域相同 并運(yùn)算并運(yùn)算 ABC 367 257 723 443 R ABC 345 723 S ABC 367 257 723 443 345 RS 并運(yùn)算并運(yùn)算 l示例示例 l求選修了求選修了001號(hào)或號(hào)或002號(hào)課程的學(xué)生號(hào)號(hào)課程的學(xué)生

30、號(hào) 方案方案1: S#( C# = 001 C# = 002(SC) 方案方案2: S#( C# = 001 (SC)S#( C# = 002(SC) 4差(差(Difference) 設(shè)關(guān)系設(shè)關(guān)系R和和S具有相同的關(guān)系模式,具有相同的關(guān)系模式,R和和S 的差是由屬于的差是由屬于R但不屬于但不屬于S的元組構(gòu)成的的元組構(gòu)成的 集合,記為集合,記為RS。形式定義如下:。形式定義如下: RS t | tR t S,R和和S的元數(shù)相同。的元數(shù)相同。 R S nR和S必須是相容的 差運(yùn)算差運(yùn)算 ABC 367 257 723 443 R ABC 345 723 S ABC 367 257 443 RS

31、ABC 345 SR 差運(yùn)算差運(yùn)算 l示例示例 求選修了求選修了001號(hào)而沒(méi)有選號(hào)而沒(méi)有選002號(hào)課程的學(xué)生號(hào)號(hào)課程的學(xué)生號(hào) 錯(cuò)誤的寫(xiě)法:錯(cuò)誤的寫(xiě)法: S#( C# = 001 C# 002(SC) 正確的寫(xiě)法:正確的寫(xiě)法: S#( C# = 001 (SC) S#( C# = 002(SC) 5笛卡爾積(笛卡爾積(Cartesian Product) P45 設(shè)設(shè)R n元元關(guān)系,關(guān)系,k1個(gè)元組個(gè)元組 ,S m元關(guān)系,元關(guān)系, k2個(gè)元組,則個(gè)元組,則RS 列:(列:(n+m)列的元)列的元 組的集合,元組的前組的集合,元組的前n列是關(guān)系列是關(guān)系R的一個(gè)的一個(gè) 元組,后元組,后m列是關(guān)系列是

32、關(guān)系S的一個(gè)元組行:的一個(gè)元組行: k1k2個(gè)元組個(gè)元組 RS = t | R S 笛卡爾積運(yùn)算笛卡爾積運(yùn)算 AB 1 2 R CD 10 10 20 10 E a a b b s AB 1 1 1 1 2 2 2 2 CD 10 19 20 10 10 10 20 10 E a a b b a a b b r x s ABCDE 1 2 2 10 20 20 a a b A=C(r x s) 笛卡爾積運(yùn)算笛卡爾積運(yùn)算 l求選修求選修c1課程的學(xué)生姓名課程的學(xué)生姓名 S#SN s1tom s2jerry S#C# s1c1 s2c2 S#SNS#C# s1toms1c1 s1toms2c2 s

33、2jerrys1c1 s2jerrys2c2 (a)關(guān)系R (b)關(guān)系S 圖2.12 兩個(gè)關(guān)系 關(guān)系代數(shù)的五個(gè)基本操作關(guān)系代數(shù)的五個(gè)基本操作 (例例) l例例2.3 圖圖2.12有兩個(gè)關(guān)系有兩個(gè)關(guān)系R和和S,圖,圖2.13的(的(a)、()、(b) 表示表示RS和和RS。(。(c)表示)表示RS,此處,此處R和和S的屬性的屬性 名相同,就應(yīng)在屬性名前注上相應(yīng)的關(guān)系名,例如名相同,就應(yīng)在屬性名前注上相應(yīng)的關(guān)系名,例如R.A、 S.A等。圖等。圖2.13的(的(d)表示)表示C, ,A( (R),即),即3, ,1( (R)。)。 (e)表示)表示B=b(R)。)。 關(guān)系代數(shù)的五個(gè)基本操作關(guān)系代數(shù)

34、的五個(gè)基本操作 (例例) (a)RS (b)RS(c)RS (d)C,A(R)(e)B=b(R) 圖2.13 關(guān)系代數(shù)操作的結(jié)果 返 回 關(guān)系代數(shù)的四個(gè)組合操作關(guān)系代數(shù)的四個(gè)組合操作 (1) l 交(交(intersection) 關(guān)系關(guān)系R和和S的交是由屬于的交是由屬于R又屬于又屬于S的元組構(gòu)成的集合,記的元組構(gòu)成的集合,記 為為RS,這里要求,這里要求R和和S定義在相同的關(guān)系模式上。形定義在相同的關(guān)系模式上。形 式定義如下:式定義如下: RSttR tS,R和和S的元數(shù)相同。的元數(shù)相同。 由于由于RS = R-(R-S),或),或RS = S-(S-R),因此交操作),因此交操作 不是一個(gè)

35、獨(dú)立的操作。不是一個(gè)獨(dú)立的操作。 在圖在圖2.12中,中,RS的結(jié)果是只有一個(gè)元組(的結(jié)果是只有一個(gè)元組(d,a,f)。 R S 交運(yùn)算交運(yùn)算 ABC 367 257 723 443 R ABC 345 723 S ABC 723 RS 交運(yùn)算交運(yùn)算 l示例示例 求同時(shí)選修了求同時(shí)選修了001號(hào)和號(hào)和002號(hào)課程的學(xué)生號(hào)號(hào)課程的學(xué)生號(hào) 錯(cuò)誤的寫(xiě)法:錯(cuò)誤的寫(xiě)法: S#( C# = 001 C# = 002(SC) 正確的寫(xiě)法:正確的寫(xiě)法: S#( C# = 001 (SC)S#( C# = 002(SC) 關(guān)系代數(shù)的四個(gè)組合操作關(guān)系代數(shù)的四個(gè)組合操作 (2) l連接(連接(join) 連接有兩種

36、:連接有兩種:連接和連接和F連接(這里連接(這里是算術(shù)比較符,是算術(shù)比較符,F(xiàn)是公是公 式)。式)。 連接連接 R St t= trR tsS tr its j 如果如果是是“”,該連接操作稱(chēng)為等值連接,該連接操作稱(chēng)為等值連接。 F連接連接 F連接是從關(guān)系連接是從關(guān)系R和和S的笛卡兒積中選取屬性間滿(mǎn)足某的笛卡兒積中選取屬性間滿(mǎn)足某 一公式一公式F的元組的元組, 這里這里F是形為是形為F1F2Fn的公式,的公式, 每個(gè)每個(gè)FP是形為是形為ij的式子,而的式子,而i和和j分別為關(guān)系分別為關(guān)系R和和S的第的第i、 第第j個(gè)分量的序號(hào)。個(gè)分量的序號(hào)。 ij 連接連接 l求數(shù)學(xué)成績(jī)比王紅同學(xué)高的學(xué)生求數(shù)

37、學(xué)成績(jī)比王紅同學(xué)高的學(xué)生 987 654 321 CBA DE 31 62 ABCDE 12331 12362 45662 R S R S B D R R S S S.姓名(課程=數(shù)學(xué) 姓名=王紅(R) ( 課程=數(shù)學(xué)S(R) R.成績(jī)s0),那么),那么RS 是一個(gè)(是一個(gè)(r-s)元的元組的集合。()元的元組的集合。(RS)是滿(mǎn)足下列)是滿(mǎn)足下列 條件的最大關(guān)系:其中每個(gè)元組條件的最大關(guān)系:其中每個(gè)元組t與與S中每個(gè)元組中每個(gè)元組u組成組成 的新元組的新元組必在關(guān)系必在關(guān)系R中。中。 lRS1,2,r-s(R)-1,2,r-s(1,2,r-s(R) S)-R) 返 回 關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)

38、例關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例 l 在關(guān)系代數(shù)運(yùn)算中,把由五個(gè)基本操作經(jīng)過(guò)有限次復(fù)在關(guān)系代數(shù)運(yùn)算中,把由五個(gè)基本操作經(jīng)過(guò)有限次復(fù) 合的式子稱(chēng)為關(guān)系代數(shù)表達(dá)式。這種表達(dá)式的運(yùn)算結(jié)果合的式子稱(chēng)為關(guān)系代數(shù)表達(dá)式。這種表達(dá)式的運(yùn)算結(jié)果 仍是一個(gè)關(guān)系。我們可以用關(guān)系代數(shù)表達(dá)式表示各種數(shù)仍是一個(gè)關(guān)系。我們可以用關(guān)系代數(shù)表達(dá)式表示各種數(shù) 據(jù)查詢(xún)操作。據(jù)查詢(xún)操作。 例例2.7 P56 返 回 關(guān)系代數(shù)的七個(gè)擴(kuò)充操作關(guān)系代數(shù)的七個(gè)擴(kuò)充操作 p51 l改名改名 l廣義投影廣義投影 l賦值賦值 l外連接(外連接(outer join) l外部并(外部并(outer union) l半連接(半連接(semijoin) l聚

39、集操作聚集操作 返 回 外連接外連接 l例:列出所有老師的有關(guān)信息,包括姓名、工資、例:列出所有老師的有關(guān)信息,包括姓名、工資、 所教授的課程所教授的課程 P# ,PN , SAL , C# , CN(PROF) PC C) 500李三P04 600 700 800 SAL 孫立P03 錢(qián)廣P02 趙明P01 PNP# 化學(xué)C03 數(shù)學(xué)C02 物理C01 CNC# P04C02 P02C02 P01C01 P#C# 數(shù)學(xué)C02500李三P04 數(shù)學(xué)C02700錢(qián)廣P02 物理C01800趙明P01 CNC#SALPNP# 問(wèn)題:有關(guān)問(wèn)題:有關(guān)P03 號(hào) 職 工 的 姓 名號(hào) 職 工 的 姓 名

40、 和 工 資 信 息 沒(méi)和 工 資 信 息 沒(méi) 有顯示出來(lái)有顯示出來(lái) 外連接外連接 l外連接外連接 l為避免自然連接時(shí)因失配而發(fā)生的信息丟失,可以為避免自然連接時(shí)因失配而發(fā)生的信息丟失,可以 假定往參與連接的一方表中附加一個(gè)取值全為空值假定往參與連接的一方表中附加一個(gè)取值全為空值 的行,它和參與連接的另一方表中的任何一個(gè)未匹的行,它和參與連接的另一方表中的任何一個(gè)未匹 配上的元組都能匹配,稱(chēng)之為外連接配上的元組都能匹配,稱(chēng)之為外連接 外連接外連接 = 自然連接自然連接 + 未匹配元組未匹配元組(懸掛元組懸掛元組) l外連接的形式:左外連接、右外連接、全外連接外連接的形式:左外連接、右外連接、全

41、外連接 左外連接左外連接 = 自然連接自然連接 + 左側(cè)表中未匹配元組左側(cè)表中未匹配元組 右外連接右外連接 = 自然連接自然連接 + 右側(cè)表中未匹配元組右側(cè)表中未匹配元組 全外連接全外連接 = 自然連接自然連接 + 兩側(cè)表中未匹配元組兩側(cè)表中未匹配元組 外連接外連接 500李三P04 600 700 800 SAL 孫立P03 錢(qián)廣P02 趙明P01 PNP# 化學(xué)C03 數(shù)學(xué)C02 物理C01 CNC# P04C02 P02C02 P01C01 P#C# 數(shù)學(xué)C02500李三P04 數(shù)學(xué)C02700錢(qián)廣P02 物理C01800趙明P01 CNC#SALPNP# 所有老師的信息所有老師的信息

42、外連接的結(jié)合律成立否外連接的結(jié)合律成立否 外連接外連接 500李三P04 600 700 800 SAL 孫立P03 錢(qián)廣P02 趙明P01 PNP# 化學(xué)C03 數(shù)學(xué)C02 物理C01 CNC# P04C02 P02C02 P01C01 P#C# 數(shù)學(xué)C02500李三P04 數(shù)學(xué)C02700錢(qián)廣P02 物理C01800趙明P01 CNC#SALPNP# 所有課程的信息所有課程的信息 外連接外連接 500李三P04 600 700 800 SAL 孫立P03 錢(qián)廣P02 趙明P01 PNP# 化學(xué)C03 數(shù)學(xué)C02 物理C01 CNC# P04C02 P02C02 P01C01 P#C# 數(shù)學(xué)

43、C02500李三P04 數(shù)學(xué)C02700錢(qián)廣P02 物理C01800趙明P01 CNC#SALPNP# 所有老師和課程的信息所有老師和課程的信息 廣義投影廣義投影 l定義定義 l在投影列表中使用算術(shù)表達(dá)式來(lái)對(duì)投影進(jìn)行在投影列表中使用算術(shù)表達(dá)式來(lái)對(duì)投影進(jìn)行 擴(kuò)展擴(kuò)展 F1 , F2 , , Fn (E) F1 , F2 , , Fn 是算術(shù)表達(dá)式是算術(shù)表達(dá)式 l示例示例 l求教工應(yīng)繳納的所得稅求教工應(yīng)繳納的所得稅 P# , SAL*5/100 (PROF) p#, , INCOME-TAX ( P# , SAL*5/100 (PROF) 聚集函數(shù)聚集函數(shù) l定義定義 l求一組值的統(tǒng)計(jì)信息,返回單

44、一值求一組值的統(tǒng)計(jì)信息,返回單一值 l使用聚集的集合可以是使用聚集的集合可以是多重集多重集,即一個(gè)值可,即一個(gè)值可 以重復(fù)出現(xiàn)多次。如果想去除重復(fù)值,可以以重復(fù)出現(xiàn)多次。如果想去除重復(fù)值,可以 用連接符用連接符-將將distinct附加在聚集函數(shù)名附加在聚集函數(shù)名 后,如后,如sum-distinct lsum:求和:求和 求全體教工的總工資求全體教工的總工資 sumSAL(PROF) 求求001號(hào)學(xué)生的總成績(jī)號(hào)學(xué)生的總成績(jī) sumSCORE( S# = 001 (SC) 聚集函數(shù)聚集函數(shù) lavg:求平均:求平均 求求001號(hào)同學(xué)選修課程的平均成績(jī)。號(hào)同學(xué)選修課程的平均成績(jī)。 avgSCOR

45、E( S# = 001(SC) lcount:計(jì)數(shù):計(jì)數(shù) 求求001號(hào)同學(xué)選修的課程數(shù)。號(hào)同學(xué)選修的課程數(shù)。 countC#( S# = 001(SC) 求任課老師的總數(shù)。求任課老師的總數(shù)。 count-distinctP#(PC) 聚集函數(shù)聚集函數(shù) lmax:求最大值:求最大值 min:求最小值:求最小值 求學(xué)生選修數(shù)學(xué)的最高成績(jī)求學(xué)生選修數(shù)學(xué)的最高成績(jī) maxSCORE( CN = 數(shù)學(xué) 數(shù)學(xué)(C) SC) l分組分組 l將一個(gè)元組集合分為若干個(gè)組,在每個(gè)分組將一個(gè)元組集合分為若干個(gè)組,在每個(gè)分組 上使用聚集函數(shù)。上使用聚集函數(shù)。 屬性下標(biāo) G 聚集函數(shù)屬性下標(biāo)(關(guān)系) 對(duì)此屬性在每個(gè)分組

46、對(duì)此屬性在每個(gè)分組 上運(yùn)用聚集函數(shù)上運(yùn)用聚集函數(shù) 按此屬性上的按此屬性上的 值對(duì)關(guān)系分組值對(duì)關(guān)系分組 分組和聚集函數(shù)分組和聚集函數(shù) S#C#G s1c184 s1c290 s1c396 s2c180 s2c290 s3c296 s3c388 S#C#G s1c184 s1c290 s1c396 s2c180 s2c290 s3c296 s3c388 列出每個(gè)學(xué)生的平均成績(jī)列出每門(mén)課程的平均成績(jī) group by S#group by C# 92 85 90 92 92 90 聚集函數(shù)聚集函數(shù) l分組運(yùn)算分組運(yùn)算G 的一般形式的一般形式 G1 , G2 , . , Gn G F1 , A1 ,

47、F2 , A2 , , Fm , Am(E) Gi是用于分組的屬性,是用于分組的屬性, Fi是聚集函數(shù),是聚集函數(shù), Ai是屬性名。是屬性名。 G 將將E分為若干組,滿(mǎn)足:分為若干組,滿(mǎn)足: 1)同一組中所有元組在)同一組中所有元組在G1 , G2 , . , Gn上的值相同。上的值相同。 2)不同組中元組在)不同組中元組在G1 , G2 , . , Gn上的值不同。上的值不同。 l示例示例 求每位學(xué)生的總成績(jī)和平均成績(jī)求每位學(xué)生的總成績(jī)和平均成績(jī) S# G sumSCORE ,avgSCORE(SC) 2.3 2.3 關(guān)系演算關(guān)系演算 l把數(shù)理邏輯的謂詞演算引入到關(guān)系運(yùn)算中,就可得到以把數(shù)理

48、邏輯的謂詞演算引入到關(guān)系運(yùn)算中,就可得到以 關(guān)系演算為基礎(chǔ)的運(yùn)算。關(guān)系演算又可分為元組關(guān)系演關(guān)系演算為基礎(chǔ)的運(yùn)算。關(guān)系演算又可分為元組關(guān)系演 算和域關(guān)系演算,前者以元組為變量,后者以屬性(域)算和域關(guān)系演算,前者以元組為變量,后者以屬性(域) 為變量。為變量。 l2.3.1 元組關(guān)系演算元組關(guān)系演算 l2.3.2 域關(guān)系演算域關(guān)系演算 l2.3.3 關(guān)系運(yùn)算的安全約束和等價(jià)性關(guān)系運(yùn)算的安全約束和等價(jià)性 返 回 元組關(guān)系演算元組關(guān)系演算 (1) l 在元組關(guān)系演算(在元組關(guān)系演算(Tuple Relational Calculus)中,元)中,元 組組 關(guān)系演算表達(dá)式簡(jiǎn)稱(chēng)為元組表達(dá)式,其一般形式

49、為關(guān)系演算表達(dá)式簡(jiǎn)稱(chēng)為元組表達(dá)式,其一般形式為 t | P(t) 其中,其中,t是元組變量,表示一個(gè)元數(shù)固定的元組;是元組變量,表示一個(gè)元數(shù)固定的元組;P是公是公 式,在數(shù)理邏輯中也稱(chēng)為謂詞,也就是計(jì)算機(jī)語(yǔ)言中的式,在數(shù)理邏輯中也稱(chēng)為謂詞,也就是計(jì)算機(jī)語(yǔ)言中的 條件表達(dá)式。條件表達(dá)式。 t | P(t)表示滿(mǎn)足公式表示滿(mǎn)足公式P的所有元組的所有元組t的的 集合。集合。 元組關(guān)系演算元組關(guān)系演算 (2) l在元組表達(dá)式中,公式由原子公式組成。在元組表達(dá)式中,公式由原子公式組成。 l定義定義2.4 原子公式(原子公式(Atoms)有下列三種形式:)有下列三種形式: R(s) siuj sia或或a

50、uj。 l在定義關(guān)系演算操作時(shí),要用到在定義關(guān)系演算操作時(shí),要用到“自由自由”(FreeFree)和)和 “約束約束”(BoundBound)變量概念。在一個(gè)公式中,如果元)變量概念。在一個(gè)公式中,如果元 組變量未用存在量詞組變量未用存在量詞或全稱(chēng)量詞或全稱(chēng)量詞 符號(hào)定義,那么稱(chēng)符號(hào)定義,那么稱(chēng) 為自由元組變量,否則稱(chēng)為約束元組變量。為自由元組變量,否則稱(chēng)為約束元組變量。 元組關(guān)系演算元組關(guān)系演算 (3) l定義定義2.5 公式(公式(Formulas)的遞歸定義如下:)的遞歸定義如下: 每個(gè)原子是一個(gè)公式。其中的元組變量是自由變量。每個(gè)原子是一個(gè)公式。其中的元組變量是自由變量。 如果如果P1

51、和和P2是公式,那么是公式,那么P1、P1P2、P1P2和和 P1P2也都是公式。也都是公式。 如果如果P1是公式,那么(是公式,那么( s)()(P1)和()和( s)()(P1)也)也 都是公式。都是公式。 公式中各種運(yùn)算符的優(yōu)先級(jí)從高到低依次為:公式中各種運(yùn)算符的優(yōu)先級(jí)從高到低依次為:, 和和 ,和和,。在公式外還可以加括號(hào),以改變。在公式外還可以加括號(hào),以改變 上述優(yōu)先順序。上述優(yōu)先順序。 公式只能由上述四種形式構(gòu)成,除此之外構(gòu)成的都不公式只能由上述四種形式構(gòu)成,除此之外構(gòu)成的都不 是公式。是公式。 元組關(guān)系演算元組關(guān)系演算 (4) l例例2.162.16 圖圖2.202.20的(的(

52、a a)、()、(b b)是關(guān)系)是關(guān)系R R和和S S,(,(c c)()(g g)分別是下面五個(gè)元組表)分別是下面五個(gè)元組表 達(dá)式的值達(dá)式的值 圖2.20 元組關(guān)系演算的例子 R1 = t | S(t)t12 R2 = t | R(t)S(t) R3 = t |(u)(S(t)R(u)t3u1) R5 = t |(u)(v)(R (u) S(v) u1v2t1=u2t 2=v3t3=u1) 元組關(guān)系演算元組關(guān)系演算 (5) l 在元組關(guān)系演算的公式中,有下列三個(gè)等價(jià)的轉(zhuǎn)換規(guī)在元組關(guān)系演算的公式中,有下列三個(gè)等價(jià)的轉(zhuǎn)換規(guī) 則:則: P1P2等價(jià)于等價(jià)于(P1P2); P1P2等價(jià)于等價(jià)于(P

53、1P2)。)。 ( s)()(P1(s)等價(jià)于)等價(jià)于( s)(P1(s);); ( s)()(P1(s)等價(jià)于)等價(jià)于( s)()(P1(s)。)。 P1P2等價(jià)于等價(jià)于 P1P2。 元組關(guān)系演算元組關(guān)系演算 (6) l關(guān)系代數(shù)表達(dá)式到元組表達(dá)式的轉(zhuǎn)換關(guān)系代數(shù)表達(dá)式到元組表達(dá)式的轉(zhuǎn)換 例例2.17 RS可用可用 t | R(t)S(t)表示;表示; R-S可用可用 t | R(t)S(t) 表示;表示; RS可用可用 t |( u)()( v)()(R(u)S(V) t1=u1 t2=u2t3=u3t4=v1 t5=v2 t6=v3) 表示。表示。 設(shè)投影操作是設(shè)投影操作是2,3(R),那么

54、元組表達(dá)式可寫(xiě)成:),那么元組表達(dá)式可寫(xiě)成: t |( u)(R(u)tl=u2t2=u3) F(R)可用)可用 t |R(t)F表示,表示,F(xiàn)是是F的等價(jià)表示形式。譬如的等價(jià)表示形式。譬如 2=d(R)可寫(xiě)成)可寫(xiě)成 t |(R(t)t2=d)。)。 返 回 域關(guān)系演算域關(guān)系演算 (1) l原子公式有兩種形式:原子公式有兩種形式: R R(x1x1xkxk);); xyxy。 公式中也可使用公式中也可使用、和和等邏輯運(yùn)算符等邏輯運(yùn)算符,(,( x)x)和和 ( x x),但變量),但變量x x是域變量,不是元組變量。是域變量,不是元組變量。 l自由域變量、約束域變量等概念和元組演算中一樣。自

55、由域變量、約束域變量等概念和元組演算中一樣。 l域演算表達(dá)式是形為域演算表達(dá)式是形為 t1t1tkPtkP(t1t1,tktk) 的表達(dá)式,其中的表達(dá)式,其中P P(t1t1,tktk)是關(guān)于自由域變量)是關(guān)于自由域變量 t1t1,tk tk 的公式。的公式。 域關(guān)系演算域關(guān)系演算 (2) l例例2.20 2.20 圖圖2.212.21的(的(a a)、()、(b b)、()、(c c)是三個(gè)關(guān)系)是三個(gè)關(guān)系R R、S S、W W, (d d)、()、(e e)、()、(f f)分別表示下面三個(gè)域表達(dá)式的值。)分別表示下面三個(gè)域表達(dá)式的值。 (a)關(guān)系R (b)關(guān)系S(c)關(guān)系W(d)R1 (

56、e)R2 (f)R3 圖2.21 域關(guān)系演算的例子 R1= xyz| R(xyz) x3 R2= xyz| R(xyz)(S(xyz) y = 4) R3= xyz|(u)(v)(R(zxu) w(yv ) uv ) 域關(guān)系演算域關(guān)系演算 (3) l元組表達(dá)式到域表達(dá)式的轉(zhuǎn)換元組表達(dá)式到域表達(dá)式的轉(zhuǎn)換 l我們可以很容易地把元組表達(dá)式轉(zhuǎn)換成域表達(dá)式,轉(zhuǎn)換我們可以很容易地把元組表達(dá)式轉(zhuǎn)換成域表達(dá)式,轉(zhuǎn)換 規(guī)則如下:規(guī)則如下: 對(duì)于對(duì)于k k元的元組變量元的元組變量t t,可引入,可引入k k個(gè)域變量個(gè)域變量t t1 1ttk k,在公,在公 式中式中t t用用t t1 1ttk k替換,元組分量替

57、換,元組分量titi用用t ti i替換。替換。 對(duì)于每個(gè)量詞(對(duì)于每個(gè)量詞( u)或()或( u),若),若u是是m元的元組變?cè)脑M變 量,則引入量,則引入m個(gè)新的域變量個(gè)新的域變量u1um。在量詞的轄域內(nèi),。在量詞的轄域內(nèi), u用用u1um替換,替換,ui用用ui替換,(替換,( u)用()用( u1) ( um)替換,()替換,( u)用()用( u1)( um)替換。)替換。 返 回 2.4 2.4 關(guān)系代數(shù)表達(dá)式的優(yōu)化關(guān)系代數(shù)表達(dá)式的優(yōu)化 l2.4.1 2.4.1 關(guān)系代數(shù)表達(dá)式的優(yōu)化問(wèn)題關(guān)系代數(shù)表達(dá)式的優(yōu)化問(wèn)題 l2.4.2 2.4.2 關(guān)系代數(shù)表達(dá)式的等價(jià)變換規(guī)則關(guān)系代數(shù)表達(dá)式

58、的等價(jià)變換規(guī)則 l2.4.3 2.4.3 關(guān)系代數(shù)表達(dá)式的優(yōu)化算法關(guān)系代數(shù)表達(dá)式的優(yōu)化算法 返 回 思考幾個(gè)問(wèn)題 1.1.為什么數(shù)據(jù)庫(kù)管理系統(tǒng)產(chǎn)品強(qiáng)調(diào):一為什么數(shù)據(jù)庫(kù)管理系統(tǒng)產(chǎn)品強(qiáng)調(diào):一 個(gè)查詢(xún)中涉及的基本表的個(gè)數(shù)不要超個(gè)查詢(xún)中涉及的基本表的個(gè)數(shù)不要超 過(guò)過(guò)7 7個(gè),最多不要超過(guò)個(gè),最多不要超過(guò)1010個(gè)?個(gè)? 2.2.一旦發(fā)現(xiàn)某個(gè)查詢(xún)的效率很低,如何一旦發(fā)現(xiàn)某個(gè)查詢(xún)的效率很低,如何 分析低效的原因?如何改進(jìn)效率?分析低效的原因?如何改進(jìn)效率? 關(guān)系代數(shù)表達(dá)式的優(yōu)化關(guān)系代數(shù)表達(dá)式的優(yōu)化(1)(1) l在關(guān)系代數(shù)表達(dá)式中需要指出若干關(guān)系的操作步驟。那在關(guān)系代數(shù)表達(dá)式中需要指出若干關(guān)系的操作步驟。

59、那 么,系統(tǒng)應(yīng)該以什么樣的操作順序,才能做到既省時(shí)間,么,系統(tǒng)應(yīng)該以什么樣的操作順序,才能做到既省時(shí)間, 又省空間,而且效率也比較高呢?這個(gè)問(wèn)題稱(chēng)為查詢(xún)優(yōu)又省空間,而且效率也比較高呢?這個(gè)問(wèn)題稱(chēng)為查詢(xún)優(yōu) 化問(wèn)題?;瘑?wèn)題。 l在關(guān)系代數(shù)運(yùn)算中,笛卡兒積和連接運(yùn)算是最費(fèi)時(shí)間的。在關(guān)系代數(shù)運(yùn)算中,笛卡兒積和連接運(yùn)算是最費(fèi)時(shí)間的。 實(shí)例演示(驗(yàn)證為何需要查詢(xún)優(yōu)化?)實(shí)例演示(驗(yàn)證為何需要查詢(xún)優(yōu)化?) 例1: 求選修了2號(hào)課程的學(xué)生姓名。 假定學(xué)生假定學(xué)生-課程數(shù)據(jù)庫(kù)中有課程數(shù)據(jù)庫(kù)中有1000條學(xué)生記錄,條學(xué)生記錄, 10000條選課記錄;其中選修條選課記錄;其中選修2號(hào)課程的選課記錄號(hào)課程的選課記錄

60、為為50條;條; 用用SQL表達(dá):表達(dá): SELECT Student.Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno=2 l系統(tǒng)可以用多種等價(jià)的系統(tǒng)可以用多種等價(jià)的關(guān)系代數(shù)表達(dá)式來(lái)完成:來(lái)完成: Q1=Sname(Student.Sno=SC.Sno Sc.Cno=2 (StudentSC) Q2=Sname(Sc.Cno=2 (Student SC) Q3=Sname(Student Sc.Cno=2(SC) 1、第一種情況、第一種情況 l分三個(gè)步驟:分三個(gè)步驟: 計(jì)算計(jì)算StudentSC花費(fèi)時(shí)間,即計(jì)算笛卡爾花費(fèi)時(shí)間,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論