sql - 如何制作符合此限制的 SQL 表?
问题描述
有 3 个表:A、B 和 C
一个A可以对应多个B,一个B可以对应多个A
这是由我的 AB 表表示的多对多关系。
一个 AB 可以对应多个 C,一个 C 可以对应多个 AB,但前提是该单个 C 对应的 AB 具有不同的 B id。
我应该使用什么样的表和关系?我需要“唯一”关键字吗?
解决方案
您将需要b_id
in 表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)
);
推荐阅读
- google-calendar-api - 如何通过与会者的电子邮件过滤谷歌日历 REST API 事件
- ruby-on-rails - 检查 RoR json API
- jenkins - 在 Jenkins 中自定义 Cucumber 报告以分隔测试运行
- xml - Wordpress 中的媒体导入失败(XML 导入)
- python - 如何在 cloudinary 中复制图像?
- javascript - 从 AJAX POST 请求中获取 Django 视图中的数据
- javascript - 微优化:从函数末尾的内部块返回
- c++ - 使用 va_arg 传递给函数的 va_list 不起作用
- python - TensorFlow 2.1 调用 cuInit 失败:未知错误 (303)
- python - 如何优化从网站中提取的 json 输出?