在文档数据库设计中处理多对多关系的可接受模式是什么?
答案 0 :(得分:3)
您希望如何对多对多进行建模取决于您想要询问的查询类型,您希望如何更新数据等等...假设我们在多对多的条形图中都有相关信息方式。
您可以将foo建模为
{
'bars': ['bar1', 'bar2', 'bar3']
}
将模型建模为
{
'foos': ['foo_x', 'foo_y', 'foo_z']
}
或者您可以将foo和bar之间的图形或关系建模为单独的文档本身
{
from: 'foo1',
to: 'bar1'
}
{
from: 'foo1',
to: 'bar2'
}
{
from: 'foo2',
to: 'bar3
}
{
from 'foo3',
to: 'bar3'
}
还有很多其他方法。您希望如何做到这一点取决于您想要问的问题,您想要支持的操作,您希望提高效率以及数据库中可用的索引。
答案 1 :(得分:2)
假设我们讨论的是真正需要关系而非仅存在关系的情况,因为SQL比复杂对象处理关系更好,设计类似于SQL的标准关系 - 两个一对多的关系。
关键区别在于您有多值字段,因此,不是第三个文档/表将单个连接记录为一对ID,而是在每个文档中都有一个ID列表。
如果遇到列表太长的情况,你可能会看到搜索索引比关系更好处理的事情。