Kostenloses Tool

PostgreSQL als ER-Diagramm

Fügen Sie die Ausgabe von pg_dump unverändert ein, samt SET-Zeilen, ALTER-TABLE-ONLY-Constraints und COPY-Blöcken, und erhalten Sie ein ER-Diagramm aller Tabellen und Fremdschlüssel. Probieren Sie das Beispiel eines mandantenfähigen SaaS aus, das Identity-Spalten, einen Enum-Typ und eine partitionierte Tabelle verwendet.

Beispielausgabe

Beispieldiagramm aus einem PostgreSQL-Beispiel
Beispiel ausprobierenMandantenfähiges SaaS

So funktioniert es

  1. pg_dump-Ausgabe einfügen oder ablegen

    Ein Dump im Textformat, eine Migrationsdatei oder CREATE-TABLE-Anweisungen aus psql, pgAdmin oder einem ORM. Den Dump müssen Sie vorher nicht bereinigen.

  2. Jede Tabelle mit ihren Schlüsseln ansehen

    Die Schlüssel, die pg_dump ans Dateiende schreibt, werden ihren Tabellen zugeordnet, jede Fremdschlüssel-Linie beginnt an ihrer eigenen Spalte, und ein Dump mit mehreren Schemas erhält einen Rahmen pro Schema.

  3. In Archboard öffnen

    Speichern Sie es als neues Diagramm, um es umzuordnen, zu kommentieren, per Link zu teilen oder als SVG und PNG zu exportieren. Für die Registrierung genügt ein Google- oder GitHub-Konto.

Datenbankschema aus PostgreSQL exportieren

Führen Sie diesen Befehl gegen die Datenbank aus und fügen Sie dann schema.sql ein oder legen Sie die Datei ab:

  1. --schema-only lässt die Datenzeilen weg, --no-owner und --no-privileges entfernen die Zeilen mit OWNER TO, GRANT und REVOKE. Mit --schema=sales exportieren Sie ein einzelnes Schema. Ersetzen Sie mydb durch den Datenbanknamen und ergänzen Sie bei Bedarf -h und -U oder eine Verbindungs-URI.

    pg_dump --schema-only --no-owner --no-privileges mydb > schema.sql

PostgreSQL-Syntax im Dump

So wird jedes Konstrukt einer pg_dump-Datei behandelt:

serial · GENERATED … AS IDENTITY
Als gewöhnliche Spalten gelesen, deren Typ so bleibt, wie er geschrieben ist; der Identity- oder Sequenz-Standardwert wird nicht angezeigt. Eine serial-Spalte wird nur dann als PK markiert, wenn ein PRIMARY KEY das festlegt, denn serial allein erzeugt keinen Schlüssel.
CREATE TYPE … AS ENUM
Der Name des Enum-Typs wird zum Spaltentyp, etwa order_status; seine Werte stehen nicht auf der Karte.
CREATE SCHEMA
Hat der Dump mehr als ein Schema, wird jedes Schema mit Tabellen zu einem Rahmen um diese, und Fremdschlüssel zwischen Schemas führen über die Rahmen hinweg.
ALTER TABLE ONLY … ADD CONSTRAINT
Gelesen. pg_dump schreibt Primärschlüssel, UNIQUE-Constraints und Fremdschlüssel ganz ans Ende; sie werden angewendet, sobald alle Tabellen bekannt sind.
PARTITION OF
In die Elterntabelle eingeklappt, sodass eine nach Monaten aufgeteilte Tabelle eine einzige Karte ist; die Vorschau nennt die Zahl der eingeklappten Partitionen. ATTACH PARTITION wird genauso behandelt.
$$ … $$
Funktions- und Prozedurrümpfe in Dollar-Quotes werden vollständig übersprungen, sodass Semikolons darin keine Anweisung vorzeitig beenden. In einem DO-Block werden CREATE TABLE und ALTER TABLE … ADD CONSTRAINT trotzdem gelesen.
COPY … FROM stdin
Die folgenden Datenzeilen werden bis zur abschließenden Zeile \. ungelesen übersprungen.
\restrict
Übersprungen. Neuere pg_dump-Versionen setzen Zeilen mit \restrict und \unrestrict um den Dump; diese und andere psql-Metabefehle wie \connect werden ignoriert.

Was ein Diagramm aus pg_dump nicht zeigt

  • Tabellendaten. Zeilen in COPY-Blöcken und INSERT-Anweisungen werden nicht gelesen; ein Dump mit Daten ergibt dasselbe Diagramm wie einer mit --schema-only.
  • Funktionen, Prozeduren, Trigger und Code in DO-Blöcken. Ihre Rümpfe werden übersprungen und gezählt; aus einem DO-Block werden nur Tabellen und Constraints übernommen.
  • Row-Level-Security-Richtlinien, GRANT und REVOKE sowie Objektbesitzer. Wer eine Tabelle lesen oder ändern darf, erscheint nicht im Diagramm.
  • Alles aus einem laufenden PostgreSQL-Server. Es wird keine Verbindung aufgebaut; Tabellengrößen, Zeilenzahlen und installierte Extensions erscheinen nicht.

Fragen zu PostgreSQL

Welche pg_dump-Optionen sollte ich verwenden?

pg_dump --schema-only --no-owner --no-privileges liefert die kürzeste Ausgabe, aber jeder Dump im Textformat funktioniert, auch mit Daten. Ein Archiv im Custom-Format, erstellt mit -Fc, ist kein SQL-Text: Wandeln Sie es mit pg_restore --schema-only -f schema.sql und dem Dateinamen des Archivs in SQL um.

Wie werden mehrere Schemas dargestellt?

Jedes Schema mit Tabellen wird zu einem Rahmen, in dem seine Tabellen liegen; public, billing und audit bleiben so getrennt, und Fremdschlüssel zwischen ihnen führen über die Rahmen hinweg. Um nur ein Schema zu zeichnen, exportieren Sie es allein mit --schema=name, kurz -n.

Was passiert mit partitionierten Tabellen?

Partitionen, die mit PARTITION OF angelegt oder später mit ATTACH PARTITION angehängt wurden, werden in ihre Elterntabelle eingeklappt; eine payments-Tabelle mit zwölf Monatspartitionen erscheint also als eine Karte. Die Vorschau vermerkt, wie viele Partitionen eingeklappt wurden.

Werden Enums und eigene Typen angezeigt?

Ein mit CREATE TYPE … AS ENUM angelegtes Enum dient als Spaltentyp, eine status-Spalte zeigt also order_status; die Werte des Enums werden aber nicht aufgelistet. Domains und zusammengesetzte Typen werden nicht als Karten gezeichnet; Spalten, die sie nutzen, zeigen den Typnamen trotzdem so, wie er geschrieben ist.

Wird etwas gespeichert, wenn ich einen Dump einfüge?

Die Vorschau wird nicht gespeichert. Wenn Sie In Archboard öffnen wählen, wird das gezeichnete Diagramm mit Tabellenkarten, Spaltennamen und Typen, Schema-Rahmen und Linien als neues Diagramm in Ihrem Workspace gespeichert. Spätere Änderungen an der Datenbank aktualisieren es nicht.

Ist das Tool für PostgreSQL-ER-Diagramme kostenlos?

Ja. Für das Einfügen eines Dumps und die Ansicht des Diagramms brauchen Sie kein Konto. Zum Öffnen des Diagramms in Archboard genügt ein kostenloses Konto.

In einer Minute ein Canvas öffnen

Melden Sie sich mit Google oder GitHub an. Kostenlos für einen Sitzplatz. Upgrade, wenn das Team dazukommt.