¿Tablas de empalme frente a matrices de claves externas?

Estoy modelando una relación de muchos a muchos, a la que se accede la mayor parte del tiempo solo desde un lado. Es más como una jerarquía, a la que se accede de arriba hacia abajo y no al revés.

Encuesta tiene y pertenece a muchosPreguntas tiene y pertenece a muchosRespuestas.

Ambas relaciones deben ser de muchos a muchos porque una misma pregunta se puede reutilizar en diferentes encuestas y la misma respuesta en muchas preguntas. Este es un requisito.

La implementación estándar de M2M usaría dos tablas de unión,surveys_questions yquestions_answers. En cambio, estoy pensando en usar matrices de enteros de PostgreSQL para almacenarquestion_ids en encuesta yanswer_ids en cuestión.

Podemos utilizar el operador ANY para consultar todas las filas que coincidan con la matriz de clave externa.

¿Cómo podríamos consultar todas las encuestas con sus preguntas y las respuestas de las preguntas utilizando SQL?

¿Cómo podemos hacer coincidir el orden de las filas devueltas con la matriz de clave externa? es decir. el uso de question_ids = [1,2,3] está garantizado para devolver filas de preguntas con el orden 1, 2, 3.

¿Cómo funciona esto en cuanto al rendimiento en comparación con las tablas de unión (asumiendo índices adecuados, cualquiera que sean)?

¿Sugerirías esto? ¿Hay algunos recursos para modelar M2M como este?

Actualizar

Hubo una propuesta para agregar integridad referencial para las claves externas de la matriz a PostgreSQL 9.3, pero no se incluyó:http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/

Entonces la pregunta acerca de mantener el orden usando una matriz de clave externaPostgreSQL JOIN con tipo de matriz con orden de elementos de matriz, ¿cómo implementar?

Respuestas a la pregunta(1)

Su respuesta a la pregunta