2011-01-06 16 views

Antwort

3

Wie Sie die Viele-zu-Viele-Modelle modellieren wollen, hängt davon ab, welche Art von Anfragen Sie stellen möchten, wie Sie die Daten aktualisieren möchten usw. Sagen wir, wir haben Foos in Bezug auf Bars in vielen viele Mode.

Sie eine foo als

{ 
    'bars': ['bar1', 'bar2', 'bar3'] 
} 

Modell könnte und eine Bar

{ 
    'foos': ['foo_x', 'foo_y', 'foo_z'] 
} 

modellieren Oder Sie könnten das Diagramm oder die Beziehungen zwischen foo und bar als einzelne Dokumente selbst

{ 
    from: 'foo1', 
    to: 'bar1' 
} 

{ 
    from: 'foo1', 
    to: 'bar2' 
} 

{ 
    from: 'foo2', 
    to: 'bar3 
} 

{ 
    from 'foo3', 
    to: 'bar3' 
} 
modellieren

Es gibt viele andere Möglichkeiten. Wie Sie dies tun möchten, hängt von den Fragen ab, die Sie stellen möchten, von den Operationen, die Sie unterstützen möchten, von dem, was effizient sein soll, und von der Indizierung, die in der Datenbank verfügbar ist.

2

Angenommen, wir sprechen über Fälle, in denen eine Beziehung wirklich notwendig ist und nicht nur solche, die nur bestehen, weil SQL Beziehungen besser behandelt als komplexe Objekte, ähnelt das Design dem Standard für SQL - zwei Ein-zu-Viele-Beziehungen.

Der Hauptunterschied besteht darin, dass Sie mehrwertige Felder haben. Anstelle eines dritten Dokuments/einer Tabelle, die einzelne Verbindungen als ein Paar von IDs aufzeichnet, haben Sie in jedem Dokument eine Liste von IDs.

Wenn Sie auf Fälle stoßen, in denen diese Liste zu lang wird, suchen Sie wahrscheinlich nach etwas, das besser durch die Suchindexierung als durch eine Beziehung behandelt werden könnte.

+0

er über Dokumentation sprechen –

+0

nein, das ist ein "Datenbankdokument". Eine "Dokumentendatenbank" ist etwas wie http://www.mongodb.org/ –