Kostenloses Tool

SQLite als ER-Diagramm

Fügen Sie ein, was sqlite3 für .schema oder .dump ausgibt, und erhalten Sie ein ER-Diagramm der Tabellen, Schlüssel und Fremdschlüssel, einschließlich Spalten ohne Typ. Probieren Sie das Beispiel einer Notiz-App aus: Notizbücher, Notizen, Tags und die Tabelle, die Notizen mit Tags verbindet.

Beispielausgabe

Beispieldiagramm aus einem SQLite-Beispiel
Beispiel ausprobierenNotiz-App

So funktioniert es

  1. Schema einfügen oder ablegen

    Die Ausgabe von .schema oder .dump, eine in SQL geschriebene Migrationsdatei oder CREATE-TABLE-Anweisungen, kopiert aus einem beliebigen SQLite-Tool.

  2. Tabellen und Verbindungen ansehen

    Jede Tabelle wird zu einer Karte mit ihren Spalten, und jede REFERENCES-Klausel wird zu einer Linie zu der Tabelle, auf die sie verweist, ob Fremdschlüssel aktiviert sind oder nicht.

  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 einer SQLite-Datei holen

Führen Sie dies neben der Datenbankdatei aus und fügen Sie die Ausgabe ein:

  1. .schema gibt jede CREATE-Anweisung ohne Datenzeilen aus; .dump gibt dasselbe plus die Daten aus, die übersprungen werden. Ersetzen Sie app.db durch den Dateinamen oder hängen Sie > schema.sql an, um die Ausgabe zu speichern, und legen Sie dann diese Datei ab.

    sqlite3 app.db .schema

SQLite-Syntax im Schema

So wird jedes Konstrukt in der Ausgabe von sqlite3 behandelt:

INTEGER PRIMARY KEY
Als PK markiert. Diese Spalte ist die rowid der Tabelle, und andere Tabellen können mit REFERENCES auf sie verweisen.
AUTOINCREMENT
Als Teil des Primärschlüssels gelesen und nicht angezeigt. SQLite schreibt es ohne Unterstrich, anders als AUTO_INCREMENT in MySQL.
CREATE TABLE note_tags (note_id, tag_id)
Gelesen. Eine ohne Typ deklarierte Spalte erscheint mit ihrem Namen und ohne Typ; Schlüssel auf ihr zählen trotzdem.
WITHOUT ROWID · STRICT
Als Tabellenoptionen übersprungen; Tabelle, Spalten und Primärschlüssel werden wie gewohnt gelesen.
sqlite_sequence
Ausgeblendet. SQLite legt diese Tabelle für AUTOINCREMENT an, und .schema gibt sie mit aus, doch sie gehört nicht zum Entwurf der App; ein .dump füllt sie nur mit INSERT-Zeilen, die übersprungen werden.
CREATE TRIGGER
Übersprungen und gezählt. Die Semikolons innerhalb von BEGIN … END werden korrekt behandelt, sodass Tabellen nach einem Trigger weiterhin gelesen werden.

Was ein SQLite-Diagramm nicht zeigt

  • Trigger und Views. Ihre Rümpfe werden übersprungen und gezählt; was sie tun, erscheint nicht im Diagramm.
  • Die internen Verwaltungstabellen von SQLite wie sqlite_sequence und sqlite_stat1. Alles, dessen Name mit sqlite_ beginnt, wird ausgeblendet.
  • Ob Fremdschlüssel durchgesetzt werden. PRAGMA foreign_keys ist in SQLite standardmäßig aus, und das Diagramm zeichnet jedes deklarierte REFERENCES unabhängig von dieser Einstellung.
  • Die Datenbankdatei selbst. Eine .db-Datei lässt sich hier nicht öffnen; Seitengröße, Zeilenzahlen und gespeicherte Zeilen erscheinen daher nicht. Fügen Sie stattdessen den Text von .schema ein.

Fragen zu SQLite

.schema oder .dump: Was sollte ich verwenden?

.schema ist kürzer, weil es nur die CREATE-Anweisungen ausgibt. .dump fügt jede Zeile als INSERT-Anweisung zwischen BEGIN TRANSACTION und COMMIT hinzu; auch das funktioniert, weil die Zeilen übersprungen werden. Für eine einzelne Tabelle geben Sie .schema ihren Namen mit, etwa .schema notes.

Warum haben manche Spalten keinen Typ?

SQLite erlaubt Spalten ohne Typ, wie in CREATE TABLE note_tags (note_id, tag_id). Das Diagramm zeigt eine solche Spalte mit ihrem Namen und leerem Typ. In einer STRICT-Tabelle hat jede Spalte einen Typ, und er wird so angezeigt, wie er geschrieben ist.

Warum gibt es keine Linien zwischen meinen Tabellen?

Linien entstehen aus REFERENCES-Klauseln und FOREIGN-KEY-Constraints. Viele Apps deklarieren sie nie und speichern nur IDs; dann gibt es nichts zu zeichnen. Sobald das Schema sie deklariert, erscheinen die Linien, ob PRAGMA foreign_keys eingeschaltet ist oder nicht.

Kann ich die SQLite-Datenbank einer mobilen App als Diagramm darstellen?

Ja. Kopieren Sie die Datenbankdatei vom Gerät oder Emulator auf Ihren Computer, führen Sie sqlite3 app.db .schema aus und fügen Sie die Ausgabe ein. Dasselbe funktioniert für Desktop-Apps, Electron-Apps und lokale Entwicklungsdatenbanken von Django oder Rails.

Wird etwas gespeichert, wenn ich ein Schema 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 Linien als neues Diagramm in Ihrem Workspace gespeichert. Spätere Änderungen an der .db-Datei aktualisieren es nicht.

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

Ja. Für das Einfügen eines Schemas 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.