我正在建模多对多关系,其中大多数时间只从一方访问关系。它更像是一个层次结构,这是从上而下而不是其他方式访问的。
调查已经属于许多问题,属于许多答案。
这两种关系必须是多对多的,因为在许多问题中,可以在不同的调查和同样的答案之间重复使用相同的问题。这是一个要求。
标准M2M实施将使用两个连接表,调查问题和问题答案。相反,我正在考虑使用Postgresql的整数数组来存储问题的Survey和answer_ids中的question_ids。
我们可以利用ANY运算符查询与外键数组匹配的所有行。
我们如何使用SQL查询所有调查问题和问题的答案?
我们如何匹配与外键数组返回的行的顺序?即。使用question_ids = [1,2,3]保证返回问题行的顺序1,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?维护订单的问题