こちらのサイトではDRUPAL10に関連する記事を掲載しています。
この記事はこちらのサイトから引用させていただきました
![](https://drupalfan.com/wp-content/uploads/cocoon-resources/blog-card-cache/c5ffbc34b1d7872d15d9b5f5866e6fca.png)
設計 | PlantUMLでER図を作成 - わくわくBank
データの関連性を理解するのに役立つのがER図です。ER図は、「エンティティ」「アトリビュート」「リレーション」「カーディナリティ」で構成されます。ここでは、PlantUMLを利用してER図を書く方法について整理します。
PlantUMLの公式リファレンスマニュアルです
https://pdf.plantuml.net/PlantUML_Language_Reference_Guide_ja.pdf
データの関連性を理解するのに役立つのが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
![805-design-uml-er_01.png 805-design-uml-er_01.png](https://wakuwakubank.imgix.net/805-design-uml-er_01.png-b9bcfd35-0c0b-4696-9f03-59e6a40ac0ef)
![805-design-uml-er_01.png 805-design-uml-er_01.png](https://wakuwakubank.imgix.net/805-design-uml-er_01.png-b9bcfd35-0c0b-4696-9f03-59e6a40ac0ef)
エンティティをグループ化
エンティティを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
![805-design-uml-er_02.png 805-design-uml-er_02.png](https://wakuwakubank.imgix.net/805-design-uml-er_02.png-9c232b2e-7aac-419f-b046-51ac5326ed1d)
![805-design-uml-er_02.png 805-design-uml-er_02.png](https://wakuwakubank.imgix.net/805-design-uml-er_02.png-9c232b2e-7aac-419f-b046-51ac5326ed1d)
リレーション / カーディナリティ
リレーション
カーディナリティ(多重度)
は以下のように定義できます。
@startuml
entity01 ||..|{ entity02
entity03 ||--|{ entity04
entity05 ||--o{ entity06
entity07 ||--o| entity08
@enduml
![805-design-uml-er_10.png 805-design-uml-er_10.png](https://wakuwakubank.imgix.net/805-design-uml-er_10.png-ed97b4ea-6952-4bea-a8a4-a1dc28c9d792)
![805-design-uml-er_10.png 805-design-uml-er_10.png](https://wakuwakubank.imgix.net/805-design-uml-er_10.png-ed97b4ea-6952-4bea-a8a4-a1dc28c9d792)
配置調整
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
![805-design-uml-er_11.png 805-design-uml-er_11.png](https://wakuwakubank.imgix.net/805-design-uml-er_11.png-0b45039a-7c16-4eba-bd75-89deb21379c3)
![805-design-uml-er_11.png 805-design-uml-er_11.png](https://wakuwakubank.imgix.net/805-design-uml-er_11.png-0b45039a-7c16-4eba-bd75-89deb21379c3)
別ファイルで管理
「エンティティの定義」「リレーションの定義」を別ファイルで管理することができます。
エンティティ
entity.puml@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
![805-design-uml-er_20.png 805-design-uml-er_20.png](https://wakuwakubank.imgix.net/805-design-uml-er_20.png-4284fce0-8618-49da-856b-37554e382279)
![805-design-uml-er_20.png 805-design-uml-er_20.png](https://wakuwakubank.imgix.net/805-design-uml-er_20.png-4284fce0-8618-49da-856b-37554e382279)
![](https://blogdeoshiete.com/wp-content/uploads/advertise.jpg)
この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。