Modeluję relacje wiele-do-wielu, gdzie związek jest uzyskiwany przez większość czasu tylko z jednej strony. To bardziej jak hierarchia, do której można uzyskać dostęp z góry na dół, a nie odwrotnie.Tablice skrzyżowań a tablice kluczy obcych?
Survey ma i należy do wielu pytania ma i należy do wielu odpowiedzi.
Obie relacje muszą być od wielu do wielu, ponieważ to samo pytanie może zostać ponownie wykorzystane w różnych ankietach i ta sama odpowiedź w wielu kwestiach. Jest to wymagane.
W standardowej implementacji M2M będą używane dwie tablice skrzyżowań, surveys_questions
i questions_answers
. Zamiast tego, myślę o użyciu tablic całkowitych PostgreSQL do przechowywania question_ids
w ankiecie i answer_ids
w pytaniu.
Możemy wykorzystać operatora ANY do zapytania wszystkich wierszy pasujących do tablicy kluczy obcych.
W jaki sposób mielibyśmy zapytać o wszystkie ankiety z ich pytaniami i pytaniami za pomocą SQL?
Jak możemy dopasować kolejność wierszy zwróconych przez tablicę kluczy obcych? to znaczy. using question_ids = [1,2,3] gwarantuje zwracanie wierszy pytań z zamówieniem 1, 2, 3.
Jak to działa w porównaniu z tabelami skrzyżowań (zakładając właściwe indeksy, jakie by one były)?
Zasugerowałbyś to? Czy są jakieś zasoby dotyczące takiego modelowania M2M?
Aktualizacja
Była propozycja, aby dodać więzów integralności dla tablicy kluczy obcych do PostgreSQL 9.3, ale nie dostać w zestawie: http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/
SO pytanie o utrzymaniu porządku za pomocą klucza obcego PostgreSQL JOIN with array type with array elements order, how to implement? tablicę
mówisz wielu ludziom, ale brzmi to jak jeden do wielu; wiele do wielu oznaczałoby, że każda ankieta odnosi się do kilku pytań, a każde pytanie dotyczy kilku ankiet, ale to brzmi trochę dziwnie, z pewnością sposób, w jaki go sformułowałeś "ma-wiele" jest zwykle równoznaczny z jednym do wielu (wiele do -Wiele jest zwykle nazywane "ma-i-należy-do-wielu") – SingleNegationElimination
@TokenMacGuy: Przepraszamy za zamieszanie. Pytania są wielokrotnego użytku w ankietach i odpowiedziach na pytania, tworząc relacje między wieloma osobami. Zastąpię wiele powiązań z HABTM. – randomguy