1 数据库五种运算
五种基本的关系代数运算,
并(符号为V)、差(符号为^)、投影()、笛卡尔积、选择,
补充关系代数运算有,交、连接、除、广义投影、外连接。
css
笛卡尔积 ,从数学角度理解,就是将集合A和集合B中所有有序对元素集合
2 数据库中选择,投影,连接,除法运算
选择运算: 查询
markdown
是数据库选择关系中 行的子集,即选择满足条件的元组
投影:是选取关系中列的子集,设模式R的关系r,X是R上属性的子集 x就是列,r到X上的投影r' 表示
markdown
r'(X) = ...
投影操作是从列的角度做 行的运算。
投影的结果不是原有的关系,是X中几列的属性。
由于投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列之后,就可能出现重复行,投影结果不应该包括重复行。
连接 Join 自然连接,等值连接
定义:连接也称之为 0连接,它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
-
等值连接
cssθ为 = 符号的连接运算称为等值连接。 它是从关系R与S的广义笛卡尔积中选取A , B 属性值相等的那些元组。
-
自然连接
markdown自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名属性组,并且在结果中把重复的属性列去掉。 等值连接和自然连接的区别是,自然连接是去除了重复的属性列的。
-
除法运算 division
r设关系R除以关系S的结果为关系T,则T包含全部在R但不在S的属性和值,且T的元组与S的元组的全部组合都在R中。
除法的结果可以用计算象集的方法解决,以一道题为例说明如何求除法。
2.1 除法步骤
1 因为R÷S所得到的属性值 是包含于R,但是S不包含的属性, 所以R➗S得到的属性列有(A,B),S在(C,D)属性上的投影为{(c1,d1),(c2,d2)}
2 关系R中,AB属性可以取值为={(a1,b1),(a2,b2),(a3,b3)}
3 求象集
scss
(a1,b1)={(c1,d1),(c2,d2),(c3,d3)}
(a2,b2)={(c2,d2)}
(a3,b3)={(c1,d1),(c2,d2)}
4 : 从第三步中可以发现,有象集(a1,b1)和(a3,b3)包含了S在(C,D)属性上的投影,所以R÷S={(a1,b1),(a3,b3)}
2.2 示例: 投影和除的例子
投影运算的含义简单点就是:从表中选择需要的属性列。
列是属性,行是元组..
而且作投影之后可能会出现重复项,比如:
css
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c3
作A的投影就是a1, a2; 减少了一行 设R表为:
css
R:
A B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
设S表为:
css
S
B C D
b1 c2 d1
b2 c1 d1
b2 c3 d2
那么 R ➗ S
css
A
a1
(1) 找S与R的共同属性,其元组看做整体 k (2)选择R中包含k的 非S与R相同属性的 属性 即为R÷S
2.2.1 解答过程如下:
在关系R中,A可以取四个值{a1,a2,a3,a4},其中:
a1的象集为:{(b1,c2),(b2,c3),(b2,c1)}就是a1 对应bc属性上的值
a2的象集为:{(b3,c7),(b2,c3)}
a3的象集为:{(b4,c6)}
a4的象集为:{(b6,c6)}
S在(B,C)上的投影为{(b1,c2),(b2,c3),(b2,c1)}。
只取BC两列显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,全部包含,所以R÷S={a1}。
3 小结
总结:
markdown
并:属性不变,元组可能增加(集合相等时不增加)
交:属性不变,元组可能减少(集合相等时不减少)
投影:属性可能减少(全投影时不减少),元组可能减少(投影后无重复项时不减少)
笛卡尔积:属性增加,元组可能增加(只有1个元组时不增加)
数据库 笛卡尔积,选择,投影,除操作中,应该是笛卡尔积最耗费资源和时间,因为属性增加了,计算量也随之而增加。