ER図をAIで作成する方法|ChatGPTとMermaidで下書きし、業務アプリを作る前に線を確かめる
AIにコードを書かせる前に、どのデータがどうつながるかを1枚にする
ER図をAIで作成する方法の結論|下書きはAI、線の確認は人
ER図は、業務アプリの中の「箱」と「線」を描いた設計図です。描く作業そのものはAIが速くこなします。人がやるのは、その線が自分の会社の実際の仕事と合っているかを確かめることです。
- 業務の言葉で「1件ずつ数えられるもの」とそのつながりを書き出し、ChatGPTやClaudeにMermaid記法で下書きさせます。返ってきたテキストをMermaid Live Editorに貼ると、ER図になります。
- ChatGPTやClaudeが作るER図の下書きは、多対多を線1本で済ませていないか、状態などの変わる値を上書きする形になっていないか(履歴が要るか)、会社や人を名前ではなくIDでつないでいるか、使い道のない項目が無いかの4点を業務で確かめます。
- 線の変更が出なくなるまで確認と修正を繰り返します。その後、ER図のMermaidと項目ごとの使い道・選択肢・入れる人の一覧をAIに渡し、実装を頼みます。
データベースがまだ無い段階でER図をAIで作るなら、ChatGPTやClaudeにMermaid記法(erDiagram)のテキストで書かせ、Mermaid Live Editorに貼って図にします。テキストなら線1本の修正も文字で指示でき、人は線の両端の件数を業務に照らして確かめられます。
ER図を用意する方法は目的で選びます。文字で直したいならChatGPTやClaudeとMermaid、画面上で共同編集したいならMiroのAI作図機能で文章から図を作れます。既存のデータベースの作りを写したいなら、AIを使わずtblsでテーブル定義から自動生成します。
ER図とは|業務アプリの「箱と線」の設計図
ER図は、アプリがためるデータの種類と、そのつながりを描いた図です。エンジニア向けの解説では「エンティティ」「リレーション」と呼ばれますが、業務の言葉に直すと次の3つだけです。
- 箱:会社、人、案件、見積のように、1件ずつ数えられるもの
- 線:箱同士が何件ずつつながるか。「1社に担当者が何人もいる」のような関係
- 項目:箱の中に持つ情報。案件なら金額、状態、次に連絡する日など
画面の見た目は後から何度でも変えられます。一方で、箱と線はアプリの土台です。たとえば「1つの案件に担当者は1人」で作ったあとに「2人で担当する案件もある」と分かると、入力画面、一覧、集計、すでに入れたデータのすべてに手が入ります。コードを書くのがAIになっても、箱と線を先に決めてから画面や集計を作る順番は変わりません。
手順の前の準備|業務の言葉で3つ書き出す
ER図をAIに下書きさせる前に書き出す材料は3つです。誰が使うか(入力する人と見るだけの人)、何から入力するか(名刺・メール・見積のExcelなど)、どのデータとつながるか(「1社に担当者が何人もいる」「1つの案件に見積が何回も出る」など)を、業務の言葉で書いておきます。手順1では、このメモから図の箱になる名詞を拾います。
「1社に担当者が何人もいる」のように、データ同士が何件ずつつながるかを文章で先に書くと、AIが推測で埋める部分が減り、どこを推測したかも尋ねやすくなります。業務そのものの洗い出しがまだなら、要件定義の進め方(工程の前に決定者を決める)で、誰が何を決めるかを揃えます。
ER図をAIで作る4つの手順
次の4つを1周として、線の変更が出なくなるまで確認と修正を繰り返します。
1. 数えられるものを書き出す
誰が使うか・何から入力するか・どのデータとつながるかを書いたメモから、会社・人・案件のように「1件、2件」と数えられる名詞を拾います。顧客管理なら、まず会社・人・案件の3つから始めると整理しやすくなります。やりとりの記録や作業の予定まで最初から別の箱にすると、作るのも入れるのも重くなります。必要になってから分けても間に合います。
2. ChatGPTやClaudeにMermaidで下書きさせる
Mermaidは、文字で書いたものを図にする記法です。ER図の書き方も用意されていて、ChatGPTやClaudeはこの記法で下書きを出せます。ただし記号の向きや線の数は確かめが要ります。画像で図を作らせるより、文字で出させるほうが後で直しやすくなります。依頼文は、たとえば次のように書きます(営業の人数などは例です)。
AIへの依頼文の例
次の業務のER図を、Mermaidのer図記法(erDiagram)で書いてください。 ・使う人:営業3人と社長。社長は数字を見るだけ ・入力のもと:名刺、商談のメモ、見積のExcel ・ためたいもの:会社(顧客と自社)、人、案件 ・分かっていること:1社に担当者が何人もいる。 1つの案件に、社内外の何人もが関わる 項目名は英字で書き、日本語名は注記に入れてください。 書いたあとに、線ごとに「1件に何件つくか」を あなたが推測した部分を一覧にし、 私が業務で確かめるための質問を3つ出してください。
ChatGPTやClaudeに「MermaidのER図記法(erDiagram)で書いて」と指定すると、erDiagramで始まるテキストを下書きとして受け取れます。たとえば会社 ||..o{ 案件 : "発注する"という行は、「案件の発注元は必ず1社で、1社には案件が0件以上ある」という線です。このテキストをMermaid Live Editorに貼って図にし、業務と合わない線を直します。
ChatGPTやClaudeにER図をMermaid記法で書かせるときは、依頼文の最後に「線ごとに推測した部分を一覧にし、私が業務で確かめるための質問を出して」と加えます。AIは分からない部分も推測で埋めて、完成した図のように返すことがあります。推測した箇所を申告させると、人が確かめるべき線がはっきりします。
3. Mermaid Live Editorに貼って図にする
AIが返したテキストを、無料のMermaid Live Editorに貼ると、その場で図が表示されます。GitHubのMarkdownで図を表示するなら、mermaidを指定したコードブロックにテキストを入れます。
MermaidのER図をMermaid Live Editorで図にしたら、線が1本もつながっていない箱と、線が集中している箱を探します。前者は使い道が決まっていない可能性があり、後者は複数の役割を詰め込んでいる可能性があるため、業務と合っているかを確かめます。
4. 線を1本ずつ、自分の業務で確かめる
AIが描いたER図の下書きは、線ごとに「左の箱1件に、右の箱は何件つくか」「0件のことはあるか」を実際の業務に照らして確かめます。自分だけで判断せず、その業務を実際に行っている社員にも聞きます。AIが描いた件数が業務と違っていたら、Mermaidを自分で書き換えず、「1つの案件に見積は何回も出る」のように文章でAIに返して描き直させます。
たとえばAIが人と案件を多対多の線1本(人 }o--o{ 案件)で描いた場合は、「1つの案件に社内外の何人もが関わり、1人も複数の案件に関わります。人と案件の間に『案件の関係者』の箱を置き、1対多の線2本に分けて描き直してください」と返します。AIが線の両端の件数を左右逆に描いた場合は、「会社1社に案件は0件以上、案件1件に会社はちょうど1社」のように、それぞれの件数を文章で返して描き直させます。
ER図は既存DBがあればtblsで生成、DBが無ければAIにMermaidで下書きさせる
- 既存データベースがある場合:tblsのようなツールで、テーブル定義からER図を自動で作れます。いまの作りを正確に写せるので、改修や移行の前に現状を確かめる用途に向きます。
- 既存データベースをAIで図にする場合:テーブル定義(CREATE TABLE文)をChatGPTやClaudeに渡し、MermaidのER図記法に変換させる方法もあります。外部キーが定義されていない線はAIの推測になるため、実際の業務で線の両端の件数を確かめます。
- データベースがまだ無い場合:使う人・入力のもと・「1社に担当者が何人もいる」のような関係を文章で書き、ChatGPTやClaudeにMermaid記法(erDiagram)で下書きさせます。Excelならシート名と列見出しも渡せます。ただし、シートの分け方が業務の箱と一致するとは限りません。下書きの線の両端が何件ずつか、1本ずつ業務で確かめます。
Mermaidの記号の読み方|4種類だけ覚える
MermaidのER図では、線の端の記号が、その記号の付いている箱の件数を表します。反対側の箱1件に対して何件つくか、という数え方です。線の左側(1つ目の箱の側)では、||はちょうど1件、|oは0件か1件、}oは0件以上、}|は1件以上です。線の右側(2つ目の箱の側)では、||以外は左右を入れ替えたo|・o{・|{と書きます。
| 記号 | 意味 | 業務での言い方の例 |
|---|---|---|
| || | ちょうど1件 | 案件の発注元の会社は、必ず1社 |
| |o(右側は o|) | 0件か1件 | 案件に承認者がいないか、1人いる |
| }o(右側は o{) | 0件以上 | 登録したばかりの会社には、まだ案件が無い |
| }|(右側は |{) | 1件以上 | 案件には、少なくとも1人の担当者がつく |
たとえば 会社 ||..o{ 案件 は、「案件の発注元は必ず1社。1社には案件が0件以上ある」と読みます。MermaidのER図の記法では、実線(--)は識別関係、点線(..)は非識別関係です。線を選ぶ設計上の目安として、相手の箱のIDが自分の箱の主キーの一部になるなら実線、参照するだけなら点線にします。案件は案件IDだけで1件が決まり、会社IDは参照するだけなので、会社と案件は点線です。一方、案件の関係者は案件IDと人IDの組で1件が決まるため、案件・人とは実線でつなぎます。
顧客管理を例にした下書きと確かめ方
営業3人と社長が会社・人・案件を管理する顧客管理を、説明用の例にします。会社には顧客と自社の両方を登録し、社内の営業も「人」の箱に入れます。AIの下書きで人と案件を線1本(人 }o--o{ 案件)でつないだと仮定します。1つの案件に社内外の何人もが関わり、1人も複数の案件に関わるため、間に「案件の関係者」を置いて1対多の線2本に分けます。修正後のMermaidは次の形です。
Mermaidの下書き(確かめたあと)
erDiagram
会社 ||..o{ 人 : "所属する"
会社 ||..o{ 案件 : "発注する"
案件 ||--|{ 案件の関係者 : "関わる"
人 ||--o{ 案件の関係者 : "担当する"
会社 {
string company_id PK "会社ID"
string name "会社名"
}
人 {
string person_id PK "人ID"
string company_id FK "会社ID"
string name "氏名"
}
案件 {
string deal_id PK "案件ID"
string company_id FK "会社ID"
int amount "金額"
string status "状態"
date next_contact_date "次に連絡する日"
}
案件の関係者 {
string deal_id PK,FK "案件ID"
string person_id PK,FK "人ID"
string role "役割"
}営業3人と社長の顧客管理の例では、人と案件の多対多を「案件の関係者」の箱で分けたため、箱は会社・人・案件・案件の関係者の4つになります。案件には現在の状態だけを持たせています。提案中から受注に変わった日時などの履歴も必要なら、案件ID・状態・変更日時を記録する「案件の状態履歴」の箱を別に作ります。
AIの下書きで確かめる4か所
AIが作ったER図の下書きは、次の4か所を確認します。
- 多対多を線1本で済ませていないか
- 状態などの変わる値を上書きする形になっていないか(履歴が要るか)
- 会社や人を名前の文字でつないでいないか(IDでつなぐ)
- 使い道のない項目を入れていないか
多対多を線1本で済ませていないか
人と案件のように「1人の担当者が何件もの案件を持ち、1つの案件にも何人も関わる」多対多の関係は、概念図なら線1本でも描けます。業務アプリでデータを保存する設計では、間に「案件の関係者」の箱を置き、「人→関係者」「案件→関係者」の1対多の線2本に分けます。多対多の線1本のまま実装を頼むと、AIが案件に担当者IDの欄を1つだけ作ることがあります。そうなると2人目を備考欄に書くしかなくなります。間に関係者の箱を置けば、案件1件に何人でも関係者を登録できます。
状態などの変わる値を上書きする形になっていないか(履歴が要るか)
AIが作ったER図の下書きで、案件の「状態」が1つの項目だけになっていると、提案中から受注に変えた時点で、いつ提案したかが消えます。変わった日時を後で見たいなら、案件ID・状態・変更日時を記録する「案件の状態履歴」の箱を別に作ります。
会社や人を名前の文字でつないでいないか
案件の中に会社名を文字で持つと、「青空不動産」と「アオゾラ不動産」が別の会社として集計されます。箱ごとに重ならない番号(ID)を振り、線はその番号でつなぎます。下書きに PK(その箱の番号)と FK(相手の箱の番号)が入っているかを見ます。どの箱の値をどこで直してよいかの決め方は、取引先マスタの責任者設計の記事に書きました。
使い道のない項目を作っていないか
AIは一般的に使われそうな項目を多めに入れることがあります。項目が多いと、入力する人の手間が増え、空欄だらけの列が残ります。項目ごとに「何に使うか」を1行で書き、書けない項目は最初は作りません。既存のツールを移す場合も、表の数と実際に使っている箱の数を分けて確かめます。データ構造の棚卸しで確認する方法を紹介しています。
仕上げたER図は、項目の一覧と一緒にAIへ渡す
ER図が固まったら、箱ごとに項目の一覧を作ります。一覧には「何に使うか」「選択肢」「誰が入れるか」を書きます。たとえば案件の「状態」なら、使い道は今月の見込みを出すこと、選択肢は提案中・受注・失注、入れるのは営業です。この一覧をER図のMermaidと一緒にChatGPTやClaude Codeへ渡し、実装を頼みます。使い道を1行で書けない項目(紹介元など)は、最初は作りません。
| 項目 | 何に使う | 選択肢 | 誰が入れる |
|---|---|---|---|
| 状態 | 今月の見込みを出す | 提案中・受注・失注 | 営業 |
| 金額 | 売上の着地を見る | —(数字) | 営業 |
| 次に連絡する日 | 追いかけ漏れを防ぐ | —(日付) | 営業 |
| 紹介元 | (使い道を書けない) | — | 作らない |
実装中にAIから「この項目はどこに置きますか」と聞かれたら、図に無かった線が見つかった合図です。ER図に戻って直してから進めます。ノーコードで組むか、AIにコードを書かせるかの線引きは業務アプリをノーコードで自作するときの判断で整理しています。
社内で使い始めたあとに外部へ公開したり、顧客情報を扱ったりする段階では、権限、保存場所、復旧の確認が別に要ります。その確認項目はAI社内ツールの本番導入前チェックにまとめました。
一次情報・公式情報
- Mermaid「Entity Relationship Diagrams」(線の両端の記号の意味、箱の名前にUnicodeが使えること、項目の注記の書き方)
- Mermaid Live Editor
- GitHub Docs「図の作成」
- tbls(データベースからER図と定義書を作るツール)
ER図とAIについてのよくある質問
ChatGPTでER図は作れますか?
作れます。Mermaid記法のテキストで出させ、Mermaid Live Editorに貼るか、GitHubのMarkdownでmermaid指定のコードブロックに入れると図になります。テキストなら線1本の修正も文字で指示できます。返ってきた記号の向きと線の件数は、業務に照らして確かめます。
既存のデータベースやExcelから、ER図を自動生成できますか?
データベースがすでにあるなら、tblsのようなツールでテーブル定義からER図を自動で作れます。Excelの場合は、シート名と列見出しを貼ってAIに下書きさせることはできますが、シートの分け方が業務の箱と一致しているとは限りません。表の数と実際に使っている箱の数が大きく違うこともあるので、下書きのあとに業務で確かめます。
Mermaidの書き方を覚える必要はありますか?
書けなくても構いません。MermaidのER図では、線の端の記号は、記号が付いた箱が反対側の箱一つに対していくつあるかを表します。|| は必ず一つ、|o はゼロか一つ、}o はゼロ以上、}| は一つ以上です。線の右側では o|・o{・|{ と左右を入れ替えて書きます。たとえば「会社 ||..o{ 案件」は、一社に案件がゼロ件以上あり、案件の発注元は必ず一社という意味です。AIの下書きを読み、線の両端の件数が実際の業務と合うか確かめます。
ER図はどこまで細かく描けばよいですか?
最初は箱3〜5個と、その線、各箱の主な項目までで十分です。文字数や型のような細かい決まりは、実装のときにAIに任せられます。人が決めるのは、どの箱が要るか、線の両端が何件か、項目を何に使うかです。
次に確認する記事
泉 款太(いずみ かんた)
株式会社SalesDock 代表取締役
慶應義塾大学法学部卒。スタートアップ、ラクスル、リクルート(SUUMO)を経て2025年に独立。 中小企業の経営・営業・業務・データをつなぐ事業基盤の設計と実装を支援。 不動産・製造業・クリニックを中心に、累計40社以上の支援に携わる。
運営は株式会社SalesDock(大阪市中央区本町)。中小企業向けに、AI自走プラン(初期構築15万円+月額10万円・90日)と、 そのあとのAI顧問(月額5万円・6ヶ月契約から)を提供しています。価格は税別です。 大阪・関西を中心に、オンラインで全国からのご相談に対応しています。
代表者情報を読む →この記事の数値について
本文中に一次資料へのリンクがある数値は、リンク先を出典としています。 リンクのない業務設計、判断基準、実務上の目安は、SalesDockが累計40社以上の支援と自社運用で得た知見を一般化したものです。 個別企業での成果を保証する数値ではなく、条件によって変わります。