PlantUML로 ER 다이어그램을 작성할 때의 팁
개요
PlantUML에서 ER 그림을 쓰는 것이 있었지만,
그 시선이 엉망이 되어 고생했기 때문에 Tips를 남깁니다.
이런 고민을 가진 초보자의 방향의 내용입니다.
사전 준비
이번에 사용하는 테이블에 대해
(Rails 응용 프로그램 테이블의 ER 다이어그램을 작성했기 때문에,
테이블의 명명 등은 ActiveRecord의 방식을 따른다. )
엔티티를 결합한 PlantUML
tables.pu
@startuml tables
entity companies as "companies\n会社" {
+ id [PK]
--
name [会社名]
created_at [作成日]
updated_at [更新日]
}
entity positions as "positions\n役職マスタ" {
+ id [PK]
--
company_id
name [役職名]
created_at [作成日]
updated_at [更新日]
}
entity user_positions as "user_positions\nユーザー役職マスタ関連" {
+ id [PK]
--
user_id
position_id
created_at [作成日]
updated_at [更新日]
}
entity users as "users\nユーザー" {
+ id [PK]
--
company_id
login_id [ログインID]
password [パスワード]
created_at [作成日]
updated_at [更新日]
}
entity user_profiles as "user_profiles\nユーザー詳細" {
+ id [PK]
--
user_id
birthday[生年月日]
name [ユーザー名]
created_at [作成日]
updated_at [更新日]
}
entity user_subordinate_users as "user_subordinate_users\nユーザー部下ユーザー関連" {
+ id [PK]
--
user_id
subordinate_user_id [部下ユーザーID]
password [パスワード]
created_at [作成日]
updated_at [更新日]
}
@enduml
초기 상태의 ER 다이어그램
특히 아무것도 고안하지 않은 상태에서는 아래와 같은 느낌입니다.
erd.pu
@startuml erd
' tables.pu はこのファイルと同じディレクトリに存在している想定です。
!include tables.pu
companies ||-o{ users
companies ||-o{ positions
users ||-o| user_profiles
users ||-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
여기에서 출력되는 그림은 이런 느낌이 됩니다.
음, 읽을 수 없습니다. 차라리 존재하지 않는 쪽이 괜찮은 ER도・・・.
이 그림을 몇 가지 수정으로 잘 보기 쉬운 그림으로 해 가고 싶습니다.
ER 그림을 쓰는 요령 목록
엔티티를 표시할 방향 결정
엔티티를 표시하는 방향,
상하 좌우로 지정하고 싶습니다.
erd.pu @startuml erd
!include tables.pu
-companies ||-o{ users
+companies ||-d-o{ users
companies ||-o{ positions
-users ||-o| user_profiles
-users ||-o{ user_subordinate_users
+users ||-l-o| user_profiles
+users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
지정하면 이런 느낌이 듭니다.
꽤 가시성이 개선되었습니다.
지정 방법
companies ||-d-o{ users
의 의미는
"companies
의 아래를 향해 (down) users
를 표시한다"라고 하는 것입니다.
-r-
와 -u-
와 같이 지정하는 것으로,
상하좌우 어디에 엔티티를 표시할지를 변경할 수 있습니다.
@startuml erd
!include tables.pu
-companies ||-o{ users
+companies ||-d-o{ users
companies ||-o{ positions
-users ||-o| user_profiles
-users ||-o{ user_subordinate_users
+users ||-l-o| user_profiles
+users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
사용하지 않아도 좋은 느낌으로 표시될 때는 일부러 지정할 필요는 없지만,
이번 ER 그림과 같은 경우에는 유용합니다.
유스 케이스 다이어그램의 구문과 기능 - PlantUML
화살표 방향을 변경하려면을 참조하십시오.
관계의 선 길이 변경
관계의 선 길이를 변경할 수 있습니다.
erd.pu
@startuml erd
!include tables.pu
-companies ||-d-o{ users
+companies ||-d--o{ users
companies ||-o{ positions
users ||-l-o| user_profiles
users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
변경점은
-
를 1개 추가했을 뿐입니다.ER 다이어그램은 다음과 같습니다.
약간의 변경으로 상당히 관계의 흐름을 알기 쉬워졌습니다.
어떤 때에 편리?
위의 그림이라면 거기까지 고마움이 느껴지지 않습니다만,
아래와 같이 선이 교차해 버렸을 때 등에 힘을 발휘합니다.
선이 교차합니다.
아래 그림은
erd.pu
의 엔티티 표시 방향 등조금 어레인지 한 그림입니다.
이 그림에서는 관계의 선이 교차합니다.
another_erd.pu
@startuml erd
!include tables.pu
companies ||-r-o{ users
companies ||-u-o{ positions
users ||-u-o| user_profiles
users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
선을 늘려 교차를 해소
아래와 같이 수정하면 선의 교차를 해소할 수 있습니다.
another_erd.pu
@startuml erd
!include tables.pu
companies ||-r-o{ users
-companies ||-u-o{ positions
+companies ||-u--o{ positions
users ||-u-o| user_profiles
users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
완성된 ER 그림
완성된 그림은 이런 느낌입니다.
그렇게 복잡한 일은 하지 않은 것에 비해 상당히 깨끗했습니다.
erd.pu@startuml tables
!include tables.pu
companies ||-d--o{ users
companies ||-o{ positions
users ||-l-o| user_profiles
users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
결론
처음에는 "이제 Excel이라든지 Draw.io로 그리면 어쩌면 ...?"라고 생각했습니다만,
요령마저 잡으면 어쩐지 보기 쉽게 그릴 수 없다고 생각했습니다.
그 밖에도 Tips를 발견하면 추기해 갑니다.
참고 사이트・기사
@startuml tables
!include tables.pu
companies ||-d--o{ users
companies ||-o{ positions
users ||-l-o| user_profiles
users ||-d-o{ user_subordinate_users
users ||-o{ user_positions
positions ||-o{ user_positions
@enduml
처음에는 "이제 Excel이라든지 Draw.io로 그리면 어쩌면 ...?"라고 생각했습니다만,
요령마저 잡으면 어쩐지 보기 쉽게 그릴 수 없다고 생각했습니다.
그 밖에도 Tips를 발견하면 추기해 갑니다.
참고 사이트・기사
Reference
이 문제에 관하여(PlantUML로 ER 다이어그램을 작성할 때의 팁), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/murakami-mm/items/4c50d1949a8b10016ef7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)