Kostenloses Tool

MySQL und MariaDB als ER-Diagramm

Fügen Sie eine mysqldump-Datei oder ein MySQL-Workbench-Skript ein, mit Backticks, ENGINE-Optionen und Versionskommentaren, und erhalten Sie ein ER-Diagramm der Tabellen und Fremdschlüssel. MariaDB-Dumps werden genauso gelesen. Probieren Sie das Shop-Beispiel mit Produkten, Varianten, Bestellungen und Bewertungen aus.

Beispielausgabe

Beispieldiagramm aus einem MySQL-Beispiel
Beispiel ausprobierenShop mit Produktkatalog

So funktioniert es

  1. MySQL-Dump einfügen oder ablegen

    Die Ausgabe von mysqldump oder mariadb-dump, ein Export aus Workbench oder phpMyAdmin oder der CREATE-TABLE-Text, den SHOW CREATE TABLE ausgibt.

  2. Tabellen und ihre Verbindungen ansehen

    Jede Tabelle wird zu einer Karte mit ihren Spalten und Schlüsseln. Fremdschlüssel, ob als Constraint deklariert oder inline mit REFERENCES geschrieben, werden zu Linien zwischen den passenden Spalten.

  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 MySQL exportieren

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

  1. --no-data lässt die Datenzeilen weg, --skip-comments und --compact entfernen den Kommentarkopf sowie die Zeilen mit DROP TABLE, LOCK TABLES und SET NAMES. Ersetzen Sie mydb durch den Datenbanknamen und ergänzen Sie bei Bedarf -u und -p. Unter MariaDB nimmt mariadb-dump dieselben Optionen.

    mysqldump --no-data --skip-comments --compact mydb > schema.sql

MySQL-Syntax im Dump

So wird jedes Konstrukt einer mysqldump-Datei behandelt:

`order_items`
Gelesen. Namen in Backticks passen zu denselben Namen ohne Backticks, und Namen in doppelten Anführungszeichen funktionieren ebenfalls, wenn der Dump ANSI_QUOTES setzt.
ENGINE=InnoDB
Zusammen mit DEFAULT CHARSET, COLLATE und den übrigen Tabellenoptionen übersprungen; die Tabelle selbst wird gelesen.
AUTO_INCREMENT
Nicht angezeigt: Die Spalte behält ihren Typ, etwa INT UNSIGNED. Auch der AUTO_INCREMENT-Zähler hinter der Tabelle wird ignoriert.
REFERENCES products (id)
Als Beziehung gezeichnet. MySQL vor 9.0 akzeptiert diese Inline-Form, setzt sie aber nicht durch; die Vorschau ergänzt deshalb einen Hinweis, wenn sie eine findet.
KEY idx_name (name)
Ein normaler Index, daher ohne Markierung. UNIQUE KEY wird als UK markiert, und KEY direkt hinter einer Spalte bedeutet wie in MySQL Primärschlüssel.
/*!40101 … */
Als Kommentar behandelt und übersprungen, einschließlich der SET-Zeilen, die mysqldump um jede Tabelle schreibt.
DELIMITER ;;
Verstanden: Prozeduren und Funktionen zwischen DELIMITER-Zeilen werden als Ganzes übersprungen und gezählt, und die Tabellen danach werden weiterhin gelesen. Trigger und Events, die mysqldump dort schreibt, stehen in Versionskommentaren und werden deshalb als Kommentare übersprungen.
ENUM (…) · SET (…)
Als Spaltentyp enum bzw. set angezeigt; die erlaubten Werte werden nicht aufgelistet.

Was ein MySQL-Diagramm nicht zeigt

  • Stored Procedures, Funktionen, Trigger und Events; gezeichnet wird keines davon. Prozeduren und Funktionen zählt die Vorschau, während die Trigger und Events, die mysqldump in Versionskommentare schreibt, als Kommentare übersprungen werden.
  • Alles innerhalb von Versionskommentaren wie /*!50100 PARTITION BY … */. Der Text gilt als Kommentar, sodass Partitionierung und andere versionsabhängige Optionen nicht erscheinen.
  • Zeilen aus erweiterten INSERT-Anweisungen. Sie werden ungelesen übersprungen, selbst wenn eine einzige INSERT-Zeile mehrere Megabyte groß ist.
  • Alles aus einem laufenden MySQL- oder MariaDB-Server. Es wird keine Verbindung aufgebaut; Zeilenzahlen, Tabellengrößen und Servereinstellungen erscheinen nicht.

Fragen zu MySQL und MariaDB

Welcher mysqldump-Befehl eignet sich am besten?

mysqldump --no-data --skip-comments --compact mydb > schema.sql liefert nur die CREATE-TABLE-Anweisungen, ohne Datenzeilen und ohne die Zeilen drumherum. Ein vollständiger Dump funktioniert auch: Die INSERT-Anweisungen werden übersprungen, das Diagramm ist also dasselbe, nur die Datei ist größer.

Funktioniert es mit MariaDB?

Ja. MariaDB schreibt dasselbe Dump-Format; wählen Sie MySQL / MariaDB oder überlassen Sie es der Erkennung. Ausgaben von mariadb-dump, Namen in Backticks und AUTO_INCREMENT werden genauso gelesen wie bei MySQL, und inline geschriebene REFERENCES werden als Beziehungen gezeichnet, egal welcher Server die Datei erzeugt hat.

Warum bekommt ein inline geschriebenes REFERENCES einen Hinweis?

In MySQL 8 und älter wird REFERENCES direkt hinter einer Spalte akzeptiert, aber ignoriert: Es entsteht kein Fremdschlüssel. Ab MySQL 9.0 wird er angelegt. Das Diagramm zeichnet die Beziehung in beiden Fällen, weil das Skript sie angibt; der Hinweis erinnert daran, zu prüfen, ob die Datenbank diesen Schlüssel wirklich hat.

Kann ich statt eines Dumps Workbench-Skripte oder Migrationen einfügen?

Ja. Ein per Forward Engineering erzeugtes Skript aus MySQL Workbench, ein Laravel-Schema-Dump, eine structure.sql aus Rails oder handgeschriebenes DDL funktionieren. Anweisungen, die Tabellen später ändern, etwa ALTER TABLE … ADD CONSTRAINT … FOREIGN KEY oder ADD COLUMN, werden auf die genannten Tabellen angewendet.

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

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

Ist das Tool für MySQL-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.