Es gibt zwei Typen, die sich besonders zum Speichern von Wörterbüchern eignen als Ganzes:hstore
und json
- oder das meist überlegene jsonb
in Postgres 9.4 oder höher.
Postgres hat auch einen dedizierten xml
Datentyp, aber ich würde lieber eine der drei vorherigen Optionen auswählen. XML ist vergleichsweise ausführlich und komplexer (um nicht zu sagen verworren) und könnte für Ihren Zweck übertrieben sein.
Wenn Sie von der Datenbank nur das gesamte Wörterbuch speichern und abrufen möchten, sind dies gute Optionen. Siehe:
Außerdem finden Sie ausführliche Diskussionen über Vor- und Nachteile rund um eav (Entitätsattributwert) Speicherung in relationalen Datenbanken.
Wenn Sie andere Dinge von der DB wollen, wie referenzielle Integrität, Fremdschlüssel oder verschiedene andere Einschränkungen, einfachen Zugriff auf einzelne Werte, minimale Speichergröße, einfache Indizes usw., schlage ich eine oder mehrere Tabelle(n) mit dedizierten (normalisiert ) Spalten.
Normalisiertes Tabellenlayout
Soweit ich weiß, ist "MyObject" (m
) enthält eine Sammlung von Verweisen auf "OtherObject" (o
). Jedes m
ist verwandt mit (24) o
und jedes o
ist verwandt mit 0-n m
- die in einer klassischen n:m-Beziehung implementiert werden kann. Hier sind detaillierte Anweisungen: