Nosql多对多

时间:2011-01-06 06:32:44

标签: database-design nosql

在文档数据库设计中处理多对多关系的可接受模式是什么?

2 个答案:

答案 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列表。

如果遇到列表太长的情况,你可能会看到搜索索引比关系更好处理的事情。