DRK PostgreSQL & Drizzle Best Practices
PostgreSQL 16 Best Practices für DRK-Digitalisierungstools.
Stack: Next.js 16 + Drizzle ORM + PostgreSQL 16 (Docker) + Hetzner.
Aufgabe
Lies die zum Thema passenden Referenz-Dateien aus skills/drk-postgres-skill/references/ und wende die Best Practices auf das aktuelle Projekt an.
Wenn $ARGUMENTS angegeben ist, fokussiere auf das genannte Thema. Ohne Argumente: Gib eine Übersicht der verfügbaren Themen.
Referenz-Dateien
Die skills/drk-postgres-skill/references/-Dateien enthalten konkrete SQL- und Drizzle-Patterns.
Jede Datei ist nach dem Schema kategorie-thema.md benannt.
Kategorien (nach Priorität)
| Kategorie |
Dateien |
Thema |
| schema |
schema-primary-keys.md, schema-data-types.md, schema-naming.md, schema-foreign-key-indexes.md |
Tabellen, Datentypen, PKs, FKs |
| drizzle |
drizzle-schema-patterns.md, drizzle-migrations.md |
Drizzle-ORM-Patterns, Schema, Migrations |
| security |
security-rls-tenant.md, security-privileges.md |
RLS, Least Privilege, Tenant-Isolation |
| query |
query-missing-indexes.md |
Indexes, Query-Optimierung |
| data |
data-n-plus-one.md, data-upsert.md |
N+1, Upserts, Batch-Inserts |
| lock |
lock-short-transactions.md |
Transaktionen kurz halten |
| monitor |
monitor-explain-analyze.md |
EXPLAIN ANALYZE, pg_stat_statements |
| docker |
docker-postgres-config.md |
PostgreSQL-Konfiguration im Docker-Kontext |
Thema-Zuordnung
Wenn der Nutzer eines dieser Themen nennt, lies die zugehörigen Dateien:
- schema, tabellen, datentypen, primary key, pk →
schema-*.md
- drizzle, orm, migration →
drizzle-*.md
- security, rls, tenant, privilege, rechte →
security-*.md
- index, query, performance →
query-missing-indexes.md
- n+1, upsert, batch →
data-*.md
- transaktion, lock, deadlock →
lock-short-transactions.md
- explain, monitor, stats →
monitor-explain-analyze.md
- docker, config, hetzner, backup →
docker-postgres-config.md
- alles, übersicht, setup → Alle Dateien lesen
Schnellregeln
- Immer
bigint generated always as identity für Primary Keys (nicht serial)
- Immer
timestamptz statt timestamp
- Immer
text statt varchar(n) (außer bei echtem Constraint-Bedarf)
- Immer Foreign Keys indexieren — PostgreSQL macht das nicht automatisch
- Immer
snake_case für Tabellen und Spalten
- Immer
tenant_id + RLS für Multi-Tenant-Tabellen
- Nie
SELECT * in Produktion
- Nie API-Calls innerhalb von Transaktionen
Scope
Dieser Skill gilt für alle DRK-Apps mit Variante B (Server + Datenbank).
Siehe INFRASTRUCTURE.md für den DSGVO-Goldstandard.
1---2name: drk-postgres3description: PostgreSQL 16 & Drizzle ORM Best Practices für DRK-Digitalisierungstools. Verwende diesen Skill bei Variante-B-Apps (Server + Datenbank) für Schema-Design, Migrations, Security (RLS), Query-Optimierung und Docker-Konfiguration.4---56# DRK PostgreSQL & Drizzle Best Practices78PostgreSQL 16 Best Practices für DRK-Digitalisierungstools.9Stack: Next.js 16 + Drizzle ORM + PostgreSQL 16 (Docker) + Hetzner.1011## Aufgabe1213Lies die zum Thema passenden Referenz-Dateien aus `skills/drk-postgres-skill/references/` und wende die Best Practices auf das aktuelle Projekt an.1415Wenn `$ARGUMENTS` angegeben ist, fokussiere auf das genannte Thema. Ohne Argumente: Gib eine Übersicht der verfügbaren Themen.1617## Referenz-Dateien1819Die `skills/drk-postgres-skill/references/`-Dateien enthalten konkrete SQL- und Drizzle-Patterns.20Jede Datei ist nach dem Schema `kategorie-thema.md` benannt.2122### Kategorien (nach Priorität)2324| Kategorie | Dateien | Thema |25|-----------|---------|-------|26| **schema** | `schema-primary-keys.md`, `schema-data-types.md`, `schema-naming.md`, `schema-foreign-key-indexes.md` | Tabellen, Datentypen, PKs, FKs |27| **drizzle** | `drizzle-schema-patterns.md`, `drizzle-migrations.md` | Drizzle-ORM-Patterns, Schema, Migrations |28| **security** | `security-rls-tenant.md`, `security-privileges.md` | RLS, Least Privilege, Tenant-Isolation |29| **query** | `query-missing-indexes.md` | Indexes, Query-Optimierung |30| **data** | `data-n-plus-one.md`, `data-upsert.md` | N+1, Upserts, Batch-Inserts |31| **lock** | `lock-short-transactions.md` | Transaktionen kurz halten |32| **monitor** | `monitor-explain-analyze.md` | EXPLAIN ANALYZE, pg_stat_statements |33| **docker** | `docker-postgres-config.md` | PostgreSQL-Konfiguration im Docker-Kontext |3435### Thema-Zuordnung3637Wenn der Nutzer eines dieser Themen nennt, lies die zugehörigen Dateien:3839- **schema**, **tabellen**, **datentypen**, **primary key**, **pk** → `schema-*.md`40- **drizzle**, **orm**, **migration** → `drizzle-*.md`41- **security**, **rls**, **tenant**, **privilege**, **rechte** → `security-*.md`42- **index**, **query**, **performance** → `query-missing-indexes.md`43- **n+1**, **upsert**, **batch** → `data-*.md`44- **transaktion**, **lock**, **deadlock** → `lock-short-transactions.md`45- **explain**, **monitor**, **stats** → `monitor-explain-analyze.md`46- **docker**, **config**, **hetzner**, **backup** → `docker-postgres-config.md`47- **alles**, **übersicht**, **setup** → Alle Dateien lesen4849## Schnellregeln5051- **Immer `bigint generated always as identity`** für Primary Keys (nicht `serial`)52- **Immer `timestamptz`** statt `timestamp`53- **Immer `text`** statt `varchar(n)` (außer bei echtem Constraint-Bedarf)54- **Immer Foreign Keys indexieren** — PostgreSQL macht das nicht automatisch55- **Immer `snake_case`** für Tabellen und Spalten56- **Immer `tenant_id` + RLS** für Multi-Tenant-Tabellen57- **Nie `SELECT *`** in Produktion58- **Nie API-Calls innerhalb von Transaktionen**5960## Scope6162Dieser Skill gilt für alle DRK-Apps mit Variante B (Server + Datenbank).63Siehe `INFRASTRUCTURE.md` für den DSGVO-Goldstandard.