일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Java
- Naver Cloud
- papago
- AssertJ
- Enum
- junit
- 회고
- NaverCloudPlatform
- mybatis
- F-Lab
- Scheduler
- 네이버 클라우드
- spring
- Pinpoint
- object storage
- NCP
- 네이버클라우드
- navercloud
- ncloud
- React
- 에프랩
- DBDocs
- OrientalUnity
- ngrinder
- docker
- NooBLoL
- Naver Cloud Platform
- Thymeleaf
- spring boot
- Database
- Today
- Total
DevJong12
[DBDiagram] 웹 ERD 설계 툴 본문
DBDiagram을 추천하게 된 과정
필자의 경우 과거부터 ERDCloud라는 DB툴을 사용해서 ERD를 그려오고 있었다.
최근에 라이엇게임즈에서 개발한 리그오브레전드(이하 `LOL`)의 게임정보를 가져와서 RESTful API서버를 개발하는 프로젝트를 진행하고자 ERD설계를 진행하려고 예전과 같이 ERDCloud를 접속해보았다.
들어가자마자 불편한 점이 예전과 다르게 불편한 점이 바로 보였고 다음과 같았다.
- 광고의 영역
단 한개다. 기존의 경우에는 ERDCloud에 광고가 없었으나 현재는 생긴 모습이었고
아래 사진을 보면 광고의 영역이 좀 크다.....많이...이해는 되었고, 제거할 수 있는 기능이 있어서 자주 애용을 했던 서비스다보니 금액을 지불할 의향은 있었다.
제거에 필요한 금액은 크지 않았으나, 구독제로 운영을 했었다.
돈을 낼 의향은 있었지만, 그렇다고 구독제로 매달 돈을 낼 정도까지는 의향이 없었다.
필자의 경우 하단의 북마크를 통해 다른 웹 Tool들을 알아봤었으니, DBDiagram이 마음에 들지 않는다면 아래의 포스트를 추천해본다.
ERD 제작 Tool에 중점을 둔 사항은?
필자가 중요시 한 사항은 다음과 같다.
- 광고가 있는 부분은 상관 없지만, 사용자가 사용을 하기에 불편함이 없는가?
- ERDCloud를 사용하지 않게 된 계기인 만큼 너무 불편한 정도만 아니면 괜찮았다. ERDCloud는 해당 부분이 너무 과했다.
- SQL파일로의 제작이 가능한가?
- 쿼리마저 내가 제작해야하면 너무 귀찮았다... 수정은 가능해도... 아얘 다 제작하라는건..고역이었기 때문에 파일로 제작해주는 기능이 필요했다...
- 사용방법이 어려운가?
- 아무래도 사용방법이 너무 어렵다 보면 제작을 함에 있어서 어려움이 있다보니 보게 된 사항이다
DBDiagram?
서비스 사이트의 북마크이며, 웹을 통하여 편한 사용이 가능하다.
ERD의 표현 방식이며, 필자가 현재 기획한 프로젝트의 관계도이다.
왼쪽에 Script를 기록하면 우측의 ERD화면에 자동으로 그려주는 점이 편했다.
무료 사용자와 구독제 사용자의 기능 차이점의 큰 부분은 다음과 같다.
- 무료사용의 경우에는 10개의 Diagram을 생성할 수 있지만, 구독제의 경우에는 해당 부분에 대한 제한이 없다.
- 생성한 Diagram을 무료의 경우 public하게 밖에 사용 할 수 없지만, 구독제의 경우에는 Private하게도 사용이 가능하다.
- 구독제는 색상의 사용, 버전관리, 패스워드의 설정, 테이블의 그룹화
이 정도가 두드러지게 보이는 차이점으로 본다.
무료로만 사용해도 필자의 경우 큰 문제는 없었으나, 테이블의 그룹화 기능은 좀 탐이나긴 한다.
어떤 방법으로 사용할지는 지금 이 포스트를 읽는 분들이 판단하면 좋을 듯 하나, 필자는 광고가 없고 쿼리를 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
'DB > ERDTool' 카테고리의 다른 글
[DBDiagram, DBDocs] ERD, 문서화에 대한 다양한 팁 (0) | 2023.05.06 |
---|---|
[DBDocs] 문서화한 프로젝트의 관리 자동화 (0) | 2022.09.16 |
[DBDocs]제작한 ERD를 문서화 해보자 (0) | 2022.09.16 |