注:重点掌握投影,选择,自然连接,左外连接,右外连接,全连接,笛卡尔积,注意要理解除的概念和运用
细节是'2'与2的区别,元数与元组的区别
学习方法:根据本节脑子里形成知识点的思维导图,每个知识点对应的题目要熟练掌握。
基本的关系代数运算
1、并(Union)
• 关系R与S具有相同的关系模式,即R与S的元数相同(结构相同),关系R与S“并”
由属于R或属于S的元组构成的集合组成,记作R∪S,其形式定义如下:
基本的关系代数运算
2、差
• 关系R与S具有相同的关系模式,关系R与S的差是由属于R但不属于S的元组构成
的集合,记作R-S,其形式定义如下:
3、广义笛卡儿积
• 两个元数分别为n目和m目的关系R和S的广义笛卡儿积是一个(n+m)列的元组的集合。
元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R×S。
4、投影及广义投影
• 投影是从关系的垂直方向进行运算,在关系R中选择出若干属性列A组成新的关系,记作 π A (R) ,其形式定义如下:
广义投影运算允许在投影列表中使用算术运算,实现了对投影运算的扩充。若有关系R,条件
F1,F2, … ,Fn中的每一个都是涉及R中常量和属性的算术表达式,那么广义投影运算的形式定义为
2、连接
• 分为 θ 连接、等值连接与自然连接
(1) θ 连接:可以由基本的关系运算笛卡儿积和选取运算导出
比较运算符,如>、<、=、 ≠ , X 和 Y 分别为R和S上可以进行比较的属性组。
小技巧:以R表中A列为基准
每次算笛卡尔积是很麻烦的,但是根据一些求值特点可以直接看出来,比如上图中R表中的A列要小于S表中的B列,如2<8.则可就是21468,3<8,就是34568,4<8.则就是46768,组成的三列就再把关系中的表名写上,如图所示:
除了等于,还可以大于,小于,同样没有必要求出来RXS,可以直接找R.A=S.C的
3)自然连接
• 是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集
中将重复属性列去掉。如果没有重复属性,那么自然连接就转化为笛卡儿积。即R.A=S.A,所有相同的属性都必须进行比较,图中的是R.A=S.并且是R.C=S.C,一般是去掉右边的。
具体求得时候:可以找到相同的属性列,去掉一个相同的属性,再找到有没有相等的
sql语句:select * from s,sc where s.xuehao=sc.xuehao
4:除
第一步:找出相同的属性列(本例中相同的是CD)
第二步:先载其中一个表找相同属性列的值(在s表中找到CD,两列的值是(c,d),(e,f)再在另外一个表找与(c.d),(e,f)相同的行,再找到和CD两列不同列的值,(本例中是A,B),而后看A,B两列对应两行的值是否相同,(本例中就是两列都是a,b)在R表中,两行(c,d)(e,f)对应的左边两行的值是相同的,就留下来。
若都么有一样的,那么结果就是一个空集
4、外连接:对连接运算的补充
• 外连接运算是连接运算的扩展,可以处理缺失的信息。
(1)左外连接 ⟕ (左侧为准,右侧填充)
• 取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值NULL填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
首先求自然连接,然后以左边为准找到没有匹配的,右边的值用空值填充
本例中的表bc,de,都能匹配,但是ad,fg两行并没有匹配,则右边需要有空值
2)右外连接 ⟖ (右侧为准,左侧填充)类似左外连接
取出右侧关系中所有与左侧关系中任一元组都不匹配的元组,用空值NULL填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中
1.自然连接,以右侧为基准
(3)全外连接⟗:分别求出左外连接和右外连接,而后求出它们的并集
前面三行是重复的,只需要添加上左外连接的后两行和右外连接的最后一行,去掉重复就可以了
总结:
注:在自然连接中,若没有相同的属性列,则就转化为了笛卡尔积
题目:
1 、 19 年第 39 题
给定关系 R ( A,B,C,D )与 S ( C,D,E,F ),则 R × S 与 R⨝S 操作结果的属性个数分别为( A )。
A. 8, 6 B. 6, 6 C. 8, 8 D. 7, 6
注:RxS是求笛卡尔积,需要把所有属性都写上,只需要在相同的属性前加上表名即可,所以是4+4=8.R⨝S自然连接需要去掉相同的属性CD是相同的,分别保留一个即可,就是4+4-2=6;
注:先自然连接,要求就是R.A=S.A R.C=S.C R.D=S.D,转换为笛卡尔积就是第1列=第5列,对应的就是1=5,其他的类似,中间是且的关系,R.C>S.F对应的列数就是第3列和第9列,注意'3'>'9'(数字3>数字9)和3>9(第3列大于第9列)的区别。投影出来,把不必要的给去除掉。注意自然连接要去除掉相同的属性列,投影的选项是去除掉相同列的,而选择的选项是没有去除掉相同列的(在选项中都是笛卡尔积)。
注:先按照如下示例写出来,从右往左看,先自然连接,而后是A2<2017并且A4=95,再去进行投影,结果里就没有A2,A3列了,再看选项。排除错误答案。
R S
A1 A2 A3 A2 A3 A4 ---->自然连接--->A1 A2 A3 A4-->A2<2017且A4=95,--->投影运算-->A1,A4
A选项明显的错误,应该是并,不是或
B项是先进行A2<2017,A4=95的选择而后笛卡尔积,与题目中的先自然连接是不能等价的
此处应注意,自然连接要求两点1.两个表中有相同的属性,属性对应的值要相等。2.结果集合中要去掉重复的列。可举列子反驳。
C中S仅有3列,不可能有第6列。
D中有选择2=4并且3=5。类似自然连接中要求相同属性对应的值要相同。是正确的。
4 、 17 年第 54 题
有两个关系模式 R(A , B , C , D) 和 S(A , C , E , G) ,则 X=R × S 的关系模式是( C ) 。
A. X(A , B , C , D , E , G) B. X(A , B , C , D)
C. X(R.A , B , R.C , D , S.A , S.C , E , G) D. X(B , D , E , G)
注:笛卡尔积的运算
注:排除各个选项后,可得B是正确的
注:AC明显的错误,选择第2列大于第7列的笛卡尔积结果,但是自然连接后只有5列
'2'>'7'的意思是数字2大于数字7,不是第2列大于第7列
自然连接两要求:1.相同属性对应的值要相同。2,去掉相同属性其中的一列。留下的数值就是结果。
7 、 16 年第 48 、 49 题
关系数据库中通常包含多个表,表与表之间的关联关系通过( B )来实现,通过( D )运算将两个关联的表
合并成一张信息等价的表。
A. 指针 B. 外码 C. 索引 D. 视图
A. 选择 B. 投影 C. 笛卡尔积 D. 自然连接
注:
注:从右往左看,选择在S表中第1列的值小于对应第3列的值的行,如图1所示,而后对此结果,再进行投影,选择A1列和A2列,如图2所示,再用R除以它(除法:在本题中属性是A1,A2)对应的值是(2,1)(3,4)找到在R表中A1 A2对应的也是(2.1)(3,4)的两行,且右边A3对应的值是相同的,如图3所示)除后的结果就是4
图1
图2
图3
外连接:先求自然连接的结果(相同的属性,对应的值也是相等的)如图4所示
图4
左外连接:以左边为基准,把不在自然连接的结果给补齐,如图5所示,元组个数是4
图5
右外连接:以右边为基准,而后补齐,如图6,元组个数为4
图6
全外连接:左外连接和右外连接求并集,前两行是重复的,则是2+2+2=6个元组。
9 、 14 年第 36 、 37 题
给定关系模式 R ( A,B,C,D )和关系 S ( A,C,D,E ),对其进行自然连接运算 R⨝S 后的属性列为( B )个,与σ R.B>S.E ( R⨝S )等价的关系代数表达式为( B )。
(36) A. 4 B. 5 C. 6 D. 8
(37) A. σ 2>8 ( R × S )
B. π 1,2,3,4,8 ( σ 1=5 ∧2>8 ∧ 3=6 ∧ 4=7 ( R × S ))
C. σ '2'>'8' ( R × S )
D. π 1,2,3,4,8 ( σ 1=5 ∧’2‘>’8‘ ∧ 3=6 ∧ 4=7 ( R × S ))
注:好好学习
10 、 12 年第 41~44 题
假设关系 R1 、 R2 和 R3 如下所示:
若进行 R1⨝R2 运算,则结果集分别为( B )元关系,共有( A )个元组;若进行 R2 × σ F<4( R3 )运算,则结果集为( D )元关系,共有( A )个元组。
(41)A.4 B.5 C.6 D.7
(42)A.4 B.5 C.6 D.7
(43)A.5 B.6 C.7 D.8
(44)A.9 B.10 C.11 D.12
注:
11 、 11 年第 30~32 题
若集合 D1={0,1,2} ,集合 D2={a,b,c}, 集合 D3={a,c} ,则 D1 × D2 × D3 应为( A )元组,其结果集的元组个数为( D )。若 D1 ×( D2⨝D3 ),则结果集的元组个数为( C )。
(30) A.3 B.6 C.8 D.9
(31) A.6 B.9 C.12 D.18
(32) A.2 B.3 C.6 D.9
注:三个集合对应的图为:
若是:D1={(0,1,2),(1,3,4)}对应的就是
三列求对应的笛卡尔积,则对应的元组个数就是3,他们3个求笛卡尔积,有3列,是3元关系
注意元数与元组的区别。元组个数,就是求有几行,就是3x3x2=18
D2和D3的1=1的意思是,D2和D3进行笛卡尔积,而后求两列相同的值
图所示为笛卡尔积和1=1,求相同的值
在于D1求笛卡尔积,求元组个数,则为6个