Tabele połączeń a tablice kluczy obcych?

Modeluję relację wiele-do-wielu, gdzie relacja jest dostępna przez większość czasu tylko z jednej strony. To bardziej hierarchia, do której dostęp jest odgórny, a nie odwrotnie.

Ankieta ma i należy do wielupytania ma i należy do wieluOdpowiedzi.

Obie relacje muszą mieć wiele do wielu, ponieważ to samo pytanie może być ponownie wykorzystane w różnych badaniach i tej samej odpowiedzi w wielu pytaniach. To jest wymaganie.

Standardowa implementacja M2M wykorzystałaby dwie tabele połączeń,surveys_questions iquestions_answers. Zamiast tego myślę o użyciu tablic całkowitych PostgreSQL do przechowywaniaquestion_ids w ankiecie ianswer_ids w pytaniu.

Możemy użyć operatora ANY do zapytania wszystkich wierszy pasujących do tablicy kluczy obcych.

Jak zapytalibyśmy o wszystkie ankiety z pytaniami i odpowiedziami na pytania za pomocą SQL?

Jak możemy dopasować kolejność wierszy zwracanych przez tablicę kluczy obcych? to znaczy. Używanie question_ids = [1,2,3] gwarantuje zwrot wierszy pytań z kolejnością 1, 2, 3.

Jak to działa pod względem wydajności w porównaniu z tabelami połączeń (przy założeniu odpowiednich indeksów, niezależnie od tego, jakie mogą być)?

Czy zasugerowałbyś to? Czy są jakieś zasoby dotyczące modelowania M2M w ten sposób?

Aktualizacja

Pojawiła się propozycja dodania integralności referencyjnej dla tablicowych kluczy obcych do PostgreSQL 9.3, ale nie została uwzględniona:http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/

Pytanie o utrzymanie porządku przy użyciu tablicy kluczy obcychPOŁĄCZENIE PostgreSQL z typem tablicy z elementami tablicy porządek, jak zaimplementować?

questionAnswers(1)

yourAnswerToTheQuestion