Fähigkeiten postgresql-table-design
📦

postgresql-table-design

Sicher

Entwerfen Sie PostgreSQL-Schemata mit Expertenberatung

Das Design von PostgreSQL-Schemata erfordert Kenntnisse über Datentypen, Indizierungsstrategien, Einschränkungen und Leistungsmuster. Diese Fähigkeit bietet umfassende Anleitungen zu PostgreSQL-spezifischen Best Practices, erweiterten Funktionen und häufigen Fallstricken, um Ihnen zu helfen, effiziente und wartbare Datenbankschemata zu erstellen.

Unterstützt: Claude Codex Code(CC)
📊 70 Angemessen
1

Die Skill-ZIP herunterladen

2

In Claude hochladen

Gehe zu Einstellungen → Fähigkeiten → Skills → Skill hochladen

3

Einschalten und loslegen

Teste es

Verwendung von "postgresql-table-design". Wie sollte ich Geldbeträge in PostgreSQL speichern?

Erwartetes Ergebnis:

Verwenden Sie NUMERIC(p,s) für Geldbeträge, niemals Float-Typen. Zum Beispiel: amount NUMERIC(10,2) für Währung mit zwei Dezimalstellen. Dies bietet exakte Dezimalarithmetik ohne Gleitkomma-Präzisionsprobleme. Vermeiden Sie den veralteten money-Typ.

Verwendung von "postgresql-table-design". Was ist der Unterschied zwischen BIGINT GENERATED ALWAYS AS IDENTITY und UUID für Primärschlüssel?

Erwartetes Ergebnis:

  • BIGINT GENERATED ALWAYS AS IDENTITY: Sequenzielle Integer-IDs. Bevorzugt für die meisten Anwendungsfälle. Vorteile: kleinere Speicherung, schnellere Indizierung, bessere Lokalität. Verwenden Sie, wenn globale Einzigartigkeit über Systeme hinweg nicht erforderlich ist.
  • UUID: Global eindeutige Bezeichner. Verwenden Sie bei: Zusammenführen von Daten aus mehreren Datenbanken, Föderierung von Systemen oder wenn Sie undurchsichtige nicht-sequenzielle IDs benötigen. Generieren Sie mit uuidv7() auf PostgreSQL 18+ oder gen_random_uuid() auf älteren Versionen.

Verwendung von "postgresql-table-design". Sollte ich Indizes auf Fremdschlüsselspalten hinzufügen?

Erwartetes Ergebnis:

Ja, fügen Sie immer explizite Indizes auf Fremdschlüsselspalten hinzu. PostgreSQL indiziert FK-Spalten nicht automatisch wie einige andere Datenbanken. Dies beschleunigt Joins und verhindert Sperrprobleme beim Löschen oder Aktualisieren der Elterntabelle. Beispiel: CREATE INDEX ON orders (user_id) für user_id-Fremdschlüssel.

Sicherheitsaudit

Sicher
v5 • 1/21/2026

This skill is a documentation-only resource providing PostgreSQL schema design guidance. All 237 static findings are false positives triggered by SQL examples and technical terminology in markdown code blocks. The skill contains no executable code, network calls, or file system access. Safe for publication.

2
Gescannte Dateien
2,539
Analysierte Zeilen
0
befunde
5
Gesamtzahl Audits
Keine Sicherheitsprobleme gefunden
Auditiert von: claude Audit-Verlauf anzeigen →

Qualitätsbewertung

38
Architektur
100
Wartbarkeit
87
Inhalt
30
Community
100
Sicherheit
83
Spezifikationskonformität

Was du bauen kannst

Entwurf eines neuen Datenbankschemas

Erhalten Sie Anleitungen zu Tabellenstruktur, Datentypen, Einschränkungen und Indizierungsstrategien beim Entwerfen einer neuen PostgreSQL-Datenbank für eine Anwendung.

Optimierung der Leistung vorhandener Schemata

Erfahren Sie mehr über Indizierungsstrategien, Partitionierungsoptionen und Leistungsmuster zur Verbesserung der Abfrageleistung und Reduzierung von Datenbank-Bloat.

Überprüfung von Schema-Designentscheidungen

Validieren Sie Datentypwahl, Einschränkungsverwendung und Normalisierungsentscheidungen anhand von PostgreSQL-Best Practices vor der Implementierung.

Probiere diese Prompts

Grundlegendes Tabellendesign
Ich muss eine users-Tabelle mit E-Mail, Namen und Zeitstempeln erstellen. Was ist das empfohlene PostgreSQL-Schema?
Geeignete Datentypen auswählen
Ich speichere Produktpreise, IP-Adressen und Benutzereinstellungen. Welche PostgreSQL-Datentypen sollte ich verwenden?
Indizierungsstrategie entwerfen
Meine orders-Tabelle hat Abfragen, die nach user_id, status und created_at filtern. Welche Indizes sollte ich erstellen?
Umgang mit hochvolumigen Zeitreihendaten
Ich muss Millionen von Sensormesswerten pro Tag speichern mit Abfragen, die nach Gerät und Zeitbereich filtern. Wie sollte ich das Schema und die Partitionierung gestalten?

Bewährte Verfahren

  • Beginnen Sie mit normalisierten Schemata bis zur dritten Normalform und denormalisieren Sie nur, wenn Sie gemessene Leistungsprobleme mit bestimmten hochwertigen Abfragen haben
  • Verwenden Sie TIMESTAMPTZ für alle Zeitstempelspalten, TEXT für Strings, NUMERIC für Geld und BIGINT GENERATED ALWAYS AS IDENTITY für Primärschlüssel, es sei denn, Sie benötigen UUIDs
  • Erstellen Sie Indizes für Spalten, die in WHERE-Klauseln, JOIN-Bedingungen und ORDER BY-Klauseln verwendet werden, und fügen Sie immer explizite Indizes auf Fremdschlüsselspalten hinzu

Vermeiden

  • Verwenden Sie keine VARCHAR(n) oder CHAR(n)-Datentypen; verwenden Sie TEXT mit CHECK-Einschränkungen für Längenbeschränkungen, falls erforderlich
  • Verwenden Sie nicht TIMESTAMP ohne Zeitzone, den money-Typ oder SERIAL; verwenden Sie stattdessen TIMESTAMPTZ, NUMERIC und GENERATED ALWAYS AS IDENTITY
  • Denormalisieren Sie Daten nicht vorzeitig, bevor Sie tatsächliche Leistungsprobleme gemessen haben; vorzeitige Denormalisierung schafft Wartungsaufwand ohne nachgewiesene Vorteile

Häufig gestellte Fragen

Wann sollte ich UUID statt BIGINT für Primärschlüssel verwenden?
Verwenden Sie UUID, wenn Sie globale Einzigartigkeit über verteilte Systeme hinweg benötigen, beim Zusammenführen von Datenbanken oder wenn Sie undurchsichtige nicht-sequenzielle Bezeichner wünschen. Verwenden Sie BIGINT GENERATED ALWAYS AS IDENTITY für die meisten anderen Fälle, da es bessere Leistung und kleinere Speicherung bietet.
Erstellt PostgreSQL automatisch Indizes auf Fremdschlüsselspalten?
Nein, PostgreSQL erstellt nicht automatisch Indizes auf Fremdschlüsselspalten. Sie müssen manuell Indizes auf FK-Spalten erstellen, um die Join-Leistung zu verbessern und Sperrprobleme bei Änderungen der Elterntabelle zu verhindern.
Was ist der Unterschied zwischen JSONB- und JSON-Datentypen?
JSONB ist gegenüber JSON bevorzugt. JSONB speichert Daten im binären Format für schnellere Verarbeitung und unterstützt die Indizierung mit GIN-Indizes. Verwenden Sie JSON nur, wenn Sie die ursprüngliche Reihenfolge und Formatierung des JSON-Inhalts beibehalten müssen.
Wann sollte ich eine Tabelle partitionieren?
Partitionieren Sie Tabellen größer als 100 Millionen Zeilen, wenn Abfragen konsistent nach einem Partitionsschlüssel wie Zeitstempel oder Region filtern. Partitionierung ist auch nützlich, wenn Sie Daten regelmäßig bereinigen oder stapelweise ersetzen müssen. Verwenden Sie deklarative Partitionierung oder TimescaleDB für die automatisierte Verwaltung.
Warum sehe ich Lücken in meiner IDENTITY-Spaltensequenz?
Lücken in Sequenzen sind normales und erwartetes Verhalten in PostgreSQL. Rollbacks, Abstürze und gleichzeitige Transaktionen erzeugen Lücken. Versuchen Sie nicht, IDs aufeinanderfolgend zu machen, da dies Standarddatenbankverhalten ist und kein Problem anzeigt.
Wie mache ich Textvergleiche groß-/kleinschreibungs-unempfindlich?
Für einfache ASCII-Groß-/Kleinschreibungs-Unempfindlichkeit erstellen Sie einen Ausdrucksindex auf LOWER(column) und fragen Sie mit WHERE LOWER(email) = LOWER(input) ab. Für locale-bewusste Vergleiche verwenden Sie nicht-deterministische Sortierungen. Verwenden Sie den CITEXT-Typ nur, wenn Sie groß-/kleinschreibungs-unempfindliche Einschränkungen wie UNIQUE oder PRIMARY KEY benötigen.

Entwicklerdetails

Dateistruktur

📄 SKILL.md