🌈 프로그래밍

[ dbdiagram.io ] CLI 명령으로 DDL DB Diagram 쉽게 뽑기

반응형

 

Django에서 모델링을 하고 마이그레이션 수행하면 연결된 DB에 테이블이 생성된다.

즉, SQL 문장 없이 table들이 생성되어지는데

mysql CLI를 통해서 생성된 테이블이 어떤 DDL(Data Definition Language)로 만들어졌는지 확인해보도록 하자.

더 나아가 dbdiagram.io라는 사이트에서 제공하는 기능으로 쉽게 DB Diagram을 뽑아내 보도록 하자.

 

우선, DB에 table들이 모두 생성되어있다고 가정.

mysql 서버 접속.

$ mysql -uroot -p

db로 이동

$ use 'DB이름'

db내의 테이블 확인

$ show tables;

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)

테이블의 스키마 확인

$ desc '테이블이름';

mysql> desc users;
+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int          | NO   | PRI | NULL    | auto_increment |
| email    | varchar(200) | YES  |     | NULL    |                |
| password | varchar(200) | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

테이블 DDL 추출

$ show create table '테이블이름'\G

mysql> show create table users\G
*************************** 1. row ***************************
       Table: users
Create Table: CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `email` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `password` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
1 row in set (0.00 sec)

위의 명령에서 '\G'를 붙이면 좀 더 가독성 있게 출력된다.

 

이를 가지고 아래의 사이트에서 DB Diagram을 쉽게 뽑아낼 수 있다!

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

우선 생성된 Diagram을 다운로드하기 위해서는 로그인이 필요하므로 로그인을 진행해준다.

아래의 캡처 화면에서 Import 부분에서 본인의 DB에 맞는 것으로 선택하면

 

아래와 같이 SQL 문장을 불러오거나 직접 작성할 수 있다.

하지만 직접 작성하지 않고 위에서 mysql CLI 명령으로 그리고 싶은 테이블들을 가지고 와서 붙여 넣어 주도록 하자!

또는. sql 파일을 불러와서 바로 import 시켜줄 수도 있다.

위처럼 불러오거나 복붙으로 작성해 준다.

좋은 점은 세미콜론이 없거나, 관계가 불분명하거나 테이블이 없다면 아래와 같이 오류가 나온다.

세미콜론이 없어요!

 

따라서 수정해주면서 복붙을 해주면 쉽게 생성할 수 있다.

깔끔하게 DB diagram을 만들어 낼 수 있다!

 

9/2 추가 내용

  • mysqldump 명령으로 데이터 없이 스키마만 추출할 수 있다.
❯ mysqldump --no-data --user=ROOT_USER --password --host=localhost DB_NAME TABLE_NAME;
반응형