그리기 귀찮은 ERD! DBdiagram.io로 5분만에 완성하기!

BJ Park·2021년 2월 1일
23

개발도구 이야기

목록 보기
1/1

이 글에서는 ERD 자동화 도구인 dbdiagram을 소개하고자 한다.

DB diagram 바로가기 : https://dbdiagram.io/home

다양한 ERD 도구들 중에서도 이 툴을 가장 추천하는 이유는 다음과 같다.

  1. DB 테이블 임포트를 통해 반자동화된 그리기가 가능하기 때문.
  2. SQL과 유사한 모델링 전용 코드를 통해 모델 필드와 관계의 시각적 표현을 구성할 수 있기 때문

ERD를 그려야 하는 이유

우리가 시스템을 개발할 때에 ERD를 그려야 하는 이유는 명확하다.
ERD가 없이 개발된 시스템은 나중에 기능 개선을 위해 데이터 모델을 수정해야 할 때에
기존 데이터 관계를 파악하기 힘들어서 매우 난처하게 되기 때문..!

특히 누군가에게 시스템을 소개하거나 팀으로 진행되는 프로젝트에서 ERD 없이 시스템의 백엔드를
소개한다는 것은 청중의 눈이 가려진 상태에서 프레젠테이션을 하는 것처럼 정말 핸디캡이 큰 일이다.

이 뿐 아니라 다 열거하기도 힘든 다양한 이유로 ERD는 개발 산출물로서 매우 중요하며,
외주 등의 프로젝트를 수행할 때에 필수적으로 제출해야 하는 기초 다이어그램이기도 하다.

혼자 개발할 때에도 ERD는 그릴때는 귀찮지만 개발 중 기능구현에도 모델을 한눈에 보기 위해 유용하게 사용될 수 있으므로 참조용으로 그려두면 좋다.

범람하는 ERD 도구들 중 무엇을 골라야 할까?

예전에 사용하던 다이어그램 도구는 Draw.io였다. 당시로서는 파워포인트나 엑셀 등으로 다이어그램을 그리는 것보다 몇배나 빠른 정말 편리한 도구였긴 하지만 dbdiagram을 만난 순간 이제 까야 할 대상으로 바뀌어버렸다.
(물론 ERD한정이다. Draw.io는 데이터 모델링에 국한되지 않고 다양한 다이어그램을 그릴 수 있다는 점에서 여전히 좋은 용도로 남아있다.)

Draw.io에서 제공하는 import 다음과 같다. 다양한 저장소에 다이어그램을 저장하고 또 가져올 수 있는 나름 매우 편리한 기능이다!

하지만 "그리기 도구" 로서의 기능에 충실한 Draw.io는 개체 템플릿 또는 다이어그램 예시를 풍부하게 제공해주는 데 그친다. "개발 보조도구"가 되기에는 아직 멀었다.

테이블 CREATE문만 복붙하면 ERD가 출현하는 마술!

나는 ERD를 그리는 데에는 많은 시간과 정성을 들이지 않는 것을 추천한다.
왜냐? 프로그래밍 메인 언어로 파이썬을 고른 이유와 같다. 인생은 짧고 할일은 많으니까!
ERD그리는 것보다 더 중요하게 시간을 쏟아 개발해야 할 부분이 많으니까!

그래서 ERD에 가장 적게 시간을 들일 수 있는 도구를 찾던 중,
아래와 같은 화면의 무료 도구 dbdiagram.io를 만났다.

처음 이 화면을 본 순간 왼쪽에 있는 코드창에 이질감을 느낀 이유는, 그간 "그리기 도구" 또는 "문서 도구"로만 ERD를 그려왔기 때문이 아닌가 싶다.

새로운 문법을 익혀야 하는구나 싶어서 이걸 잘 쓰려면 또 시간이 엄청 걸릴까봐, ERD 그리기가 역시 빼도박도 못하게 내 소중한 인생의 시간을 많이 앗아가겠구나 싶기도 하다.

하지만! 에디터를 켜서 무심코 클릭해본 임포트 버튼에 그만...! 너무 행복해버리고 말았다.

이 DB로부터 임포트하는 기능을 클릭하면 SQL쿼리문을 입력할 수 있는 에디터가 나온다.

DB에서 테이블마다 선언되어 있는 CREATE문을 찾아 여기에 넣으면 이래도 되나 싶을 정도로 너무 쉽게 ERD가 출현해버린다. 물론 DB마다 있는 테이블스페이스나 인덱스, COLLATE로 default값이 참조되는 부분 등은 쿼리에서 지워주어야 문법오류없이 임포트할 수 있으니 참고하시길 바란다.

아무튼 오늘의 결론은 ERD에 시간을 버리지 말고 자동으로 생성하자는 것!
나중에 수정도 한땀한땀 그래픽상에 클릭해서 고쳐넣지 말고 코드 기반으로 할 수 있는 것은 보너스다.

더불어, 시간이 오래걸린다 싶은 작업이 있으면 항상 파워풀한 도구가 있는지를 꼭 찾아봐야한다는 것을 다시한번 새겨본다.

~fin~

profile
일 잘하는 백엔드 엔지니어

1개의 댓글

comment-user-thumbnail
2021년 6월 28일

와 이런글 너무 대박이네요 저는 Drawio로 1:n 관계를 표시하는 화살표를 찾다가 유입됬는데 꿀같은 정보 감사드립니다

답글 달기