概要
- テーブル設計のラフスケッチをPlantUMLでやったら便利だったので紹介
- テーブルの関連(1対多, 多対多など)を表現できる
-
entity{}
と-{
とpackage{}
の3つをおぼえれば、設計がはかどる
環境
- editor & viewer: いろいろあるけど、とりあえず http://www.plantuml.com/plantuml/uml/ でいいと思う
使い方
概要
- テーブル項目の表現:
entity{}
- テーブル間の関連の表現:
-{
- テーブルのまとまりの表現:
package{}
テーブル項目を表現する
テーブル名と登録されているカラムを表現する。
例えば、テーブル名をusers、登録されているカラム名をidとnameの場合のPlanUMLは以下の通り。
entity users {
id
name
}
http://www.plantuml.com/plantuml/uml/IyqhoIofL2WjJYqgLgZcoapXoalCJUMg1G00
テーブル間の関連を表現する
2つのテーブル間の関連を表現する。
その前に、復習も含めてchatsテーブルを作成してみる。chatsテーブルはidとuser_idとmessageカラムを持つのでPlanUMLで表現すると以下のようになる。
entity chats {
id
user_id
message
}
http://www.plantuml.com/plantuml/uml/IyqhoIofL4ZEI2mfLgZcoapXAYrEBOe7qhcfnSM9wQbSjG00
まず、2つのテーブルをならべてみる
entity users {
id
name
}
entity chats {
id
user_id
message
}
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がもっと広まるといいですね。