此问题在此处已有答案:
How to add Foreign key constraint on array in PostgreSQL?(1个答案)
SQL Foreign Key Array referencing non-array(3个答案)
10天前关闭。
我正在建模多对多的关系,这种关系大多数时候只能从一端访问,它更像是一个层次结构,自上而下访问,而不是相反。
调查具有并属于许多问题具有并属于许多答案。
这两种关系必须是多对多,因为同一个问题可以在不同的调查中重复使用,并且在许多问题中可以使用相同的答案。这是一个要求。
标准的M2M实现将使用两个连接表surveys_questions
和questions_answers
,而我考虑使用PostgreSQL的整数数组来存储Survey中的question_ids
和Question中的answer_ids
。
我们可以利用ANY运算符查询与外键数组匹配的所有行。
我们如何使用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/
关于使用外键数组PostgreSQL JOIN with array type with array elements order, how to implement?维护顺序的SO问题
1条答案
按热度按时间ivqmmu1c1#
使用连接表方法。数组方法非常不标准,以至于你不得不问它能工作多少,而另一种方法是完全标准的。