일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- navercloud
- AssertJ
- papago
- NooBLoL
- OrientalUnity
- Enum
- Pinpoint
- DBDocs
- spring
- 회고
- spring boot
- NCP
- object storage
- Database
- docker
- Naver Cloud Platform
- mybatis
- Thymeleaf
- Java
- ncloud
- F-Lab
- Scheduler
- 네이버클라우드
- junit
- ngrinder
- 에프랩
- NaverCloudPlatform
- 네이버 클라우드
- React
- Naver Cloud
- Today
- Total
DevJong12
[DBDiagram] 웹 ERD 설계 툴 본문
DBDiagram을 추천하게 된 과정
필자의 경우 과거부터 ERDCloud라는 DB툴을 사용해서 ERD를 그려오고 있었다.
최근에 라이엇게임즈에서 개발한 리그오브레전드(이하 `LOL`)의 게임정보를 가져와서 RESTful API서버를 개발하는 프로젝트를 진행하고자 ERD설계를 진행하려고 예전과 같이 ERDCloud를 접속해보았다.
들어가자마자 불편한 점이 예전과 다르게 불편한 점이 바로 보였고 다음과 같았다.
- 광고의 영역
단 한개다. 기존의 경우에는 ERDCloud에 광고가 없었으나 현재는 생긴 모습이었고
아래 사진을 보면 광고의 영역이 좀 크다.....많이...이해는 되었고, 제거할 수 있는 기능이 있어서 자주 애용을 했던 서비스다보니 금액을 지불할 의향은 있었다.
제거에 필요한 금액은 크지 않았으나, 구독제로 운영을 했었다.
돈을 낼 의향은 있었지만, 그렇다고 구독제로 매달 돈을 낼 정도까지는 의향이 없었다.
필자의 경우 하단의 북마크를 통해 다른 웹 Tool들을 알아봤었으니, DBDiagram이 마음에 들지 않는다면 아래의 포스트를 추천해본다.
2022년 Top 8 무료 ERD 다이어그램 툴 추천 총정리
본문은 데이터베이스 관리를 위한 포괄적인 시각적 모델을 그리는 데 권장되는 ERD 다이어그램 툴 목록입니다. 어떤 도구가 가장 적합한지 자세히 살펴보십시오.
gitmind.com
ERD 제작 Tool에 중점을 둔 사항은?
필자가 중요시 한 사항은 다음과 같다.
- 광고가 있는 부분은 상관 없지만, 사용자가 사용을 하기에 불편함이 없는가?
- ERDCloud를 사용하지 않게 된 계기인 만큼 너무 불편한 정도만 아니면 괜찮았다. ERDCloud는 해당 부분이 너무 과했다.
- SQL파일로의 제작이 가능한가?
- 쿼리마저 내가 제작해야하면 너무 귀찮았다... 수정은 가능해도... 아얘 다 제작하라는건..고역이었기 때문에 파일로 제작해주는 기능이 필요했다...
- 사용방법이 어려운가?
- 아무래도 사용방법이 너무 어렵다 보면 제작을 함에 있어서 어려움이 있다보니 보게 된 사항이다
DBDiagram?
서비스 사이트의 북마크이며, 웹을 통하여 편한 사용이 가능하다.
dbdiagram.io - Database Relationship Diagrams Design Tool
dbdiagram.io
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
dbdiagram.io - Database Relationship Diagrams Design Tool
dbdiagram.io
'DB > ERDTool' 카테고리의 다른 글
[DBDiagram, DBDocs] ERD, 문서화에 대한 다양한 팁 (0) | 2023.05.06 |
---|---|
[DBDocs] 문서화한 프로젝트의 관리 자동화 (0) | 2022.09.16 |
[DBDocs]제작한 ERD를 문서화 해보자 (0) | 2022.09.16 |