DBMS關係代數


關係代數是一種過程查詢語言,它提供了一步一步的過程來獲取查詢的結果。 它使用運算子來執行查詢。

關係操作的型別

1. 選擇操作

  • 選擇(select)操作選擇滿足給定謂詞的元組。
  • 它由西格瑪(σ)表示。
符號:  σ p(r)

其中:

  • σ 用於選擇預測
  • r 用於關係
  • p 用作命題邏輯公式,可以使用以下連線符:AND ORNOT。這些關係可以用作關係運算子,如:=<>

例如 : LOAN關係

BRANCH_NAME LOAN_NO AMOUNT
Downtown L-17 1000
Redwood L-23 2000
Perryride L-15 1500
Downtown L-14 1500
Mianus L-13 500
Roundhill L-11 900
Perryride L-16 1300

輸入:

σ BRANCH_NAME="perryride" (LOAN)

輸出:

BRANCH_NAME LOAN_NO AMOUNT
Perryride L-15 1500
Perryride L-16 1300

2.專案操作

此操作顯示希望在結果中顯示的那些屬性的列表。其餘屬性從表中消除。
它用Π表示。

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

其中,

A1A2A3用作關係r的屬性名稱。

範例 : 客戶關係

NAME STREET CITY
Jones Main Harrison
Smith North Rye
Hays Main Harrison
Curry North Rye
Johnson Alma Brooklyn
Brooks Senator Brooklyn

輸入 -

∏ NAME, CITY (CUSTOMER)
NAME CITY
Jones Harrison
Smith Rye
Hays Harrison
Curry Rye
Johnson Brooklyn
Brooks Brooklyn

3.聯合操作

假設有兩個元組RS。並集操作包含RS中的所有元組或R&S中的兩個元組。
它消除了重複的元組。它使用表示。

符號 : R ∪ S

聯合操作必須符合以下條件:

  • RS必須具有相同數量的屬性。
  • 自動消除重複的元組。

範例:存款人關係

CUSTOMER_NAME ACCOUNT_NO
Johnson A-101
Smith A-121
Mayes A-321
Turner A-176
Johnson A-273
Jones A-472
Lindsay A-284

借款人關係

CUSTOMER_NAME LOAN_NO
Jones L-17
Smith L-23
Hayes L-15
Jackson L-14
Curry L-93
Smith L-11
Williams L-17

輸入:

∏ CUSTOMER_NAME (BORROW) ∪ ∏ CUSTOMER_NAME (DEPOSITOR)

輸出 -

CUSTOMER_NAME
----------------------------------------
Johnson
Smith
Hayes
Turner
Jones
Lindsay
Jackson
Curry
Williams
Mayes

4. 集合交集

假設有兩個元組RS,集合交集操作包含R&S中的所有元組。
它用交叉符號表示。

 R ∩ S

範例: 使用上面的存款人(DEPOSITOR)表和借款人(BORROW)表

輸入:

∏ CUSTOMER_NAME (BORROW) ∩ ∏ CUSTOMER_NAME (DEPOSITOR)

輸出:

CUSTOMER_NAME
--------------------------------
Smith
Jones

5. 集合差集

假設有兩個元組RS。集合交集操作包含R中但不在S中的所有元組。它由交叉減號( - )表示。

R - S

範例: 使用上面的存款人(DEPOSITOR)表和借款人(BORROW)表

輸入:

∏ CUSTOMER_NAME (BORROW) - ∏ CUSTOMER_NAME (DEPOSITOR)

輸出結果:

CUSTOMER_NAME
---------------------------
Jackson
Hayes
Willians
Curry

6. 笛卡爾積

笛卡爾積用於將一個表中的每一行與另一個表中的每一行組合。 它也被稱為交叉產生
它用X表示。

E X D

範例:EMPLOYEE

EMP_ID EMP_NAME EMP_DEPT
1 Smith A
2 Harry C
3 John B

DEPARTMENT

DEPT_NO DEPT_NAME
A Marketing
B Sales
C Legal

輸入:

EMPLOYEE X DEPARTMENT

輸出:

EMP_ID EMP_NAME EMP_DEPT DEPT_NO DEPT_NAME
1 Smith A A Marketing
1 Smith A B Sales
1 Smith A C Legal
2 Harry C A Marketing
2 Harry C B Sales
2 Harry C C Legal
3 John B A Marketing
3 John B B Sales
3 John B C Legal

7. 重新命名操作

重新命名操作用於重新命名輸出關係,它由rho(ρ)表示。
範例: 使用重新命名運算子將STUDENT關係重新命名為STUDENT1

ρ(STUDENT1, STUDENT)

注意:除了這些常見操作之外,可以在連線(join)操作中使用關係代數。