- 關係資料庫設計
- DBMS - 資料庫規範化
- DBMS - 資料庫連線
- 儲存和檔案結構
- DBMS - 儲存系統
- DBMS - 檔案結構
- 事務和併發
- DBMS - 事務
- DBMS - 併發控制
- DBMS - 死鎖
- 備份和恢復
- DBMS - 資料備份
- DBMS - 資料恢復
- DBMS 有用資源
- DBMS - 快速指南
- DBMS - 有用資源
- DBMS - 討論
DBMS - 關係代數
關係資料庫系統應該配備一種查詢語言,以幫助使用者查詢資料庫例項。有兩種查詢語言——關係代數和關係演算。
關係代數
關係代數是一種過程化查詢語言,它將關係的例項作為輸入,併產生關係的例項作為輸出。它使用運算子執行查詢。運算子可以是**一元**的或**二元**的。它們接受關係作為輸入,併產生關係作為輸出。關係代數在關係上遞迴執行,中間結果也被認為是關係。
關係代數的基本運算如下:
- 選擇
- 投影
- 並集
- 集合差
- 笛卡爾積
- 重新命名
我們將在接下來的章節中討論所有這些操作。
選擇運算 (σ)
它從關係中選擇滿足給定謂詞的元組。
**符號** − σp(r)
其中σ代表選擇謂詞,r代表關係。p 是命題邏輯公式,可以使用and、or和not等連線詞。這些術語可以使用關係運算符,例如 − =、≠、≥、<、>、≤。
**例如** −
σ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
其中r和s是資料庫關係或關係結果集(臨時關係)。
要使並集運算有效,必須滿足以下條件:
- r和s必須具有相同數量的屬性。
- 屬性域必須相容。
- 重複的元組會自動消除。
∏ author (Books) ∪ ∏ author (Articles)
**輸出** − 投影寫過書或文章或兩者都寫過的作者的姓名。
集合差 (-)
集合差運算的結果是存在於一個關係中,但不存在於第二個關係中的元組。
**符號** − r − s
查詢存在於r中但不屬於s的所有元組。
∏ author (Books) − ∏ author (Articles)
**輸出** − 提供寫過書但沒寫過文章的作者的姓名。
笛卡爾積 (Χ)
將兩個不同關係的資訊組合成一個關係。
**符號** − r Χ s
其中r和s是關係,它們的輸出將定義為:
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 還涉及關係運算符。
元組關係演算和域關係演算的表達能力等同於關係代數。