Help us understand the problem. What is going on with this article?

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

背景

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

使い方

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

2. PlantUMLマクロを選択
image.png

3.「挿入」を押す
image.png

4.↓の枠がでてくるので、この中にER図描画用の情報を記入すればOK。コンフルを保存すれば、ER図ができあがり。
image.png

テンプレート

@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です。

↓こんな感じで出力されます。

image.png

補足的に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)

構文エラー時

エラーがあると↓のような画面が表示されるため、エラーメッセージを参考にデバッグします。
image.png

まとめ

PlantUMLを使ってER図をテキストベースで作成する方法をご紹介しました。
さくっとER図をテキストベースで作りたい時や、リレーションを手動で指定する必要がある時等に重宝しそうです。

※ER図を見やすくするための設定として、いくつかのサイトを参考にさせていただきましたが、URLを忘れてしまいまして、引用として紹介できていないことをお詫びいたします。

maaaaaaaa
株式会社ZOZOテクノロジーズ テックリード。Microsoft MVP for Data Platform (August 2020-) SQL ServerをメインにDBに関してつぶやきます。得意領域はチューニング/トラブルシューティング。SQL Server User Groupにて毎月登壇中。https://github.com/masaki-hirose
https://mobile.twitter.com/maaaa20201
zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした