数据库的传统集合运算(并、差、交、笛卡尔积)和专门的关系运算(选择、投影、连接、除运算)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zgcr654321/article/details/82077809

各种运算符如下:

数据库中每行就是一个元组,每列就是一个属性。

数据库的传统集合运算包括:并、差、交、笛卡尔积运算。这四种运算都与数学上的同名运算概念相似。

并:

差:

交:

笛卡尔积:

广义笛卡尔积(Extended Cartesian Product):两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组,记作:R×S={tr⌒ts| tr∈R∧ts∈S}或记做R×S={(r1,…,rn ,s1,…,sm)∣((r1,…,rn)∈R∧(s1,…,sm)∈S)。

r,s为R和S中的相应分量。

简单来说,就是把R表的第一行与S表第一行组合写在一起,作为一行。然后把R表的第一行与S表第二行依此写在一起,作为新一行。以此类推。当S表的每一行都与R表的第一行组合过一次以后,换R表的第二行与S表第一行组合,以此类推,直到R表与S表的每一行都组合过一次,则运算完毕。如果R表有n行,S表有M行,那么笛卡尔积R×S有n×M行。

下面举一个例子:

关系表R和S如下图所示:

R并S、R减S、R交S、选择、R与S的笛卡尔积结果如下所示:

选择B>'4'(R),即选择语句的条件,对R的关系做水平分割,选择R中符合条件的元组。

数据库的专门关系运算有:选择(对关系进行水平分割)、投影(对关系进行垂直分割)、连接、自然连接(关系的结合)、除运算等。

选择(selection):

选择就是"筛选行"。选择一般要对一张表选择符合条件的行(但包含所有列)。

举例:

投影(projection):

投影就是"筛选列"。一个数据库表,如仅希望得到其一部分的列的内容(但全部行),就是投影。

举例:

除法(division):

记为R÷S,它是笛卡尔积的逆运算。设关系R和S分别有r列和s列(r>s,且s≠0),那么R÷S的结果有(r-s)个列,并且是满足下列条件的最大的表:其中每行与S中的每行组合成的新行都在R中。注意有时关系之间的除法也有"余数",可能S×T的结果为R的一部分(最大的一部分),R中的多余部分为"余数"。

举例:

运算过程:

 C, D是关系S中的两个属性, 故在R集合中对除了C, D的属性, 即A, B两属性进行投影, 得到a, b; b, c; e, d;这三组, 然后用这个结果与关系S进行笛卡尔积运算, 发现b c c d这组在关系R中没有, 其余a, b; e, d; 做的运算在R中存在. 因此最后结果为a, b; e, d。

连接(join):

两表笛卡尔积的结果比较庞大,实际应用中一般仅选取其中一部分的行,选取两表列之间满足一定条件的行,就是关系之间的连接。

根据连接条件的种类不同,关系之间的连接分为等值连接、大于连接、小于连接、自然连接

条件是类似于"B列=D列"的"某列=某列"的条件,就是等值连接;

条件是"某列>某列"的,就是大于连接;

条件是"某列<某列"的,就是小于连接。

自然连接是不提出明确的连接条件,但"暗含"着一个条件,就是"列名相同的值也相同"。在自然连接的结果表中,往往还要合并相同列名的列。当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的属性。

举一个等值连接的例子:

关系R和S如下图所示:

对关系R、S按条件"R表的B列=S表的B列"进行连接的结果(等值连接):

小于连接的结果(B<D):

自然连接的结果(自然连接暗含的条件是R.B=S.B且R.C=S.C,因为R、S中有同名的2列B、C):

多个条件之间可用"∧"表示"且",即两边的条件必须同时成立。

如"C>4∧D>3",表示"C列值>4,且D列值>3",二者需同时满足。

用"∨"表示"或",即两边的条件有一个成立即可。

例如"性别='女'∨年龄<20"表示"性别为'女'或者年龄在20岁以下"。

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/82077809
今日推荐