关系代数
关系代数
0x00 关系操作
对关系进行操作,按照使用的工具不同分为两种,一是关系代数语言,另一个是关系演算语言
关系代数语言:用对关系的运算来表达查询要求
关系演算语言:用谓词来表达查询要求
而实际流行的数据查询语言是 SQL(structured query language),兼具两者特点
本章介绍关系代数
关系代数是一种抽象的查询语言,它用对关系二点运算来表示查询
关系代数:运算的对象是关系,运算的结果是关系,运算符有两类:集合运算符和专门的关系运算符
###
一些记号
关系R 以及其对应一个元组的表示 和对应一个列的表示
属性组 以及元组在属性组的分量 以及属性组的补集
两个不同关系元组的连接
像集 像集实际上是给出属性组的值,要求属性组的补集的值的集合
0x01 关系代数之传统运算符
并union
作并运算 要求两个关系 同质(属性组完全一样,每个属性的域都一样),得到的结果是元组的并,有重复会自动去重
差difference
同样差运算也要求同质
交intersection
笛卡尔积cartesian product
笛卡尔积是吧两个关系的元组连接起来,排列组合的集的结果
0x02 关系代数之专门的运算符
选择selection
又称为限制,即找出满足限制条件的元组集合
投影 是从关系R中选择出若干属性列组成新的关系,由于可能取消了主码,所以可能新的关系中的元组会重复,那就要消除重复
连接equijoin 从两个关系的笛卡尔积中选取属性或属性组间满足一定条件的元组
属性AB要可比
两类常见连接 等值连接 和 自然连接
等值连接
即属性A和属性B的值要相等
自然连接
自然连接是一种特殊的等值连接,A和B虽然不在同一个关系中,但是是同一个属性,值相等,那么就等值连接,然后去掉A或者B中的一列(因为重复了)
自然连接还需要取消重复的元组
悬浮元组 即两个关系R S 作自然或者等值连接时,指定的属性不相等,所以S或者R中的一些元组需要丢弃,这些被丢弃的元组就是悬浮元组。
不想丢弃悬浮元组时,就用外连接 outer join
对前面的例子作外连接 左外连接 右外连接
除运算 Division 除运算比较复杂 R(x,y)➗S(y,z) (y是公共属性组) 即对 元组在X上分量的每一个值x,如果其在Y中对应的像 包含 S在Y上投影的集合(也就是S在Y上所有不同值的集合),那么这个值x就是新的关系P中的一个元组,可以看下面的例子