首页 > 解决方案 > 如何制作符合此限制的 SQL 表?

问题描述

有 3 个表:A、B 和 C

一个A可以对应多个B,一个B可以对应多个A

这是由我的 AB 表表示的多对多关系。

一个 AB 可以对应多个 C,一个 C 可以对应多个 AB,但前提是该单个 C 对应的 AB 具有不同的 B id。

我应该使用什么样的表和关系?我需要“唯一”关键字吗?

图表

标签: sql

解决方案


您将需要b_idin 表c。和一个外键关系ab。然后你可以在abc.

因此,这些是关键思想:

create table ab (
    ab_id int primary key,
    a_id int references a(a_id),
    b_id int references b(b_id)
    unique (a_id, b_id)
);

create table abc (,
    abc_id int primary key,
    a_id int,
    b_id int,
    c_id int,
    foreign key (a_id, b_id) references ab(a_id, b_id),
    unique (c_id, b_id)
);

推荐阅读