tabla que programacion multiplicacion matrices llenar ejemplo con arreglos array arrays postgresql many-to-many order junction-table

arrays - programacion - que es un array en java



¿Tablas de empalme frente a matrices de claves externas? (1)

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.

La encuesta tiene y pertenece a muchas Preguntas tiene y pertenece a muchas Respuestas .

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 y questions_answers . En su lugar, estoy pensando en utilizar matrices de enteros de PostgreSQL para almacenar question_ids en Survey y answer_ids en Question.

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

Se propuso 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 sobre cómo mantener el orden usando una matriz de clave externa PostgreSQL JOIN con el tipo de matriz con el orden de los elementos de la matriz, cómo implementar?


Utilice el enfoque de la tabla de unión. El método de matriz no es lo suficientemente estándar como para que tenga que hacer preguntas sobre cuánto funcionaría, mientras que el otro es completamente estándar.