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:
- BIGSERIAL – monoton steigende 64-Bit-Ganzzahl
- UUID – global eindeutige 128-Bit-Kennung
- 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 InhalteCITEXT– wenn beim Vergleich immer die Groß- und Kleinschreibung ignoriert werden soll (E-Mail-Adressen!)
Spaltentypen: Zahlen
Für numerische Spalten:
BIGINTfür IDs und ZählerNUMERIC(p, s)für GeldbeträgeREAL/DOUBLE PRECISIONnur für wissenschaftliche Berechnungen
Spaltentypen: Zeit
Für Zeitspalten:
TIMESTAMPTZfür Ereignisse (Standard)DATEfür Kalendertage (Geburtstage, Feiertage)TIMEfü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
- Ein Blog-Datenmodell: Benutzer, Beiträge, Kommentare
- Schlüssel und Datentypen auswählen
- Indizes für häufige Abfragen
- Die Datenbank mit Testdaten befüllen