Outil gratuit

MySQL et MariaDB en diagramme ER

Collez un fichier mysqldump ou un script MySQL Workbench, avec ses backticks, ses options ENGINE et ses commentaires de version, et obtenez un diagramme ER des tables et des clés étrangères. Les dumps MariaDB se lisent de la même façon. Essayez l’exemple de boutique avec produits, variantes, commandes et avis.

Exemple de résultat

Exemple de diagramme tiré d’un exemple MySQL
Essayer un exempleVitrine e-commerce

Comment ça marche

  1. Collez ou déposez votre dump MySQL

    La sortie de mysqldump ou de mariadb-dump, un export de Workbench ou de phpMyAdmin, ou le texte CREATE TABLE qu’affiche SHOW CREATE TABLE.

  2. Voyez les tables et leurs liens

    Chaque table devient une carte avec ses colonnes et ses clés. Les clés étrangères, qu’elles soient déclarées comme contraintes ou écrites en ligne avec REFERENCES, deviennent des liens entre les colonnes correspondantes.

  3. Ouvrez-le dans Archboard

    Enregistrez-le comme nouveau diagramme pour le réorganiser, l’annoter, partager un lien ou l’exporter en SVG et PNG. Un compte Google ou GitHub suffit pour s’inscrire.

Extraire le schéma de base de données de MySQL

Lancez cette commande, puis collez schema.sql ou déposez le fichier :

  1. --no-data laisse de côté les lignes de données, tandis que --skip-comments et --compact retirent l’en-tête de commentaires et les lignes DROP TABLE, LOCK TABLES et SET NAMES. Remplacez mydb par le nom de la base et ajoutez -u et -p si besoin. Sous MariaDB, mariadb-dump accepte les mêmes options.

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

La syntaxe MySQL dans un dump

Ce que devient chaque construction d’un fichier mysqldump :

`order_items`
Lu. Les noms entre backticks correspondent aux mêmes noms écrits sans, et les noms entre guillemets doubles fonctionnent aussi quand le dump active ANSI_QUOTES.
ENGINE=InnoDB
Ignoré, comme DEFAULT CHARSET, COLLATE et les autres options de table ; la table elle-même est lue.
AUTO_INCREMENT
Non affiché : la colonne garde son type, par exemple INT UNSIGNED. Le compteur AUTO_INCREMENT écrit après la table est ignoré lui aussi.
REFERENCES products (id)
Dessiné comme une relation. Avant la version 9.0, MySQL accepte cette forme en ligne sans l’appliquer ; l’aperçu ajoute donc une note quand il en trouve une.
KEY idx_name (name)
Un index simple, qui n’ajoute aucun marqueur. UNIQUE KEY est marqué UK, et KEY écrit juste après une colonne signifie clé primaire, comme dans MySQL.
/*!40101 … */
Traités comme des commentaires et ignorés, y compris les lignes SET que mysqldump place autour de chaque table.
DELIMITER ;;
Compris : les procédures et fonctions entre des lignes DELIMITER sont ignorées en entier et comptées, et les tables qui suivent sont toujours lues. Les déclencheurs et événements que mysqldump y écrit sont enveloppés dans des commentaires de version : ils sont donc ignorés comme des commentaires.
ENUM (…) · SET (…)
Affichés comme types de colonne enum et set ; les valeurs autorisées ne sont pas listées.

Ce qu’un diagramme MySQL laisse de côté

  • Les procédures stockées, fonctions, déclencheurs et événements, dont aucun n’est dessiné. L’aperçu compte les procédures et les fonctions ; les déclencheurs et événements que mysqldump écrit dans des commentaires de version sont ignorés comme des commentaires.
  • Tout ce qui se trouve dans des commentaires de version comme /*!50100 PARTITION BY … */. Ce texte compte comme un commentaire : le partitionnement et les autres options liées à une version n’apparaissent pas.
  • Les lignes des INSERT étendus. Elles sont ignorées sans être lues, même quand une seule ligne INSERT pèse plusieurs mégaoctets.
  • Tout ce qui vient d’un serveur MySQL ou MariaDB en marche. Aucune connexion n’est établie : le nombre de lignes, la taille des tables et les réglages du serveur ne sont pas affichés.

Questions sur MySQL et MariaDB

Quelle commande mysqldump utiliser ?

mysqldump --no-data --skip-comments --compact mydb > schema.sql ne donne que les instructions CREATE TABLE, sans les lignes de données ni les lignes qui les entourent. Un dump complet fonctionne aussi : les instructions INSERT sont ignorées, le diagramme est donc le même, seul le fichier est plus gros.

Est-ce que ça fonctionne avec MariaDB ?

Oui. MariaDB écrit le même format de dump : choisissez MySQL / MariaDB ou laissez la détection faire. La sortie de mariadb-dump, les noms entre backticks et AUTO_INCREMENT se lisent comme avec MySQL, et les REFERENCES en ligne sont dessinées comme des relations, quel que soit le serveur qui a écrit le fichier.

Pourquoi un REFERENCES en ligne reçoit-il une note ?

Dans MySQL 8 et les versions antérieures, un REFERENCES écrit juste après une colonne est accepté mais ignoré : aucune clé étrangère n’est créée. À partir de MySQL 9.0, elle est créée. Le diagramme dessine la relation dans les deux cas, puisque le script l’indique, et la note invite à vérifier que la base possède vraiment cette clé.

Puis-je coller des scripts Workbench ou des migrations au lieu d’un dump ?

Oui. Un script généré par forward engineering dans MySQL Workbench, un dump de schéma Laravel, un structure.sql de Rails ou du DDL écrit à la main fonctionnent. Les instructions qui modifient les tables ensuite, comme ALTER TABLE … ADD CONSTRAINT … FOREIGN KEY ou ADD COLUMN, sont appliquées aux tables qu’elles nomment.

Quelque chose est-il enregistré quand je colle un dump MySQL ?

L’aperçu n’est pas enregistré. Quand vous choisissez Ouvrir dans Archboard, le diagramme dessiné, avec ses cartes de tables, ses noms et types de colonnes et ses liens, est enregistré comme nouveau diagramme dans votre espace de travail. Les modifications apportées plus tard au schéma MySQL ne le mettent pas à jour.

L’outil de diagramme ER pour MySQL est-il gratuit ?

Oui. Coller un dump et voir le diagramme ne demandent aucun compte. Pour ouvrir le diagramme dans Archboard, un compte gratuit suffit.

Ouvrez un canevas en une minute

Connectez-vous avec Google ou GitHub. Gratuit pour un siège. Passez à un forfait supérieur quand l'équipe vous rejoint.