Aller au contenu principal

Drawdb-app - Rendez votre modèle de base de données en png, markdown, mermaid, ...

Visualisez et documentez facilement votre modèle de base de données avec DrawDB-app. Importez des fichiers SQL, générez des diagrammes et exportez en PNG, Markdown, Mermaid et plus encore.

· 5 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Drawdb-app - Rendez votre modèle de base de données

⚡
TL;DR

Cet article présente drawdb-app, un outil gratuit qui génère un diagramme ER visuel à partir d'un fichier .sql importé (ou construit de zéro) et l'exporte en PNG, JSON, Mermaid ou en documentation Markdown générée automatiquement (tables, colonnes, relations) — également auto-hébergeable via Docker (xinsodev/drawdb).

Dans mon flux RSS récemment, je suis tombé sur une autre excellente application qui permet de créer un modèle de base de données de zéro, c'est-à-dire de créer les tables une par une et d'établir les liens entre elles.

Mais il y a une autre option que je trouve vraiment sympa : vous pouvez obtenir en quelques secondes une vue des tables et des relations de n'importe quelle application existante à partir d'un fichier .sql que vous importez dans drawdb-app. Récupérer ce dump .sql depuis un container qui tourne se fait en un clic avec Adminer, pgadmin ou phpmyadmin.

Voyons rapidement comment cela fonctionne.

En ouvrant le site https://www.drawdb.app/editor, la première chose qu'on vous demande est de choisir le format de base de données cible. Par exemple, choisissons PostgreSQL (Situation : je développe une application Laravel qui utilise PostgreSQL et je veux voir les relations de ma DB dans une jolie image).

Je pense que l'usage le plus courant que je pourrais personnellement en faire est de charger un fichier SQL. Pour cela, cliquez simplement sur le menu File, choisissez Import from SQL et, enfin, récupérez un fichier .sql créé précédemment sur votre disque dur.

Créer et importer un fichier sql de test​

Si vous n'avez pas un tel fichier, je vous suggère d'en copier un depuis https://www.sqltutorial.org/sql-sample-database/. Ci-dessous, vous trouverez le contenu PostgreSQL pris sur ce site (lien direct) — ou vous pouvez prendre n'importe quel fichier .sql valide trouvé sur Internet.

CREATE TABLE regions (
region_id SERIAL PRIMARY KEY,
region_name CHARACTER VARYING (25)
);
CREATE TABLE countries (
country_id CHARACTER (2) PRIMARY KEY,
country_name CHARACTER VARYING (40),
region_id INTEGER NOT NULL,
FOREIGN KEY (region_id) REFERENCES regions (region_id) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE locations (
location_id SERIAL PRIMARY KEY,
street_address CHARACTER VARYING (40),
postal_code CHARACTER VARYING (12),
city CHARACTER VARYING (30) NOT NULL,
state_province CHARACTER VARYING (25),
country_id CHARACTER (2) NOT NULL,
FOREIGN KEY (country_id) REFERENCES countries (country_id) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE departments (
department_id SERIAL PRIMARY KEY,
department_name CHARACTER VARYING (30) NOT NULL,
location_id INTEGER,
FOREIGN KEY (location_id) REFERENCES locations (location_id) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE jobs (
job_id SERIAL PRIMARY KEY,
job_title CHARACTER VARYING (35) NOT NULL,
min_salary NUMERIC (8, 2),
max_salary NUMERIC (8, 2)
);
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name CHARACTER VARYING (20),
last_name CHARACTER VARYING (25) NOT NULL,
email CHARACTER VARYING (100) NOT NULL,
phone_number CHARACTER VARYING (20),
hire_date DATE NOT NULL,
job_id INTEGER NOT NULL,
salary NUMERIC (8, 2) NOT NULL,
manager_id INTEGER,
department_id INTEGER,
FOREIGN KEY (job_id) REFERENCES jobs (job_id) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (department_id) REFERENCES departments (department_id) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (manager_id) REFERENCES employees (employee_id) ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE dependents (
dependent_id SERIAL PRIMARY KEY,
first_name CHARACTER VARYING (50) NOT NULL,
last_name CHARACTER VARYING (50) NOT NULL,
relationship CHARACTER VARYING (25) NOT NULL,
employee_id INTEGER NOT NULL,
FOREIGN KEY (employee_id) REFERENCES employees (employee_id) ON DELETE CASCADE ON UPDATE CASCADE
);

Ce script crée un schéma de base de données pour une gestion d'entreprise avec sept tables interconnectées. Il établit une hiérarchie : régions contiennent des pays, qui contiennent des emplacements, qui hébergent des départements, qui emploient des salariés ayant des rôles spécifiques et des personnes à charge. Les clés étrangères avec ON CASCADE assurent que les modifications ou suppressions en cascade maintiennent l'intégrité des données à travers toutes les relations.

Copiez/collez donc ce SQL dans Notepad, sauvegardez-le sur votre disque et retournez sur https://www.drawdb.app/editor ; File -> Import from SQL.

Et laissez la magie se produire :

Le modèle

L'image ci-dessus a été réalisée avec la fonctionnalité `File` -> `Export as`.

Vous pouvez auto-héberger l'application grâce à Docker si vous le souhaitez​

En visitant https://hub.docker.com/search?q=drawdb-io, vous trouverez quelques images Docker pour drawdb-app. Par exemple https://hub.docker.com/r/xinsodev/drawdb.

Pour la lancer, exécutez simplement docker run --name some-drawdb -p 81:80 -d xinsodev/drawdb et accédez à l'interface sur http://localhost:81.

Jouons avec la fonctionnalité d'exportation​

Maintenant, prenez le temps de regarder les fonctionnalités d'export ; cliquez à nouveau sur le menu File puis sur Export as.

Export

C'est vraiment cool de pouvoir exporter aussi facilement un fichier SQL en JSON, mais c'est encore plus cool de l'exporter en markdown. Cet export Mermaid s'intègre directement dans le pipeline décrit dans Documentation as Code - Transformez votre infrastructure en diagrammes soignés avec Python et Mermaid, et drawDB rejoint la liste des outils de Docker - Des diagrammes en tant que code.

Sous le capot (passez cette section si vous voulez juste l'utiliser)​

Contenu généré automatiquement ci-dessous

Le reste de cet article a été généré par drawDB.app ; un outil vraiment utile pour aider les développeurs à documenter leur base de données ! Vous trouverez ci-dessous deux tables représentatives — employees (la plus chargée, avec trois clés étrangères) et regions (la plus simple) — parmi les sept produites par l'export complet, ainsi que les relations entre toutes.

Structure des tables​

employees​

NomTypeParamètresRéférencesNote
employee_idSERIAL🔑 PK, not null
first_nameBLOBnot null
last_nameBLOBnot null
emailBLOBnot null
phone_numberBLOBnot null
hire_dateDATEnot null
job_idINTEGERnot nullemployees_job_id_fk
salaryNUMERIC(8,2)not null
manager_idINTEGERnot null
department_idINTEGERnot nullemployees_department_id_fk

regions​

NomTypeParamètresRéférencesNote
region_idSERIAL🔑 PK, not null
region_nameBLOBnot null

Relations​

  • countries vers regions : many_to_one
  • locations vers countries : many_to_one
  • departments vers locations : many_to_one
  • employees vers jobs : many_to_one
  • employees vers departments : many_to_one
  • dependents vers employees : many_to_one

Conclusion​

Importez un fichier .sql, récupérez un diagramme ER rendu en quelques secondes, et exportez-le en PNG, JSON, Mermaid ou en documentation Markdown prête à l'emploi — le tout sans rien installer, ou en auto-hébergé via l'image Docker xinsodev/drawdb si vous préférez garder ça en interne. L'export Mermaid s'insère directement dans Documentation as Code - Transformez votre infrastructure en diagrammes soignés avec Python et Mermaid, et drawDB est lui-même une entrée de plus dans la boîte à outils de Docker - Des diagrammes en tant que code.


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?