PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

jsonb vs jsonb[] per più indirizzi per un cliente

Usa una colonna jsonb (non jsonb[]!) con la struttura come questa:

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

Tuttavia, una tabella normale relativa a quella principale è un'opzione migliore.

Perché non jsonb[]? Dai un'occhiata alla definizione JSON:

JSON è costruito su due strutture:

  • Una raccolta di coppie nome/valore. In vari linguaggi, questo viene realizzato come oggetto, record, struct, dizionario, tabella hash, elenco con chiavi o array associativo.
  • Un elenco ordinato di valori. Nella maggior parte delle lingue, questo viene realizzato come un array , vettore, elenco o sequenza.

In una colonna jsonb puoi quindi memorizzare un array di oggetti. I tentativi di utilizzare l'array di jsonb sono probabilmente dovuti all'incomprensione di questo tipo di dati. Non ho mai visto una ragionevole necessità di una soluzione del genere.