#背景
外部キー制約が完璧に作成されている環境であれば、リバースエンジニアリングで自動でER図を作成してくれるツールは結構あるかと思います。
ただし、外部キー制約がメンテされていない環境だと、手動でリレーションを判断する必要があります。
そのような状況において便利な、PlantUMLを使ってテキストベースでER図を作成する方法をご紹介します。
#使い方
Confluence上でPlantUMLを使ってER図を作成する方法をご紹介します。
1.記事を書く画面で「+」→「その他のマクロ」
4.↓の枠がでてくるので、この中にER図描画用の情報を記入すればOK。コンフルを保存すれば、ER図ができあがり。
#テンプレート
@startuml
' ER図を見やすくするための設定
' monotone color
skinparam monochrome true
' shadow off
skinparam shadowing false
' change font
skinparam defaultFontName Ricty Diminished
' hide the spot
hide circle
' avoid problems with angled crows feet
skinparam linetype ortho
' 1. table list
object table1
object table2
object table3
' 2. column list
table1 : column1_1
table1 : column1_2
table2 : column2_1
table2 : column2_2
table3 : column3_1
table3 : column3_2
table3 : column3_3
' 3. relation list
table1 }o--|| table2: (column1_1=column2_1)
table1 ||--o{ table3 : (column1_2=column3_1)
@enduml
大きく分けて3つのブロックに分かれており、
- テーブルリスト
- カラムリスト
- リレーション
をそれぞれ列挙すればOKです。
↓こんな感じで出力されます。
補足的にJOINの条件を (column1_1=column2_1)といったテキストで表示させています。(これは無くすこともできます)
リレーションのバリエーション
リレーションのバリエーションは↓ですべてカバーできると思います。
N:1
Member }o--|| TPref: (mePrefID-prPrefID)
Member }|--|| TPref: (mePrefID-prPrefID)
1:N
Member ||--o{ TPref: (mePrefID-prPrefID)
Member ||--|{ TPref: (mePrefID-prPrefID)
1:1
Member ||--|| TPref: (mePrefID-prPrefID)
Member |o--|| TPref: (mePrefID-prPrefID)
Member ||--o| TPref: (mePrefID-prPrefID)
N:N ※基本的にないはず
Member }o--o{ TPref: (mePrefID-prPrefID)
Member }|--|{ TPref: (mePrefID-prPrefID)
構文エラー時
エラーがあると↓のような画面が表示されるため、エラーメッセージを参考にデバッグします。
まとめ
PlantUMLを使ってER図をテキストベースで作成する方法をご紹介しました。
さくっとER図をテキストベースで作りたい時や、リレーションを手動で指定する必要がある時等に重宝しそうです。
※ER図を見やすくするための設定として、いくつかのサイトを参考にさせていただきましたが、URLを忘れてしまいまして、引用として紹介できていないことをお詫びいたします。