DevJong12

[DBDiagram] 웹 ERD 설계 툴 본문

DB/ERDTool

[DBDiagram] 웹 ERD 설계 툴

Jong12 2022. 9. 16. 15:17
728x90

DBDiagram을 추천하게 된 과정

필자의 경우 과거부터 ERDCloud라는 DB툴을 사용해서 ERD를 그려오고 있었다.

 

최근에 라이엇게임즈에서 개발한 리그오브레전드(이하 `LOL`)의 게임정보를 가져와서 RESTful API서버를 개발하는 프로젝트를 진행하고자 ERD설계를 진행하려고 예전과 같이 ERDCloud를 접속해보았다.

 

들어가자마자 불편한 점이 예전과 다르게 불편한 점이 바로 보였고  다음과 같았다.

  1. 광고의 영역

 

단 한개다. 기존의 경우에는 ERDCloud에 광고가 없었으나 현재는 생긴 모습이었고

 

아래 사진을 보면 광고의 영역이 좀 크다.....많이...이해는 되었고, 제거할 수 있는 기능이 있어서 자주 애용을 했던 서비스다보니 금액을 지불할 의향은 있었다.

제거에 필요한 금액은 크지 않았으나, 구독제로 운영을 했었다.

돈을 낼 의향은 있었지만, 그렇다고 구독제로 매달 돈을 낼 정도까지는 의향이 없었다.

 

필자의 경우 하단의 북마크를 통해 다른 웹 Tool들을 알아봤었으니, DBDiagram이 마음에 들지 않는다면 아래의 포스트를 추천해본다.

 

2022년 Top 8 무료 ERD 다이어그램 툴 추천 총정리

본문은 데이터베이스 관리를 위한 포괄적인 시각적 모델을 그리는 데 권장되는 ERD 다이어그램 툴 목록입니다. 어떤 도구가 가장 적합한지 자세히 살펴보십시오.

gitmind.com


ERD 제작 Tool에 중점을 둔 사항은?

 

필자가 중요시 한 사항은 다음과 같다.

  1. 광고가 있는 부분은 상관 없지만, 사용자가 사용을 하기에 불편함이 없는가?
    • ERDCloud를 사용하지 않게 된 계기인 만큼 너무 불편한 정도만 아니면 괜찮았다. ERDCloud는 해당 부분이 너무 과했다.
  2. SQL파일로의 제작이 가능한가?
    • 쿼리마저 내가 제작해야하면 너무 귀찮았다... 수정은 가능해도... 아얘 다 제작하라는건..고역이었기 때문에 파일로 제작해주는 기능이 필요했다...
  3. 사용방법이 어려운가?
    • 아무래도 사용방법이 너무 어렵다 보면 제작을 함에 있어서 어려움이 있다보니 보게 된 사항이다

DBDiagram?

 

서비스 사이트의 북마크이며, 웹을 통하여 편한 사용이 가능하다.

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

ERD의 표현 방식이며, 필자가 현재 기획한 프로젝트의 관계도이다. 

왼쪽에 Script를 기록하면 우측의 ERD화면에 자동으로 그려주는 점이 편했다.

 

무료 사용자와 구독제 사용자의 기능 차이점의 큰 부분은 다음과 같다.

  1. 무료사용의 경우에는 10개의 Diagram을 생성할 수 있지만, 구독제의 경우에는 해당 부분에 대한 제한이 없다.
  2. 생성한 Diagram을 무료의 경우 public하게 밖에 사용 할 수 없지만, 구독제의 경우에는 Private하게도 사용이 가능하다.
  3. 구독제는 색상의 사용, 버전관리, 패스워드의 설정, 테이블의 그룹화

이 정도가 두드러지게 보이는 차이점으로 본다.

 

 

 

무료로만 사용해도 필자의 경우 큰 문제는 없었으나, 테이블의 그룹화 기능은 좀 탐이나긴 한다.

 

어떤 방법으로 사용할지는 지금 이 포스트를 읽는 분들이 판단하면 좋을 듯 하나, 필자는 광고가 없고 쿼리를 Export해준다는 점에서 이미 만족했다.

 

PS. 이후 제작한 쿼리를 쉽게 문서화해주는 부분에서 더 만족했었다.


DBDiagra의 사용법

 

우선 해당 쿼리들은 DBML이라는 명칭으로 사용을 하는 것 같다. 해당부분을 생각해주면 좋을 듯 하다.

 

1. 테이블의 생성 및 컬럼의 지정

테이블의 경우 Table~ 를 선언해주면 되며 명칭지정이 가능하다, 명칭은 아래의 예제처럼 as '명칭' 을 사용하면 된다.

 

컬럼의 경우 테이블로 선언한 괄호 안에 컬럼을 입력하면 되며, 타입의 경우 대부분 사용이 가능하고 테이블을 생성하면서 PK, auto-increment test1컬럼처럼 선언을 진행하면 된다.

 

그외의 설정들에 대해서도 최대한 남겨볼 수 있는 예제를 기록하였으니 아래의 Script를 참고해주면 좋을 듯하다.

// Creating tables
Table TestTable1 as U {
  test1 int [pk, increment, note: "test"] // auto-increment
  test2 varchar [not null]
  test3 timestamp [default: `now()`]
  test4 boolean [default: true]
  test5 tinyint
  test6 long
  test7 datetime [default: `now()`]
}

 

2 . 관계의 설정 

ERD의 핵심은 관계와 Index라고 생각하며, 테이블을 전부 제작한 이후 관계를 설정할 떄는 Ref라는 명령어를 참조해서 설정이 가능하다.

  • 1 : 다 (One - To - Many) : <
  • 다 : 1 (Many - To - One) : >
  • 1 : 1 (One - To - One) : -

해당 마크들을 통하여 관계의 설정이 가능하다. 잘 이해가 되지 않을 수 있어서 아래에 간단한 코드와 해당 코드를 작성시 생성되는 ERD를 첨부한다.

 

관계의 설정은 2가지 방법이 있으니, 둘중 편한대로 사용하길 추천한다.

 

2 - 1. 테이블이 생성된 이후 관계를 맺는 경우

Table TestTable1 as U {
  test1 int [pk, increment, note: "test"] // auto-increment
  test2 varchar [not null]
  test3 timestamp [default: `now()`]
  test4 boolean [default: true]
  test5 tinyint
  test6 long
  test7 datetime [default: `now()`]
}

Table TestTable2 as I {
  test1 int
}

Table TestTable3 as J {
  test1 int
}

Table TestTable4 {
  test1 int
}

ref: U.test1 - I.test1
ref: U.test1 < J.test1
ref: U.test1 > TestTable4.test1

 

 

2 - 2. 테이블을 생성하며 관계를 맺는 경우

Table TestTable1 as U {
  test1 int [ref: > TestTable4.test1, pk, increment, note: "test"] // auto-increment
  test2 varchar [not null]
  test3 timestamp [default: `now()`]
  test4 boolean [default: true]
  test5 tinyint
  test6 long
  test7 datetime [default: `now()`]
}

Table TestTable2 as I {
  test1 int [ref: - U.test1]
}

Table TestTable3 as J {
  test1 int [ref: < U.test1]
}

Table TestTable4 {
  test1 int 
}

두개의 관계도는 모두 동일하게 나온다.

PS . 다중컬럼의 관계를 맺고싶을땐 아래처럼 해보면 된다.

ref: U.(test1, test2) < I.(test1, test2)

3. Index의 설정

Index의 설정의 경우 테이블을 생성하면서 진행하면 된다.

Table TestIndexTable1 {
  test1 int [pk]
  test2 varchar 
  test3 timestamp
  
  Indexes{
    (test1, test2) [name:'IndexTable1']
  }
}

글을 마치며..

 

해당 소스코드는 필자가 직접 작성한 Sample코드들이다. 혹시라도 보고싶은 사람이 있을 수 있으니, 참조하라는 의미에서 북마크를 같이 남겨놓는다..

 

추후 ERDCloud처럼 또 광고가 덕지덕지 붙는다면 자주사용하는 Tool에 대해서 변경을 할 수 도 있지만 자동문서화에 대해서 매우 긍정적으로 생각하는 지금, 해당 툴을 변경할지는 좀 큰 고민이 될 수도 있을 듯 하다..

 

https://dbdiagram.io/d/62d40b62cc1bc14cc5d32ae5

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

728x90
Comments