【发布时间】:2020-02-24 00:01:31
【问题描述】:
这是一个例子:最初我有 3 张桌子。表 B 引用表 A。所以现在表 B 有两个主键。一个用作原始主键,另一个用于强制与表 A 的关系。然后我希望表 B 与表 X 具有多对多关系。在添加关系时,MySQL Workbench 添加了表 Y表 B 的主键和表 X 中的一个主键。所以表 Y 现在有三个主键。
似乎不需要联结表中表 B 中的第二个主键,因为我可以用原始主键识别表 B。那么我还需要额外的主键吗?或者我不应该在表 A 和 B 之间建立识别关系?
表 A 和 B 的关系类似于 User has many Post。帖子必须属于用户。但是 Post 已经有了自己的主键,那么 User 的外键是否需要是主键?
编辑
这是场景(下面的图表链接)。我关注的表是 sn-p、sn-p_topic 和 tag。据我所知,由于每个 sn-p 都必须属于一个 sn-p_topic,因此它具有标识关系。所以我在 MySQL Workbench 中使用了标识关系,他们添加了 sn-p_topic ID 作为主键。之后,我为 tag 和 sn-p 添加了 m:n 关系。 MySQL Workbench 将 sn-p_topic ID 添加到联结表(但我将其删除)。我的设计有什么问题吗?还是有更正确的方法?
图例: 黄色图标 - 主键 红色图标 - 不为空
【问题讨论】:
标签: mysql database database-design many-to-many relational-database