多对多无连接表

Posted

技术标签:

【中文标题】多对多无连接表【英文标题】:Many-to-many without join table 【发布时间】:2013-06-18 09:25:58 【问题描述】:

我有一个模板和注释表。

模板有两个字段IDKEY,我可以有多个版本的模板具有相同的KEY 但不同的ID。例如:

ID   1  2  3
KEY  1  1  1

还有一个带有ID 列的评论表:

ID             1  2  3
TEMPLATE_KEY   1  1  1

是否可以在模板和评论之间进行多对多操作,例如 Template(key) <-> Comment(ID) 而无需连接表?

【问题讨论】:

多对多没有额外的连接表:不,不是。但是这个问题不是很容易理解,所以也许改写一下——看起来你实际上是在寻找与版本化数据或类似的东西的一对多关系。 【参考方案1】:

如果没有关系数据库中的附加表,ManyToMany 永远不可能实现。为什么要完全避免使用这样一张桌子?

【讨论】:

【参考方案2】:

可以这样做,但连接表将使参照完整性合理地强制执行。你可以在两边存储外键数组,用代码触发器来管理它们,等等,如果你做一个删除,你会有很多问题.....

现在,有可能在 9.4 中,这将得到本机支持,但还没有,补丁仍在讨论中。但总的来说,通常最好只通过连接表。

【讨论】:

以上是关于多对多无连接表的主要内容,如果未能解决你的问题,请参考以下文章

EntityFramework同一张表多对多关系

Django:表多对多查询聚合分组FQ查询事务

6django操作表多对多实战

十一 .Django 多对多表ManyToManyField (ORM)

孩子不会更新 Xamarin SQLite 扩展 - 多对多关系

Mysql连表之多对多