Confluence上でPlantUMLを使ってER図をテキストベースで作成する


背景

外部キー制約が完璧に作成されている環境であれば、リバースエンジニアリングで自動でER図を作成してくれるツールは結構あるかと思います。
ただし、外部キー制約がメンテされていない環境だと、手動でリレーションを判断する必要があります。
そのような状況において便利な、PlantUMLを使ってテキストベースでER図を作成する方法をご紹介します。

使い方

Confluence上でPlantUMLを使ってER図を作成する方法をご紹介します。
1.記事を書く画面で「+」→「その他のマクロ」

2. PlantUMLマクロを選択

3.「挿入」を押す

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を忘れてしまいまして、引用として紹介できていないことをお詫びいたします。