结VS表的外键列?(Junction tables vs foreign key arrays?)

2019-07-05 01:13发布

我建模许多一对多关系,其中关系被访问的大部分时间只从一侧。 它更像一个层次,被访问自上而下的,而不是周围的其他方式。

调查属于许多问题都有属于许多答案

双方的关系必须是多到很多,因为同样的问题,可以在不同的调查和同样的答案在许多问题重新使用。 这是一个要求。

该标准的实施M2M将使用两个结表, surveys_questionsquestions_answers 。 相反,我想使用PostgreSQL的整数数组存储question_ids在调查和answer_ids的问题。

我们可以利用任何运营商查询外键阵列相匹配的所有行。

我们将如何查询所有使用SQL他们的问题和问题的答案的调查?

我们怎样才能匹配外键阵列返回的行的顺序? 即。 使用question_ids = [1,2,3]是保证与顺序1,2,3返回问题的行。

请问这个明智的执行性能相比结表(假设正确的索引,不管它们是什么)?

你认为呢? 是否有关于这样的造型M2M一些资源?

更新

有添加的阵列外键到PostgreSQL 9.3参照完整性的建议,但它并没有得到包括: http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/

SO有关使用外键排列维持秩序的问题PostgreSQL的JOIN与数组元素顺序数组类型,如何实现?

Answer 1:

使用联接表的方法。 该阵列方法是非标准的,以至于你要问它会是多少工作的问题,而另一种是完全标准。



文章来源: Junction tables vs foreign key arrays?