資料處理 Relational Model (1)

基本介紹

教學目標

初步了解資料庫領域的理論基礎 - 關聯式模型 (Relational Model)。

重點概念

理論基礎

SQL 不等於關聯式模型,關聯式模型並非與特定產品有關,而是一種理論基礎,代表其它事件依據或洐生的根本,在關聯式模型中我們將資料表對應關聯,列對應值列 (tuple) ,欄對應屬性,以及型別對應值域。原始模型主要可分為結構、完整和操作。

  • 結構
    結構的特色主要就是關係,關係主要按照值域所定義,也就是值的概念群集,其中實際關係的屬性會附著實際的值,其中 N 個屬性代表 N 階關係,此外每個關係附支援不同的鍵,主要可分為候選鍵主要是指每個關係至少都有一個候選鍵,同時也是唯一識別,以及外來鍵主要是指關係中的一組屬性,其值必需對應其它關係中候選鍵的值。

  • 完整
    任何資料庫都有許多特定限制條件必須符合,並且以關係表示,主要以布林運算式表示,其運算值必須為「真」,也就是完整性限制, 此外每個關係皆適用兩個通用限制,主要可分為實體完整性主要是指主鍵的屬性不可以是空值 (NULL),以及參考完整性主要是指不允許有任何未對應外來鍵的屬性。

  • 處理
    處理可以分為兩種,第一種為關聯式代數的關係運算子主要是指任何關係運算子皆定義成符合至少輸入一個關係,但是只輸出一個關係的條件,其中運算子包括限制、投影、乘積、交集、聯集、差集、合併、除法、延展和摘要,相當於 SQL 中 WHERE 、 HAVING 和 JOIN 等應用。第二種為關聯式指定運算子主要是指將某些關聯運算式的值指派至關係中,任何關係運算子皆會定義成符合至少輸入一個關係,而得出另一個關係,同時也因為封閉性因此能夠寫出巢狀關聯運算式,其中運算子包括插入、刪除、更新,相當於 SQL 中 CREATE 、 UPDATE 、 DELETE 等應用。

然而每個關係皆有標頭和本體,標頭代表一群屬性,本體則是一群符合標頭的值列 (Tuple),然而關係絕不會帶重複的值列,因為本體是值列的集合,集合並不包含重複的元素,有趣的是 SQL 並不符合這項特性,故我們可以透過 DISTINCT 和 GROUP BY 進行處理,以及集合不沒有順序關係,可是 SQL 卻能透過 ORDER BY 進行排序優化顯示結果,並非關係的運算子。

最後關係又可分為基本關係和衍生關係,差別在於若我們能透過運算中得出更多的關係即是基本關係,反之則是衍生關係,關係的值永遠是依當下運算特定關聯運算式的結果為主,相當於 SQL 中檢視表之應用,此外實體儲存的資料和基本關係必需有某種對應,以便需要時快速建立出基本關係,相當於 SQL 中索引、雜湊、分割和叢集等應用。

名詞定義

  • 值列
    假設 T1、T2、…、Tn (n > -1) 是型別名稱,且不一定完全不同。每個 Ti 各搭配不同的屬性名稱 Ai,所得出的每個「屬性名稱」和「型別名稱」的組合即是屬性。接著每個屬性搭配一個屬於 Ti 型別的值 vi,所得出的 n 個「屬性 : 值」組合就是元件,如此定義的 n 元件之集合,假設叫 t 帶著屬性 A1、A2、…、An 的值即是值列,其中 n 是 t 的階數,通常 n 階值列即是 n 元,此時全部 n 個屬性的集合 即是 t 的標頭。

  • 關係
    假設 {H} 是值列的標頭,而且 t1、t2、…、tm (m > -1) 是帶標頭的不 tuple,則標頭與值列集合 {t1,t2,…,tm} 的組合,假設叫 r ,其帶著屬性 A1、A2、…、An 的值即是關係。此外 A1、A2、…、An 是標頭內的屬性,r 的標頭是 {H},所以 r 和標頭一樣具有相同的屬性及階數,因此 r 的本體是值列的集合 {t1,t2,…,tm},m 值為 r 的基數。

  • 候選鍵
    假設 K 是關係變數 R 之標頭的子集,則當 K 能完全符合唯一性和最簡性時,K 即是 R 的候選鍵,其中唯一性指的是 R 不可能有兩個不同值列帶相同的 K 值,最簡性指的是 K 的真子集都不具唯一性,其中真子集指的是若 B 為 A 的子集合和 A 是 B 的超集合則包含 A 可能與 B 相等之可能性,則真子集會將其可能性排除。

  • 外來鍵
    假設 R1 與 R2 是關係,但未必不同,而且假設 K 是 R1 的鍵,FK 是 R2 標頭的子集,則可能經過屬性重新命名之後,會得到和 K 一樣的屬性。所以當 R2 內每個值列總是有個 FK 值和 R1 內某個必然唯一的值列之
    K 值相等時,則 FK 即是外來鍵。

  • 衍生關係
    關係 V,是把 t 時點衡量某關聯運算式的結果當成值的關係,則該運算式是在定義 V 時所訂,而且必須提到至少一個關係。

相關資源