【文章內(nèi)容簡介】
B) 和 S( B, C, D) , 則R S的屬性應(yīng)寫成 A、 、 、 C、 D。 使用改名操作后 , R S可寫成 R ρS(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( R S)) 。 使用改名操作后 , 可寫成 R ρS(B, D)( S) 形式 。 B=C 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 48 七個擴(kuò)充操作( 3) ?2. 廣義投影:允許在投影列表中使用算術(shù)函數(shù)來對投影進(jìn)行擴(kuò)展 , 其形式是 π F1, F2… ,Fn( R) , 這里 R是任意的關(guān)系模式 , F F … 、 Fn是涉及 R模式中常量和屬性的算術(shù)表達(dá)式 。 ?例 在選課關(guān)系 SC( S, C, SCORE) 中 ,課程號為 C4的成績應(yīng)增加 5%, 則可用下式表示: π S, C, SCORE*( σ C=39。C439。( SC)) 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 49 七個擴(kuò)充操作( 4) ?3. 賦值:通過給臨時變量賦值 , 可以把關(guān)系代數(shù)表達(dá)式分開書寫 , 以便把復(fù)雜的表達(dá)式化整為零 ,成為簡單的表達(dá)式 。 ?賦值運(yùn)算符是 “ ← ” , 類似于計(jì)算機(jī)語言中的賦值運(yùn)算符 。 ?例 關(guān)系 R和 S的除法操作 , 可用下面的一串操作表示出來: TEMP1 ← π1, 2, … , rs( R) TEMP2 ← ( TEMP1 S) - R TEMP3 ← π1, 2, … , rs( TEMP2) R247。 S ← TEMP1- TEMP3 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 50 七個擴(kuò)充操作( 5) ?4. 外連接 ( Outer Join) ?如果 R和 S做自然連接時 , 把原該舍棄的元組也保留在新關(guān)系中 , 同時在這些元組新增加的屬性上填上空值 ( null) , 這種操作稱為 “ 外連接 ” 操作 ,用符號 R S表示 。 ?如果 R和 S做自然連接時 , 只把 R中原該舍棄的元組放到新關(guān)系中 , 那么這種操作稱為 “ 左外連接 ” 操作 , 用符號 R S表示 。 ?如果 R和 S做自然連接時 , 只把 S中原該舍棄的元組放到新關(guān)系中 , 那么這種操作稱為 “ 右外連接 ” 操作 , 用符號 R S表示 。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 51 七個擴(kuò)充操作( 6) A B C B C D A B C D A B C D a b c b c d a b c d a b c d b b f b c e a b c e a b c e c a d a d b c a d b c a d b e f g b b f null null e f g A B C D A B C D a b c d a b c d a b c e a b c e c a d b c a d b b b f null null e f g (a)關(guān)系 R (b)關(guān)系 S (c)R S (d)R S ( e) R S ( f) R S 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 52 七個擴(kuò)充操作( 7) ?5. 外部并 ( Outer Union) 前面定義兩個關(guān)系的并操作時 , 要求 R和 S具有相同的關(guān)系模式 。 如果 R和 S的關(guān)系模式不同 , 構(gòu)成的新關(guān)系的屬性由 R和 S的所有屬性組成 ( 公共屬性只取一次 ) , 新關(guān)系的元組由屬于 R或?qū)儆?S的元組構(gòu)成 , 同時元組在新增加的屬性上填上空值 , 那么這種操作稱為“ 外部并 ” 操作 。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 53 七個擴(kuò)充操作( 8) A B C B C D A B C D a b c b c d a b c null b b f b c e b b f null c a d a d b c a d null e f g null b c d null b c e null a d b null e f g (a)關(guān)系 R (b)關(guān)系 S (c) R和 S的 外部并 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 54 七個擴(kuò)充操作( 9) ?6. 半連接 ( semijoin) R S ≡ π R( R S) 或 R S ≡ R π R∩S ( S) 。 顯然 , 半連接的交換律是不成立的 , 即 R S ≠ S R。 半連接操作主要用于分布式數(shù)據(jù)庫中 。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 55 七個擴(kuò)充操作( 10) R S ≡ π R( R S) A B C B C D A B C D A B C B C D a b c b c d a b c d a b c b c d d b c b c e a b c e d b c b c e b b f a d b d b c d c a d a d b c a d d b c e c a d b (a)關(guān)系 R (b)關(guān)系 S (c) R S (d)R S (e)R S 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 56 七個擴(kuò)充操作( 11) ?7. 聚集操作:聚集操作是指輸入一個值的集合 ,然后根據(jù)該值集合得到一個單一的值作為結(jié)果 。 聚集函數(shù)有 max、 min、 avg、 sum和 count等 。 ?例 在 S( S, SNAME, AGE, SEX) 中 , 求男同學(xué)的平均年齡 , 可以用式子 avgage( σ sex=39。M39。( S)) 表示 , 求年齡為 18歲的人數(shù)可用式子 countS( σ age=39。1839。( S)) 表示 。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 57 關(guān)系演算 ? 把數(shù)理邏輯的謂詞演算引入到關(guān)系運(yùn)算中,就可得到以關(guān)系演算為基礎(chǔ)的運(yùn)算。關(guān)系演算又可分為元組關(guān)系演算和域關(guān)系演算,前者以元組為變量,后者以屬性(域)為變量。 ? 元組關(guān)系演算 ? 域關(guān)系演算 ? 關(guān)系運(yùn)算的安全約束和等價性 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 58 元組關(guān)系演算 (1) ? 在 元 組 關(guān) 系 演 算 ( Tuple Relational Calculus) 中 , 元組關(guān)系演算表達(dá)式簡稱為元組表達(dá)式 , 其一般形式為 { t | P( t) } 其中, t是元組變量,表示一個元數(shù)固定的元組; P是公式,在數(shù)理邏輯中也稱為謂詞,也就是計(jì)算機(jī)語言中的條件表達(dá)式。 { t | P( t) }表示滿足公式 P的所有元組 t的集合。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 59 元組關(guān)系演算 (2) ? 在元組表達(dá)式中 , 公式由原子公式組成 。 ? 定義 原子公式 ( Atoms) 有下列三種形式: ① R( s) ② s[i]θ u[j] ③ s[i]θ a或 aθ u[j]。 ? 在定義關(guān)系演算操作時,要用到 “ 自由 ”( Free)和 “ 約束 ” ( Bound)變量概念。在一個公式中,如果元組變量未用存在量詞 ?或全稱量詞 ?符號定義,那么稱為自由元組變量,否則稱為約束元組變量。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 60 元組關(guān)系演算 (3) ? 定義 公式 ( Formulas) 的遞歸定義如下: ① 每個原子是一個公式 。 其中的元組變量是自由變量 。 ② 如果 P1和 P2是公式,那么 ┐ P P1∨P P1∧P 2和P1?P2也都是公式。 ③ 如果 P1是公式,那么( ?s)( P1)和( ?s)( P1)也都是公式。 ④ 公式中各種運(yùn)算符的優(yōu)先級從高到低依次為: θ ,?和 ?, ┐ , ∧ 和 ∨ , ?。在公式外還可以加括號,以改變上述優(yōu)先順序。 ⑤ 公式只能由上述四種形式構(gòu)成,除此之外構(gòu)成的都不是公式。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 61 元組關(guān)系演算 (4) ? 例 圖 ( a)、( b)是關(guān)系 R和 S,( c)~( g)分別是下面五個元組表達(dá)式的值: A B C A B C A B C A B C 1 2 3 1 2 3 3 4 6 4 5 6 4 5 6 3 4 6 5 6 9 7 8 9 7 8 9 5 6 9 ( a )關(guān)系 R ( b )關(guān)系 S ( c ) R1 ( d ) R2 A B C A B C S .C 1 2 3 4 5 6 5 3 4 3 4 6 7 8 9 8 3 7 8 6 7 ( e ) R3 ( f ) R4 8 9 7 ( g ) R5 圖 元組關(guān)系演算的例子 R1={t|S(t)∧t[ 1]2} R2={t|R(t)∧┐S(t)} R3={t|(?u)(S(t)∧R(u)∧t[ 3]u[2])} R4={t|(?u)(R(t)∧S(u)∧t[ 3]u[1])} R5={t|(?u)(?v)(R(u)∧S(v) ∧u[1]v[2]∧t[1]=u[2] ∧t[2]=v[3]∧t[3]=u[1])} 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 62 元組關(guān)系演算 (5) ? 在元組關(guān)系演算的公式中 , 有下列三個等價的轉(zhuǎn)換規(guī)則: ① P1∧ P2 等價于 ┐(┐P1∨ ┐P2); P1∨ P2 等價于 ┐(┐P1∧ ┐P2)。 ② (?s)(P1(s)) 等價于 ┐(?s)(┐P1(s)); (?s)(P1(s)) 等價于 ┐(?s)(┐P1(s))。 ③ P1?P2 等價于 ┐P1∨ P2。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 63 元組關(guān)系演算 (6) ? 關(guān)系代數(shù)表達(dá)式到元組表達(dá)式的轉(zhuǎn)換 例 R∪ S可用 { t | R( t) ∨ S( t) }表示; RS可用 { t | R( t) ∧ ┐S( t) } 表示; R S可用 { t |( ?u) ( ?v) ( R( u) ∧ S(V) ∧ t[1]=u[1] ∧ t[2]=u[2]∧ t[3]=u[3]∧ t[4]=v[1] ∧ t[5]=v[2] ∧ t[6]=v[3]) } 表示 。 設(shè)投影操作是 π2,3( R) , 那么元組表達(dá)式可寫成: { t |(?u)( R( u) ∧ t[l]=u[2]∧ t[2]=u[3]) } σF( R)可用 { t |R(t)∧ F39。}表示, F39。是 F的等價表示形式。譬如 σ2=39。d39。( R)可寫成 { t |( R( t) ∧ t[2]=39。d39。)。 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 64 例 設(shè)關(guān)系 R和 S都是二元關(guān)系, π 1,4( σ 2=3( R S)) ⑴ R S: {t|(?u)(?v)(R(u)∧S(v)∧t[ 1]=u[1]∧t[ 2]=u[2] ∧t[ 3]=v[1]∧t[ 4]=v[2])} ⑵ σ 2=3( R S) : 在上述表達(dá)式的公式中加上 “ ∧ t[2]=t[3]”即可 。 ⑶ π 1,4( σ 2=3( R S)) : {w|(?t)(?u)(?v)(R(u)∧S(v)∧t[ 1]=u[1]∧t[ 2]=u[2] ∧t[ 3]=v[1]∧t[ 4]=v[2]∧t[ 2]=t[3] ∧w[ 1]=t[1]∧w[ 2]=t[4])} ⑷ 再對上式化簡 , 去掉元組變量 t, 可得下式: {w|(?u)(?v)(R(u)∧S(v) ∧u[ 2]=v[1]∧w[ 1]=u[1]∧w[ 2]=v[2])} 2022/1/4 四川理工學(xué)院 計(jì)算機(jī)學(xué)院 65 例 對于例 表達(dá)式形式也可以用元組表達(dá)式形式表示: ⑴ 檢索學(xué)習(xí)課程號為 C2的學(xué)生學(xué)號與成績 。 π S, GRADE( σ C=39。C239。( SC)) {t|(?u)(SC(u)∧u[ 2]=39。C239?!膖[l]=u[ 1] ∧t[ 2]=u[3])} ⑵ 檢索學(xué)習(xí)課程號為 C2的學(xué)生學(xué)號與姓名 。 π S, SNAME( σ C=39。C