CREATE TABLE 문에서 간단한 ER 다이어그램을 자동 생성하는 도구를 만들었습니다.
개인적으로는 외래 키는 일절 사용하지 않는 파이므로, MySQLWorkbanch를 사용했을 경우에 테이블간의 관계가 붙은 상태의 ER도를 생성할 수 없는 문제가 있었습니다. 그 때문에 외래 키가 없어도 컬럼명으로부터 부모와 자식을 추측해 관련시켜 주는 툴을 만들기로 했습니다.
이용에 있어서 몇가지 제약이 있으므로, 이하를 이해해 주신 후에 사용해 주십시오.
또 검증이 아직 불충분할지도 모르기 때문에, 어쩌면 잘 움직이지 않는 일이 있을지도 모릅니다. 코멘트란인가 Github의 Issue 에 보고 받을 수 있으면 다행입니다.
다음이 생성된 그림입니다.
입력 파일로서 다음과 같은 CREATE TABLE 문이 정의된 파일을 준비합니다.
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;
다음 명령을 실행하면 다이어그램이 생성됩니다.
pyagram -t {画像タイプ} -o {出力パス} -i {入力ファイル} -f {フォント名} -d erd
또한 다음 명령으로 설치할 수 있습니다.
pip3 install pyagram
이번 수정을 위해 제작을 크게 바꾸어 플러그 가능한 구현으로 했습니다. Diagram이라는 클래스를 계승하는 것으로, 몇 개라도 그림의 생성 클래스를 만들 수 있게 되어 있습니다.
Diagram 클래스에는
의 크게 나누어 4개의 처리가 있습니다만, Diagram를 계승한 클래스에서는 1부터 3까지를 실장하면 좋은 것처럼 만들어지고 있습니다.
앞으로는 좀 더 출력되는 항목을 늘리거나 대응하는 RDBMS의 종류를 늘리고 싶습니다만, 조금 뼈가 부러지기 때문에 시간을 들여 진행해 나가고 싶습니다.
Reference
이 문제에 관하여(CREATE TABLE 문에서 간단한 ER 다이어그램을 자동 생성하는 도구를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hideshi/items/b4d83eeb4305cda76359텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)