15
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テーブルの設計にPlantUMLを使うと便利

Posted at

概要

  • テーブル設計のラフスケッチをPlantUMLでやったら便利だったので紹介
  • テーブルの関連(1対多, 多対多など)を表現できる
  • entity{}-{package{} の3つをおぼえれば、設計がはかどる

alt

環境

使い方

概要

  • テーブル項目の表現: entity{}
  • テーブル間の関連の表現: -{
  • テーブルのまとまりの表現: package{}

テーブル項目を表現する

テーブル名と登録されているカラムを表現する。
例えば、テーブル名を__users__、登録されているカラム名を__id__と__name__の場合のPlanUMLは以下の通り。

alt

テーブル間の関連を表現する

2つのテーブル間の関連を表現する。
その前に、復習も含めてchatsテーブルを作成してみる。chatsテーブルは__id__と__user_id__と__message__カラムを持つのでPlanUMLで表現すると以下のようになる。

alt

まず、2つのテーブルをならべてみる

alt

chatsテーブルとusersテーブル間が結びついている場合はPlanUMLで表現すると以下のようになる。

entity users {
id
name
}

entity chats {
id
user_id
message
}

users - chats

テーブル名1とテーブル名2が結びついていることを示すには、__-__をつかいます。具体的には、__テーブル名1 - テーブル名2__と書きますので上記では__users - chats__と書きます。

alt

さらに、詳細に説明したい場合は__{__を使います。今回の例ではchatsテーブルにはuser_idがあることからわかるように、usersテーブルとchatsテーブル間は1対多の関係であることがわかります。これを表現するには、users -{ chats__とします。重要なのは{__です。

entity users {
id
name
}

entity chats {
id
user_id
message
}

users -{ chats

alt

テーブルのまとまりを表現する

テーブル数が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

alt

ここに、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

alt

さらに応用

これまでの情報でも十分ですが、もうちょっと装飾します。

entity users {
id
--
name
}

package chat_screen {
entity chats {
id
user_id
--
message
}

entity images {
id
--
image_url
}
}

users --{ chats
chats - images : has_one

alt

  • 区切り

区切りを表現するには、__--__を使います。僕は、idとそれ以外を区別して表現するのに使っています。

entity chats {
id
user_id
--
message
}
  • 関連の線を長くする

関連の線は__-__を使うと説明しましたが、このハイフンは複数重ねると線を長くして見やすくする事ができます。

users --{ chats
  • 関連にコメントをつける

関連にコメントをつける場合は__ : コメント__を使います。頻度は多くないですが、たまに使います。

chats - images : has_one

これだけあればテーブルのラフスケッチは十分!

所感

PlantUMLがもっと広まるといいですね。

15
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?