← 前一天目录后一天 →

每日科普 · 2026-10-18 周日

考研 408 × 求职面试

知识点 · 数据库系统 · 进阶

连接运算:θ 连接、等值连接与自然连接

连接运算是把两个关系按条件拼成新关系。可记成:先做笛卡尔积,再用条件筛选,最后按定义决定是否去重列。 1. θ 连接:条件可用 =、<、>、≠ 等一般比较,写作 R⋈θ S。它最通用,只要条件成立就组合,结果通常保留两表全部属性。 2. 等值连接:θ 条件恰好是等号,如 R.B=S.B。它属于 θ 连接的特例,结果保留两个同名的 B 列(若两表都有 B)。 3. 自然连接:先自动找出两表中所有同名属性,对它们做等值比较,再删掉重复属性列。注意:自然连接必须依赖公共属性;公共属性值相等才配对;结果中公共属性只保留一份。 区别关键:θ 连接看条件是否一般;等值连接看条件是否为等号;自然连接看是否自动使用同名属性并去重。做题时先找公共属性,再逐行匹配;没有公共属性时自然连接常退化为笛卡尔积(视教材约定),要结合题目要求判断。

每日一题 · 数据库系统

连接运算:θ 连接、等值连接与自然连接

设 R(A,B)={(1,2),(3,4)},S(B,C)={(2,5),(4,6),(4,7)},自然连接 R⋈S 的结果元组个数是( )。A.1 B.2 C.3 D.4

解析

选 C。自然连接先对同名属性 B 做等值匹配,再删去重复的 B 列。R 的 (1,2) 匹配 S 的 (2,5),得 (1,2,5);R 的 (3,4) 匹配 S 的 (4,6)、(4,7),得 (3,4,6)、(3,4,7),共 3 个元组。

面试小贴士 · 数据库系统

连接运算:θ 连接、等值连接与自然连接

面试常问三种连接的区别及 SQL 写法。答:θ 连接是一般条件连接;等值连接条件为等号且保留重复列;自然连接自动按同名属性等值并去重。易错:把自然连接说成无条件连接。

代码实现 · C

代码示例

#include <stdio.h>
typedef struct { int A, B; } R;
typedef struct { int B, C; } S;
int main() {
    R r[] = {{1,2},{3,2},{5,4}};
    S s[] = {{2,7},{4,8},{2,9}};
    // 等值连接:保留两表属性,包括重复的 B 列
    puts("等值连接 R.B=S.B,保留两表属性:");
    for (int i=0;i<3;i++)
        for (int j=0;j<3;j++)
            if (r[i].B == s[j].B)
                printf("(%d,%d,%d,%d)\n", r[i].A,r[i].B,s[j].B,s[j].C);
    // 自然连接:等值匹配后去掉重复的 B 列
    puts("自然连接:等值匹配后去掉重复 B 列:");
    for (int i=0;i<3;i++)
        for (int j=0;j<3;j++)
            if (r[i].B == s[j].B)
                printf("(%d,%d,%d)\n", r[i].A,r[i].B,s[j].C);
    return 0;
}
← 前一天目录后一天 →