《數據庫系統概念》8-選擇、投影等關系運算
關系代數 Relational Algebra中,一元運算符有選擇select、投影project、重命名remane,其余的包括並運算union、集合差set diffetence、笛卡爾積cartesian product等為二元運算符。下面學習它們的基本使用。
一、一元運算符
a)選擇
選擇的操作符為小寫sigma(σ),比如選擇物理系的教師,可以寫為:
σdept_name=”Physics”(instructor)(標準的寫法中dept_name=”Physics”屬於σ的下標)。
還可以使用比較運算、與∧、或∨、非?等,薪水大於90000的物理系教師:
σdept_name=”Physics”∧salary>90000(instructor)
查詢部門名稱與所在辦公樓同名的部分:
σdept_name=building(department)
需要註意的是關系代數中的select並不與SQL中的select對應,與之對應的是SQL的where子句
b)投影
投影的操作符為大寫pi(Π),可以選擇性的顯示關系的某些屬性,SQL的select ID, name, salary from instructor 可以表示為:
ΠID, name, salary (instructor )
c)關系運算的組合
關系運算的結果還是關系,基於這一點,可以將關系運算組合使用,比如查找表達物理系老師的姓名,可以表示為:
Πname (σdept name = “Physics” (instructor))
這兒將選擇運算的結果作為了投影運算的參數
d)重命名
重命名的符號為小寫rho(ρ):
ρx(E)表示將關系E重命名為x
ρx(a1,a2...)(E)則將E對應的屬性也重命名為a1,a2...
二、二元運算符
a)並運算Union
並運算為二元運算符,用於合並兩個相同結構的集合,之前查詢過2009年秋季和2010年春季都開課的課程ID,可以表示為:
Πcourse id (semester = “Fall”∧ year=2009 (section))
∪
Πcourse id (semester = “Spring”∧ year=2010 (section))
union運算的符號為∪,參加union運算的關系必須有相同數目的屬性,而且對於合並位的屬性類型必須相同。
b)集合差運算Set-Difference
集合差運算的符號位減號-,r-s的結果為存在於r中但不存在於s中的元組。集合差運算對集合的要求與union相同。
c)笛卡爾積Cartesian Product
笛卡爾積的符號為×,instructor×teaches的結果為教師與課程間所有可能的的組合情況,但這樣往往沒什麽實用意義,除了教師與課程能對應起來的元組,這些元組可以篩選為:
σinstructor .ID = teaches.instcuctor_ID (dept name =”Physics”(instructor × teaches))
學習資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan
?
《數據庫系統概念》8-選擇、投影等關系運算