自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
因为这两个表属性相同,所以自然连接的结果为相同的行组成的集合。
#include<stdio.h>#include<stdlib.h>
#define RN 2
#define SN 3
int main(){
char R[RN][3]={'a','o','k','b','1','n'}
char S[SN][3]={'f','3','h','a','o','k','n','2','x'}
int rb,rc,rd
int sb,sc,sd
char RS[RN+SN][3]
int i
int j
int k
int m
m =0
for(i=0i<RNi++){
for(j=0j<SNj++){//ÏàͬÊôÐÔÉÏÅжÏÊÇ·ñÏàµÈ
for(k=0k<3k++){
if(R[i][k] != S[j][k]){
break
}
}
if(k==3){
for(j=0j<3j++)
RS[m][j]= R[i][j]
m++
}
}
}
for(i=0i<mi++){
for(j=0j<3j++)
printf("%c",RS[i][j])
printf("\n")
}
system("pause")
return 0
}
输出结果为:
a o k
1、自然连接一定是等值连接,但等值连接不一定是自然连接。2、等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。
3、等值连接不把重复的属性除去;而自然连接要把重复的属性除去。
笛卡尔积:
在数学中,两个集合X和Y的笛卡儿积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
等值连接:
等值连接是关系运算-连接运算的一种常用的连接方式。是条件连接(或称θ连接)在连接运算符为“=”号时(即θ=0时)的一个特例。
自然连接:
自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。