Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            302 隨筆 :: 26 文章 :: 82 評論 :: 0 Trackbacks

          元組關(guān)系演算

          ?

          ?

          ??? 之前學(xué)習(xí)了一下關(guān)系代數(shù)表達(dá)式,現(xiàn)在再學(xué)習(xí)一下元組關(guān)系的演算,這樣就全了。這篇東西的符號打出來費(fèi)了好多時間,比較麻煩,還好看著還能看懂,關(guān)鍵是全文本的,好下面開始正文。


          ???
          為了討論方便,先允許關(guān)系的基數(shù)是無限的。然后再對這種情況下定義的演算作適當(dāng)?shù)男薷模WC關(guān)系演算中的每一個公式表示的是有限關(guān)系。


          ???
          在元組關(guān)系演算系統(tǒng)中,稱 {t|Φ(t)} 為元組演算表達(dá)式。其中 t 是元組變量, Φ(t) 為元組關(guān)系演算公式,簡稱公式。
          它由原子公式和運(yùn)算符組成。

          ?

          ???? 原子公式有三類:

          ?

          ??? (1) R(t)

          ??????? R 是關(guān)系名, t 是元組變量。 R(t) 表示 t R 中的元組。于是,關(guān)系 R 可表示為: {t|R(t)}

          ??? (2) t[i] θ u[j]

          ??????? t u 是元組變量, θ 是算術(shù)比較運(yùn)算符。 t[i] θ?u[j] 表示斷言 元組 t 的第 i 個分量與元組 u 的第 j 個分量滿足比較關(guān)系 θ 。例如, t[2] < u[3] 表示元組 t 的第 2 個分量小于元組 u 的第 3 個分量。

          ??? (3) t[i] θ c ?c θ t[i]
          ???????
          這里 c 是常量,該公式表示 “t 的第 i 個分量與常量 C 滿足比較關(guān)系 θ” 。例如: t[4]=3 表示元組 t 的第 4 個分量等于 3

          ?

          ???? 在關(guān)系演算中定義了 自由元組變量 約束元組變量 的概念。這些概念和謂詞演算中的概念完全一樣。若公式中的一個元組變量前有 全稱量詞 存在量詞 ,則稱該變量為約束元組變量,否則稱自由元組變量。

          ?

          ??? 公式可以遞歸定義如下:

          ?

          ??? (l) 每個原子公式是公式。
          ??? (2)
          如果 Φ 1 Φ 2 是公式,則 Φ 1 Φ 2 Φ 1 Φ 2 Φ1 也是公式。分別表示:
          ???????
          如果 Φ 1 Φ 2 同時為真。則 Φ 1 Φ 2 才為真,否則為假;
          ???????
          如果 Φ 1 Φ 2 中一個或同時為真,則 Φ 1 Φ 2 為真,僅 Φ 1 Φ 2 同時為假時, Φ 1 Φ 2 才為假;
          ???????
          如果 Φ 1 真,則 Φ 1 為假。
          ??? (3)
          Φ 是公式,則 ? t(Φ) 也是公式。其中符號 ? 是存在量詞符號, ? t(Φ) 表示:
          ???????
          若有一個 t 使 Φ 為真,則 ? t(Φ) 為真,否則 ? t(Φ) 為假。
          ??? (4)
          Φ 是公式,則 ? t( Φ ) 也是公式。其中符號 ? 是全稱量詞符號, ? t( Φ ) 表示:
          ???????
          如果對所有 t ,都使 Φ 為真,則 ? t( Φ ) 必為真,否則 ? t( Φ ) 為假。
          ??? (5)
          在元組演算公式中,各種運(yùn)算符的優(yōu)先次序為:
          ???????
          算術(shù)比較運(yùn)算符最高;
          ???????
          量詞次之,且 ? 的優(yōu)先級高于 ? 的優(yōu)先級;
          ???????
          邏輯運(yùn)算符最低,且 的優(yōu)先級高于 的優(yōu)先級, 的優(yōu)先級高于 的優(yōu)先級;
          ???????
          加括號時,括號中運(yùn)算符優(yōu)先,同一括號內(nèi)的運(yùn)算符之優(yōu)先級遵循 ①②③ 各項。
          ??? (6)
          有限次地使用上述五條規(guī)則得到的公式是元組關(guān)系演算公式,其他公式不是元組關(guān)系演算公式。

          ?

          ??? 一個元組演算表達(dá)式 {t|Φ(t)} 表示了使 Φ(t) 為真的元組集合。
          ???
          關(guān)系代數(shù)的運(yùn)算均可以用關(guān)系演算表達(dá)式來表示 ( 反之亦然 ) 。下面用關(guān)系演算表達(dá)式來表示五種基本運(yùn)算:

          ?

          ??? (1)

          ??????? R S={t|R(t) S(t)}

          ??? (2)

          ??????? R S={t|R(t) S(t)}

          ??? (3) 笛卡爾積

          ??????? R×S={t (n+m) |( ? u (n) )( ? v (m) )(R(u) S(v) t[1]=u[1] ... t[n]=u[n] t[n+1]=v[1] ... t[n+m]=v[m])}

          ??????? 注: t (n+m) 表示 t 有目數(shù) (n+m)

          ??? (4) 投影

          ??????? π t1,t2,...,tk (R)={t (k) |( ? u )(R(u) t[1]=u[i1] ...t[k]=u[ik] )}

          ??? (5) 選擇

          ??????? σ F (R)={t|R(t) F}

          ??????? 注: F 是公式。 F t[i] 代替 運(yùn) i 得到的等價公式。

          ?

          ???? 1 查詢信息系 (IS ) 全體學(xué)生:
          ??????? S
          IS ={Student(t) t[5]='IS'}?
          ???? 2 查詢年齡小于 20 歲的學(xué)生。
          ????????S
          20 ={Student(t) t[4]<20}

          ???? 3 查詢學(xué)生的姓名和所在系。
          ????????S={t
          (2) |( ? u)(Student(u) t[1]=u[2] t[2]=u[5])}


          ??? 上面定義的關(guān)系演算允許出現(xiàn)無限關(guān)系。例如 {t| R(t)} 表示所有不屬于 R 的元組 ( 元組的目數(shù)等于 R 的目數(shù) ) 。要求出這些可能的元組是做不到的,所以必須排除這類無意義的表達(dá)式。把不產(chǎn)生無限關(guān)系的表達(dá)式稱為安全表達(dá)式,所采取的措施稱為安全限制。安全限制通常是定義一個有限的符號集 dom(Φ) dom(Φ) 一定包括出現(xiàn)在 Φ 以及中間結(jié)果和最后結(jié)果的關(guān)系中的所有符號 ( 實際上是各列中值的匯集 ) dom(Φ) 不必是最小集。

          ?

          ???? 當(dāng)滿足下列條件時,元組演算表達(dá)式 {t|Φ(t)} 是安全的:
          ???
          1 )如果 t 使 Φ(t) 為真,則 t 的每個分量是 dom(Φ) 中的元素。
          ???
          2 )對于 Φ 中每一個形如 ( ? t)(W(u)) 的子表達(dá)式,若 u 使 W(u) 為真,則 u 的每個分量是 dom(Φ) 中的元素。
          ???
          3 )對于 Φ 中每一個形如 ( ? t)(W(u)) 的子表達(dá)式,若 u 使 W(u) 為假,則 u 的每個分量必屬于 dom(Φ) 。換言之,若 u 某一分量不屬于 dom(Φ) ,則 W(u) 為真。

          ?

          ???? 4 設(shè)有關(guān)系 R 如圖 2.8(a) S={t| R(t)} ,若不進(jìn)行安全限制,則可能是一個無限關(guān)系。所以定義

          ??????? dom(Φ)= π A (R) π B (R) π C (R)

          ????????????? ={{a1,a2},{b1,b2},{c1,c2}}


          ????
          S dom(Φ) 中各域值中元素的笛卡兒積與 R 的差集。結(jié)果如圖 2.8(b) 。注意,在做笛卡兒積時各個域中的元素不能搞混。

          ?

          ??? 元組.jpg

          ?

          ?

          附:其他類型舉例:

          -----------------------------------------------------------------------------------------

          ?

          1 、下列等式中恒等的是:

          ?

          π A1,A2 ( σ F (E))≡ σ F ( π A1,A2 (E))

          σ F (E 1 × E 2 )≡ σ F (E 1 ) ×σ F (E 2 )

          σ F (E 1 -E 2 )≡ σ F (E 1 )- σ F (E 2 )

          π A1,A2,B1,B2 (ECROSS.gifE)≡ π A1,A2 (E) CROSS.gifπ B1,B2 (E)

          ?

          當(dāng) F 包含 A1,A2 以外的限制 ,不恒等

          當(dāng) F 包含大于 E1( E2) 個數(shù) 的限制 ,不恒等

          恒等

          等式不可能成立,右 邊沒 有相同

          ?

          2 、以下元 的意

          ?

          {t|( ? u)((R(u) S(u)) ( ? v)(T(v)→( ? w)((R(w) S(w)) w[1]=u[1] w[2]=v[1] w[3]=v[2])) t[1]=u[1]}

          ?

          據(jù) 是表示 R S ÷ T 的意思,但是我 在是看不

          ?

          3 、以下元 達(dá) 轉(zhuǎn)換為關(guān) 系代 數(shù) 達(dá)

          ?

          {t| ? u ? v(R(u) S(v) u[3]=v[1] u[4]=v[2] u[1]>v[3] t[1]=u[2])}

          其中 R(A,B,C,D) S(C,D,E)

          ?

          關(guān) 系代 數(shù) 達(dá) π B ( σ A>E (RCROSS.gifS))

          ?

          4 、把下列 關(guān) 系代 數(shù) 達(dá) 轉(zhuǎn)換為 達(dá)

          ?

          π 1,4 (RCROSS.gifS)

          其中 R(A,B,C) S(B,D)

          ?

          演算表 達(dá) {t| ? u ? v(R(u) S(v) u[2]=v[1] t[1]=u[1] t[2]=v[2])}

          ?

          5 關(guān) 系代 數(shù) 達(dá) 演算表 達(dá)

          ?

          π 1,5,6 ( σ 1>5 (R×S)) -- 注意中 是乘法不是自然

          其中 R(A,B,C) S(A,B,C)

          ?

          {t| ? u ? v(R(u) S(v) u[1]>v[2] t[1]=u[1] t[2]=v[2] t[3]=v[3])}

          ?

          6 、下列 查詢 效率最高的一 是:

          ?

          E1= π A,D ( σ B<'2007' R.C=S.C E='80' (R × S))

          E2= π A,D ( σ R.C=S.C ( σ B<'2007' (R) ×σ E='80' (S)))

          E3= π A,D ( σ B<'2007' (R) CROSS.gifσ E='80' (S))

          E4= π A,D ( σ B<'2007' E='80' (RCROSS.gifS))

          ?

          答案是 ,很明 自然 接要 優(yōu) 于笛卡爾 ,先 運(yùn) 算再投影 優(yōu) 先投影再

          ?





          -The End-

          posted on 2009-04-24 23:31 decode360-3 閱讀(2666) 評論(0)  編輯  收藏 所屬分類: Exam
          主站蜘蛛池模板: 宜良县| 阳曲县| 象山县| 开远市| 景东| 乃东县| 焦作市| 奎屯市| 临邑县| 韩城市| 宁乡县| 清涧县| 苍溪县| 收藏| 安阳市| 若尔盖县| 孙吴县| 射洪县| 天峻县| 安新县| 抚松县| 万安县| 萝北县| 盐城市| 安平县| 青河县| 云梦县| 枞阳县| 宁蒗| 阜平县| 雷山县| 辽宁省| 高邑县| 巩义市| 南投县| 光山县| 林周县| 金华市| 柳州市| 页游| 乌拉特中旗|