DBMS - 關係代數



關係資料庫系統應該配備一種查詢語言,以幫助使用者查詢資料庫例項。有兩種查詢語言——關係代數和關係演算。

關係代數

關係代數是一種過程化查詢語言,它將關係的例項作為輸入,併產生關係的例項作為輸出。它使用運算子執行查詢。運算子可以是**一元**的或**二元**的。它們接受關係作為輸入,併產生關係作為輸出。關係代數在關係上遞迴執行,中間結果也被認為是關係。

關係代數的基本運算如下:

  • 選擇
  • 投影
  • 並集
  • 集合差
  • 笛卡爾積
  • 重新命名

我們將在接下來的章節中討論所有這些操作。

選擇運算 (σ)

它從關係中選擇滿足給定謂詞的元組。

**符號** − σp(r)

其中σ代表選擇謂詞,r代表關係。p 是命題邏輯公式,可以使用and、ornot等連線詞。這些術語可以使用關係運算符,例如 − =、≠、≥、<、>、≤。

**例如** −

σsubject = "database"(Books)

**輸出** − 選擇學科為“資料庫”的圖書元組。

σsubject = "database" and price = "450"(Books)

**輸出** − 選擇學科為“資料庫”且“價格”為 450 的圖書元組。

σsubject = "database" and price = "450" or year > "2010"(Books)

**輸出** − 選擇學科為“資料庫”且“價格”為 450 或出版日期在 2010 年以後的圖書元組。

投影運算 (∏)

它投影滿足給定謂詞的列。

符號 − ∏A1, A2, An (r)

其中 A1, A2 , An 是關係r的屬性名。

由於關係是一個集合,所以會自動消除重複的行。

**例如** −

subject, author (Books)

從 Books 關係中選擇並投影名為 subject 和 author 的列。

並集運算 (∪)

它對兩個給定的關係執行二元並集,定義如下:

r ∪ s = { t | t ∈ r or t ∈ s}

**符號** − r U s

其中rs是資料庫關係或關係結果集(臨時關係)。

要使並集運算有效,必須滿足以下條件:

  • rs必須具有相同數量的屬性。
  • 屬性域必須相容。
  • 重複的元組會自動消除。
author (Books) ∪ ∏ author (Articles)

**輸出** − 投影寫過書或文章或兩者都寫過的作者的姓名。

集合差 (-)

集合差運算的結果是存在於一個關係中,但不存在於第二個關係中的元組。

**符號** − rs

查詢存在於r中但不屬於s的所有元組。

author (Books) − ∏ author (Articles)

**輸出** − 提供寫過書但沒寫過文章的作者的姓名。

笛卡爾積 (Χ)

將兩個不同關係的資訊組合成一個關係。

**符號** − r Χ s

其中rs是關係,它們的輸出將定義為:

r Χ s = { qt | q ∈ r 且 t ∈ s}

σauthor = 'tutorialspoint'(Books Χ Articles)

**輸出** − 生成一個關係,顯示 tutorialspoint 編寫的全部書籍和文章。

重新命名運算 (ρ)

關係代數的結果也是關係,但沒有名稱。重新命名操作允許我們重新命名輸出關係。“重新命名”操作用小寫希臘字母rho ρ表示。

**符號** − ρ x (E)

其中表達式E的結果以x命名儲存。

附加運算:

  • 集合交集
  • 賦值
  • 自然連線

關係演算

與關係代數相反,關係演算是一種非過程化查詢語言,也就是說,它說明做什麼,但從不解釋怎麼做。

關係演算存在兩種形式:

元組關係演算 (TRC)

過濾變數範圍超過元組

**符號** − {T | 條件}

返回滿足條件的所有元組 T。

**例如** −

{ T.name |  Author(T) AND T.article = 'database' }

**輸出** − 返回來自 Author 關係中寫過關於“資料庫”文章的作者的“name”元組。

TRC 可以被量化。我們可以使用存在量詞 (∃) 和全稱量詞 (∀)。

**例如** −

{ R| ∃T   ∈ Authors(T.article='database' AND R.name=T.name)}

**輸出** − 以上查詢將產生與前一個查詢相同的結果。

域關係演算 (DRC)

在 DRC 中,過濾變數使用屬性的域,而不是整個元組值(如上面提到的 TRC 中所做的那樣)。

**符號** −

{ a1, a2, a3, ..., an | P (a1, a2, a3, ... ,an)}

其中 a1, a2 是屬性,P 代表由內部屬性構建的公式。

**例如** −

{< article, page, subject > |  ∈ TutorialsPoint ∧ subject = 'database'}

**輸出** − 從 TutorialsPoint 關係中生成 Article、Page 和 Subject,其中 subject 為資料庫。

與 TRC 一樣,DRC 也可以使用存在量詞和全稱量詞編寫。DRC 還涉及關係運算符。

元組關係演算和域關係演算的表達能力等同於關係代數。

廣告
© . All rights reserved.