Er zijn twee typen die speciaal geschikt zijn voor het opslaan van woordenboeken als geheel:hstore
en json
- of de meestal superieure jsonb
in Postgres 9.4 of hoger.
Postgres heeft ook een speciale xml
gegevenstype, maar ik zou liever een van de drie voorgaande opties kiezen. XML is relatief uitgebreid en complexer (om niet te zeggen ingewikkeld) en kan voor uw doel overkill zijn.
Als alles wat je van de DB wilt, is om het hele woordenboek op te slaan en op te halen, dan zijn dit goede opties. Zie:
U vindt ook een uitgebreide discussie over voor- en nadelen rond eav (entity-attribute-value) opslag in relationele databases.
Als je andere dingen uit de DB wilt, zoals referentiële integriteit, externe sleutels of verschillende andere beperkingen, gemakkelijke toegang tot individuele waarden, minimale opslaggrootte, eenvoudige indexen enz. Ik raad een of meer tabel(len) aan met toegewijde (genormaliseerd ) kolommen.
Genormaliseerde tafelindeling
Van wat ik verzamel, "MijnObject" (m
) bevat een verzameling verwijzingen naar "OtherObject" (o
). Elke m
is gerelateerd aan (24) o
en elke o
is gerelateerd aan 0-n m
- die kan worden geïmplementeerd in een klassieke n:m-relatie. Hier zijn gedetailleerde instructies: