【前言】
软考的日子越来越近了,我对于知识的学习也仅仅停留在做题上,及时总结的好习惯,需要一点一滴积累。
【正文】
总览
一句话总结:五基四组两扩充,关系代数一路通。
详细介绍
一、关系代数的五个基本操作
举例用到两个关系:
1 .并(Union)
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如: R∪S = { t |t ∈R V t ∈S},t是元组变量,R和S的元数相同。
2 . 差(Difference)
设关系R和S具有相同的关系模式,R和S的差是由于属于R但不属于S的元组构成的集合,记为R - S。形式定义如: R - S ={ t|t ∈R V t ?S},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 }
此处tr 、 ts 中的r,s 为上标。若R有m个元组,S有n个元组,则R×S有m × 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}
注意 :投影主要是从列的角度进行运算,投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复)。
5 .选择(Selection)
选择操作又称限制,是根据某些条件做水平分割,即选取符合条件的元组。条件可用命题公式(即计算机语言中的条件表达式)F表示。F中两种成分:
运算对象:常数(用引号括起来),元组分量(属性名或列 的序号)。
运算符:算术比较运算符(<,<=, > ,>= ,=,≠),逻辑运算符(∧,∨,?)。
关系R关于公式F的选择操作用sF(R)表示,形式定义如下:
sF(R) = {t ∣ t ∈ R ∧ F(t) =true },s为选择运算符,sF(R)表示从R中挑选满足公式F为真的元组所构成的关系。
二、四个组合操作
1 .交(Intersection)
关系R和S的交是由属于R又属于S的元组构成的集合,记为R∩S,这里要求R和S定义在相同的关系模式上。形式定义如下:
R∩S ={ t ∣ t ∈ R ∧ t ∈ S } ,R和S的元数相同。
2 .连接(Join )
连接是从关系R和S的笛卡尔积中选取属性值满足某一θ操作的元组,记为
,这里的i 和j 分别是关系R和S的第i 个、第j 个属性的序号。形式定义如下:
注意:一般的连接操作是从行的角度进行运算
3 .自然连接(Natual join)
两个关系R和S的自然连接操作用R S 表示,具体计算过程如下:
l 计算R × S ;
l 设R和S 的公共属性是A1,…,AK,挑选R×S 中满足 R.A1=S.A1,…,R.AK=S.AK的那些元组;
l 去掉S.A1,…,S.AK这些列。
因此R ? S可用下式定义:
R ? S=Πi1,…,im (sR.A1=S.A1∧…∧R.AK=S.AK(R×S)),其中i1,…,im 为R和S的全部属性,但公共属性只出现一次。
R ? S = ΠA,R.B,R.C,D(sR.B=S.B∧R.C=S.C(R×S))
一般自然连接使用在R和S有公共属性的情况中。如果两个关系没有公共属性,那么其自然连接就转化为笛卡尔积操作。
注意:自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
4 .除法(Division)
设关系R和S的元数分别是r 和s(设r> s> 0),那么R÷S是一个(r-s)元的元组的集合。(R÷S)是满足下列条件的最大关系:其中每个元组t 与s中每个元组u组成的新元组<t,u>必在关系R中。为方便起见,我们假设S的属性为R中后
S个属性。
R ÷ S 的具体计算过程如下:
l T = π1,2,…,r-s(R)
l W = (T×S) – R(计算T×S中不在R的元组)
l V = π1,2,…, r-s(W)
l R ÷ S = T - V
即 R ÷ S = π1,2,…,r-s(R) -π1,2,…, r-s((π1,2,…r-s(R) ×S) - R)
例:关系R是÷学生选修课程的情况,关系COURSE1、COURSE2、COURSE3分别表示课程情况,而操作R ÷ COURSE1、R ÷ COURSE2、R ÷ COURSE3中列课程的学生名单。
注意:除操作是同时从行和列的角度进行运算
【后续】
通过做软考题越来越发现,考试不是学习的最终目的,通过考试学会方法去学习,不断锻炼和培养自己的学习能力,让学习更加有方向和动力,还要打好扎实的基础,仅是做到看过是不够的,更加要做的是多多动手实践一遍,才会了解自己是不是真的掌握了。不足之处请大家多多提意见~~