PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

jsonb vs jsonb[] pour plusieurs adresses pour un client

Utilisez une colonne jsonb (pas jsonb[] !) avec la structure suivante :

select
'[{
        "adresse_line-1": "a11",
        "adresse_line-2": "a12",
        "postalcode": "code1"
    },
    {
        "adresse_line-1": "a21",
        "adresse_line-2": "a22",
        "postalcode": "code2"
    }
]'::jsonb;

Cependant, une table régulière liée à la table principale est une meilleure option.

Pourquoi pas jsonb[] ? Jetez un œil à la définition JSON :

JSON est construit sur deux structures :

  • Une collection de paires nom/valeur. Dans divers langages, ceci est réalisé sous la forme d'un objet, d'un enregistrement, d'une structure, d'un dictionnaire, d'une table de hachage, d'une liste à clé ou d'un tableau associatif.
  • Une liste ordonnée de valeurs. Dans la plupart des langages, ceci est réalisé sous la forme d'un tableau , vecteur, liste ou séquence.

Dans une colonne jsonb vous pouvez donc stocker un tableau d'objets. Les tentatives d'utilisation du tableau de jsonb sont probablement dues à une mauvaise compréhension de ce type de données. Je n'ai jamais vu un besoin raisonnable pour une telle solution.