L'autre jour, j'ai créé un outil de ligne de commande appelé Pyagram qui génère automatiquement un diagramme de transition d'état, mais en tant que fonction supplémentaire de cela, la relation entre les tables de l'instruction CREATE TABLE Implémentation d'une fonction pour générer automatiquement un diagramme ER simple qui ne peut être compris.
Personnellement, je n'utilise pas du tout de clés externes, donc il y avait un problème que je ne pouvais pas générer un diagramme ER avec des relations entre les tables lors de l'utilisation de MySQL Workbench. Par conséquent, j'ai décidé de créer un outil qui peut deviner le parent et l'enfant à partir du nom de la colonne et les associer même s'il n'y a pas de clé externe.
Il existe certaines restrictions d'utilisation, veuillez donc comprendre ce qui suit avant de l'utiliser.
En outre, la vérification peut encore être inadéquate, de sorte qu'elle peut ne pas fonctionner. Nous vous serions reconnaissants de bien vouloir le signaler dans la section commentaires ou dans le Problème Github.
Ce qui suit est la figure générée.
Préparez un fichier dans lequel l'instruction CREATE TABLE suivante est définie comme fichier d'entrée.
CREATE TABLE employees (
id INT(11) NOT NULL AUTO_INCREMENT,
birth_date DATE NOT NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
gender INT(11) NOT NULL,
hire_date DATE NOT NULL,
department_id int(11),
PRIMARY KEY('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
CREATE TABLE departments (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
CREATE TABLE titles (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY('id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
CREATE TABLE employee_title (
employee_id INT(11) NOT NULL,
title_id INT(11) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
PRIMARY KEY('employee_id', 'title_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
CREATE TABLE salaries (
id INT(11) NOT NULL AUTO_INCREMENT,
employee_id INT(11) NOT NULL,
salary INT(11) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
PRIMARY KEY('id'),
KEY('employee_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
Exécutez la commande suivante pour générer le diagramme.
pyagram -t {Type d'image} -o {Chemin de sortie} -i {Fichier d'entrée} -f {Nom de la police} -d erd
Vous pouvez également l'installer avec la commande suivante.
pip3 install pyagram
Pour ce correctif, nous avons fait un gros changement pour en faire une implémentation enfichable. En héritant de la classe appelée Diagram, vous pouvez créer autant de classes de génération de diagramme que vous le souhaitez. Dans la classe Diagram
Il existe à peu près quatre processus, mais dans la classe qui hérite de Diagram, il est fait de sorte que 1 à 3 puissent être implémentés.
À l'avenir, je voudrais augmenter le nombre d'éléments de sortie et les types de SGBDR qui le prennent en charge, mais ce sera un peu pénible, alors j'aimerais prendre le temps de continuer.
Recommended Posts