Decision Record · ADR-003

Normalisierte Tabellen vor JSONB in PostgreSQL

Kern-Entitäten werden normalisiert modelliert, mit Constraints und Fremdschlüsseln. JSONB wird gezielt für tatsächlich schemalose oder selten abgefragte Randdaten eingesetzt.

Was ist das? · Decision Record

Eine dokumentierte Architekturentscheidung im ADR-Format — Kontext, geprüfte Optionen, Begründung und Konsequenzen. Eine konkrete Entscheidung, kein allgemeiner Leitfaden. Zur Übersicht

Status
Angenommen
Kennung
ADR-003
Überprüfung
Zu prüfen bei signifikanten Änderungen an Abfragemustern oder Datenvolumen.

Kontext

PostgreSQL bietet mit JSONB flexible, schemalose Speicherung. Für strukturierte Daten stellt sich die Frage: normalisierte Tabellen oder JSONB-Spalten?

Problem

JSONB ist verlockend flexibel, verlagert aber Struktur und Integrität aus der Datenbank in den Anwendungscode. Normalisierte Tabellen erzwingen Struktur, sind aber weniger flexibel bei häufigen Schemaänderungen.

Optionen

Was wir geprüft haben.

  1. A

    Normalisierte Tabellen

    Struktur, Constraints und Indizes in der DB; klare Beziehungen.

  2. B

    JSONB-Spalten

    Flexibel und schemalos — Integrität liegt im Code.

  3. C

    Gemischt

    Normalisiert für Kern-Entitäten, JSONB für echte Randdaten.

Entscheidung

Was wir entschieden haben.

Kern-Entitäten werden normalisiert modelliert, mit Constraints und Fremdschlüsseln. JSONB wird gezielt für tatsächlich schemalose oder selten abgefragte Randdaten eingesetzt.

Warum diese Entscheidung

Datenintegrität gehört in die Datenbank, nicht in verstreute Anwendungslogik. Normalisierte Strukturen sind abfragbar, indizierbar und selbstdokumentierend. JSONB ist dort richtig, wo die Struktur echt variabel ist — nicht als Abkürzung um Modellierung herum.

Konsequenzen

  • Schemaänderungen an Kern-Entitäten erfordern Migrationen — bewusst, versioniert, nachvollziehbar.
  • Häufig abgefragte JSONB-Felder brauchen gezielte Indizes (GIN) und eine dokumentierte erwartete Form.
  • Die Grenze zwischen Kern- und Randdaten ist eine Entwurfsentscheidung, die begründet wird.

Verworfene Alternativen

  • JSONB als DefaultVerlagert Integrität in den Code und erschwert Abfragen und Migration.
  • Normalisierung um jeden PreisErzwingt Struktur auch dort, wo Daten echt schemalos sind.
Wissensgraph

Setzen Sie Ihren Engineering-Weg fort.

Verwandte Konzepte, Entscheidungen, Playbooks und Standpunkte — als zusammenhängender Pfad, nicht als Linkliste.

Vor einer ähnlichen Entscheidung?

Wir treffen sie nicht aus dem Bauch. Sprechen Sie mit der Geschäftsführung — technisch, ohne Vertrieb.