概要
- テーブル設計のラフスケッチをPlantUMLでやったら便利だったので紹介
- テーブルの関連(1対多, 多対多など)を表現できる
-
entity{}
と-{
とpackage{}
の3つをおぼえれば、設計がはかどる
環境
- editor & viewer: いろいろあるけど、とりあえず http://www.plantuml.com/plantuml/uml/ でいいと思う
使い方
概要
- テーブル項目の表現:
entity{}
- テーブル間の関連の表現:
-{
- テーブルのまとまりの表現:
package{}
テーブル項目を表現する
テーブル名と登録されているカラムを表現する。
例えば、テーブル名を__users__、登録されているカラム名を__id__と__name__の場合のPlanUMLは以下の通り。
テーブル間の関連を表現する
2つのテーブル間の関連を表現する。
その前に、復習も含めてchatsテーブルを作成してみる。chatsテーブルは__id__と__user_id__と__message__カラムを持つのでPlanUMLで表現すると以下のようになる。
まず、2つのテーブルをならべてみる
chatsテーブルとusersテーブル間が結びついている場合はPlanUMLで表現すると以下のようになる。
entity users {
id
name
}
entity chats {
id
user_id
message
}
users - chats
テーブル名1とテーブル名2が結びついていることを示すには、__-__をつかいます。具体的には、__テーブル名1 - テーブル名2__と書きますので上記では__users - chats__と書きます。
さらに、詳細に説明したい場合は__{__を使います。今回の例ではchatsテーブルにはuser_idがあることからわかるように、usersテーブルとchatsテーブル間は1対多の関係であることがわかります。これを表現するには、users -{ chats__とします。重要なのは{__です。
entity users {
id
name
}
entity chats {
id
user_id
message
}
users -{ chats
テーブルのまとまりを表現する
テーブル数が2つの場合は不要ですが、3つ以上になると複数のテーブルをまとめて表現するとわかりやすくなる場合があります。
そのとき使うのは__package{}__です。
まず、chatsテーブルと1対1の関係にあるimagesというテーブルを追加します。
entity users {
id
name
}
entity chats {
id
user_id
message
}
entity images {
id
image_url
}
users -{ chats
chats - images
ここに、chatsテーブルとimagesテーブルは__chat_screen__で使われるという意味でグループ化して表現する場合はいかのように書きます。
entity users {
id
name
}
package chat_screen {
entity chats {
id
user_id
message
}
entity images {
id
image_url
}
}
users -{ chats
chats - images
さらに応用
これまでの情報でも十分ですが、もうちょっと装飾します。
entity users {
id
--
name
}
package chat_screen {
entity chats {
id
user_id
--
message
}
entity images {
id
--
image_url
}
}
users --{ chats
chats - images : has_one
- 区切り
区切りを表現するには、__--__を使います。僕は、idとそれ以外を区別して表現するのに使っています。
entity chats {
id
user_id
--
message
}
- 関連の線を長くする
関連の線は__-__を使うと説明しましたが、このハイフンは複数重ねると線を長くして見やすくする事ができます。
users --{ chats
- 関連にコメントをつける
関連にコメントをつける場合は__ : コメント__を使います。頻度は多くないですが、たまに使います。
chats - images : has_one
これだけあればテーブルのラフスケッチは十分!
所感
PlantUMLがもっと広まるといいですね。