基本操作
前提条件:并相容性
是并、差、交等关系代数操作的前提
参与运算的两个关系及其相关属性之间必须又一定的对应性、可比性或关联性
两个关系的属性数量必须相同
对于任意i,关系R的第i个属性必须与另一个关系的第i个属性的域相同(数据类型、取值范围)
一、传统集合运算 并交差积
1.并运算 U/Union
在关系R中或在关系S中,要去除掉重复的元组
与集合的并运算U相同
2.交运算 倒U/Intersection
与集合的交相同,既属于关系R又属于关系S的元组
取集合的共同部分
交运算可通过差运算实现:
3.差运算 -/Difference
属于R但不属于S的元组
差运算不遵守交换律,R-S与S-R不同(类似减法)
4.笛卡尔积运算 X(全组合)
广义笛卡尔积,将两个关系中的所有元组,进行所有可能的组合(全组合)
由此可看出“笛卡尔积”的“积”,意义接近于乘法的“积”
操作后广义笛卡尔积的度/目 是 两关系属性数之和
元组数(基数)是 两关系元组数目 之积(组合)
二、专门关系演算 选择投影连接除
1.选择 sita
从给定关系中选出某些符合条件的行(元组)构成新关系
纯关系操作
从一个关系R中,给定选择条件表达式Condition(简写con),选择运算的结果也是一个关系
记作sita
条件需要是一个bool类型的表达式(比较表达式)
逻辑运算符:合取(倒V) 析取(V)非()
也可写为 与and 或or 非not
&& || !
例:
表达式中操作符优先级:
括号 > 比较 > 非 > 与 > 或
2.投影 大派(project)
从给定关系中筛选出某些列(属性)构成新关系
从关系R中选出属性包含在集合A中的列构成
从关系中选择出一些属性,并且可以将其重新排列
记作大π,大π后面写投影的要求,一般是选择某列
选择操作 是对于行 选择出一些行(元组)构成新关系
投影操作 是对于列 选择出一些列(属性)构成新关系
投影后需去除重复元组!!!!!!
投影后很可能出现重复的元组,需要把重复的元组消除掉
投影与选择嵌套:
3.连接 θ
连接操作由两个关系参与,运算结果也是一个关系
连接运算是一个 笛卡尔积运算 + 按一定条件选择
(1)等值连接
条件为等式的特殊连接
等值连接例子:
(2)自然连接
不写条件的连接,使用一种默认条件:属性相同 + 值相等
自然连接是一种特殊的等值连接
要在结果中去除重复的属性列
例子:
1.对两个表列广义笛卡尔积(所有元组可能的组合)
2.从笛卡尔积中选出相同列(外码?)上值相同的元组
3.去除重复的列
4.再进行投影操作
θ连接和等值连接中,最后得到的结果关系的目数(属性个数),与中间的笛卡尔积完全相同
而自然连接中,最后得到的结果关系的目数(属性个数)会比笛卡尔积少一
因为作为连接的一列会完全重复而被合并
自然连接是使用的最多的连接
7.更名操作 ρ
对表进行重命名
当一个表需要与自身进行连接运算时,通常需要使用更名操作
扩展操作
扩展操作:能通过基本操作组合实现
参与连接的两个关系需要有可比性
先得出两个关系的所有元组的所有组合,再按给定的条件在所有组合中选择满足条件的保留下来
例子1:
先取全组合,然后剔除不满足组合的
例子2:(包含更名操作)
当一个表需要与自身进行连接操作时,需要进行一个更名操作ρ
3.关系代数应用
关系代数运算式,从里往外写
特指“某张表的某个属性”,可以用表名+成员访问操作符.
关系代数表达式中,“或||”写作V
矛盾表达式
表达式若写为一个字段同时等于两个值(使用倒V表示&&),这种情况无论如何都不可能实现,选择结果为空集
不等于号<>
!= 在关系代数中写作 <>
总之就是对集合思想的运用
第二种写法也是不对的,因为连接后的“S连接SC”与S不满足并相容性!!!!!
他们的属性数目不同
正确做法:对连接前后的结构都进行同样投影
完成同种投影后,属性数相同,就可以满足并相容性
选择投影连接可以连续使用
总结
1.涉及多个表——连接
2.不能连接——做乘积,然后选择
3.不满足并相容性——做投影
复杂扩展操作
1.除运算(笛卡尔积运算)
X = B ÷ A 是笛卡尔积 A × X = B 的逆运算
已知A(有冗余列)、B(有冗余记录行),求X
(1)前提条件
S中的所有属性应该是R中的属性
并且R中的属性要多于S中的属性
R属性数>S属性数,R属性组包含S属性组
(2)符号与结果类型
除运算记作÷,其结果也是一个属性
(3)结果的属性构成
在R中去除S中的属性,剩余的属性就是R÷S结果中的属性
(4)结果的元组构成
结果中的每一个元组,与S中的每一个元组,组合(笛卡尔积)起来的元组必须是R中的元组
首先把R在(R-S)上做投影
对于S中每一个元组u,他与结果t中每一个元组,组合起来必须是R中的元组
(5)使用基本操作表达
全投影 - 组合起来不在R中的投影 = 满足条件的投影
组合起来不在R中的投影 = 组合 - R
所以:R÷S = 全投影 - 投影(组合 - R)
(6)实例示范
先判断结果的属性构成
再判断结果的元组构成
若S有两个
要保证结果与S的全组合都在R中能找到
若S中有四个元组
S有两个属性的情况
(7)应用场景
查询XX全部XXX
出现全部二字,大概率可以使用除运算
2.外连接操作
由于连接时,若两表中有对方不存在的元组,会造成信息的丢失
外连接能防止元组信息的丢失
用空值(NULL、?)填充未知信息
外连接的扩展
对哪边开口就保留哪边的元组信息不丢失
左右外连接结果元组数 = 开口方元组数
应用案例
左外连接:
右外连接:
全外连接:
衔接数据库语言SQL
数据库语言就是将关系代数语言转换为类似英语的语言
查询程序就是关系代数基本操作的组合