1.关系代数中的操作可以分为两类:
传统的集合操作:并、差、交、笛卡儿积
扩充的关系操作:投影、选择、连接、除法
2.关系代数的五个基本操作:
并、差、笛卡儿积、投影、选择
3.关系代数的四个组合操作:
交、连接、自然连接、除法
五个基本操作
1.并(Union)
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如下: R∪S≡{t | t∈R ∨ t∈S},t是元组变量,R和S的元数相同。
2.差(Difference)
设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。形式定义如下: R-S≡{ t | t∈R ∧ tS},R和S的元数相同。
3.笛卡儿积(Cartesian Product)
设关系R和S的元数分别为r和s,定义R和S的笛卡儿积是一个(r+s)元的元组的集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组,记为R×S。形式定义如下: R×S≡{t | t=<tr,ts>∧tr∈R∧ts∈S} 若R中有m个元组,S中有n个元组,则R×S有m×n个元组。
4.投影(Projection)
这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。 设关系R是k元关系,R在其分量Ai1,…,Aim(m≤k,i1,…,im为1到k间的整数)上的投影用πi1,…,im(R)表示,它是一个m元元组集合,形式定义如下: πi1,…,im(R)≡{t|t=<ti1,…,tim>∧<t1,…,tk>∈R} 例如,π3,1(R)表示关系R中取第1、3列,组成新的关系,新关系中第1列为R的第3列,新关系的第2列为R的第1列。如果R的每列标上属性名,那么操作符π的下标处也可以用属性名表示。例如,关系R(A,B,C),那么πC,A(R)与π3,1(R)是等价的。
5.选择(Selection)
选择操作是根据某些条件对关系做水平分割,即选取符合条件的元组。条件可用命题公式(即计算机语言中的条件表达式)F表示。F中有两种成分:运算对象:常数,元组分量 运算符:算术比较运算符和逻辑运算符 关系R关于公式F的选择操作,用σF(R)表示,形式定义如下: σF(R)={ t | t∈R ∧ F(t)= true } σ为选择运算符,σF(R)表示从R中挑选满足公式F为真的元组所构成的关系。 例如,σ2>ˊ3ˊ(R)表示从R中挑选第2个分量值大于3的元组所构成的关系。书写时,为了与属性序号区别起见,常量用引号括起来,而属性序号或属性名不要用引号括起来。
四个组合操作:
1.交(intersection)
关系R和S的交是由属于R又属于S的元组构成的集合,记为R∩S,这里要求R和S定义在相同的关系模式上。形式定义如下: R∩S≡{t︱t∈R ∧ t∈S},R和S的元数相同。 由于R∩S = R-(R-S),或R∩S = S-(S-R),因此交操作不是一个独立的操作。 在上例中,R∩S的结果是只有一个元组(d,a,f)。
2.连接(join)
连接有两种:θ连接和F连接(这里θ是算术比较符,F是公式)。 ① θ连接 R ⋈ S≡{t︱ t=<tr,ts> ∧ tr∈R ∧ ts∈S ∧triθtsj } 等价于R ⋈ S≡ σiθ(r+j)(R×S) ② F连接 F连接是从关系R和S的笛卡儿积中选取属性间满足某一公式F的元组, 这里F是形为F1∧F2∧…∧Fn的公式,每个FP是形为iθj的式子,而i和j分别为关系R和S的第i、第j个分量的序号。
3.自然连接(natural join)
两个关系R和S的自然连接操作具体计算过程如下: ① 计算R×S ; ② 设R和S的公共属性是A1,…,Ak,挑选R×S中满足R.A1=S.A1,…,R.Ak=S.Ak的那些元组; ③去掉S.A1 ,…, S.Ak 这些列。 定义: R ⋈ S≡πi1,…,im (σR.A1=S.A1∧... ∧R.Ak=S.Ak(R×S)),其中i1,…,im为R和S的全部属性,但公共属性只出现一次。
4.除法(division)
设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的元组的集合。(R÷S)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组<t,u>必在关系R中。 定义如下: R÷S≡π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)。
重点掌握笛卡尔积和自然连接即可,其余重要级要小一些。