はじめに
hkob の雑記録の第286回目は、Notion AI で ER 図を作成するコマンドを作成した件を解説します。
Makita さんの元のポスト
Makita さんが Notion AI で ER 図の作成ができたことをポストしていました。
進化したNotion AIではDBのER図の作成もらくらく!
— Makita | Notionを教えるひと | Make it @ (@make_it_at) 2025年10月10日
システム構築で複雑に入り組んだデータベースたちをER図で整理しておくと便利です😊 pic.twitter.com/sNVerlhGpt
元々、ER図は NotionRubyMapping の notionErDaigram.rb で書いていました。こちらは Notion API で解析しながら、Mermaid を書いていました。こちらは Notion API なのでかなり時間がかかっていました。
もう notionErDiagram 要らないですね。こっちは API 経由だからめちゃくちゃ時間かかるし。https://t.co/ZesAwivf9w
— hkob|Notion Ambassador (@hkob) 2025年10月10日
このポストに対して Makita さんから以下の返信をいただきました。なんか形が似ているなと思っていたところでした。
ご想像の通り、このER図はnotionErDiagramを参考に書いてます🙋綺麗に出るのですごくありがたかったです😆
— Makita | Notionを教えるひと | Make it @ (@make_it_at) 2025年10月10日
さらなる拡張
このポストを見て、以下のポストをしました。Notion API では、「1ページ」と「複数」の区別をすることができません。Notion AI であればこれらの情報が取得できるのではないかと考えたところです。
参考にしてもらえて幸いです。
— hkob|Notion Ambassador (@hkob) 2025年10月11日
このポストを見て、Notion AI なら Notion API で判別できない belongs_to - has_many (1対多) の関係を図示できるのではと思いました。このプロンプトを参考にさせてもらって試してみようと思います。
早速、プロフィールページに以下のように記載しました。双方向・片方向の区別、多対多・1対多、1対1の区別で記号を変えるように指示しました。
コマンド
/ で始まるものはコマンドになります。以下のコマンドが指示された場合には、そのプロンプトに従ってください。
/er コマンド
現在表示しているページに含まれる全てのデータベースの関係性を Mermaid 記法の ER 図として作成する
- 実行手順
- ページ内の全データベース(インライン/非インライン)を確認
- 各データベースのデータソースとスキーマを分析
- データソース間のリレーション関係を特定
- 主要なプロパティを抽出
- Mermaid ER 図を作成し、チャット欄に表示
- 出力形式
- エンティティ形式:
T1["データソース名"] { ... } - プロパティ形式:
プロパティタイプ p番号 "プロパティ名" - リレーション形式:
- 双方向多対多の場合(両方とも複数):
T1 }o--o{ T2 : "プロパティ名A / プロパティ名B" - 双方向1対多の場合(片方だけ1ページ制限):
T1 ||-o{ T2 : "プロパティA / プロパティB" - 双方向1対1の場合(両方とも1ページ制限):
T1 ||--|| T2 : "プロパティA / プロパティB" - 片方向1対多の場合(複数):
T1 ||--o{ T2 : "プロパティA" - 片方向1対1の場合(1ページ制限):
T1 ||--|| T2 : "プロパティA"
- 双方向多対多の場合(両方とも複数):
- エンティティ形式:
実行結果
実際に森高千里DBで /er コマンドを実行してみました。リレーションが多すぎるので、小さすぎますが、1対多の接続もうまく抽出できているようです。

おわりに
Notion AI を使うことで、1対多の接続なども記述できるようになり便利になりました。本当にもう notionErDiagram の必要はなくなりましたね。今後、カスタムエージェントが使えるようになると、crontab で実行している Notion API のプログラムももう必要なくなりそうです。