データの関連性を理解するのに役立つのがER図です。
ER図は、「エンティティ」「アトリビュート」「リレーション」「カーディナリティ」で構成されます。
ここでは、PlantUMLを利用してER図を書く方法について整理します。
目次
エンティティ / アトリビュート
エンティティ
アトリビュート(エンティティに関する情報)
は以下のように定義できます。
@startuml
!define TRANSACTION CAE7F2
entity users as "users\nユーザー" <<T,TRANSACTION>> {
+ id INT(10) [PK]
--
- xxx_01 BIGINT(30) [あああ]
# xxx_02 TINYINT(1) [いいい]
* xxx_03 FLOAT
~ xxx_04 DOUBLE
xxx_05 VARCHAR(255)
xxx_06 TEXT
xxx_07 DATE
xxx_08 DATETIME
xxx_09 TIMESTAMP
xxx_10 GEOMETRY
xxx_11 JSON
}
@enduml
エンティティをグループ化
エンティティをpackageでグループ化できます。
@startuml
package database <<Database>> {
entity entity01 {}
entity entity02 {}
}
package folder <<folder>> {
entity entity10 {}
entity entity11 {}
}
package rectangle <<rectangle>> {
entity entity30 {}
}
package frame <<frame>> {
entity entity40 {}
}
@enduml
リレーション / カーディナリティ
リレーション
カーディナリティ(多重度)
は以下のように定義できます。
@startuml
entity01 ||..|{ entity02
entity03 ||--|{ entity04
entity05 ||--o{ entity06
entity07 ||--o| entity08
@enduml
配置調整
l
u
r
d
でエンティティの位置調整ができます。
@startuml
entity01 ||-l-o{ entity_left
entity01 ||-u-o{ entity_up
entity01 ||-r-o{ entity_right
entity01 ||-d-o{ entity_down_01
entity01 ||--d-o{ entity_down_02
@enduml
別ファイルで管理
「エンティティの定義」「リレーションの定義」を別ファイルで管理することができます。
エンティティ
@startuml
!define MASTER F9DFD5
!define TRANSACTION CAE7F2
entity users as "users\nユーザー" <<T,TRANSACTION>> {
+ id INT(10) [PK]
--
name VARCHAR(30) [名前]
# country_id [FK]
created_at TIMESTAMP
updated_at TIMESTAMP
}
entity posts as "posts\n記事" <<T,TRANSACTION>> {
+ id INT(10) [PK]
--
title VARCHAR(30) [タイトル]
body VARCHAR(255) [記事]
# user_id [FK]
created_at TIMESTAMP
updated_at TIMESTAMP
}
entity countries as "countries\n国" <<M,MASTER>> {
+ id INT(10) [PK]
--
name VARCHAR(50) [国名]
created_at TIMESTAMP
updated_at TIMESTAMP
}
@enduml
リレーション
!include entity.puml
で先述したエンティティの定義を読み込みます。
@startuml
!include entity.puml
users }|-l-|| countries
users ||-r-o{ posts
@enduml