为什么连接等效于在具有0个属性的表上相交?

时间:2017-03-15 23:41:34

标签: database relational-database

From Date'数据库系统简介(第8版,第186页,略有编辑):

  

考虑{X1,X2,...,Xm},{Y1,Y2,...,Yn},{Z1,Z2,... Zp}为   三个复合属性,分别为X,Y,Z。然后是自然的   a和b的连接,a JOIN B是与标题{X,Y,Z {的关系   和由所有元组组成的主体{X x,Y y,Z z}使得a   元组出现在X值x和Y值y中,并且元组出现在   b,Y值为y,Z值为z。

     

如果m = p = 0(意思是a和b属于同一类型),则a JOIN b退化为a INTERSECT b

这种退化是如何起作用的?

图像:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

当参数属性集相同时,INTERSECT就是JOIN。当参数属性集不相交时,TIMES就是JOIN。两个参数属性集都是一个特殊情况。 (这是INTERSECT& TIMES。)

但是引用中 m = p = 0的空集不是参数的属性集,它们是属于唯一的属性集。左参数 a 和右参数 b 。当这些集合为空时,唯一的属性是常见的,即参数属性集是相同的。 n = 0的空集是公共属性,即 a & b 是不相交的。

更清楚的是避免这种模糊的“考虑作为复合属性”的业务。对于具有属性集A的 a 和具有属性集B的 b a JOIN b (具有属性集AUB和)拥有一组元组t,其中存在元组ta和amp; tb其中ta IN a 和tb IN b 和t =ta∪tb。当A = B时,我们有INTERSECT,当A∩B= {}时,我们有TIMES。