假设我有2个数据库表user
和topic
。
用户可以拥有多个主题,主题可以包含多个与之关联的用户。这是一个多对多的关系。
user_id
表中有user
PK,topic_id
表中有topic
PK。
我知道我可以通过使用第3个子表(称之为linking_table
)强制执行多对多关系,该表具有user_id
的FK和topic_id
的FK。
假设我可以随意创建用户,但我不希望有人能够在没有与用户关联的情况下创建主题。换句话说,我希望它不会存在主题行,如果链接表中没有一行将用户链接到该主题。另一方面,我也不希望在用户和主题之间linking_table
之间存在一行尚未存在的行。
似乎我希望它不会在没有同时在linking_table
中插入行的情况下在主题中插入行。
这种约束是可能的还是合理的?如果没有此约束,则可以插入主题表,而不是在linking_table
中创建链接。
编辑:
我发生了一些事情。如果创建主题并且不与用户相关联则无关紧要。我将只通过用户访问后端数据,链接表将用户链接到主题,因此即使理论上有与用户无关的主题,从任何实际角度来看都无关紧要。它类似于分离的链表节点。由于它没有被引用,如果存在它并不重要,假设我在桌面上进行某种清理并删除任何孤立的主题。
答案 0 :(得分:0)
关于你的陈述:换句话说,我希望它不会存在主题行,如果链接表中没有一行将用户链接到该主题。 - >这是不可能的,因为无法同时在两个表中插入。
关于你的陈述:“另一方面,我也不希望在一个用户和一个尚不存在的话题之间的linked_table中有一行。” - >您可以在引用“主题表”的“topic_id”PK列的“linking_table”中添加外键。