多对多无连接表
Posted
技术标签:
【中文标题】多对多无连接表【英文标题】:Many-to-many without join table 【发布时间】:2013-06-18 09:25:58 【问题描述】:我有一个模板和注释表。
模板有两个字段ID
和KEY
,我可以有多个版本的模板具有相同的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 中,这将得到本机支持,但还没有,补丁仍在讨论中。但总的来说,通常最好只通过连接表。
【讨论】:
以上是关于多对多无连接表的主要内容,如果未能解决你的问题,请参考以下文章
十一 .Django 多对多表ManyToManyField (ORM)