以下是關系代數中基本操作的詳細說明:
并(Union)
關系R和S的并操作表示為R ∪ S,要求R和S具有相同的屬性集(并相容性)。結果包含所有屬于R或S的元組,自動去除重復項。
示例:
- R = {(1,A), (2,B)}
- S = {(2,B), (3,C)}
- R ∪ S = {(1,A), (2,B), (3,C)}
交(Intersection)
關系R和S的交操作表示為R ∩ S,結果包含同時屬于R和S的元組。
示例:
- R = {(1,A), (2,B)}
- S = {(2,B), (3,C)}
- R ∩ S = {(2,B)}
差(Difference)
關系R和S的差操作表示為R - S,結果包含屬于R但不屬于S的元組。
示例:
- R = {(1,A), (2,B)}
- S = {(2,B), (3,C)}
- R - S = {(1,A)}
笛卡爾積(Cartesian Product)
關系R和S的笛卡爾積表示為R × S,生成所有可能的元組組合。若R有m個元組,S有n個元組,結果將包含m×n個元組。
示例:
- R = {(1,A), (2,B)}
- S = {(X,10), (Y,20)}
- R × S = {(1,A,X,10), (1,A,Y,20), (2,B,X,10), (2,B,Y,20)}
投影(Projection)
投影操作表示為π?(R),從關系R中選擇指定屬性子集A,并去除重復元組。
示例:
- R = {(1,A,X), (2,B,Y), (1,A,Z)}
- π_{1,2}(R) = {(1,A), (2,B)}
選擇(Selection)
選擇操作表示為σ?(R),根據條件P篩選關系R中的元組。條件P可以是邏輯表達式(如A=1 AND B='X')。
示例:
- R = {(1,A,X), (2,B,Y), (3,A,Z)}
- σ_{A='A'}(R) = {(1,A,X), (3,A,Z)}
這些基本操作構成了關系數據庫查詢的理論基礎,更復雜的查詢可以通過這些操作的組合來實現。
自然連接
自然連接的結果顯示全部的屬性列,但是相同屬性列只顯示一次,顯示兩個關系模式中屬性相同并且值相同的記錄。