Junction-Tabellen gegen Fremdschlüssel-Arrays?

Ich modelliere eine Viele-zu-Viele-Beziehung, bei der die Beziehung die meiste Zeit nur von einer Seite aus aufgerufen wird. Es ist eher eine Hierarchie, auf die von oben zugegriffen wird und nicht umgekehrt.

Umfrage hat und gehört zu vielenFragen hat und gehört zu vielenAntworten.

Beide Beziehungen müssen viele-zu-viele-Beziehungen sein, da dieselbe Frage in verschiedenen Umfragen wiederverwendet und in vielen Fragen dieselbe Antwort verwendet werden kann. Dies ist eine Voraussetzung.

Die Standard-M2M-Implementierung würde zwei Junction-Tabellen verwenden.surveys_questions undquestions_answers. Stattdessen denke ich darüber nach, die Integer-Arrays von PostgreSQL zum Speichern zu verwendenquestion_ids in Umfrage undanswer_ids fraglich.

Wir können den ANY-Operator verwenden, um alle Zeilen abzufragen, die mit dem Fremdschlüssel-Array übereinstimmen.

Wie würden wir mit SQL nach allen Umfragen mit ihren Fragen und Antworten fragen?

Wie können wir die Reihenfolge der zurückgegebenen Zeilen mit dem Fremdschlüssel-Array abgleichen? dh Mit question_ids = [1,2,3] werden garantiert Fragenzeilen in der Reihenfolge 1, 2, 3 zurückgegeben.

Wie ist die Performance im Vergleich zu Junction-Tabellen?

Würden Sie das vorschlagen? Gibt es einige Ressourcen zum Modellieren von M2M wie folgt?

Aktualisieren

Es wurde vorgeschlagen, PostgreSQL 9.3 eine referenzielle Integrität für Array-Fremdschlüssel hinzuzufügen, diese wurde jedoch nicht berücksichtigt:http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/

SO Frage zur Aufrechterhaltung der Reihenfolge mit Fremdschlüssel-ArrayPostgreSQL JOIN mit Array-Typ mit Array-Elementen Reihenfolge, wie zu implementieren?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage