c语言求自然连接

Python017

c语言求自然连接,第1张

自然连接(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)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。