0Pricing
SQL Academy · Lektion

Schlüssel und Datentypen auswählen

Wählen Sie BIGSERIAL- oder UUID-Primärschlüssel, entscheiden Sie sich zwischen TEXT und VARCHAR(n) und bestimmen Sie für jede Spalte den passenden Typ.

Schlüssel und Datentypen auswählen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Auswahl eines Primärschlüssels

Drei realistische Möglichkeiten:

  1. BIGSERIAL – monoton steigende 64-Bit-Ganzzahl
  2. UUID – global eindeutige 128-Bit-Kennung
  3. Natürlicher Schlüssel – eine reale Kennung (E-Mail-Adresse, ISBN)

Wann BIGSERIAL die beste Wahl ist

Die Standardwahl für die meisten Anwendungen:

  • Klein (8 Byte), schneller Index, cachefreundlich
  • Monoton steigend → aktuelle Daten werden am Ende des Index gruppiert
  • Lesbar in URLs (z. B. /posts/42)

Wann UUID die beste Wahl ist

Wählen Sie UUID, wenn:

  • Sie global eindeutige IDs benötigen (mehrere Rechenzentren, Offline-First-Anwendungen)
  • Sie nicht möchten, dass IDs in URLs Rückschlüsse auf das Geschäftsvolumen zulassen
  • Sie die ID clientseitig vor dem INSERT erzeugen möchten

Kosten: 16 Byte (gegenüber 8 Byte für BIGINT), außerdem verteilen UUIDs der Version 4 INSERT-Vorgänge zufällig im Index.

Warum natürliche Schlüssel riskant sind

E-Mail-Adressen ändern sich. SKUs werden umbenannt. Ländercodes werden aufgeteilt. Verwenden Sie einen Ersatzschlüssel als Primärschlüssel und eine UNIQUE-Constraint für den natürlichen Schlüssel.

Spaltentypen: Zeichenketten

Für die meisten Textspalten:

  • VARCHAR(n) – wenn es eine feste Obergrenze gibt (E-Mail-Adressen, Codes)
  • TEXT – für freie, lange Inhalte
  • CITEXT – wenn beim Vergleich immer die Groß- und Kleinschreibung ignoriert werden soll (E-Mail-Adressen!)

Spaltentypen: Zahlen

Für numerische Spalten:

  • BIGINT für IDs und Zähler
  • NUMERIC(p, s) für Geldbeträge
  • REAL/DOUBLE PRECISION nur für wissenschaftliche Berechnungen

Spaltentypen: Zeit

Für Zeitspalten:

  • TIMESTAMPTZ für Ereignisse (Standard)
  • DATE für Kalendertage (Geburtstage, Feiertage)
  • TIME für die Uhrzeit ohne Datum (Öffnungszeiten)

Boolean vs. Status

Wenn eine Spalte künftig mehr als zwei Zustände haben kann, verwenden Sie besser einen Statustext mit CHECK statt eines Boolean-Werts:

-- Will probably grow:
status TEXT NOT NULL CHECK (status IN ('draft','published','archived'))

-- vs the trap of "is_published BOOLEAN" when you later need a third state.

Constraints im Überblick

Jede Spalte sollte Folgendes haben:

  • Den engsten passenden Typ
  • NOT NULL, außer NULL hat eine Bedeutung
  • Einen DEFAULT, wenn die Spalte meistens denselben Wert enthält
  • Ein CHECK, wenn eine fachliche Regel gilt
  • Einen Index, wenn die Spalte in WHERE/JOIN/ORDER verwendet wird

Auswirkungen auf den Speicher

Schmalere Typen = kleinere Zeilen = mehr Zeilen pro Seite = bessere Cache-Trefferrate. Der Wechsel von TEXT zu VARCHAR(20) spart keinen Speicher (gleiche Speicherung). Der Wechsel von BIGINT zu INT halbiert die Spaltenbreite.

Fremdschlüsseltypen müssen übereinstimmen

Die Typen von Fremdschlüsselspalten müssen exakt dem Typ des referenzierten Primärschlüssels entsprechen:

-- Wrong (silently won't use the index efficiently):
user_id INT REFERENCES users(id)   -- where users.id is BIGINT

-- Right:
user_id BIGINT REFERENCES users(id)

Zusammenfassung

Die Wahl des Typs ist eine Designentscheidung.

  • BIGSERIAL oder UUID für Primärschlüssel
  • NUMERIC für Geldbeträge
  • TIMESTAMPTZ für Ereignisse
  • TEXT mit CHECK für veränderliche Statuswerte
  • Standardmäßig NOT NULL

Kurzer Test

Sie speichern Zeitstempel von Ereignissen für Benutzer in vielen Zeitzonen. Welchen Typ wählen Sie?

Häufig gestellte Fragen

Ist die Lektion „Schlüssel und Datentypen auswählen“ kostenlos?

Ja — der vollständige Text von „Schlüssel und Datentypen auswählen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Schlüssel und Datentypen auswählen“?

Wählen Sie BIGSERIAL- oder UUID-Primärschlüssel, entscheiden Sie sich zwischen TEXT und VARCHAR(n) und bestimmen Sie für jede Spalte den passenden Typ. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Schlüssel und Datentypen auswählen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare
  2. Schlüssel und Datentypen auswählen
  3. Indizes für häufige Abfragen
  4. Die Datenbank mit Testdaten befüllen
← Zurück zu SQL Academy