我已经看到自然连接只是选择和笛卡尔乘积的组合,但是在各种网站中,自然连接被称为投影和笛卡尔乘积的组合,两者完全不同,因此哪个定义应该更准确地对应呢?
答案 0 :(得分:1)
“关系代数”有许多不同的版本,即使它们的“关系”概念不同。没有产品或自然联接。
关系代数的某些版本具有作为属性名称列表的关系标题。 PRODUCT为每个输入列表元素输出一个属性。如果存在一个NATURAL JOIN,那么其结果将类似于首先进行PRODUCT,然后对相同名称的属性对相等进行限制/选择,然后对每对属性进行投射。当没有共享属性名称时,它们给出相同的结果。 PRODUCT可用于任何两个输入,但是当输入具有重复的属性名称时,NATURAL JOIN可能未定义。
关系代数的某些版本具有作为属性名称集的关系标题。 (元素是无序且唯一的。)NATURAL JOIN的结果的标题为输入标题的并集。 (Tuples对两个输入共有一个属性名称的每个副本,对一个输入唯一对每个属性名称的一个副本。)它返回所有元组,其标题可以通过合并每个输入表中的元组来形成。不管有多少个通用属性名称,包括零。仅当输入不共享属性名称,而其他行为类似于NATURAL JOIN时,才定义PRODUCT。 PRODUCT的作用是确认您期望没有共享的属性名称。当所有列名都相同时,这就是一种相交。
所有这些都与PK,UNIQUE,FK和其他约束无关。