Modélisation de bases de données pour PostgreSQL, MySQL, MariaDB et SQL Server
Des modèles de bases de données
enregistrés en JSON dans Git.
Schevo importe un schéma depuis un script SQL ou une base de données en service, l'affiche sous forme de diagramme entité-association modifiable et l'enregistre dans un dossier, avec un fichier JSON par table, prêt pour le contrôle de version avec Git. L'enregistrement régénère aussi le script de création.
- 30 jours d'essai, sans inscription
- Fonctionne sans connexion
- Windows et Linux
- Français, anglais, espagnol et allemand
Du script SQL au dépôt
- 1
Importer
Ouvrez un script
CREATE TABLEou connectez-vous à la base de données. Les tables, colonnes, clés, index et relations sont importés, et le diagramme est disposé automatiquement. - 2
Modéliser
Modifiez les tables, les colonnes et les relations dans le diagramme ou dans l'éditeur de table. Toute modification peut être annulée avec Ctrl+Z.
- 3
Committer
L'enregistrement écrit un fichier JSON par table et régénère le script SQL associé. Les deux vont dans le même commit.
Fonctionnalités
Les vidéos montrent l'application avec l'exemple de boutique en ligne qu'elle inclut.
Import
Import depuis un script SQL ou une base de données en service
Schevo lit les scripts de création et les exports de schéma, ou interroge le catalogue d'une base de données en service. Il importe les tables, colonnes, clés primaires et étrangères, contraintes UNIQUE et CHECK, index et commentaires. Le diagramme est disposé automatiquement : tables regroupées par préfixe, tables parentes à gauche de leurs tables enfants et une couleur par groupe.
- Les instructions que le diagramme ne représente pas (vues, fonctions, triggers, séquences, types) sont conservées dans
extra.sqlet réécrites dans le SQL généré. - Les instructions qui ne peuvent pas être interprétées sont listées avec leur numéro de ligne et conservées dans le SQL.
- La connexion à la base de données n'exécute que des requêtes de lecture sur le catalogue. Le serveur, le port, la base de données et l'utilisateur sont mémorisés ; le mot de passe n'est jamais enregistré.
Moteurs
Moteurs : PostgreSQL, MySQL, MariaDB et SQL Server
Chaque modèle a un moteur, enregistré dans project.json. Pour tous, Schevo importe des scripts et des bases de données, génère le SQL de création dans la syntaxe du moteur, compare des versions et génère des migrations. Le diagramme, le format JSON et la ligne de commande sont les mêmes.
- Bases de données en service : PostgreSQL 10 ou ultérieur, MySQL 8.0 ou ultérieur, MariaDB 10.6 ou ultérieur, SQL Server 2017 ou ultérieur et Azure SQL Database.
- MySQL et MariaDB, y compris depuis des exports de schéma :
AUTO_INCREMENT,UNSIGNED,ENUM/SET, colonnes générées,ON UPDATE, indexFULLTEXTetSPATIALet options de table. - L'éditeur de table affiche les attributs du moteur du modèle ; pour MySQL et MariaDB, moteur de stockage, jeu de caractères, collation,
ON UPDATE, colonnes générées et type d'index. - Les types
ENUMetSETlongs sont abrégés dans le diagramme ; le type complet apparaît dans l'infobulle et dans l'éditeur. - Les migrations MySQL et MariaDB utilisent
MODIFY COLUMNavec la définition complète, et leur en-tête rappelle que le DDL de ces moteurs n'est pas transactionnel. - SQL Server : scripts T-SQL avec lots
GOet identifiants entre crochets,IDENTITY, colonnes calculéesPERSISTED, index cluster et non cluster avecINCLUDEet filtre, contraintesDEFAULTnommées, collations et commentaires sous forme de propriétés étendues (MS_Description). - Les migrations SQL Server s'exécutent en une seule transaction avec
SET XACT_ABORT ON: si une instruction échoue, aucune n'est appliquée. Les renommages utilisentsp_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
Édition
Édition au clavier dans le diagramme
T crée une table sous le curseur. C ajoute des colonnes à la table sélectionnée à partir d'une ligne comme montant numeric(10,2) not null. Alt + glisser de la table enfant vers la table parente crée la relation. Un clic sur une colonne met en évidence les relations qui l'utilisent, et toute modification peut être annulée avec Ctrl+Z.
- Renommer une table met à jour les clés étrangères qui la référencent ainsi que les noms de PK et de FK qui suivent la convention de nommage.
- Un changement de type sur une colonne référencée se propage aux colonnes FK des tables enfants, en cascade.
- Zones, notes, minicarte, mode compact (colonnes PK et FK uniquement) et mode sombre.
Format sur disque
Un modèle versionnable : un fichier JSON par table
Un modèle est un dossier : project.json, un dossier tables/ avec un fichier par table et, lorsqu'ils ont un contenu, extra.sql et diagram.json. La sortie est déterministe : ordre fixe des propriétés, fins de ligne LF et une propriété par ligne. Seuls les fichiers modifiés sont réécrits.
- Des fichiers texte que vous pouvez lire et modifier sans Schevo.
- Aucun fichier binaire, aucun verrou et aucune base de données locale.
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
Contrôle de version avec Git : des diffs lisibles et des fusions par table
Chaque table se trouve dans son propre fichier et le format ne varie pas d'un enregistrement à l'autre : un diff ne montre que les lignes modifiées. Deux personnes qui modifient des tables différentes modifient des fichiers différents, et la fusion des modifications de schéma est une fusion Git ordinaire. Déplacer une table ne change que ses valeurs x et y.
- Après un
git pullou un changement de branche, le modèle ouvert est rechargé s'il n'y a pas de modifications non enregistrées ; sinon, le rechargement vous est proposé. - À l'ouverture du modèle, les marqueurs de conflit non résolus sont signalés avec le fichier et la ligne.
schevo-cli checkéchoue en intégration continue si le SQL n'est pas synchronisé avec le modèle.
$ 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
SQL de création avec aperçu des modifications
Le script de création a un format fixe : tables par ordre alphabétique, clé primaire, contraintes UNIQUE et CHECK à l'intérieur de chaque table, index juste après et clés étrangères à la fin sous forme d'ALTER TABLE. Ctrl+G ouvre un aperçu des lignes ajoutées et supprimées par rapport au fichier sur disque.
- Copier, enregistrer dans le fichier associé ou enregistrer dans un autre fichier.
- L'enregistrement du modèle régénère le script associé, avec des fins de ligne LF ou CRLF selon le projet.
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;
Migrations
Migrations depuis Git, un autre modèle ou une base de données en service
Choisissez la version de départ (une révision Git, la dernière version enregistrée, un autre modèle, un script SQL ou une base de données en service) et Schevo génère le script ALTER qui l'amène au modèle actuel. Les clés étrangères concernées sont supprimées avant les modifications et recréées à la fin. Avec PostgreSQL et SQL Server, le script s'exécute dans une transaction.
- Les renommages possibles de tables et de colonnes sont proposés sous forme de cases à cocher et écrits en
RENAME(sp_renameavec SQL Server) plutôt qu'en suppression et création. - Une clé étrangère n'est recréée que si ses colonnes ou la clé de la table parente changent.
- En ligne de commande :
schevo-cli migrateavec--git,--fromou--from-db, et--renameou--detect-renames.
Comparaison
Comparaison de versions dans le diagramme
Comparez le modèle ouvert avec une révision Git, la dernière version enregistrée, un autre modèle, un script SQL ou une base de données en service. Les nouvelles tables sont marquées en vert ; les tables modifiées en orange, avec les colonnes modifiées mises en évidence ; les tables supprimées sont dessinées en transparence à leur ancienne position. La liste des modifications mène à chaque table. Il est aussi possible de comparer des modèles de moteurs différents.
Validation
Validation pendant l'édition
Le panneau de validation se met à jour à chaque modification et distingue les erreurs des avertissements. Erreurs : clés étrangères vers des colonnes inexistantes, clés primaires qui acceptent NULL, noms en double, SET NULL sur des colonnes NOT NULL. Avertissements : types différents de part et d'autre d'une relation, cycles de CASCADE, mots réservés et noms contraires aux règles de nommage du projet. Chaque moteur ajoute ses propres règles : longueur maximale des identifiants, colonnes AUTO_INCREMENT, jeu de caractères et collation des clés étrangères MySQL, index cluster et chemins de cascade sous SQL Server. schevo-cli validate applique les mêmes règles.

Export
Export PNG, SVG et PDF, et dictionnaire de données
Le diagramme s'exporte en PNG, SVG ou PDF, toujours avec le thème clair. Le dictionnaire de données est un fichier HTML autonome avec le diagramme, un index avec recherche et une section par table avec ses colonnes, clés, index et commentaires.

Ligne de commande
Ligne de commande pour l'intégration continue
schevo-cli est installé avec l'application. validate se termine avec le code 0 s'il n'y a pas d'erreur, 1 s'il y en a et 2 si le modèle ne peut pas être lu ; check vérifie en outre que le SQL est synchronisé. Les deux sont gratuits, avec ou sans licence. import, generate, migrate et doc nécessitent une licence et se terminent avec le code 3 sans licence.
# 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
Autres fonctionnalités
Recherche
Ctrl+F recherche dans les tables, colonnes, relations, index, contraintes et commentaires.
Zones et notes
Des zones colorées qui se déplacent avec leurs tables, et des notes de texte dans le diagramme.
Plusieurs fenêtres
Un modèle par fenêtre. Les tables se copient et se collent d'une fenêtre à l'autre.
Copies de récupération
Toutes les 2 minutes tant qu'il y a des modifications non enregistrées. Après une fermeture inattendue, la copie vous est proposée.
Règles de nommage
Des modèles pour les noms de PK, de FK, de contraintes UNIQUE et d'index. Ils servent à proposer des noms et à valider.
Thèmes clair et sombre
Ctrl+Maj+D change de thème. Les exports utilisent toujours le thème clair.
Quatre langues
Interface, manuel et aide de la ligne de commande en français, anglais, espagnol et allemand.
Sans connexion
Pas de compte ni de service dans le cloud. Vos modèles restent sur votre ordinateur.
Grands modèles
Le diagramme est optimisé et mesuré avec des modèles de 500 à 1 000 tables.
Ajuster à la fenêtre
À l'ouverture, à l'import ou à la comparaison, le diagramme entier s'ajuste à la fenêtre. Ctrl+9 l'ajuste de nouveau.
Avis de mise à jour
Une vérification quotidienne des nouvelles versions, désactivable, avec « Ignorer cette version ».
Windows et Linux
Un programme d'installation pour Windows ; .deb, .rpm et .tar.gz pour Linux x64. Tous incluent Java.
Essai gratuit
Schevo est actuellement proposé en essai gratuit : téléchargez-le et utilisez toutes ses fonctions pendant 30 jours. Les licences payantes arriveront plus tard.
À la fin de l'essai, Schevo continue d'ouvrir les modèles en lecture seule : vous pouvez les parcourir, y faire des recherches, comparer des versions et exporter en PNG, SVG et PDF. schevo-cli validate et check fonctionnent toujours.
Cela vous intéresse ? Écrivez-nous à contact@schevo-db.com et nous vous préviendrons dès que les licences seront disponibles.
Demander la bêtaQuestions fréquentes
Quelles bases de données sont prises en charge ?
PostgreSQL, MySQL, MariaDB et SQL Server. Pour tous : import depuis un script ou une base de données en service, génération du SQL, comparaison et migrations. Bases de données en service : PostgreSQL 10 ou ultérieur, MySQL 8.0 ou ultérieur, MariaDB 10.6 ou ultérieur, SQL Server 2017 ou ultérieur et Azure SQL Database, ces deux derniers avec l'authentification SQL Server (nom d'utilisateur et mot de passe).
Faut-il une connexion Internet ou un compte ?
Non. Schevo fonctionne sans connexion, n'a pas de comptes et vérifie la clé de licence sur votre ordinateur. La seule requête réseau est la recherche de mises à jour : elle télécharge un fichier public au plus une fois par jour et n'envoie aucune donnée. Vous pouvez la désactiver dans le menu Aide.
Puis-je essayer la bêta ?
Oui. La bêta pour Windows est gratuite et ouverte à tous : demandez-la avec le formulaire de la bêta et nous vous enverrons le lien de téléchargement par e-mail. Vous disposez de 30 jours avec toutes les fonctionnalités ; ensuite, Schevo reste en lecture seule, sans frais. Aucune carte bancaire n'est nécessaire.
Que se passe-t-il à la fin de l'essai ?
Schevo passe en lecture seule : vous pouvez ouvrir, parcourir, rechercher, comparer et exporter des images, mais pas modifier, enregistrer ni générer du SQL, des migrations ou le dictionnaire de données. Les licences payantes, qui permettront de continuer à modifier, arriveront plus tard.
Est-ce compatible avec mon hébergement Git ?
Oui. Schevo lit et écrit des fichiers dans le dossier du dépôt et utilise le git installé sur votre ordinateur pour comparer avec des révisions. Il fonctionne avec n'importe quel serveur Git.
Quels systèmes d'exploitation ?
Windows 10 et 11 (64 bits) et Linux x64 (.deb, .rpm ou un .tar.gz portable). Les paquets incluent leur propre Java ; vous n'avez pas besoin de l'installer.
Essayez Schevo avec votre propre schéma
Téléchargez le programme d'installation, importez votre script avec Fichier › Importer du SQL… et enregistrez le modèle dans votre dépôt. 30 jours avec toutes les fonctionnalités.