前言
复习总结,来自哈工大教学视频
正文
-
关系代数基本操作:并、差、积、选择、投影、(更名)。
-
关系代数扩展操作:交、-连接、自然连接。
-
关系代数复杂扩展操作:除、外连接
基本操作
- 关系代数操作
集合操作和纯关系操作
- 并相容性
- 某些关系代数操作,如并、差、交等,需满足“并相容性”
- 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性
- 定义:关系R与关系S存在相容性,当且仅当:
关系R和关系S的属性数目必须相同;
对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同
假设:R(A1, A2, … , An) , S(B1, B2, … ,Bm)
R和S满足并相容性:n = m 并且 Domain(Ai) = Domain(Bi).
- 笛卡尔积
- 两个关系R和S,它们的属性个数分别为n和m(R是n度关系,S是m度关系)
则笛卡尔积 R x S的属性个数 =n + m。即元组的前n个分量是R中元组的分量,后m个分量是S中元组的分量(R x S是n+m度关系). - 两个关系R和S,它们的元组个数分别为x和y(关系R的基数x, S的基数y),
则笛卡尔积R x S的元组个数 = x × y。(R x S的基数是x × y).
除此还有简单的并,差、选择、投影
扩展运算
- θ-连接(theta-Join
- 设R(A1 ,A2 , … ,An), A∈ { A1 ,A2 , … ,An }
- S(B1 ,B2 , … ,Bm), B∈{ B1 ,B2 , … ,Bm }
- t是关系R中的元组,s是关系S中的元组
- 属性A和属性B具有可比性
- θ是比较运算符, θ 属于{ > , ≥ , < , ≤ , = , ≠}
列子:关系与自身的θ-连接
- 等值连接(Equi-Join)
当θ-连接中运算符为“=”时,就是等值连接 - 自然连接(Natural-Join)
- 自然连接是一种特殊的等值连接
- 要求关系R和关系S必须有相同的属性组B
B(如R,S共有一个属性B1,则B是B1 , 如R, S共有一组属性B1, B2, …, Bn,则B是这些共有的所有属性) - R, S属性相同,值必须相等才能连接
即R.B1 = S.B1 and R.B2 = S.B2 … and R.Bn = S.Bn才能连接 - 要在结果中去掉重复的属性列(因结果中R.Bi 始终是等于S.Bi 所以可只保留一列即可)
- 连接与积的差别
查询学习课程号为001的学生学号、姓名
连接:
积:
复杂扩展
- 外连接(Outer-Join)
- 两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer Join)。
- 外连接 = 自然连接 (或连接) + 失配的元组(与全空元组形成的连接)
- 外连接的形式:左外连接、右外连接、全外连接
左外连接 = 自然连接(或连接) + 左侧表中失配的元组
右外连接 = 自然连接(或连接) + 右侧表中失配的元组
全外连接 = 自然连接(或连接) + 两侧表中失配的元组
左外连接示例:
- 除法操作
除法运算经常用于求解“查询… 全部的/所有的…”问题
- 属性应有哪些?
设属性集{C1,C2, … ,Ck } = {A1,A2, … ,An } – {B1,B2, … ,Bm }, 则有k=n–m
则R÷S结果关系是一k度**(n-m度)**关系,由{C1,C2, … ,Ck }属性构成 - 元组怎样形成?
再设关系R (<a1, …, an>)和关系S (<b1, …, bm >), 那么R÷S结果关系为元组 <c1, …, ck>的集合,元组 <c1, …, ck>满足下述条件:它与S中每一个元组<b1, …, bm >组合形成的一个新元组都是R中的某一
个元组<a1, …, an> 。(其中,a1, …, an ,b1, …, bm, c1, …, ck分别是属性A1 , … ,An,B1 , … ,Bm C1 , … ,Ck 的值)
问题:
查询选修了学号98030201学生所学全部课程的同学的姓名
请问下述写法与上有何不同? 结果是否一样
总结
关系代数的基本书写思路:
- 选出将用到的关系/表
- 做“积”运算(可用连接运算替换)
- 做选择运算保留所需的行/元组
- 做投影运算保留所需的列/属性