关系代数可以按运算符的不同分为:传统的集合运算和专门的关系运算两种
传统的集合运算将关系看作是元祖的集合,运算是从关系的水平方向(也就是“行”的角度)来进行的 专门的关系运算不仅会涉及到行的运算,也会涉及到列的运算。
传统的集合运算
传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算
- 并
关系R和关系S的并集可以记作是:
并集的结果仍是n目关系 - 差
关系R和关系S的差:就是在R中,删除同时在S中的部分 - 交
关系R和关系S的交,就是既在R中,也在S中的部分 - 笛卡尔积
这里的笛卡尔积指的是广义笛卡尔积
关系R中有K1个元祖,关系S中有K2个元祖
那么关系R和关系S笛卡尔积后,共有K1*K2个元祖
专门的关系运算
专门的关系运算包括选择、投影、连接、除运算等
(1)连接
设关系R是n目关系,关系S是m目关系,那么关系R和关系S连接后形成的新关系,就是m+n目关系。
前n个分量是关系R中的一个n元组,后m个分量是关系S中的一个m元组
是从两个关系的笛卡尔积中选择属性间满足一定关系的元组
类比于SQL中,多表查询时,使用外键关联另外一张表 有两种常用、常见的连接方式:
等值连接
和自然连接
- 等值连接:两个关系连接的时候使用的是等号
- 自然连接:是特殊的等值连接,要求两个关系进行比较的分量必须是同名的属性组,并且在结果集中,把重复的属性列给删去。多表查询时的结果就是使用的自然连接。
连接又可分为内连接和外连接 两个关系进行连接自然操作时,可能出现关系R不能和关系S中的任何一行匹配的情况,那么R中的其他属性此时就为NULL,这样的元组被称为是悬浮元组。如果连接后将悬浮元组保存下来,那么这样的连接就称为是外连接。根据保留的是左边元组还是右边元组的不同,分为左外连接和右外连接 类比于SQL中的
LEFT JOIN
和RIGHT JOIN
(2)选择
选择又被称为是限制
,在关系R中只选择满足某些指定条件的诸元组
选择和SQL语句中,WHERE进行的操作是对应的
(3)投影
关系R上的投影是从R中选择出若干属性列组成新的关系
相当于从关系R中,只选择部分属性 和SQL语句中的SELECT操作是对应的
(4)除运算
设关系R除以关系S的结果为关系T,那么T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中
象集:表示某个属性的某个值对应元组中其他属性值的集合 比如下图所示关系R中 x1在R中的象集Zx1Zx1={Z1,Z2,Z3} x2在R中的象集Zx2={Z2,Z3} x3在R中的象集Zx3={Z1,Z3}
x1 | z1 |
---|---|
x1 | z2 |
x1 | z3 |
x2 | z2 |
x2 | z3 |
x3 | z1 |
x3 | z3 |