🥷
データエンジニア向け Mermaid データモデル図 記法ガイド
Mermaid の flowchart 記法でデータモデルの関係図を描くためのルール集です。
ER図・データリネージ図・スタースキーマなど、データエンジニア向けのモデリングにおける主要なユースケースをカバーします。
基本構文
flowchart TD
テーブル名["テーブル名<br/>日本語名<br/>粒度: PK説明<br/>(pk_column)"]
ノード表記規則
記述形式
テーブル名["テーブル名<br/>日本語説明<br/>粒度: 日本語表記<br/>(英語表記)"]
各行の役割
| 行 | 内容 | 例 |
|---|---|---|
| 1行目 | テーブル名(英語) | fact_orders |
| 2行目 | 日本語の説明 | 注文ファクト |
| 3行目 |
粒度: + 日本語のPK/Grain |
粒度: 注文ID×日次 |
| 4行目 | 英語表記を括弧で囲む | (order_id × daily) |
- 改行は
<br/>で表現 - 複合キーの区切りは
×を使用(単一キーの場合は不要)
例
複合キー:
fact_order_items["fact_order_items<br/>注文明細ファクト<br/>粒度: 注文ID×商品ID<br/>(order_id × product_id)"]
単一キー:
customers["customers<br/>顧客<br/>粒度: 顧客ID<br/>(customer_id)"]
リレーションシップ
ER図(テーブル間のカーディナリティ)
| カーディナリティ | 記法 | 説明 |
|---|---|---|
| 1対1 | A ---|joinキー| B |
矢印なしの実線。実務上まれなため例では省略 |
| 1対N / N対1 | A --x|joinキー| B |
×印付き。多側に×が向くようにノード順を調整 |
| 0対1 / 1対0 | A --o|joinキー| B |
o印付き(オプショナル)。0側にoが向くように記述 |
リネージ図(データの変換フロー)
| 関係 | 記法 | 説明 |
|---|---|---|
| 変換フロー | A --> B |
矢印付き。ソースから下流への変換 |
| JOIN | A --x|joinキー| B |
ER図と同じ --x で結合を表現 |
JOIN種別(INNER / LEFT 等)はラベルに追記してもよい(例: --x|key LEFT|)。省略可。
ノード形状の使い分け
| 用途 | 記法 | 形状 |
|---|---|---|
| ソーステーブル | [/"source.table"/] |
平行四辺形(外部データの入口) |
| モデル(stg / mart) | ["model<br/>説明<br/>粒度: ..."] |
四角(通常ノード) |
リネージ図でソーステーブルを平行四辺形にすると、外部システムとの境界が視覚的に明確になります。
subgraph でドメイン境界を表現
subgraph domain_name["表示名"]
node1["..."]
node2["..."]
end
ルール・制約の注釈ノード
ビジネスルール・制約・未決事項を図中に残します。sudoモデリングの「吹き出し」に相当します。
| 用途 | 記法 | 説明 |
|---|---|---|
| ルール/制約 | note_x>"ルール内容"] |
非対称形(旗形)で視覚的に区別 |
| 未決事項 | todo_x>"❓ 未決: 内容"] |
❓ プレフィックスで未決を明示 |
- 注釈ノードは
-.-(点線)で対象ノードに接続 -
>形状(非対称)でテーブルノードと視覚的に区別 - 重要なルール・未決事項に限定し、多用しない
スタイル
色・装飾
スタイル設定なし — デフォルトのMermaid表示を使用。シンプルさと可読性を優先します。
flowchart の方向
| 方向 | 用途 |
|---|---|
flowchart TD(上→下) |
ER図、スタースキーマなど構造の表現 |
flowchart LR(左→右) |
リネージ図など変換フローの表現 |
以下の3つの例は、同じ ECドメイン(顧客・注文・商品・入金)を ER図→リネージ図→スタースキーマの3つの視点で描いたものです。同じビジネスでもモデリングの目的によって図の構造が変わることを示します。
例1: ER図
subgraph でドメイン境界をグルーピング。--x で1対N、--o でオプショナルを表現します。
例2: データリネージ(Source → Staging → Mart)
Source→Staging は --> で変換フローを、Staging→Mart は --x でJOIN関係を表現します。
例3: ディメンショナルモデル(スタースキーマ)
中心にファクト、周囲にディメンション。プレフィックス fact_ / dim_ で役割を明示します。
参考リソース
- Mermaid 公式ドキュメント
- Mermaid Flowchart 構文
- データ中心指向とオブジェクト指向の比較 — ER図でのキー・関連の記述ルール
- 10分でわかるドメインモデリング — sudoモデリング: ルール/制約の吹き出し、日英対訳の定義
Discussion