sql >> Base de Datos >  >> RDS >> PostgreSQL

jsonb vs jsonb[] para varias direcciones de un cliente

Use una columna jsonb (¡no jsonb[]!) con la estructura como esta:

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

Sin embargo, una mesa normal relacionada con la principal es una mejor opción.

¿Por qué no jsonb[]? Eche un vistazo a la definición de JSON:

JSON se basa en dos estructuras:

  • Una colección de pares de nombre/valor. En varios idiomas, esto se realiza como un objeto, registro, estructura, diccionario, tabla hash, lista con clave o matriz asociativa.
  • Una lista ordenada de valores. En la mayoría de los idiomas, esto se realiza como una matriz , vector, lista o secuencia.

En una columna jsonb, por lo tanto, puede almacenar una matriz de objetos. Los intentos de usar la matriz de jsonb probablemente se deban a un malentendido de este tipo de datos. Nunca he visto una necesidad razonable de tal solución.