ERD를 그릴 때 Draw.io라는 다이어그램 툴을 사용한다.
디비버나 워크벤치같은 디비툴에서 그려주는 다이어그램을 사용할까 했는데, 너무 안예뻐서....
그냥 내가 직접 노가다로 다이어그램을 그린다.
원래는 테이블 보면서 노가다로 컬럼을 추가했는데, [삽입 > 고급 > SQL] 기능을 발견하고
오 이거 반자동화 시킬 수 있겠는데? 싶었다.
삽입 > 고급 > SQL 기능은 아래와 같이 CREATE문으로 ER다이어그램을 그려주는 기능이다.
CREATE문만 잘 작성하면 다이어그램은 프로그램이 그려준다!!!!
디비버에 DDL을 추출하는 기능이 있는데, 그 기능으로 추출한 INSERT문으로 다이어그램을 그리면 불필요한 정보까지 다 노출된다.
나는 테이블명, 테이블 주석, 컬럼명, 컬럼 주석만 필요해서 create문을 조회하는 쿼리를 작성하였다.
SET @schema_name := '스키마명';
SET @table_name := '테이블명';
SELECT concat('CREATE TABLE ', table_name, ' | ', table_comment, ' (')
FROM information_schema.TABLES
WHERE table_schema = @schema_name AND TABLE_NAME = @table_name
UNION ALL
(SELECT
concat(
column_name,
' | ',
column_comment,
CASE WHEN column_key = 'PRI' THEN ' PRIMARY KEY' ELSE '' END,
',')
FROM
(
SELECT
table_name,
table_comment
FROM
information_schema.TABLES
WHERE
table_schema = @schema_name) t1,
(
SELECT
table_name,
column_name,
data_type,
column_type,
column_key,
is_nullable,
column_default,
extra,
column_comment,
ordinal_position
FROM
information_schema.COLUMNS
WHERE
table_schema = @schema_name) t2
WHERE
t1.table_name = t2.table_name
AND t1.table_name = @table_name
ORDER BY
t1.table_name,
ordinal_position)
UNION ALL
SELECT ')'
FROM information_schema.TABLES
WHERE table_schema = @schema_name AND TABLE_NAME = @table_name;
사용자 변수로 스키마명과 테이블명을 선언하고,
information_schema.TABLES 테이블과 information_schema.COLUMNS 테이블을 조회해 컬럼명과 컬럼 주석을 조회하고,
앞 뒤로 CREATE문을 추가하였다.
이걸 디비버에서 실행시킨 후 조회된 row들을 복사하여 [삽입 > 고급 > sql] 클릭 후 입력하면
내가 원하는 형태로 다이어그램이 생성된다!
[datatables.js] 주요 특징과 기능, 사용법, ajax 연동 (0) | 2025.01.13 |
---|---|
인텔리제이 단축키 모음 (0) | 2024.12.23 |
[JS, JQuery] 일자 여러개 입력받을 때 오늘 이후만, 중복 없이, 오름차순으로 입력받도록 input value range 세팅하기 (0) | 2024.12.20 |
[MyBatis] ArrayList 여러개를 하나의 반복문으로 순회하기 (1) | 2024.12.18 |
[MySQL] 쿼리로 테이블 정의서 추출하기 (1) | 2024.12.17 |