在Postgresql中实现多对多关系

时间:2018-08-27 17:17:16

标签: sql database postgresql nosql

我必须在postgresql中实现表之间的多对多关系。

default SQL 的方法是创建:

  • data1
  • data2
  • relation1(这是data1和data2之间的虚拟链接)

postgresql 中,我可以通过三种不同的方式来做到这一点:

  • data1 / data2 / relation1(如上所述)
  • data1 / data2,但在data1或data2中具有数组以存储链接
  • data1 / data2,但在data1或数据中包含 json 来存储链接

哪种实现会更快?

此致

PS:用法是创建包含所有data2的data1的json表示形式

1 个答案:

答案 0 :(得分:1)

这取决于您最终将如何使用它们。

  • 第一个:data1/data2+relation是一种“通用”实现,对于大多数用途来说都是快速的。它专注于实体的通用建模及其灵活性。此选项的优点在于,它可以更轻松地在模型或应用程序的将来[不可预测的]更改中生存下来。

  • 第二个data1/data2+array和第三个data1/data2+json是特例,对于数量减少的情况可能很快。如果您需要优化这些解决方案,那么这些解决方案可能会很棒。但是,它们不能很好地解决其他情况,对于一般查询来说它们可能会变慢。

底线:我会[非常个人地]选择第一个,除非我有确凿的理由使用另一个。