版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第2章 關(guān)系模型和關(guān)系運(yùn)算理論 2本章重要概念(1) (1)基本概念關(guān)系模型,關(guān)鍵碼(主鍵和外鍵),關(guān)系的定義和性質(zhì),三類完整性規(guī)則,過程性語言與非過程性語言。(2)關(guān)系代數(shù)五個(gè)基本操作,四個(gè)組合操作,七個(gè)擴(kuò)充操作。 3本章重要概念(2)(3)關(guān)系演算*元組關(guān)系演算和域關(guān)系演算的原子公式、公式的定義。關(guān)系演算的安全性和等價(jià)性。(4)關(guān)系代數(shù)表達(dá)式的優(yōu)化*關(guān)系代數(shù)表達(dá)式的等價(jià)及等價(jià)轉(zhuǎn)換規(guī)則,啟化式優(yōu)化算法。(5)關(guān)系邏輯*謂詞、原子、規(guī)則和查詢,規(guī)則的安全性,用規(guī)則模擬關(guān)系代數(shù)表達(dá)式。 4本章概要 本章先介紹關(guān)系模型的基本概念;然后介紹關(guān)系運(yùn)算的三種理論:關(guān)系代數(shù)、關(guān)系演算和關(guān)系邏輯。 5關(guān)系
2、模型和關(guān)系運(yùn)算理論 2.1 關(guān)系模型的基本概念 2.2 關(guān)系代數(shù) 2.3 關(guān)系演算* 2.4 關(guān)系代數(shù)表達(dá)式的優(yōu)化* 2.5 關(guān)系邏輯*2.6 小結(jié)62.1 關(guān)系模型的基本概念 2.1.1 基本術(shù)語 2.1.2 關(guān)系的定義和性質(zhì)2.1.3 關(guān)系模型的三類完整性規(guī)則 2.1.4 關(guān)系模型的三級(jí)體系結(jié)構(gòu) 2.1.5 關(guān)系模型的形式定義和優(yōu)點(diǎn) 2.1.6 關(guān)系查詢語言和關(guān)系運(yùn)算 返回72.1.1 基本術(shù)語(1) 定義2.1 用二維表格表示實(shí)體集,用關(guān)鍵碼表示實(shí)體之間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型(Relational Model)。圖2.1 學(xué)生登記表 學(xué)號(hào)姓名年齡性別籍貫S1WANG20M北京S4LI
3、U18F山東S2HU17M上海S3XIA19F四川82.1.1 基本術(shù)語(2) 在關(guān)系模型中,字段稱為屬性,字段值稱為屬性值,記錄類型稱為關(guān)系模式。在圖2.1中,關(guān)系模式名是R。記錄稱為元組(tuple),元組的集合稱為關(guān)系(relation)或?qū)嵗╥nstance)。一般用大寫字母A、B、C、 表示單個(gè)屬性,用大寫字母 、X、Y、Z表示屬性集,用小寫字母表示屬性值,有時(shí)也習(xí)慣稱呼關(guān)系為表或表格,元組為行(row),屬性為列(column)。關(guān)系中屬性個(gè)數(shù)稱為“元數(shù)”(arity),元組個(gè)數(shù)為“基數(shù)”(cardinality)。 92.1.1 基本術(shù)語(3)關(guān)系元數(shù)為5,基數(shù)為4。 一般術(shù)語
4、關(guān)系模型術(shù)語字段、數(shù)據(jù)項(xiàng)屬性記錄類型關(guān)系模式記錄1元組1記錄2元組2記錄3元組3記錄4元組4字段值屬性值圖2.2 關(guān)系模型的術(shù)語 文件關(guān)系102.1.1 基本術(shù)語(4) 關(guān)鍵碼(key,簡(jiǎn)稱鍵)由一個(gè)或多個(gè)屬性組成。在實(shí)際使用中,有下列幾種鍵。 (1)超鍵(Super Key) (2)候選鍵(Candidate Key) (3)主鍵(Primary Key) 在圖2.1中,(工號(hào),姓名)是模式的一個(gè)超鍵,但不是候選鍵,而(工號(hào))是候選鍵。在實(shí)際使用中,如果選擇(工號(hào))作為刪除或查找元組的標(biāo)志,那么稱(工號(hào))是主鍵。 (4)外鍵(Foreign Key)返回112.1.2 關(guān)系的定義和性質(zhì) 定義
5、2.2 關(guān)系是一個(gè)屬性數(shù)目相同的元組的 集合。 在關(guān)系模型中,對(duì)關(guān)系作了下列規(guī)范性限制:(1)關(guān)系中每一個(gè)屬性值都是不可分解的;(2)關(guān)系中不允許出現(xiàn)重復(fù)元組(即不允許出現(xiàn)相同的元組);(3)由于關(guān)系是一個(gè)集合,因此不考慮元組間的順序,即沒有行序;(4)元組中的屬性在理論上也是無序的, 但使用時(shí)按習(xí)慣考慮列的順序。返回122.1.3 關(guān)系模型的完整性規(guī)則(1) 實(shí)體完整性規(guī)則(entity integrity rule) 要求關(guān)系中元組在組成主鍵的屬性上不能有空值。如果出現(xiàn)空值,那么主鍵值就起不了惟一標(biāo)識(shí)元組的作用。132.1.3 關(guān)系模型的完整性規(guī)則 (2)參照完整性規(guī)則(reference
6、 integrity rule)定義2.3 參照完整性規(guī)則的形式定義如下: 如果屬性集K是關(guān)系模式R1的主鍵,K也是關(guān)系模式R2的外鍵,那么在R2的關(guān)系中,K的取值只允許兩種可能,或者為空值,或者等于R1關(guān)系中某個(gè)主鍵值。 這條規(guī)則的實(shí)質(zhì)是“不允許引用不存在的實(shí)體”。 在上述形式定義中,關(guān)系模式R1的關(guān)系稱為“參照關(guān)系”,關(guān)系模式R2的關(guān)系稱為“依賴關(guān)系”?!爸鞅怼焙汀案北怼?,“父表”和“子表”。 142.1.3 關(guān)系模型的完整性規(guī)則 (3)這條規(guī)則在具體使用時(shí),有三點(diǎn)變通: 外鍵和相應(yīng)的主鍵可以不同名, 只要定義在相同值域上即可; R1和R2也可以是同一個(gè)關(guān)系模式,此時(shí)表示了同一個(gè)關(guān)系中不同
7、元組之間的聯(lián)系; 外鍵值是否允許空,應(yīng)視具體問題而定。152.1.3 關(guān)系模型的完整性規(guī)則 (4)例 下面各種情況說明了參照完整性規(guī)則在關(guān)系中如何實(shí)現(xiàn)的。 在關(guān)系數(shù)據(jù)庫中有下列兩個(gè)關(guān)系模式:S(S#,SNAME,AGE,SEX)SC(S#,C#,SCORE) 這里帶 線者為主鍵,帶 線者為外鍵。據(jù)規(guī)則要求關(guān)系SC中的S#值應(yīng)該在關(guān)系S中出現(xiàn)。如果關(guān)系SC中有一個(gè)元組(S7,C4,80),而學(xué)號(hào)S7卻在關(guān)系S中找不到,那么我們就認(rèn)為在關(guān)系SC中引用了一個(gè)不存在的學(xué)生實(shí)體,這就違反了參照完整性規(guī)則。 另外,在關(guān)系SC中S# 不僅是外鍵,也是主鍵的一部分,因此這里S# 值不允許空。162.1.3 關(guān)
8、系模型的完整性規(guī)則 (5) 設(shè)工廠數(shù)據(jù)庫中有兩個(gè)關(guān)系模式:DEPT(D#,DNAME)EMP(E#,ENAME,SALARY,D# ) 車間模式DEPT的屬性為車間編號(hào)、車間名,職工模式EMP的屬性為工號(hào)、姓名、工資、所在車間的編號(hào)。每個(gè)模式的主鍵與外鍵已標(biāo)出。在EMP中,由于D# 不在主鍵中,因此D# 值允許空。172.1.3 關(guān)系模型的完整性規(guī)則 (6) 設(shè)課程之間有先修、后繼連系。模式如下:R(C#,CNAME,PC#) 其屬性表示課程號(hào)、課程名、先修課的課程號(hào)。如果規(guī)定,每門課程的直接先修課只有一門,那么模式R的主鍵是C#,外鍵是PC#.。這里參照完整性在一個(gè)模式中實(shí)現(xiàn)。即每門課程的直
9、接先修課必須在關(guān)系中出現(xiàn)。 182.1.3 關(guān)系模型的完整性規(guī)則 (7)例2.1 TEACHER(T#,TNAME,TITLE)COURSE (C#,CNAME,T#)STUDENT(S#,SNAME,AGE,SEX)SC (S#,C#,SCORE)TEACHER(T#,TNAME,TITLE)COURSE(C#,CNAME,T#)STUDENT(S#,SNAME,AGE,SEX)SC(S#,C#,SCORE)圖2.3 關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)圖(DSD)192.1.3 關(guān)系模型的完整性規(guī)則 (8)用戶定義的完整性規(guī)則 在建立關(guān)系模式時(shí),對(duì)屬性定義了數(shù)據(jù)類型,即使這樣可能還滿足不了用戶的需求。此時(shí),
10、用戶可以針對(duì)具體的數(shù)據(jù)約束,設(shè)置完整性規(guī)則,由系統(tǒng)來檢驗(yàn)實(shí)施,以使用統(tǒng)一的方法處理它們,不再由應(yīng)用程序承擔(dān)這項(xiàng)工作。 例如學(xué)生的年齡定義為兩位整數(shù),范圍還太大,我們可以寫如下規(guī)則把年齡限制在1530歲之間:CHECK(AGE BETWEEN 15 AND 30) 返回202.1.4 關(guān)系模型的三層體系結(jié)構(gòu) - 關(guān)系模式 在關(guān)系模型中,記錄類型稱為關(guān)系模式,而關(guān)系模式的集合就是數(shù)據(jù)庫的概念模式。在系統(tǒng)實(shí)現(xiàn)時(shí),關(guān)系模式和屬性的命名一般都用英文單詞。 TEACHER(T#,TNAME,TITLE)COURSE (C#,CNAME,T#)STUDENT(S#,SNAME,AGE,SEX)SC (S#,
11、C#,SCORE)212.1.4 關(guān)系模型的三層體系結(jié)構(gòu) -子模式(1) 子模式是用戶所用到的那部分?jǐn)?shù)據(jù)的描述。除此之外,還應(yīng)指出數(shù)據(jù)與關(guān)系模式中相應(yīng)數(shù)據(jù)的連系。例如,用戶需要用到子模式G(圖2.3)。成績(jī)子模式 G(S#,SNAME,C#,SCORE) 222.1.4 關(guān)系模型的三層體系結(jié)構(gòu) -子模式(2) 80GS#SNAMEC#SCORES256WangC580 SS#SNAMEAGESEXS256Wang21F SCS#C#SCORES256C580 232.1.4 關(guān)系模型的三層體系結(jié)構(gòu) -存儲(chǔ)模式(1) 圖2.6 關(guān)系STUDENT和SC的環(huán)結(jié)構(gòu) 在有些DBMS中,關(guān)系存儲(chǔ)是作為文
12、件看待的,每個(gè)元組就是一個(gè)記錄。由于關(guān)系模式有鍵,因此存儲(chǔ)一個(gè)關(guān)系可用散列方法或索引方法實(shí)現(xiàn)。如果關(guān)系的元組數(shù)目較少(100個(gè)以內(nèi)),那么也可以用“堆文件”方式實(shí)現(xiàn)(即沒有特定的次序)。此外,還可對(duì)任意的屬性集建立輔助索引。 關(guān)系STUDENT S#SNAMEAGESEXPTRS1WANG20MS2HU17MS3XIA19FS4LIU18F關(guān)系SCPTRS#C#SCORES1C180S2C185S1C260S2C275S1C370S4C490242.1.4 關(guān)系模型的三層體系結(jié)構(gòu) -存儲(chǔ)模式(2) 圖2.7 兩個(gè)關(guān)系存儲(chǔ)在一起 S1WANG20MS1C180S1C260S1C370S2HU17
13、MS2C185S2C275S3XIA19FS4LIU20FS4C490252.1.5 關(guān)系模型的形式定義 關(guān)系模型有三個(gè)重要組成部分:數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)操縱,數(shù)據(jù)完整性規(guī)則。(1)數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)庫中全部數(shù)據(jù)及其相互連系都被組織成“關(guān)系”(二維表格)的形式。關(guān)系模型基本的數(shù)據(jù)結(jié)構(gòu)是關(guān)系。(2)數(shù)據(jù)操縱:關(guān)系模型提供一組完備的高級(jí)關(guān)系運(yùn)算,以支持對(duì)數(shù)據(jù)庫的各種操作。關(guān)系運(yùn)算分成關(guān)系代數(shù)、關(guān)系演算和關(guān)系邏輯等三類。(3)數(shù)據(jù)完整性規(guī)則:數(shù)據(jù)庫中數(shù)據(jù)必須滿足實(shí)體完整性,參照完整性和用戶定義的完整性等三類完整性規(guī)則。 262.1.5 關(guān)系模型的優(yōu)點(diǎn)與其它數(shù)據(jù)模型相比,關(guān)系模型突出的優(yōu)點(diǎn)如下:(1)關(guān)系模型提
14、供單一的數(shù)據(jù)結(jié)構(gòu)形式,具有高度的簡(jiǎn)明性和精確性。(2)關(guān)系模型的邏輯結(jié)構(gòu)和相應(yīng)的操作完全獨(dú)立于數(shù)據(jù)存儲(chǔ)方式,具有高度的數(shù)據(jù)獨(dú)立性。(3)關(guān)系模型使數(shù)據(jù)庫的研究建立在比較堅(jiān)實(shí)的數(shù)學(xué)基礎(chǔ)上。(4)關(guān)系數(shù)據(jù)庫語言與一階謂詞邏輯的固有內(nèi)在連系,為以關(guān)系數(shù)據(jù)庫為基礎(chǔ)的推理系統(tǒng)和知識(shí)庫系統(tǒng)的研究提供了方便。272.1.6 關(guān)系查詢語言和關(guān)系運(yùn)算 關(guān)系數(shù)據(jù)庫的數(shù)據(jù)操縱語言(DML)的語句分成查詢語句和更新語句兩大類。查詢語句用于描述用戶的各種檢索要求;更新語句用于描述用戶進(jìn)行插入、刪除、修改等操作。關(guān)于查詢的理論稱為“關(guān)系運(yùn)算理論”。關(guān)系查詢語言根據(jù)其理論基礎(chǔ)的不同分成三類:(1)關(guān)系代數(shù)語言。(2)關(guān)系演
15、算語言。(3)關(guān)系邏輯語言。 282.2 關(guān)系代數(shù) 2.2.1 關(guān)系代數(shù)的五個(gè)基本操作 2.2.2 關(guān)系代數(shù)的四個(gè)組合操作 2.2.3 關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例 2.2.4 關(guān)系代數(shù)的七個(gè)擴(kuò)充操作 返回292.2.1 關(guān)系代數(shù)的五個(gè)基本操作 (1) 并(Union)設(shè)關(guān)系R和S具有相同的關(guān)系模式,R和S的并是由 屬于R或?qū)儆赟的元組構(gòu)成的集合,記為RS。 形式定義如下:RSt | tR tS,t是元組變量,R和S的元數(shù)相同。 差(Difference)設(shè)關(guān)系R和S具有相同的關(guān)系模式,R和S的差是由 屬于R但不屬于S的元組構(gòu)成的集合,記為RS。形式定義如下:RS t | tR tS,R和S的元數(shù)相
16、同。302.2.1 關(guān)系代數(shù)的五個(gè)基本操作 (2)笛卡爾積(Cartesian Product) 形式定義如下: RSt|ttrRtsS此處tr、ts中r,s為上標(biāo)。若R有m個(gè)元組,S有n個(gè)元組,則RS有mn個(gè)元組。312.2.1 關(guān)系代數(shù)的五個(gè)基本操作 (3) 投影(Projection)(對(duì)關(guān)系進(jìn)行垂直分割)形式定義如下: i1,im(R) t|tti1,timt1,tkR例如,3,1(R)表示新關(guān)系中第1列為R的第3列,新關(guān)系的第2列為R的第1列。如果R的每列標(biāo)上屬性名,那么操作符的下標(biāo)處也可以用屬性名表示。例如,關(guān)系R(A,B,C),那么C,A(R)與3,1(R)是等價(jià)的。322.2.
17、1 關(guān)系代數(shù)的五個(gè)基本操作 (4)選擇(Selection)(據(jù)條件對(duì)關(guān)系做水平分割) 形式定義如下:F(R) t | tR F(t)= true 例如,23(R)表示從R中挑選第2個(gè)分量值大于3的元組所構(gòu)成的關(guān)系。書寫時(shí),為了與屬性序號(hào)區(qū)別起見,常量用引號(hào)括起來,而屬性序號(hào)或?qū)傩悦灰靡?hào)括起來。332.2.1關(guān)系代數(shù)的五個(gè)基本操作 (例)例2.2 有兩個(gè)關(guān)系R和S:(a)關(guān)系R (b)關(guān)系S ABCABC123246456456789342.2.1關(guān)系代數(shù)的五個(gè)基本操作 (例)ABCABCR.AR.BR.CS.AS.BS.CCAABC123123123246314564567891234
18、566478978945624697246456456789246789456(a) (b) (c) (d) (e) RS RS RS C,A(R) B4(R)352.2.2 關(guān)系代數(shù)的四個(gè)組合操作 (1) 交(intersection)關(guān)系R和S的交是由屬于R又屬于S的元組構(gòu)成的集合,記為RS,這里要求R和S定義在相同的關(guān)系模式上。形式定義如下:RSttR tS,R和S的元數(shù)相同。由于RS = R-(R-S),或RS = S-(S-R),因此交操作不是一個(gè)獨(dú)立的操作。 在表2.3中,RS的結(jié)果是只有一個(gè)元組 (4,5,6)。 362.2.2 關(guān)系代數(shù)的四個(gè)組合操作 (2)連接(join)(連
19、接 )R Stt=trRtsStritsj 定義等價(jià)于下式: R Si(r+j)(RS)該式表示連接是在關(guān)系R和S的笛卡兒積中挑選第i個(gè)分量和第(r+j)個(gè)分量滿足操作的元組。ijij372.2.2 關(guān)系代數(shù)的四個(gè)組合操作 (3)ABCDEABCDE123241232445656456567297872924 (a)關(guān)系R (b)關(guān)系S (c) R S 2=1圖2.10 連接的例子R S2=4(RS) 2=1382.2.2 關(guān)系代數(shù)的四個(gè)組合操作 (4) 自然連接(natural join) 關(guān)系R和S的自然連接操作計(jì)算過程如下: R S 去掉S中的公共屬性(公共屬性上值相等(RS)ABCBC
20、DABCD2465732462357462357374657935797462 (a)關(guān)系R (b)關(guān)系S(c)R SR SA,R.B,R.C,D (R.B=S.BR.C=S.C(RS)392.2.2 關(guān)系代數(shù)的四個(gè)組合操作 (5)除法(division) 設(shè)關(guān)系R和S的元數(shù)分別為r和s(設(shè)rs0),那么RS是一個(gè)(r-s)元的元組的集合。(RS)是滿足下列條件的最大關(guān)系:其中每個(gè)元組t與S中每個(gè)元組u組成的新元組必在關(guān)系R中。 RS1,2,r-s(R) 1,2,r-s(1,2,r-s(R)S)-R) 40RS#SNAMEC#CNAMECOURSE1C#CNAMERCOURSE1S#SNAME
21、S1BAOC1DBC2OSS1BAOS1BAOC2OSS2GUS1BAOC3DSCOURSE2C#CNAMES3ANS1BAOC4MISC2OSS4LIS2GUC1DBC4MISS2GUC2OSRCOURSE2S#SNAMES3ANC2OSCOURSE3C#CNAMES1BAOS4LIC2OSC1DBS4LIS4LIC4MISC2OSC4MISRCOURSE 3S#SNAMES1BAO表2.7 除法操作的例子41表2.7 除法操作的例子除法舉例SNOSNAMECNOCNAMES1BAOC1DBS1BAOC2OSS1BAOC3DSS1BAOC4MISS2GUC1DBS2GUC2OSS3ANC2O
22、SS4LIC2OSS4LIC4MISCNOCNAMEC2OSC4MISRS T = 1,2,r-s( R ) W = ( T x S) R V = 1,2,r-s (W ) RS = T-V42表2.7 除法操作的例子SNOSNAMES1BAOS2GUS3ANS4LITSNOSNAMECNOCNAMES2GUC4MISS3ANC4MISWVSNOSNAMES2GUS3ANSNOSNAMES1BAOS4LIRS432.2.3 關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例 在關(guān)系代數(shù)運(yùn)算中,把由五個(gè)基本操作經(jīng)過有限次復(fù)合的式子稱為關(guān)系代數(shù)表達(dá)式。這種表達(dá)式的運(yùn)算結(jié)果仍是一個(gè)關(guān)系。我們可以用關(guān)系代數(shù)表達(dá)式表示各種數(shù)據(jù)查詢
23、操作。 例2.6 設(shè)教學(xué)數(shù)據(jù)庫中有四個(gè)關(guān)系:教師關(guān)系 T(T#,TNAME,TITLE)課程關(guān)系C(C#,CNAME,T#)學(xué)生關(guān)系S(S#,SNAME,AGE,SEX)選課關(guān)系SC(S#,C#,SCORE)44 S(S#,SNAME,AGE,SEX) SC(S#,C#,SCORE)檢索學(xué)習(xí)課程號(hào)為C2課程的學(xué)生學(xué)號(hào)與成績(jī)。 S#,SCORE(C#=C2(SC)表達(dá)式中也可以不寫屬性名,而寫上屬性的序號(hào):1,3(2=C2(SC) 檢索學(xué)習(xí)課程號(hào)為C2的學(xué)生學(xué)號(hào)與姓名。 S#,SNAME(C#=C2(S SC) 由于這個(gè)查詢涉及到兩個(gè)關(guān)系S與SC,因此先要對(duì)這兩個(gè)關(guān)系進(jìn)行自然連接操作,然后再執(zhí)行
24、選擇和投影操作。45 T(T#,TNAME,TITLE) S(S#,SNAME,AGE,SEX) C(C#,CNAME,T#) SC(S#,C#,SCORE)檢索至少選修LIU老師所授課程中一門課程的學(xué)生學(xué)號(hào)與姓名。 S#,SNAME(TNAME=LIU(S SC C T) 檢索選修課程號(hào)為C2或C4的學(xué)生學(xué)號(hào)。 S#(C#=C2C#=C4(SC) 檢索至少選修課程號(hào)為C2和C4的學(xué)生學(xué)號(hào)。 1(1=42=C25=C4(SCSC)這里(SCSC)表示關(guān)系SC自身相乘的笛卡爾積操作。46S(S#,SNAME,AGE,SEX) SC(S#,C#,SCORE) 檢索不學(xué)C2課的學(xué)生姓名與年齡。SNA
25、ME,AGE(S)SNAME,AGE(C#=C2(S SC) 這里要用到集合差操作。先求出全體學(xué)生的姓名和年齡,再求出學(xué)了C2課的學(xué)生的姓名和年齡,最后執(zhí)行兩個(gè)集合的差操作。 SNAME,AGE(C#C2(S SC)47S(S#,SNAME,AGE,SEX)SC(S#,C#,SCORE)C(C#,CNAME,T#) 檢索學(xué)習(xí)全部課程的學(xué)生姓名。編寫這個(gè)查詢語句的關(guān)系代數(shù)表達(dá)式過程如下:學(xué)生選課情況可用操作S#,C#(SC)表示;全部課程可用操作C#(C) 表示;學(xué)了全部課程的學(xué)生學(xué)號(hào)可用除法操作表示,操作結(jié)果是學(xué)號(hào)S#集: S#,C#(SC)C#(C)從S#求學(xué)生姓名SNAME,可以用自然聯(lián)接
26、和投影操作組合而成: SNAME(S (S#,C#(SC)C#(C)48SC(S#,C#,SCORE) 檢索所學(xué)課程包含學(xué)生S3所學(xué)課程的學(xué)生學(xué)號(hào)。學(xué)生選課情況可用操作S#,C#(SC)表示;學(xué)生S3所學(xué)課程可用操作C#(S#=S3(SC) 表示;所學(xué)課程包含學(xué)生S3所學(xué)課程的學(xué)生學(xué)號(hào),可以用除法操作求得:S#,C#(SC)C#(S#=S3(SC) 492.2.3 關(guān)系代數(shù)運(yùn)算的應(yīng)用實(shí)例 查詢語句的關(guān)系代數(shù)表達(dá)式的一般形式是:(RS)或者 (R S)但是當(dāng)查詢涉及到否定或全部值時(shí),上述形式就不能表達(dá)了,就要用到差操作或除法操作,在例2.6中的、說明了這點(diǎn)。502.2.4 七個(gè)擴(kuò)充操作(1) 改
27、名 廣義投影 賦值 外連接(outer join) 外部并(outer union) 半連接(semijoin) 聚集操作 512.2.4 七個(gè)擴(kuò)充操作(2) 1改名:可改變關(guān)系的命名和屬性的命名。例2.7 設(shè)關(guān)系R(A,B)和S(B,C,D),則RS的屬性應(yīng)寫成A、R.B、S.B、C、D。使用改名操作后,RS可寫成RS(X,C,D)(S),則其屬性為A、B、X、C、D,更為清晰。 設(shè)關(guān)系R(A,B)和S(C,D),則R和S在B、C上自然連接要寫成A,B,D(R S) 或A,B,D(B=C(RS)。使用改名操作后,可寫成R S(B,D)(S)形式。B=C522.2.4 七個(gè)擴(kuò)充操作(3) 2廣
28、義投影:允許在投影列表中使用算術(shù)函數(shù)來對(duì)投影進(jìn)行擴(kuò)展,其形式是F1, F2,Fn(R),這里R是任意的關(guān)系模式,F(xiàn)1、 F2、Fn是涉及R模式中常量和屬性的算術(shù)表達(dá)式。例2.8 在選課關(guān)系SC(S#,C#,SCORE)中,課程號(hào)為C4的成績(jī)應(yīng)增加5%,則可用下式表示:S#,C#,SCORE*1.05(C#=C4(SC) 532.2.4 七個(gè)擴(kuò)充操作(4) 3賦值:通過給臨時(shí)變量賦值,可以把關(guān)系代數(shù)表達(dá)式分開書寫,以便把復(fù)雜的表達(dá)式化整為零,成為簡(jiǎn)單的表達(dá)式。賦值運(yùn)算符是“”,類似于計(jì)算機(jī)語言中的賦值運(yùn)算符。例2.9 關(guān)系R和S的除法操作,可用下面的一串操作表示出來:TEMP1 1,2,r-s(
29、R)TEMP2 (TEMP1S)RTEMP3 1,2,r-s(TEMP2)RS TEMP1TEMP3 542.2.4 七個(gè)擴(kuò)充操作(5) 4外連接(Outer Join)如果R和S做自然連接時(shí),把原該舍棄的元組也保留在新關(guān)系中,同時(shí)在這些元組新增加的屬性上填上空值(null),這種操作稱為“外連接”操作,用符號(hào)R S表示。如果R和S做自然連接時(shí),只把R中原該舍棄的元組放到新關(guān)系中,那么這種操作稱為“左外連接”操作,用符號(hào)R S表示。如果R和S做自然連接時(shí),只把S中原該舍棄的元組放到新關(guān)系中,那么這種操作稱為“右外連接”操作,用符號(hào)R S表示。552.2.4 七個(gè)擴(kuò)充操作(6) ABCBCDAB
30、CDABCDabcbcdabcdabcdbbfbceabceabcecadadbcadbcadbefgbbfnullnullefgABCDABCDabcdabcdabceabcecadbcadbbbfnullnullefg (a)關(guān)系R (b)關(guān)系S (c)R S (d)R S (e)R S (f)R S 562.2.4 七個(gè)擴(kuò)充操作(7) 5外部并(Outer Union)前面定義兩個(gè)關(guān)系的并操作時(shí),要求R和S具有相同的關(guān)系模式。如果R和S的關(guān)系模式不同,構(gòu)成的新關(guān)系的屬性由R和S的所有屬性組成(公共屬性只取一次),新關(guān)系的元組由屬于R或?qū)儆赟的元組構(gòu)成,同時(shí)元組在新增加的屬性上填上空值,那
31、么這種操作稱為“外部并”操作。572.2.4 七個(gè)擴(kuò)充操作(8) ABCBCDABCDabcbcdabcnullbbfbcebbfnullcadadbcadnullefgnullbcdnullbcenulladbnullefg (a)關(guān)系R(b)關(guān)系S (c) R和S的外部并 582.2.4 七個(gè)擴(kuò)充操作(9) 6 半連接(semijoin)R S R(R S)或R S R RS(S)。顯然,半連接的交換律是不成立的, 即 R S S R。半連接操作主要用于分布式數(shù)據(jù)庫中。592.2.4 七個(gè)擴(kuò)充操作(10) R S R(R S) ABCBCDABCDABCBCDabcbcdabcdabcbc
32、ddbcbceabcedbcbcebbfadbdbcdcadadbcaddbcecadb(a)關(guān)系R (b)關(guān)系S (c) R S (d)R S (e)R S602.2.4 七個(gè)擴(kuò)充操作(11) 7聚集操作:聚集操作是指輸入一個(gè)值的集合,然后根據(jù)該值集合得到一個(gè)單一的值作為結(jié)果。 聚集函數(shù)有max、min、avg、sum和count等。例2.14 在S(S#,SNAME,AGE,SEX)中,求男同學(xué)的平均年齡,可以用式子 avgage(sex=M(S)表示,求年齡為18歲的人數(shù)可用式子countS#(age=18(S)表示。612.3 關(guān)系演算 把數(shù)理邏輯的謂詞演算引入到關(guān)系運(yùn)算中,就可得到以
33、關(guān)系演算為基礎(chǔ)的運(yùn)算。關(guān)系演算又可分為元組關(guān)系演算和域關(guān)系演算,前者以元組為變量,后者以屬性(域)為變量。2.3.1 元組關(guān)系演算 2.3.2 域關(guān)系演算 2.3.3 關(guān)系運(yùn)算的安全約束和等價(jià)性 622.3.1 元組關(guān)系演算 (1) 在元組關(guān)系演算(Tuple Relational Calculus)中,元組關(guān)系演算表達(dá)式簡(jiǎn)稱為元組表達(dá)式,其一般形式為 t | P(t) 其中,t是元組變量,表示一個(gè)元數(shù)固定的元組;P是公式,在數(shù)理邏輯中也稱為謂詞,也就是計(jì)算機(jī)語言中的條件表達(dá)式。 t | P(t)表示滿足公式P的所有元組t的集合。 632.3.1 元組關(guān)系演算 (2)在元組表達(dá)式中,公式由原子
34、公式組成。定義2.4 原子公式(Atoms)有下列三種形式: R(s) siuj sia或auj。 在定義關(guān)系演算操作時(shí),要用到“自由”(Free)和“約束”(Bound)變量概念。在一個(gè)公式中,如果元組變量未用存在量詞或全稱量詞符號(hào)定義,那么稱為自由元組變量,否則稱為約束元組變量。 642.3.1 元組關(guān)系演算 (3)定義2.5 公式(Formulas)的遞歸定義如下:每個(gè)原子是一個(gè)公式。其中的元組變量是自由變量。 如果P1和P2是公式,那么P1、P1P2、P1P2和P1P2也都是公式。 如果P1是公式,那么(s)(P1)和(s)(P1)也都是公式。 公式中各種運(yùn)算符的優(yōu)先級(jí)從高到低依次為:
35、,和,和,。在公式外還可以加括號(hào),以改變上述優(yōu)先順序。 公式只能由上述四種形式構(gòu)成,除此之外構(gòu)成的都不是公式。 652.3.1 元組關(guān)系演算 (4)例2.15 圖2.16的(a)、(b)是關(guān)系R和S,(c)(g)分別是下面五個(gè)元組表達(dá)式的值: 圖2.20 元組關(guān)系演算的例子 R1=t|S(t)t12R2=t|R(t)S(t)R3=t|(u)(S(t)R(u)t3u1)R5=t|(u)(v)(R(u)S(v)u1v2t1=u2t2=v3t3=u1) 662.3.1 元組關(guān)系演算 (5) 在元組關(guān)系演算的公式中,有下列三個(gè)等價(jià)的轉(zhuǎn)換規(guī)則: P1P2 等價(jià)于 (P1P2); P1P2 等價(jià)于 (P1
36、P2)。 (s)(P1(s) 等價(jià)于 (s)(P1(s); (s)(P1(s) 等價(jià)于 (s)(P1(s)。 P1P2 等價(jià)于 P1P2。672.3.1 元組關(guān)系演算 (6)關(guān)系代數(shù)表達(dá)式到元組表達(dá)式的轉(zhuǎn)換例2.16 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è)投影操作是2,3(R),那么元組表達(dá)式可寫成: t |(u)(R(u)tl=u2t2=u3) F(R)可用 t |R(t)F表示,F(xiàn)是F的等價(jià)表示形式。譬如2=d(R)
37、可寫成 t |(R(t)t2=d)。 68例2.17 設(shè)關(guān)系R和S都是二元關(guān)系,1,4(2=3(RS) RS: t|(u)(v)(R(u)S(v)t1=u1t2=u2 t3=v1t4=v2) 2=3(RS):在上述表達(dá)式的公式中加上“t2=t3”即可。 1,4(2=3(RS):w|(t)(u)(v)(R(u)S(v)t1=u1t2=u2 t3=v1t4=v2t2=t3w1=t1w2=t4) 再對(duì)上式化簡(jiǎn),去掉元組變量t,可得下式:w|(u)(v)(R(u)S(v)u2=v1w1=u1w2=v2) 69例2.18 對(duì)于例2.6中查詢語句的關(guān)系代數(shù)表達(dá)式形式也可以用元組表達(dá)式形式表示: 檢索學(xué)習(xí)課
38、程號(hào)為C2的學(xué)生學(xué)號(hào)與成績(jī)。 S#,GRADE(C#=C2(SC) t|(u)(SC(u)u2=C2tl=u1 t2=u3) 檢索學(xué)習(xí)課程號(hào)為C2的學(xué)生學(xué)號(hào)與姓名。 S#,SNAME(C#=C2(S SC) t|(u)(v)(S(u)SC(v)v2=C2ul=v1tl=u1t2=u2)70例2.18 對(duì)于例2.6中查詢語句的關(guān)系代數(shù)表達(dá)式形式也可以用元組表達(dá)式形式表示: 檢索至少選修LIU老師所授課程中一門課程的學(xué)生學(xué)號(hào)與姓名。 S#,SNAME(CNAME=MATHS(S SC C T)t|(u)(v)(w)(x)(S(u)SC(v)C(w)T(x) ul=v1v2=w1w3=x1 x2=L
39、IUtl=u1t2=u2) 檢索選修課程號(hào)為C2或C4的學(xué)生學(xué)號(hào)。 S#(C#=C2C#=C4(SC) t|(u)(SC(u)(u2=C2u2=C4) tl=u1)71例2.18 對(duì)于例2.6中查詢語句的關(guān)系代數(shù)表達(dá)式形式也可以用元組表達(dá)式形式表示: 檢索至少選修課程號(hào)為C2和C4的學(xué)生學(xué)號(hào)。 1(1=42=C25=C4(SCSC)t|(u)(v)(SC(u)SC(v)u2=C2 v2=C4ul=v1tl=u1) 檢索不學(xué)C2課的學(xué)生姓名與年齡。SNAME,AGE(S)SNAME,AGE(C#=C2(S SC)t|(u)(v)(S(u)SC(v)(ul=v1v2C2)t1=u2t2=u3)72
40、例2.18 對(duì)于例2.6中查詢語句的關(guān)系代數(shù)表達(dá)式形式也可以用元組表達(dá)式形式表示: 檢索學(xué)習(xí)全部課程的學(xué)生姓名。 SNAME(S (S#,C#(SC)C#(C)t|(u)(v)(w)(S(u)C(v)SC(w)ul=w1v1=w2t1=u2) 檢索所學(xué)課程包含學(xué)號(hào)S3所學(xué)課程的學(xué)生。 S#,C#(SC)C#(S#=S3(SC)t|(u)(SC(u)(v)(SC(v) (v1=S3 (w)(SC(w)w1=u1w2=v2)tl=u1)732.3.2 域關(guān)系演算 (1)原子公式有兩種形式: R(x1xk); xy。 公式中也可使用、和等邏輯運(yùn)算符,(x)和(x),但變量x是域變量,不是元組變量。自
41、由域變量、約束域變量等概念和元組演算中一樣。域演算表達(dá)式是形為t1tkP(t1,tk) 的表達(dá)式,其中P(t1,tk)是關(guān)于自由域變量t1,tk 的公式。742.3.2 域關(guān)系演算 (2)例2.19 圖2.17的(a)、(b)、(c)是三個(gè)關(guān)系R、S、W,(d)、(e)、(f)分別表示下面三個(gè)域表達(dá)式的值。(a)關(guān)系R (b)關(guān)系S (c)關(guān)系W (d)R1 (e)R2 (f)R3 圖2.17 域關(guān)系演算的例子 R1=xyz|R(xyz)x3R2=xyz|R(xyz)(S(xyz)y=4)R3=xyz|(u)(v)(R(zxu)w(yv)uv)752.3.2 域關(guān)系演算 (3)元組表達(dá)式到域表
42、達(dá)式的轉(zhuǎn)換我們可以很容易地把元組表達(dá)式轉(zhuǎn)換成域表達(dá)式,轉(zhuǎn)換規(guī)則如下: 對(duì)于k元的元組變量t,可引入k個(gè)域變量t1tk,在公式中t用t1tk替換,元組分量ti用ti替換。 對(duì)于每個(gè)量詞(u)或(u),若u是m元的元組變量,則引入m個(gè)新的域變量u1um。在量詞的轄域內(nèi),u用u1um替換,ui用ui替換,(u)用(u1)(um)替換,(u)用(u1)(um)替換。 76例2.20 設(shè)關(guān)系R和S都是二元關(guān)系,1,4(2=3(RS)例2.17 轉(zhuǎn)換成的元組表達(dá)式是:w|(u)(v)(R(u)S(v)u2=v1w1=u1w2=v2)再轉(zhuǎn)換成域表達(dá)式:w1w2|(u1)(u2)(v1)(v2)(R(u1u2
43、)S(v1v2)u2=v1 w1=u1 w2=v2)再進(jìn)一步簡(jiǎn)化,可消去域變量u1、v1、v2,得到下式:w1w2|(u2)(R(w1u2)S(u2w2)77例2.21 對(duì)于例2.6、例2.18的查詢,可轉(zhuǎn)換成下列域表達(dá)式: 檢索學(xué)習(xí)課程號(hào)為C2的學(xué)生學(xué)號(hào)與成績(jī)。t1t2|(u1)(u2)(u3)(SC(u1u2u3)u2=C2t1=u1t2=u3) 可化簡(jiǎn)為:t1t2|SC(t1C2t2) 檢索學(xué)習(xí)課程號(hào)為C2的學(xué)生學(xué)號(hào)與姓名。t1t2|(u1)(u2)(u3)(u4)(v1)(v2)(v3)(S(u1u2u3u4)SC(v1v2v3)v2=C2 u1=v1t1=u1t2=u2)可化簡(jiǎn)為:t
44、1t2|(u3)(u4)(v3)(S(t1t2u3u4)SC(t1C2v3)782.3.3關(guān)系運(yùn)算的安全約束和等價(jià)性 定義2.6 在數(shù)據(jù)庫技術(shù)中,不產(chǎn)生無限關(guān)系和無窮驗(yàn)證的運(yùn)算稱為安全運(yùn)算,相應(yīng)的表達(dá)式稱為安全表達(dá)式,所采取的措施稱為安全約束。并、差、笛卡兒積、投影和選擇是關(guān)系代數(shù)最基本的操作,并構(gòu)成了關(guān)系代數(shù)運(yùn)算的最小完備集。已經(jīng)證明,在這個(gè)基礎(chǔ)上,關(guān)系代數(shù)、安全的元組關(guān)系演算、安全的域關(guān)系演算在關(guān)系的表達(dá)和操作能力上是完全等價(jià)的。79關(guān)系運(yùn)算的安全性 元組表達(dá)式t|R(t),這是一個(gè)無限關(guān)系。 驗(yàn)證公式(u)(P1(u)為假時(shí),必須對(duì)所有可能的元組u進(jìn)行驗(yàn)證,當(dāng)所有的u都使P1(u)為假時(shí)
45、,才能斷定公式(u)(P1(u)為假。 驗(yàn)證公式(u)(P1(u)也是這樣,當(dāng)所有可能的u使P1(u)為真時(shí),才能斷定公式(u)(P1(u)為真。這在實(shí)際上是行不通的。 我們必須采取措施,防止無限關(guān)系和無窮驗(yàn)證的出現(xiàn)。80關(guān)系運(yùn)算的安全性(續(xù)) 對(duì)于元組表達(dá)式t|P(t),將公式P(t)的“域”(Domain)定義為出現(xiàn)在公式P(t)中的常量和關(guān)系的所有屬性值組成的集合,記為DOM(P(t)。 由于所有關(guān)系都是有限的,因此DOM(P)也是有限的。 例如P(t)是t1=aR(t),R是二元關(guān)系,那么DOM(P)=a1(R)2(R)。81關(guān)系運(yùn)算的安全性(續(xù))安全的元組表達(dá)式t|P(t)應(yīng)滿足下列
46、三個(gè)條件:表達(dá)式的元組t中出現(xiàn)的所有值均來自DOM(P)。對(duì)于P(t)中每個(gè)形如(u)(P1(u)的子公式,如果元組u使P1(u)為真,那么u的每個(gè)分量必是DOM(P1)的元素。換言之,如果u有某個(gè)分量不屬于DOM(P1),那么P1(u)必為假。對(duì)于P(t)中每個(gè)形如(u)(P1(u)的子公式,如果元組u使P1(u)為假,那么u的每個(gè)分量必是DOM(P1)的元素。換言之,如果u有某個(gè)分量不屬于DOM(P1),那么P1(u)必為真。82關(guān)系運(yùn)算的等價(jià)性ISBL(Information System Base Language)語言與關(guān)系代數(shù)非常接近。QUEL語言(Query Language)是
47、一種基于元組演算的數(shù)據(jù)語言。QBE(Query By Example,按例查詢)是一種特殊的屏幕編輯語言。是一種域演算語言,現(xiàn)在,QBE的思想已滲入到許多DBMS中。SQL(Structured Query Language)是介乎于關(guān)系代數(shù)和元組演算之間的一種關(guān)系查詢語言,現(xiàn)已成為關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,我們將在第3章詳細(xì)介紹。832.4 關(guān)系代數(shù)表達(dá)式的優(yōu)化 2.4.1 關(guān)系代數(shù)表達(dá)式的優(yōu)化問題 2.4.2 關(guān)系代數(shù)表達(dá)式的等價(jià)變換規(guī)則 2.4.3 關(guān)系代數(shù)表達(dá)式的優(yōu)化算法 842.4.1 關(guān)系代數(shù)表達(dá)式的優(yōu)化(1)在關(guān)系代數(shù)表達(dá)式中需要指出若干關(guān)系的操作步驟。那么,系統(tǒng)應(yīng)該以什么樣的操作順
48、序,才能做到既省時(shí)間,又省空間,而且效率也比較高呢?這個(gè)問題稱為查詢優(yōu)化問題。在關(guān)系代數(shù)運(yùn)算中, 笛卡兒積和連接運(yùn)算 是最費(fèi)時(shí)間的。852.4.1 關(guān)系代數(shù)表達(dá)式的優(yōu)化(2)例2.22 設(shè)關(guān)系R和S都是二元關(guān)系,屬性名分別為A,B和C,D。E1 = A(B=CD=99(RS)E2 = A(B=C(RD=99(S)E3 = A(R D=99(S) 這三個(gè)關(guān)系代數(shù)表達(dá)式是等價(jià)的,但執(zhí)行的效率大不一樣。顯然,求El,E2,E3的大部分時(shí)間是花在連接操作上的。 返回B=C862.4.2 等價(jià)變換規(guī)則 (1)連接和笛卡兒積的交換律 連接和笛卡兒積的結(jié)合律 投影的級(jí)聯(lián) 選擇的級(jí)聯(lián) 選擇和投影操作的交換 選
49、擇對(duì)笛卡兒積的分配律 選擇對(duì)并的分配律 872.4.2 等價(jià)變換規(guī)則 (2)選擇對(duì)集合差的分配律 選擇對(duì)自然連接的分配律 投影對(duì)笛卡兒積的分配律 投影對(duì)并的分配律 選擇與連接操作的結(jié)合 并和交的交換律 并和交的結(jié)合律 返回882.4.3 啟發(fā)式優(yōu)化算法 (1) 在關(guān)系代數(shù)表達(dá)式中,最花費(fèi)時(shí)間和空間的運(yùn)算是笛卡兒積和連接操作,為此,引出三條啟發(fā)式規(guī)則,用于對(duì)表達(dá)式進(jìn)行轉(zhuǎn)換,以減少中間關(guān)系的大小。盡可能早地執(zhí)行選擇操作;盡可能早地執(zhí)行投影操作;避免直接做笛卡兒積,把笛卡兒積操作 之前和之后的一連串選擇和投影合并起 來一起做。 892.4.3 啟發(fā)式優(yōu)化算法 (2)算法2.1 關(guān)系代數(shù)表達(dá)式的啟發(fā)式
50、優(yōu)化算法。輸入:一個(gè)關(guān)系代數(shù)表達(dá)式的語法樹輸出:計(jì)算表達(dá)式的一個(gè)優(yōu)化序列方法: 把每個(gè)形為F1 Fn(E)的子表達(dá)式轉(zhuǎn) 換成選擇級(jí)聯(lián)形式:F1(Fn(E) 在語法樹中,盡可能把每個(gè)選擇下推到樹的葉端。 對(duì)每個(gè)投影操作,盡可能往下推,移向樹的葉端。 把選擇和投影合并在一起做。 將上述步驟得到的語法樹的內(nèi)結(jié)點(diǎn)分組。以每個(gè)二元運(yùn)算(、)結(jié)點(diǎn)為中心分組。 生成一個(gè)序列,每一組結(jié)點(diǎn)的計(jì)算是序列中的一步。902.4.3 啟發(fā)式優(yōu)化算法 (3)例2.23 查詢語句:檢索學(xué)習(xí)課程名為OS的女學(xué)生學(xué)號(hào)和姓名。該查詢語句的關(guān)系代數(shù)表達(dá)式如下: S#,SNAME(CNAME=OSSEX=F(C SC S)上式中,
51、符號(hào)用、操作表示,可得下式: S#,SNAME(CNAME=OSSEX=F(L (C.C# = SC.C#SC.S# = S.S#(CSCS)此處L是C、SC、S中全部屬性。912.4.3 啟發(fā)式優(yōu)化算法 (4)S.S#,SNAMEC.C#,CNAME,T#, SCORE,S.S#,SNAME,AGE,SEX CNAME=OSSEX=F C.C#=SC.C#SC.S#=S.S# SSCC圖2.18 關(guān)系代數(shù)表達(dá)式的初始語法樹 922.4.3 啟發(fā)式優(yōu)化算法 (5)圖2.19 優(yōu)化過程中的語法樹 (選擇操作已盡可能移向葉端) S.S#,SNAME SC.S#=S.S# SSCCSEX=FC.C#
52、=SC.C#CNAME=OS932.4.3 啟發(fā)式優(yōu)化算法 (6)圖2.20 優(yōu)化的語法樹及其分組 S.S#,SNAMES.S#,SNAMESC.S#=S.S#SSCCSEX=FC.C#=SC.C#CNAME=OSSC.S#SC.S#,SC.C#C.C#942.5 關(guān)系邏輯2.5.1 關(guān)系運(yùn)算的成分 2.5.2 規(guī)則的安全性 2.5.3 從關(guān)系代數(shù)到關(guān)系邏輯的轉(zhuǎn)換 2.5.4 遞歸過程 2.5.5 關(guān)系邏輯與關(guān)系代數(shù)的差異 952.5.1 關(guān)系運(yùn)算的成分 (1)1謂詞(predicates)定義2.7 其關(guān)系存儲(chǔ)在數(shù)據(jù)庫中的謂詞稱為“外延謂詞”(extensional predica-te),
53、而把由邏輯規(guī)則定義的謂詞稱為“內(nèi)涵謂詞”(intensional predicate)。一般,我們用“外延數(shù)據(jù)庫”的縮寫EDB來引用外延謂詞或相應(yīng)關(guān)系,用“內(nèi)涵數(shù)據(jù)庫”的縮寫IDB來引用內(nèi)涵謂詞或相應(yīng)關(guān)系。962.5.1 關(guān)系運(yùn)算的成分 (2)2原子(atoms)定義2.8 關(guān)系邏輯中的原子有兩種: 關(guān)系原子是一個(gè)謂詞符號(hào)。 算術(shù)原子是算術(shù)比較表達(dá)式。例如關(guān)系R(A,B,C),那么關(guān)系原子R(2345,b,c)表示了表達(dá)式1=2345(R)。如果關(guān)系原子是R(x,b,x),則表示了表達(dá)式1=3(R),算術(shù)原子用中綴形式表示,例如x 20此處,規(guī)則的頭部是W(a,b)。規(guī)則的體包括兩個(gè)子目標(biāo):
54、第一個(gè)子目標(biāo)有謂詞S和4個(gè)參數(shù),對(duì)應(yīng)于關(guān)系S的4個(gè)屬性。 當(dāng)S中元組的AGE值大于20時(shí),第2個(gè)子目標(biāo)c20為真。因此,這個(gè)規(guī)則等價(jià)于關(guān)系代數(shù)中下列操作: W=S#,SNAME(AGE20 SEX=M(S))1002.5.1 關(guān)系運(yùn)算的成分 (6)4. 查詢定義2.10 關(guān)系邏輯中的查詢是一個(gè)或多個(gè)規(guī)則的聚集,規(guī)則之間的順序無關(guān)緊1012.5.2 規(guī)則的安全性 (1)在規(guī)則中,應(yīng)保證頭部關(guān)系是有限的。如果得到的頭部關(guān)系是無限的,那么這種規(guī)則是無意義的。在規(guī)則的子目標(biāo)中,有四種形式:關(guān)系子目標(biāo),求反關(guān)系子目標(biāo),算術(shù)子目標(biāo)和求反算術(shù)子目標(biāo)。關(guān)系子目標(biāo)總是有限的,而另外三種形式則是無限的。因此對(duì)于另
55、外三種形式必須保證取值限制在一定的范圍之內(nèi)。為了保證規(guī)則的結(jié)果有意義,使得帶有算術(shù)子目標(biāo)或求反子目標(biāo)的規(guī)則具有直觀的意義,我們必須對(duì)規(guī)則中變量的使用方式加以限制,這種限制條件稱為“安全條件”。1022.5.2 規(guī)則的安全性 (2)安全條件的含義是:出現(xiàn)在規(guī)則中任何地方的變量必須出現(xiàn)在某個(gè)非求反的關(guān)系子目標(biāo)中。也就是,在頭部、求反關(guān)系子目標(biāo)或任何算術(shù)子目標(biāo)中出現(xiàn)的變量,必須出現(xiàn)在非求反的關(guān)系子目標(biāo)中。通過把變量限制在取值有限的關(guān)系子目標(biāo)中,使得規(guī)則的查詢結(jié)果是有限的。1032.5.2 規(guī)則的安全性 (3)例2.25 下列規(guī)則有三處違反了安全條件: P(x,y) Q(x,z)R(w,x,z) xy
56、 變量y出現(xiàn)在頭部,但是沒有出現(xiàn)在任何非求反的關(guān)系子目標(biāo)中。雖然y出現(xiàn)在算術(shù)子目標(biāo)xy,但仍無法限制y在有限集中。 變量w出現(xiàn)在求反的關(guān)系子目標(biāo)中而不在非求反的關(guān)系子目標(biāo)中。 變量y出現(xiàn)在算術(shù)子目標(biāo)中,但不在非求反的關(guān)系子目標(biāo)中。因此,這個(gè)規(guī)則不是安全的規(guī)則。1042.5.2 規(guī)則的安全性 (4)例2.26 下列規(guī)則是一個(gè)安全的規(guī)則: P(x,y) Q(x,z)R(z,y)Q(x,y)假設(shè)關(guān)系Q包括兩個(gè)元組(1,2)和(1,3), 關(guān)系R包括兩個(gè)元組(2,3)和(3,1)。這里有兩個(gè)非求反的關(guān)系子目標(biāo):Q(x,z)和 R(z,y)。所以。我們必須考慮分別來自Q和R的元組對(duì)這些子目標(biāo)賦值的所有組
57、合。表2.1考慮了這四種組合。顯然P中唯一的元組是(1,1)。1052.5.2 規(guī)則的安全性 (5)組合序號(hào) 子目標(biāo) 頭部Q(x,z)R(z,y)(x,y)Q(x,y)P(x,y)1(1,2)(2,3)(1,3)假2(1,2)(3,1)3(1,3)(2,3)4(1,3)(3,1)(1,1)真(1,1)表2.1 元組對(duì)Q(x,z)和R(z,y)的賦值組合1062.5.3 從關(guān)系代數(shù)到關(guān)系邏輯的轉(zhuǎn)換 (1)例2.27 設(shè)有關(guān)系R(A,B,C)和S(A,B,C),那么 RS 可用下列規(guī)則計(jì)算:W(a,b,c) R(a,b,c)S(a,b,c)例2.28 那么 RS 可用下列規(guī)則計(jì)算: W(a,b,c
58、) R(a,b,c) W(a,b,c) S(a,b,c)例2.29 那么 R-S 可用下列規(guī)則計(jì)算:W(a,b,c) R(a,b,c)S(a,b,c)1072.5.3 從關(guān)系代數(shù)到關(guān)系邏輯的轉(zhuǎn)換 (2)例2.30 設(shè)有關(guān)系R(A,B,C) ,那么C,A(R)可用下列規(guī)則計(jì)算:W(c,a) R(a,b,c)例2.31 設(shè)有關(guān)系R(A,B,C) ,那么B5 C=18(R)可以寫成下列規(guī)則:W(a,b,c) R(a,b,c)b5c=18例2.32 設(shè)有關(guān)系R(A,B,C) ,那么B5 C=18(R)可以用兩個(gè)規(guī)則表示: W(a,b,c) R(a,b,c)b5 W(a,b,c) R(a,b,c)c=181082.5.3 從關(guān)系代數(shù)到關(guān)系邏輯的轉(zhuǎn)換 (3)例2.33 設(shè)有關(guān)系R(A,B,C)和S(D,E,F), 那么 RS 可用下列規(guī)則表示: W(a,b,c,x,y,z) R(a,b,c)S(x,y,z)例2.34 設(shè)有關(guān)系R(A,B,C)和S(C,D,E),那么 RS 可用下列規(guī)則定義: W(a,b,c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (2024版)中國肝移植受者麥考酚鈉臨床應(yīng)用指南課件
- 2025年腫瘤科入院護(hù)理流程試題及答案
- 未來五年食用菊花企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略分析研究報(bào)告
- 未來五年船舶拆船企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報(bào)告
- 未來五年預(yù)防保健和健康管理企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略分析研究報(bào)告
- 未來五年新形勢(shì)下寵物服裝行業(yè)順勢(shì)崛起戰(zhàn)略制定與實(shí)施分析研究報(bào)告
- 未來五年海水軟體水生動(dòng)物企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略分析研究報(bào)告
- 高三歷史《貨幣發(fā)展史》教學(xué)設(shè)計(jì)
- 樂游奇趣島:BIG FUN 1B Units 46綜合復(fù)習(xí)課教學(xué)設(shè)計(jì)
- 語文五年級(jí)上冊(cè)《穿越維也納森林》教學(xué)設(shè)計(jì)
- 安全監(jiān)理生產(chǎn)責(zé)任制度
- 2026年云南保山電力股份有限公司校園招聘(50人)考試參考試題及答案解析
- 2026年云南保山電力股份有限公司校園招聘(50人)筆試備考題庫及答案解析
- 中央中國熱帶農(nóng)業(yè)科學(xué)院院屬單位2025年第一批招聘筆試歷年參考題庫附帶答案詳解
- 研發(fā)費(fèi)用加計(jì)扣除審計(jì)服務(wù)協(xié)議
- 2025年二年級(jí)上冊(cè)語文期末專項(xiàng)復(fù)習(xí)-按課文內(nèi)容填空默寫表(含答案)
- 2026年遼寧經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫及參考答案詳解1套
- 建筑施工公司成本管理制度(3篇)
- 2025年婦產(chǎn)科副高試題庫及答案
- 全國物業(yè)管理法律法規(guī)及案例解析
- 2025年度黨委黨建工作總結(jié)
評(píng)論
0/150
提交評(píng)論