ERD Cloud 사용법(import, export)
-Stand up for yourself-
시작에 앞서 제가 좋아하는 UFC 선수 중 한명인
알렉산더 the great 볼카노프스키의 동기부여 영상을 시청하겠습니다.
비록 경기에서 패배했지만 거의 모든 영역에서 완벽했던 라이트급 월장, 많은 사람들이 힘들 것이라 예상했던 야이르 로드리게스전에서 3라운드 TKO로 승리를 따냈던 볼카노프스키의 모습은 많은 사람들에게 큰 메세지를 전해주었다고 생각한다. 바로 '주변 사람들의 말은 듣지 말고 오로지 자신을 믿어라.'라는 메세지다.
삶을 살아가다 보면 자신의 선택과 타인의 반대가 부딫힐 경우가 종종 있다. 그럴 때 볼카노프스키처럼 자신을 믿고 스스로 증명하는 사람이 될 수 있도록 나부터 노력해보겠다!
목차
- ERD 생성 및 Setting
- Entity 만들기
- Import/Export
1. ERD 생성 및 Setting
ERD Cloud에 로그인을 했다면 오른쪽 상단에 +가 그려진 아이콘(아이콘에 마우스를 hover하면 Create ERD라는 문구가 보임)을 클릭한 후 타이틀을 기입 후 다음과 같이 생성한다.
그 다음 ERD 창에서 오른쪽 톱니바퀴(아이콘에 마우스를 hover하면 ERD Settings라는 문구가 보임)를 클릭 후 보이는 페이지에서 DISPLAY 부분을 모드 체크한다. 다른 부분은 건드리지 않아도 된다!
여기까지 하면 세팅 끝~!
2. Entity 만들기
왼쪽 사이드바에 다음과 같이 생긴 아이콘을 클릭한 후 맵의 아무 위치에 클릭하면 엔티티(테이블)이 생성된다.
생성된 Entity는 위와 같은 기능을 하는 버튼들이 있다. 버튼 중에서 Entity 이름 수정 버튼을 클릭해보겠다.
필자는 위와 같이 Logical Name은 '회원'으로, Physical Name은 member로 했다.
우리가 나중에 Export할 때 Physical Name의 값이 테이블명으로 들어가기 때문에 실제 테이블 명으로 사용할 이름을 Physical Name에 기입해야 한다! (필자는 Logical Name란에 필자가 이 테이블을 이해할 수 있는 이름으로 작성했다.)
속성 명시 중요!!
위 내용까지 했다면 우리는 이제 속성을 명시해야 한다.
왜냐하면 각 DISPLAY 옵션에 맞는 데이터를 넣어야 Export할 때 원하는 DDL을 추출할 수 있기 때문이다! (예를 들어, type란에는 타입이나 제약 조건을 기입해야되는데 기본 값을 넣으면 안된다.)
필자는 위와 같은 형식으로 각 DISPLAY에 값들을 기입했다. 혹시 필자와 다르게 field를 기입하는 곳이 한 곳이라면 domain에 실제 컬럼명을 기입해야 한다!(이 경우는 왜 그런지 모르겠음 ㅠㅠ) 기입을 완성한 Entity는 다음과 같다.
관계 형성
우리는 조금만 더 욕심해서 다른 Entity와 관계형성까지만 해보겠다! 여기까지만 하면 웬만한 ERD는 다 만들 수 있을 것이다. 다음과 같이 department Entity를 만들어보자.
이제 회원과 부서 엔티티를 조인해보자! 회원 엔티티에 부서고유번호를 외래키로 사용할 것이다. 이 때, '홍길동'이라는 회원도 개발팀, '김철수'라는 회원도 개발팀에 소속될 수 있다. 즉, '개발팀'이라는 부서를 한명의 회원만 소속되지 않고 많은 회원이 소속될 수 있다. 그렇기 때문에 1:다 관계로 조인을 해줘야 한다.
왼쪽 사이드바에서 위 이미지와 같은 아이콘을 클릭하면 1:다 관계를 형성할 수 있다.(딱 봐도 1:다 처럼 생겼다.) 이 때, 주의할 사항이 있는데,
바로 위 두가지 선택지 중에서 무엇을 선택해야 할지 모를 수 있다는 것이다. 식별 관계는 외래키가 Primary키처럼 식별을 위해서 사용될 때 사용하고, 비식별 관계는 외래키가 식별에 사용되지 않을 때 사용하면 된다. 위 관계는 비식별 관계이므로 Non - Identifying Relationship을 선택해준다. 그럼 다음과 같이 관계가 형성된 모습을 확인할 수 있다.
식별 관계, 비식별 관계 예시
예를 들어, 회원 엔티티에서 회원의 아이디(위에서 member_num)로 엔티티의 각 row들을 식별한다. 이 때, 개발팀, 운영팀 등 부서에 관련된 내용은 회원 엔티티에서 row를 식별하는 데 사용이 되지 않기 때문에 비식별(Non-Identifying)로 관계를 형성하면 된다.
식별 관계도 예를 들어보자. 우선 이해도를 높이기 위해 식별 관계를 사용하는 엔티티(테이블)을 ERD로 먼저 확인해보자.
다음과 같이 구매, 구매 상세, 상품 엔티티(테이블)가 있다. 구매 엔티티에는 주문 총 내역이 담기게 되고, 구매 상세 엔티티에는 하나의 주문에 담긴 각 상품들(ex, 사과 1개, 당근 2개)의 내용이 들어갈 것이다.
이 때, 외래키인 구매아이디(ex, 쿠팡에서 여러가지 상품을 주문하면 발급되는 주문번호)와 상품아이디를 함께 기본키로 묶는다면 구매 상세 엔티티에서 식별자 역할을 할 수 있다. 이럴 경우 식별 관계로 외래키를 연결하면 된다!
3. import/export
import
DDL문을 import 해보겠다. 하단의 import버튼을 클릭하고 DDL문을 입력하면 된다. 간단하게 공통코드 엔티티를 만드는 DDL문을 import 해보겠다.
위처럼 간단한 DDL정도는 import가 잘 된다.
그러나!! 제약조건으로 UNIQUE를 걸고 싶은데 어떻게 작성해도 UNIQUE 제약조건이 걸리지 않는다... 그렇다는건 아마도 다양한 부분에서 import가 잘 안될 가능성이 높다...
export
하단에 Export 버튼 클릭 후, 원하는 RDBMS(mysql, oracle, ms-sql)을 선택 후 SQL-preview 버튼을 클릭하면 아래 이미지와 같이 DDL문이 자동으로 작성된다.
작성된 DDL문으로 테이블을 만들 수 있는지 SQL-developer에서 확인해보면 잘 생성이 된 것을 확인할 수 있다.
제약 조건까지 잘 들어간 모습을 확인할 수 있다.
ERD 정리를 마치며...
무료 툴이지만 깔끔하게 정리도 할 수 있고 import, export 그리고 팀이 같이 사용(해당 부분을 다루진 않았지만 쉽게 할 수 있음!)할 수 있다는 점에서 정말 좋은 툴이라고 생각한다.
다만 개인적으로, import나 export 기능은 완전히 믿고 사용하지 않는 것이 좋다고 생각한다.