Mermaid ER図 — データベース設計
MermaidでEntity-Relationship図を設計します。エンティティ定義、属性タイプ、リレーションシップのカーディナリティ表記、DB設計のベストプラクティスを学びます。
Diagram Types
詳細な説明
MermaidのER図
Entity-Relationship(ER)図は、テーブル(エンティティ)、カラム(属性)、およびテーブル間の関係を示すことでデータベーススキーマを視覚化します。MermaidのerDiagram構文は、これらのスキーマをコードとして簡潔に定義する方法を提供します。
エンティティの定義
エンティティは名前の後に波括弧内で属性を定義します。各属性にはタイプと名前があります:
erDiagram
CUSTOMER {
int id PK
string name
string email UK
date created_at
}
PKは主キーを示しますUKはユニークキーを示しますFKは外部キーを示します
リレーションシップのカーディナリティ
Mermaidはカーディナリティの表記システムを使用します:
| 表記 | 意味 |
|---|---|
||--|| |
1対1(正確に1つ) |
||--o{ |
1対0以上 |
||--|{ |
1対1以上 |
o|--o{ |
0または1対0以上 |
記号の意味:| = 正確に1つ、o = 0、{ = 多数。
完全なデータベーススキーマ
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ ORDER_ITEM : contains
PRODUCT ||--o{ ORDER_ITEM : "is ordered in"
CUSTOMER {
int id PK
string name
string email UK
string phone
}
ORDER {
int id PK
int customer_id FK
date order_date
string status
decimal total
}
ORDER_ITEM {
int id PK
int order_id FK
int product_id FK
int quantity
decimal unit_price
}
PRODUCT {
int id PK
string name
string sku UK
decimal price
int stock_count
}
ベストプラクティス
- PK/FK/UKアノテーションを使用する — 制約を一目で伝えます。
- リレーションシップに動詞で名前を付ける —
places、contains、belongs toはダイアグラムを自己文書化します。 - エンティティを集中させる — 属性が10-12個を超える場合は分割を検討してください。
- 関連エンティティをグループ化する — 密接に関連するテーブルをソースコード内で近くに配置すると、Mermaidが隣接してレンダリングします。
MermaidのER図は複合キーやチェック制約をネイティブにサポートしていませんが、アノテーションやコメントで追加情報を記述できます。
ユースケース
SaaS課金システムのスキーマを設計するデータベース管理者のケース。ER図が顧客、サブスクリプション、請求書、支払い、明細項目を適切なカーディナリティでモデル化し、マイグレーションスクリプトを書く前の信頼できる設計図として機能します。