超详细分析,因为难以下手,转载后注明出处,点赞后转发。 谢谢您的支持
关系代数为抽象查询语言关系代数的运算对象和运算结果均为3358www.Sina.com/,运算结果也为关系
集合运算
将关系视为元组的集合,将元组作为集合中的要素进行集合运算
集合运算为典型的3358www.Sina.com/(笛卡儿积除外)、交、差操作均为关系
具有相同程度(即两个关系的属性名称、属性数量必须一致);
关系r的第I个属性和关系s的第I个属性必须来自同一个域。
并(Union )运算: r(s={t|t(r(t(s} )其中t是元组
并行运算示例:结合两个集合,消除重复
R S=
(交互)运算:新关系其中t是元组
运算示例:在两个关系中选择相同的元组
R S=
差运算:二目运算其中t是元组,R-S差=R减去r与s的交集
差运算例: R-S之差=从r中减去r和s的交点
R - S=
笛卡儿积:相容性域的笛卡儿积=域的基数相乘
而且,集合的笛卡儿积也是如此。 将集合内的元组个数视为域的基数进行乘法运算的话,可以得到集合的笛卡儿积
笛卡儿积的例子: r中的3组 S中的3组=9,诞生的新关系有9组
R S=
关系运算
选择(selection )运算:f(r )={t|t(r(f ) t )=‘真’}
r从关系表中选择与关系f相应元组t
选择运算例(根据t关系选择年龄在18岁以上的男性
(sex=‘男人’(age 18 ) ) t )=
射影(projection (运算) a(r )={ t[A]| tR }从r关系表内射影各元组的a列,构成新的关系
投影演算例:投影t关系中的名称、年龄2列
(Name,age(t )=
选择投影组合运算。 a(f(r ) )可以从特定组投影特定列
从r关系中选择满足f条件的元组,从这些元组内投影特定的a列
选择投影组合演算例:选择t关系年龄在18岁以上的男性,投影该关系的名称、年龄2列
(Name,age((sex=‘男人’(age 18 ) ) t ) )=
连接(join ) :两种连接,也称为连接,使用公共属性连接两个表
等值连接: r.a=s.b(a、b属性名称可以不同也可以相同)R S = { t | tR tS }
这里,r和s是关系表,a、b分别是关系r、s上的可比较属性组(a、b的两个属性组的域相同,称为可比较属性组) )。
称为比符号,即、=符号;
当两边属性相等时,等值s连接成立;
等值连接的结果是,从关系r和关系s的笛卡儿积中选择属性组AB相等的组,即(a=b ) (RS )
等值连接示例:学生关系s和课程关系c等值连接
(sc=(ts (TC|ts ) (TC (c (ts [ cno ]=TC [ cno ] ) )公式
结果,可以认为从SC的笛卡儿积内选择了S.CNO=C.CNO的组,(CnO=CnO ) ) SC )
自然连接: R.A=
S.A(必须有相同的属性名且域相同才可以进行自然连接)语法:R ⋈S = { tr ⌒ ts | tr ∈ R ∧ ts ∈ S ∧ tr[A] = ts[A] }
特殊的等值连接,比较的分量必须是同一属性组
在等值连接的基础上去掉重复的属性列
自然连接实例:学生关系S 与 课程关系C进行自然连接
公式:S ⋈ C = { ts ⌒ tc | ts ∈ S ∧ tc ∈ C ∧ ts[CNO] = tc[CNO] }
自然连接与等值连接的区别与联系
⊙自然连接要求同名同域的属性组才可连接,而等值连接仅要求域相同;
⊙自然连接是去掉重复列的等值连接;
⊙自然连接一定是等值连接,而等值连接不一定是自然连接;
⊙自然连接后列的数量小于等于等值连接后列的数量。
除运算核心步骤:设R、S为关系,X、Y、Z为属性集
1. 分出X、Y、Z三个属性集
2. 列出S对Y属性集的投影
3. 找出R中满足x值对应的象集包含了关系S对Y属性集的x值
除法运算需满足的条件:设有关系R(X,Y)、S(Y,Z),其中X,Y,Z为属性集合,R中的Y与S中的Y可以有不同的属性名,但对应的属性组必须来自同一域
由于除运算比较抽象难理解,在此详细解析(结合图解):
关系R和关系S共有的属性集是Y,而R÷S得到的值就是关系R对Y属性组的投影,即X属性组(S关系内没有的),而这X属性组还需满足特定条件(元组在X属性组上的分量值x的象集YX包含了S对Y属性组的投影集合)。
按步骤来求R÷S:
①分出X、Y、Z三个属性集:X属性集是R特有的,Y为公共的,Z为S特有的;
②求出S对Y属性集的投影:∏C,D(S)=
得到投影∏C,D(S) = { (c4,d5) , (c3,d5) };
③列出X属性组的全部x分量的象集,看下哪个象集包含了第②步求到的投影,那么这些x分量就是R÷S的商:
在R中,X属性组可取分量x:{ (a1,b2) , (a2,b4) , (a3,b5) }
(a1,b2)对应象集:{ (c4,d5) , (c3,d5) };
(a2,b4)对应象集:{ (c1,d3) };
(a3,b5)对应象集:{ (c2,d8) };
只有(a1,b2)的象集YX包含了S对Y属性集的投影集合
故R÷S = {(a1,b2)}
图片有错:CD改为AB