ERD를 넘기고 도메인을 만들다 보니..
사이드 프로젝트를 진행하다 보면 빠른 MVP 개발을 위해 기능 구현에만 집중하는 경우가 많습니다. 이 과정에서 머릿속에 있는 설계도를 기반으로 코딩하게 되죠.
이런 접근은 유지보수 측면에서 큰 약점이 됩니다. 만약 프로젝트에 새로운 인원이 투입되면, 신규 도메인 이나 기능 개발 시 어느 테이블과 조인해야 할지 파악하기 위해 Entity와 도메인의 소스 코드를 일일이 확인해야 합니다. 하물며 쿼리만 보더라도 테이블 간의 연관 관계를 파악하기란 쉽지 않습니다.
우리는 시간을 좀 더 효율적으로 사용할 수는 없을까요?
ERD로 해결해보죠!
ERD가 있다면 다음 3가지는 보장이 됩니다.
복잡한 도메인 구조도 한눈에 이해할 수 있어 개발자, 기획자, 디자이너 등 팀 전체가 프로젝트의 같은 그림을 공유하게 됩니다.
유지보수 시 변경 사항이 생겨도 어떤 부분에 테이블에 영향을 미치는지 쉽게 확인이 가능합니다.
무엇보다 코드나 쿼리를 확인하지 않아도 테이블 간의 관계와 데이터 흐름을 파악할 수 있어 시간을 절약합니다.
ERD Cloud로 무료로 쉽게 ERD 그리기
ERD Cloud는 복잡한 기능을 제외하고, 심플하게 본연의 기능에 집중합니다. (중간에 광고가 조금 아쉽지만…) 무료라는 큰 장점이 있습니다.
🚀ERD CLOUD 접속하기
ERD Cloud에 접속하여 로그인 후, Try ERDCloud을 클릭하여 바로 ERD를 그릴 수 있습니다.
ERD을 그리기 전, ERD Cloud는 공유 범위를 제공합니다.
public (공개) : 모든 사용자가 접근하고 열람 가능하며, ERD Cloud 내에서 검색이 가능합니다.
private (비공개) : 본인만 접근 가능하며, ERD Cloud 내에서 검색이 불가능합니다.
Team (팀 공개) : Team 멤버들만 접근이 가능하며, 협업 시 유용합니다.
ERD 초기 설정과 테이블 그리기
CREATE 버튼을 누름과 동시에 ERD 작업창이 나옵니다. 위에 ⚙️을 눌러 초기 설정부터 진행하시죠!
ERD 설정 부분은 디스플레이 항목에 관한 내용입니다. 하얀색 사각형은 체크가 안된거고, 검은색 사각형에 하얀 테두리가 체크가 된 상태입니다.
도메인 / 타입 / Null 허용 / 기본값 / 코멘트를 모두 체크를 해주는 것을 추천드립니다.
ERD 작업 창 왼쪽에는 간단한 작업 툴을 제공합니다!
ERD Cloud가 제공하는 간단한 메뉴들 소개
- 낱개 선택 (↖️)
- 영역 선택 (◻️)
- 선택 실수 없이 편하게 이동 (🤚)
- 테이블 추가 (🗓️)
- 메모 추가 (📄)
- 각종 관계형 막대들 (까마귀 발):
- 일대일 (─┼)
- 일대다 (─←)
- 그 외 복잡한 막대들:
──O─
: 선택적 (zero)──|─
: One──||─
: Only One──←
: 여러 개(many)──O|←
: 0개 또는 1개 또는 여러 개──O←
: 0개 또는 여러 개──O|─
: 0개 또는 1개──|←
: 1개 또는 여러 개 (1개 이상)──||─
: 오직 1개
- 다음 메뉴는 셋 중 택1:
L/P
: 논리명 / 물리명 모두 보기L
: 논리명 보기P
: 물리명 보기
테이블을 만들게 된다면 초기 설정한 대로 테이블에 보이는 정보가 달라집니다. [회원]은 테이블의 논리명, [users]는 테이블의 물리명으로 네이밍이 가능합니다. 또한 테이블 창이 만들어지게 되면 간단한 버튼들을 제공하죠.
➕ (노란색 버튼) : 테이블에 Primary Key를 추가합니다.
📋 (복제 버튼) : 선택한 테이블을 그대로 복제하여 동일한 구조의 테이블을 생성합니다.
🎨 (스타일 변경) : 테이블의 색상을 변경합니다.
ℹ️ (Logical / Physical 네이밍 확인): 테이블의 논리적 이름(Logical Name)과 물리적 이름(Physical Name)을 확인하고 설정할 수 있습니다.
🗑️ (삭제 버튼) : 선택한 테이블을 삭제합니다.
테이블 왼쪽 둘째 열을 기준으로 각 열은 다음과 같은 역할을 합니다.
논리 필드명 : 필드명에 대한 설명 (한글)
물리 필드명 : 실제 필드명 (영문)
도메인 : 필드명에 대한 주제를 적는 곳 (이것도 일종의 코멘트와 같습니다.)
타입 : int, varchar, date 필드 타입을 써주는 곳
NULL 유무 : NULL / NOT NULL 중에 하나
기본값 : default 값을 써주는 곳
코멘트 : 말 그대로 부가설명이 필요할 경우 써주는 곳
이제 테이블을 완성하고 ERD Cloud가 제공해주는 관계 선을 이용하여 ERD을 완성하면 되겠습니다!
Import 기능으로 시간 더 절약하기 ( With. Spring Boot, JPA )
ERD를 그리기 전, 이미 완성된 Entity의 소스가 있다면 ERD 그리기에 시간 단축이 가능합니다!
이 경우 Hibernate의 DDL 자동 생성 기능을 응용하면 좋을 것 같습니다. 본인의 프로젝트가 Spring Boot와 JPA가 연동된 로컬 환경에서 application.yaml의 DDL 설정이 create로 되어 있어야 합니다.
애플리케이션이 구동 시, Hibernate가 엔티티를 분석하고 DDL을 통해 생성한 테이블에 대한 로그를 얻을 수 있습니다.
해당 로그를 복사하여 ChatGPT에게 DDL 문으로 정리받습니다
이후 ERD Cloud로 돌아와, IMPORT 구문 안에 정리된 DDL 스크립트를 붙여넣으면, 현재 프로젝트에서 사용 중인 테이블들이 자동으로 그려져 시간을 단축할 수 있습니다!
이제 색깔별로 정리한 후, 관계선만 이어 주면 되겠네요!
Team과 쉬운 공유와 협업
ERD Cloud의 장점은 작성한 ERD를 팀과 쉽게 공유할 수 있다는 큰 장점이 있습니다.
➕을 눌러, 본인에 팀을 추가해주세요!
추후 팀원 멤버들의 이메일을 받아 추가해 주시면 됩니다!
이 후 링크를 공유해주세요! 팀 멤버들만 접근이 가능한 ERD를 공유하며 쉽게 협업이 가능합니다!