Datenbankmodellierung für PostgreSQL, MySQL, MariaDB und SQL Server
Datenbankmodelle
als JSON in Git gespeichert.
Schevo importiert ein Schema aus einem SQL-Skript oder einer laufenden Datenbank, zeigt es als bearbeitbares ER-Diagramm und speichert es als Ordner mit einer JSON-Datei pro Tabelle, bereit für die Versionskontrolle mit Git. Beim Speichern wird auch das Erstellungsskript neu erzeugt.
- 30 Tage testen, ohne Registrierung
- Funktioniert ohne Internetverbindung
- Windows und Linux
- Deutsch, Englisch, Spanisch und Französisch
Vom SQL-Skript ins Repository
- 1
Importieren
Öffnen Sie ein
CREATE TABLE-Skript oder verbinden Sie sich mit der Datenbank. Tabellen, Spalten, Schlüssel, Indizes und Beziehungen werden importiert, und das Diagramm wird automatisch angeordnet. - 2
Modellieren
Bearbeiten Sie Tabellen, Spalten und Beziehungen im Diagramm oder im Tabelleneditor. Jede Änderung lässt sich mit Ctrl+Z rückgängig machen.
- 3
Committen
Beim Speichern wird eine JSON-Datei pro Tabelle geschrieben und das verknüpfte SQL-Skript neu erzeugt. Beides gehört in denselben Commit.
Funktionen
Die Videos zeigen die Anwendung mit dem mitgelieferten Beispiel eines Onlineshops.
Import
Import aus einem SQL-Skript oder einer laufenden Datenbank
Schevo liest Erstellungsskripte und Schema-Dumps oder fragt den Katalog einer laufenden Datenbank ab. Importiert werden Tabellen, Spalten, Primär- und Fremdschlüssel, UNIQUE- und CHECK-Constraints, Indizes und Kommentare. Das Diagramm wird automatisch angeordnet: Tabellen nach Präfix gruppiert, übergeordnete Tabellen links von ihren untergeordneten und eine Farbe pro Gruppe.
- Anweisungen, die das Diagramm nicht darstellt (Sichten, Funktionen, Trigger, Sequenzen, Typen), werden in
extra.sqlgespeichert und wieder in das generierte SQL geschrieben. - Anweisungen, die nicht interpretiert werden können, werden mit ihrer Zeilennummer aufgelistet und im SQL beibehalten.
- Die Datenbankverbindung führt nur lesende Katalogabfragen aus. Server, Port, Datenbank und Benutzername werden gespeichert, das Passwort nie.
Datenbanksysteme
Datenbanksysteme: PostgreSQL, MySQL, MariaDB und SQL Server
Jedes Modell hat ein Datenbanksystem, das in project.json gespeichert ist. Für alle importiert Schevo Skripte und Datenbanken, erzeugt das Erstellungs-SQL in der jeweiligen Syntax, vergleicht Versionen und erzeugt Migrationen. Diagramm, JSON-Format und Befehlszeile sind dieselben.
- Laufende Datenbanken: PostgreSQL ab 10, MySQL ab 8.0, MariaDB ab 10.6, SQL Server ab 2017 und Azure SQL Database.
- MySQL und MariaDB, auch aus Schema-Dumps:
AUTO_INCREMENT,UNSIGNED,ENUM/SET, generierte Spalten,ON UPDATE,FULLTEXT- undSPATIAL-Indizes sowie Tabellenoptionen. - Der Tabelleneditor zeigt die Attribute des Datenbanksystems des Modells; bei MySQL und MariaDB Speicher-Engine, Zeichensatz, Sortierung,
ON UPDATE, generierte Spalten und Indextyp. - Lange
ENUM- undSET-Typen werden im Diagramm abgekürzt; der vollständige Typ steht im Tooltip und im Editor. - Migrationen für MySQL und MariaDB verwenden
MODIFY COLUMNmit der vollständigen Definition, und ihr Kopf weist darauf hin, dass DDL auf diesen Systemen nicht transaktional ist. - SQL Server: T-SQL-Skripte mit
GO-Batches und Bezeichnern in eckigen Klammern,IDENTITY, berechnete Spalten mitPERSISTED, gruppierte und nicht gruppierte Indizes mitINCLUDEund Filter, benannteDEFAULT-Constraints, Sortierungen und Kommentare als erweiterte Eigenschaften (MS_Description). - Migrationen für SQL Server laufen in einer einzigen Transaktion mit
SET XACT_ABORT ON: Schlägt eine Anweisung fehl, wird keine angewendet. Umbenennungen verwendensp_rename.
CREATE TABLE ord_cart (
cart_id BIGINT UNSIGNED NOT NULL,
customer_id BIGINT UNSIGNED,
session_id CHAR(36) NOT NULL COMMENT 'Browser session, for guest carts.',
coupon_id BIGINT UNSIGNED,
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (cart_id),
UNIQUE KEY ord_cart_session_idx (session_id)
) COMMENT='Open carts, from registered customers or guests.';
CREATE TABLE dbo.ord_order_line (
order_id BIGINT NOT NULL,
line_no SMALLINT NOT NULL,
variant_id BIGINT NOT NULL,
description NVARCHAR(200) NOT NULL,
quantity SMALLINT NOT NULL,
unit_price DECIMAL(12,2) NOT NULL,
discount DECIMAL(12,2) NOT NULL CONSTRAINT ord_order_line_discount_df DEFAULT 0,
tax_code VARCHAR(10) NOT NULL,
amount AS (quantity * unit_price - discount) PERSISTED NOT NULL,
CONSTRAINT ord_order_line_pk PRIMARY KEY (order_id, line_no),
CONSTRAINT ord_order_line_quantity_check CHECK (quantity > 0)
);
GO
Bearbeiten
Bearbeitung per Tastatur im Diagramm
T legt eine Tabelle an der Cursorposition an. C fügt der ausgewählten Tabelle Spalten aus einer Zeile wie betrag numeric(10,2) not null hinzu. Alt + Ziehen von der untergeordneten zur übergeordneten Tabelle erstellt die Beziehung. Ein Klick auf eine Spalte hebt die Beziehungen hervor, die sie verwenden, und jede Änderung lässt sich mit Ctrl+Z rückgängig machen.
- Beim Umbenennen einer Tabelle werden die Fremdschlüssel, die auf sie verweisen, sowie die PK- und FK-Namen, die der Benennungskonvention folgen, angepasst.
- Eine Typänderung an einer referenzierten Spalte wird über die ganze Kette an die FK-Spalten der untergeordneten Tabellen weitergegeben.
- Zonen, Notizen, Übersichtskarte, Kompaktmodus (nur PK- und FK-Spalten) und dunkles Design.
Dateiformat
Ein versionierbares Modell: eine JSON-Datei pro Tabelle
Ein Modell ist ein Ordner: project.json, ein Ordner tables/ mit einer Datei pro Tabelle und, sofern sie Inhalt haben, extra.sql und diagram.json. Die Ausgabe ist deterministisch: feste Reihenfolge der Eigenschaften, LF-Zeilenenden und eine Eigenschaft pro Zeile. Nur geänderte Dateien werden neu geschrieben.
- Reine Textdateien, die Sie auch ohne Schevo lesen und bearbeiten können.
- Keine Binärdateien, keine Sperren und keine lokale Datenbank.
db-model/
project.json
extra.sql
tables/
public.cat_attribute.json
public.cat_brand.json
public.cat_category.json
public.cat_image.json
public.cat_price_history.json
… (62 files)
{
"name" : "ord_cart",
"schema" : "public",
"comment" : "Open carts, from registered customers or guests.",
"columns" : [
{
"name" : "cart_id",
"type" : "BIGINT",
"nullable" : false
},
{
"name" : "customer_id",
"type" : "BIGINT",
"nullable" : true
},
{
"name" : "session_id",
"type" : "UUID",
"nullable" : false,
"comment" : "Browser session, for guest carts."
},
{
"name" : "coupon_id",
"type" : "BIGINT",
"nullable" : true
},
…
Git
Versionskontrolle mit Git: lesbare Diffs und Merges pro Tabelle
Jede Tabelle liegt in einer eigenen Datei, und das Format ändert sich zwischen zwei Speichervorgängen nicht. Ein Diff zeigt daher nur die geänderten Zeilen. Wenn zwei Personen verschiedene Tabellen bearbeiten, ändern sie verschiedene Dateien, und das Zusammenführen von Schemaänderungen ist ein gewöhnlicher Git-Merge. Das Verschieben einer Tabelle ändert nur ihre Werte x und y.
- Nach einem
git pulloder einem Branchwechsel wird das geöffnete Modell neu geladen, wenn es keine ungespeicherten Änderungen gibt; andernfalls wird das Neuladen angeboten. - Beim Öffnen des Modells werden ungelöste Konfliktmarkierungen mit Datei und Zeile gemeldet.
schevo-cli checkschlägt in der CI fehl, wenn das SQL nicht mit dem Modell übereinstimmt.
$ git diff
--- a/db-model/tables/public.cus_customer.json
+++ b/db-model/tables/public.cus_customer.json
@@ -10,2 +10,8 @@
},
+ {
+ "name" : "loyalty_points",
+ "type" : "INTEGER",
+ "nullable" : false,
+ "default" : "0"
+ },
{
@@ -140,3 +146,3 @@
"layout" : {
- "x" : 1671,
+ "x" : 1911,
"y" : 40,
SQL
Erstellungs-SQL mit Vorschau der Änderungen
Das Erstellungsskript hat ein festes Format: Tabellen in alphabetischer Reihenfolge, Primärschlüssel, UNIQUE- und CHECK-Constraints innerhalb jeder Tabelle, Indizes direkt danach und Fremdschlüssel am Ende als ALTER TABLE. Ctrl+G öffnet eine Vorschau mit den hinzugefügten und entfernten Zeilen gegenüber der Datei auf dem Datenträger.
- Kopieren, in die verknüpfte Datei speichern oder in eine andere Datei speichern.
- Beim Speichern des Modells wird das verknüpfte Skript neu erzeugt, mit LF- oder CRLF-Zeilenenden je nach Projekteinstellung.
CREATE TABLE public.ord_cart (
cart_id BIGINT NOT NULL,
customer_id BIGINT,
session_id UUID NOT NULL,
coupon_id BIGINT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT now() NOT NULL,
CONSTRAINT ord_cart_pk PRIMARY KEY (cart_id)
);
ALTER TABLE public.ord_cart ADD CONSTRAINT cus_customer_ord_cart_fk
FOREIGN KEY (customer_id)
REFERENCES public.cus_customer (customer_id)
ON DELETE CASCADE
ON UPDATE NO ACTION
NOT DEFERRABLE;
Migrationen
Migrationen aus Git, einem anderen Modell oder einer laufenden Datenbank
Wählen Sie die Ausgangsversion (eine Git-Revision, den zuletzt gespeicherten Stand, ein anderes Modell, ein SQL-Skript oder eine laufende Datenbank), und Schevo erzeugt das ALTER-Skript, das sie in das aktuelle Modell überführt. Betroffene Fremdschlüssel werden vor den Änderungen entfernt und am Ende neu angelegt. Bei PostgreSQL und SQL Server läuft das Skript in einer Transaktion.
- Mögliche Umbenennungen von Tabellen und Spalten werden als Kontrollkästchen angeboten und als
RENAMEgeschrieben (sp_renamebei SQL Server) statt als Löschen und Neuanlegen. - Ein Fremdschlüssel wird nur neu angelegt, wenn sich seine Spalten oder der Schlüssel der übergeordneten Tabelle ändern.
- Über die Befehlszeile:
schevo-cli migratemit--git,--fromoder--from-dbsowie--renameoder--detect-renames.
Vergleichen
Versionsvergleich im Diagramm
Vergleichen Sie das geöffnete Modell mit einer Git-Revision, dem zuletzt gespeicherten Stand, einem anderen Modell, einem SQL-Skript oder einer laufenden Datenbank. Neue Tabellen werden grün markiert, geänderte gelb mit hervorgehobenen geänderten Spalten, und entfernte Tabellen erscheinen halbtransparent an ihrer bisherigen Position. Die Änderungsliste führt zu jeder Tabelle. Auch Modelle verschiedener Datenbanksysteme lassen sich vergleichen.
Validierung
Validierung während der Bearbeitung
Der Validierungsbereich wird bei jeder Änderung aktualisiert und unterscheidet Fehler und Warnungen. Fehler: Fremdschlüssel auf nicht vorhandene Spalten, Primärschlüssel, die NULL zulassen, doppelte Namen, SET NULL auf NOT-NULL-Spalten. Warnungen: unterschiedliche Typen auf beiden Seiten einer Beziehung, CASCADE-Zyklen, reservierte Wörter und Namen, die den Benennungsregeln des Projekts widersprechen. Jedes Datenbanksystem bringt eigene Regeln mit: maximale Bezeichnerlänge, AUTO_INCREMENT-Spalten, Zeichensatz und Sortierung bei Fremdschlüsseln in MySQL, gruppierte Indizes und Kaskadenpfade in SQL Server. schevo-cli validate wendet dieselben Regeln an.

Export
Export als PNG, SVG und PDF sowie Datenwörterbuch
Das Diagramm wird als PNG, SVG oder PDF exportiert, immer im hellen Design. Das Datenwörterbuch ist eine eigenständige HTML-Datei mit dem Diagramm, einem durchsuchbaren Index und einem Abschnitt pro Tabelle mit Spalten, Schlüsseln, Indizes und Kommentaren.

Befehlszeile
Befehlszeile für die CI
schevo-cli wird mit der Anwendung installiert. validate endet mit 0, wenn es keine Fehler gibt, mit 1, wenn es welche gibt, und mit 2, wenn das Modell nicht gelesen werden kann; check prüft zusätzlich, ob das SQL synchron ist. Beide sind kostenlos, mit oder ohne Lizenz. import, generate, migrate und doc erfordern eine Lizenz und enden ohne sie mit 3.
# CI job — fail the merge request if the model
# has errors or the SQL was not regenerated
schema-check:
image: eclipse-temurin:17-jre
script:
- java -jar tools/schevo.jar check db-model
$ java -jar tools/schevo.jar check db-model
OK: valid model and SQL in sync
Weitere Funktionen
Suche
Ctrl+F durchsucht Tabellen, Spalten, Beziehungen, Indizes, Constraints und Kommentare.
Zonen und Notizen
Farbige Zonen, die sich mit ihren Tabellen bewegen, und Textnotizen im Diagramm.
Mehrere Fenster
Ein Modell pro Fenster. Tabellen lassen sich zwischen Fenstern kopieren und einfügen.
Wiederherstellungskopien
Alle 2 Minuten, solange es ungespeicherte Änderungen gibt. Nach einem unerwarteten Beenden wird die Kopie angeboten.
Benennungsregeln
Vorlagen für die Namen von PK, FK, UNIQUE-Constraints und Indizes. Sie werden beim Vorschlagen von Namen und bei der Validierung verwendet.
Helles und dunkles Design
Ctrl+Umschalt+D wechselt das Design. Exporte verwenden immer das helle.
Vier Sprachen
Oberfläche, Handbuch und Hilfe der Befehlszeile auf Deutsch, Englisch, Spanisch und Französisch.
Ohne Internetverbindung
Kein Konto und keine Cloud-Dienste. Ihre Modelle bleiben auf Ihrem Computer.
Große Modelle
Das Diagramm ist für Modelle mit 500 bis 1.000 Tabellen optimiert und daran gemessen.
An Fenster anpassen
Beim Öffnen, Importieren oder Vergleichen wird das ganze Diagramm an das Fenster angepasst. Ctrl+9 passt es erneut an.
Update-Hinweise
Tägliche Prüfung auf neue Versionen, abschaltbar, mit „Diese Version überspringen“.
Windows und Linux
Ein Installationsprogramm für Windows; .deb, .rpm und .tar.gz für Linux x64. Alle enthalten Java.
Kostenlose Testversion
Schevo ist derzeit als kostenlose Testversion erhältlich: Laden Sie es herunter und nutzen Sie 30 Tage lang alle Funktionen. Kostenpflichtige Lizenzen folgen zu einem späteren Zeitpunkt.
Nach Ablauf der Testversion öffnet Schevo Modelle weiterhin schreibgeschützt: Sie können sie durchsehen und durchsuchen, Versionen vergleichen und nach PNG, SVG und PDF exportieren. schevo-cli validate und check funktionieren immer.
Interesse? Schreiben Sie uns an contact@schevo-db.com, und wir benachrichtigen Sie, sobald Lizenzen verfügbar sind.
Beta anfordernHäufige Fragen
Welche Datenbanken werden unterstützt?
PostgreSQL, MySQL, MariaDB und SQL Server. Für alle: Import aus einem Skript oder einer laufenden Datenbank, SQL-Generierung, Vergleich und Migrationen. Laufende Datenbanken: PostgreSQL ab 10, MySQL ab 8.0, MariaDB ab 10.6, SQL Server ab 2017 und Azure SQL Database, die letzten beiden mit SQL-Server-Authentifizierung (Benutzername und Passwort).
Brauche ich eine Internetverbindung oder ein Konto?
Nein. Schevo funktioniert ohne Internetverbindung, hat keine Konten und prüft den Lizenzschlüssel auf Ihrem Computer. Die einzige Netzwerkanfrage ist die Suche nach Updates: Sie lädt höchstens einmal täglich eine öffentliche Datei herunter und sendet keine Daten. Sie können sie im Menü Hilfe abschalten.
Kann ich die Beta testen?
Ja. Die Beta für Windows ist kostenlos und für alle offen: Fordern Sie sie über das Beta-Formular an, und wir senden Ihnen den Download-Link per E-Mail. Sie haben 30 Tage mit allen Funktionen; danach bleibt Schevo kostenlos im schreibgeschützten Modus. Eine Kreditkarte ist nicht nötig.
Was passiert nach Ablauf der Testversion?
Schevo wechselt in den schreibgeschützten Modus: Sie können Modelle öffnen, durchsehen, durchsuchen, vergleichen und als Bild exportieren, aber nicht bearbeiten, speichern oder SQL, Migrationen und das Datenwörterbuch erzeugen. Kostenpflichtige Lizenzen, mit denen Sie weiter bearbeiten können, folgen zu einem späteren Zeitpunkt.
Funktioniert es mit meinem Git-Hosting?
Ja. Schevo liest und schreibt Dateien im Repository-Ordner und verwendet das auf Ihrem Computer installierte git, um mit Revisionen zu vergleichen. Es funktioniert mit jedem Git-Server.
Welche Betriebssysteme?
Windows 10 und 11 (64 Bit) sowie Linux x64 (.deb, .rpm oder ein portables .tar.gz). Die Pakete enthalten ihr eigenes Java; Sie müssen es nicht installieren.
Testen Sie Schevo mit Ihrem eigenen Schema
Laden Sie das Installationsprogramm herunter, importieren Sie Ihr Skript mit Datei › SQL importieren… und speichern Sie das Modell in Ihrem Repository. 30 Tage mit allen Funktionen.