PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

jsonb vs. jsonb[] für mehrere Adressen für einen Kunden

Verwenden Sie eine jsonb-Spalte (nicht jsonb[]!) mit der folgenden Struktur:

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

Ein normaler Tisch, der mit dem Haupttisch verwandt ist, ist jedoch eine bessere Option.

Warum nicht jsonb[]? Sehen Sie sich die JSON-Definition an:

JSON basiert auf zwei Strukturen:

  • Eine Sammlung von Name/Wert-Paaren. In verschiedenen Sprachen wird dies als Objekt, Datensatz, Struktur, Wörterbuch, Hash-Tabelle, Schlüsselliste oder assoziatives Array realisiert.
  • Eine geordnete Liste von Werten. In den meisten Sprachen wird dies als Array realisiert , Vektor, Liste oder Sequenz.

In einer jsonb-Spalte können Sie also ein Array von Objekten speichern. Versuche, das Array von jsonb zu verwenden, sind wahrscheinlich auf ein Missverständnis dieser Art von Daten zurückzuführen. Ich habe nie einen vernünftigen Bedarf für eine solche Lösung gesehen.