🥷

データエンジニア向け 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_ で役割を明示します。


参考リソース

Discussion