Tabelas de junção vs matrizes de chave estrangeira?

Estou modelando a relação muitos-para-muitos em que o relacionamento é acessado na maioria das vezes apenas de um lado. É mais como uma hierarquia, que é acessada de cima para baixo e não o contrário.

Pesquisa tem e pertence a muitosQuestões tem e pertence a muitosRespostas.

Ambos os relacionamentos devem ser de muitos para muitos, porque uma mesma pergunta pode ser reutilizada em diferentes pesquisas e a mesma resposta em muitas perguntas. Este é um requisito.

A implementação M2M padrão usaria duas tabelas de junção,surveys_questions equestions_answers. Em vez disso, estou pensando em usar matrizes de inteiros do PostgreSQL para armazenarquestion_ids em pesquisa eanswer_ids em questão.

Podemos utilizar o operador ANY para consultar todas as linhas correspondentes ao array de chaves estrangeiras.

Como podemos consultar todas as pesquisas com suas perguntas e respostas de perguntas usando o SQL?

Como podemos combinar a ordem das linhas retornadas com a matriz de chave estrangeira? ie. usando question_ids = [1,2,3] é garantido para retornar as linhas da questão com a ordem 1, 2, 3.

Como isso funciona em termos de desempenho em comparação com as tabelas de junção (supondo índices apropriados, sejam eles quais forem)?

Você sugeriria isso? Existem alguns recursos sobre como modelar M2M assim?

Atualizar

Houve uma proposta para adicionar integridade referencial para chaves externas de array ao PostgreSQL 9.3, mas ele não foi incluído:http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/

Então pergunta sobre a manutenção da ordem usando matriz de chave estrangeiraPostgreSQL JOIN com tipo de matriz com ordem de elementos de matriz, como implementar?

questionAnswers(1)

yourAnswerToTheQuestion