笛卡儿积一般属性(列标题)不同,然后用第一个关系的元组(每一行),分别与第二个关系的每一个元组连接生成新的关系。一般最终生成的关系行数比前两个都多。最后面上图。
自然连接要求两个关系中至少有一个属性(列标题)相同,具有将相同的属性的元组连接在一起,不同的舍弃。题中R和S两个关系中都有一个B属性列,同时该列都有一个行值为1,所以把这两行连接起来就行了。
其区分为:
自然连接一定是等值连接,但笛卡尔积不一定是自然连接;
笛卡尔积要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性;
笛卡尔积不把重复的属性除去;而自然连接要把重复的属性除去。
自然连接和笛卡尔积的区别在于:
笛卡儿积一般属性(列标题)不同,然后用第一个关系的元组(每一行),分别与第二个关系的每一个元组连接生成新的关系,一般最终生成的关系行数比前两个都多;
笛卡尔积就是每个属于R的记录后面缀上每个属于S的记录;
自然连接要求两个关系中至少有一个属性(列标题)相同,具有将相同的属性的元组连接在一起,不同的舍弃;
自然连接是在笛卡尔积中选取属性值(对于这个例子就是属性B)相等的那些条目,然后把重复的属性删掉。
笛卡尔积的使用说明:
将每个维度的集合的元素视为“List> dimvalue”作为输入;
将多维笛卡尔乘积的结果放到“List
“int layer, string curstring”只是两个中间过程的参数携带变量;
程序采用递归调用。