DevOps

Datenbank Design Grundlagen

Tabellen richtig strukturieren

Eine schlecht designte Datenbank macht dir später das Leben schwer. Mit ein paar Grundregeln designst du von Anfang an sauber — Claude Code hilft dir dabei.

Pro-Tip — Der schnelle Weg
Beschreibe Claude Code dein Projekt in Klartext und lass dir das komplette Datenbankschema generieren. Er denkt an Foreign Keys, Indizes und Timestamps die du vielleicht vergessen hättest.
Seite 1
1

Tabellen planen

Überlege zuerst welche Entitäten dein Projekt hat und wie sie zusammenhängen.

-- Beispiel: Blog-Plattform
-- Entitäten: Users, Posts, Comments, Tags
-- Beziehungen:
-- User → hat viele Posts (1:n)
-- Post → hat viele Comments (1:n)
-- Post ↔ Tags (n:m, braucht Zwischentabelle)
2

Tabellen erstellen

Jede Tabelle braucht eine ID, Timestamps und klare Datentypen.

CREATE TABLE users (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
email TEXT UNIQUE NOT NULL,
name TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);


CREATE TABLE posts (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
title TEXT NOT NULL,
content TEXT,
published BOOLEAN DEFAULT false,
created_at TIMESTAMPTZ DEFAULT now()
);
3

Beziehungen definieren

Foreign Keys verbinden Tabellen miteinander und sichern die Datenintegrität.

-- 1:n — Ein User hat viele Comments
CREATE TABLE comments (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
post_id UUID REFERENCES posts(id) ON DELETE CASCADE,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
content TEXT NOT NULL,
created_at TIMESTAMPTZ DEFAULT now()
);


-- n:m — Posts haben viele Tags und umgekehrt
CREATE TABLE post_tags (
post_id UUID REFERENCES posts(id) ON DELETE CASCADE,
tag_id UUID REFERENCES tags(id) ON DELETE CASCADE,
PRIMARY KEY (post_id, tag_id)
);
4

Indizes setzen

Indizes beschleunigen Abfragen massiv — setz sie auf Spalten nach denen du oft filterst.

-- Index auf Foreign Keys (Supabase macht das automatisch)
CREATE INDEX idx_posts_user_id ON posts(user_id);
CREATE INDEX idx_comments_post_id ON comments(post_id);


-- Index auf häufig gefilterte Spalten
CREATE INDEX idx_posts_published ON posts(published)
WHERE published = true;
5

Mit Claude Code generieren

Beschreibe dein Projekt und lass dir das Schema automatisch erstellen.

# Claude Code Prompt:
# "Ich baue eine E-Commerce Plattform.
# Entitäten: Users, Products, Orders, OrderItems,
# Reviews, Categories.
# Erstelle das komplette PostgreSQL Schema mit
# Foreign Keys, Indizes und Row Level Security
# für Supabase."
Seite 2
Warum das funktioniert
  • Ein sauberes Schema spart dir Stunden an Debugging und Refactoring
  • Foreign Keys verhindern inkonsistente Daten automatisch
  • Claude Code kennt Best Practices und denkt an Details die du übersehen würdest
Tipps
  • Immer UUID statt Integer als Primary Key — besser für verteilte Systeme
  • created_at und updated_at in jede Tabelle — du wirst sie brauchen
  • ON DELETE CASCADE bedeutet: Wenn User gelöscht wird, werden seine Posts auch gelöscht
  • Normalisierung: Keine Daten doppelt speichern, stattdessen Beziehungen nutzen
Seite 3
Bereit für den nächsten Schritt?

KIWorld VibeCoding Masterclass

Du willst nicht nur einzelne Tools einrichten, sondern wirklich lernen wie du mit KI komplette Apps, Websites und SaaS-Produkte baust? Über 700 Videos — von Anfänger bis Fortgeschritten — in jedem Bereich. Von der Idee bis zum fertigen Produkt, ohne eine Zeile Code selbst zu schreiben.

Jetzt Masterclass ansehen