关系代数 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