Il existe deux types particulièrement adaptés pour stocker des dictionnaires dans son ensemble :hstore
et json
- ou le plus souvent supérieur jsonb
dans Postgres 9.4 ou version ultérieure.
Postgres a également un xml
dédié
type de données, mais je préfère choisir l'une des trois options précédentes. XML est relativement verbeux et plus complexe (pour ne pas dire alambiqué) et peut être exagéré pour votre objectif.
Si tout ce que vous voulez de la base de données est de stocker et de récupérer l'intégralité du dictionnaire, ce sont de bonnes options. Voir :
Vous trouverez également une discussion approfondie des avantages et des inconvénients autour de eav stockage (entité-attribut-valeur) dans des bases de données relationnelles.
Si vous voulez d'autres choses de la base de données, comme l'intégrité référentielle, les clés étrangères ou diverses autres contraintes, un accès facile aux valeurs individuelles, une taille de stockage minimale, des index simples, etc., je suggère une ou plusieurs table(s) avec dédiée (normalisé ) colonnes.
Disposition de tableau normalisée
D'après ce que je comprends, "MyObject" (m
) contient une collection de références à "OtherObject" (o
). Chaque m
est lié à (24) o
et chaque o
est lié à 0-n m
- qui peut être implémentée dans une relation n:m classique. Voici des instructions détaillées :