Notion AI で ER 図を作成するコマンド作成 : hkob の雑記録 (286)

はじめに

hkob の雑記録の第286回目は、Notion AI で ER 図を作成するコマンドを作成した件を解説します。

Makita さんの元のポスト

Makita さんが Notion AI で ER 図の作成ができたことをポストしていました。

元々、ER図は NotionRubyMapping の notionErDaigram.rb で書いていました。こちらは Notion API で解析しながら、Mermaid を書いていました。こちらは Notion API なのでかなり時間がかかっていました。

このポストに対して Makita さんから以下の返信をいただきました。なんか形が似ているなと思っていたところでした。

さらなる拡張

このポストを見て、以下のポストをしました。Notion API では、「1ページ」と「複数」の区別をすることができません。Notion AI であればこれらの情報が取得できるのではないかと考えたところです。

早速、プロフィールページに以下のように記載しました。双方向・片方向の区別、多対多・1対多、1対1の区別で記号を変えるように指示しました。

コマンド

/ で始まるものはコマンドになります。以下のコマンドが指示された場合には、そのプロンプトに従ってください。

/er コマンド

現在表示しているページに含まれる全てのデータベースの関係性を Mermaid 記法の ER 図として作成する

  • 実行手順
    1. ページ内の全データベース(インライン/非インライン)を確認
    2. 各データベースのデータソースとスキーマを分析
    3. データソース間のリレーション関係を特定
    4. 主要なプロパティを抽出
    5. Mermaid ER 図を作成し、チャット欄に表示
  • 出力形式
    1. エンティティ形式: T1["データソース名"] { ... }
    2. プロパティ形式: プロパティタイプ p番号 "プロパティ名"
    3. リレーション形式:
      1. 双方向多対多の場合(両方とも複数): T1 }o--o{ T2 : "プロパティ名A / プロパティ名B"
      2. 双方向1対多の場合(片方だけ1ページ制限): T1 ||-o{ T2 : "プロパティA / プロパティB"
      3. 双方向1対1の場合(両方とも1ページ制限): T1 ||--|| T2 : "プロパティA / プロパティB"
      4. 片方向1対多の場合(複数): T1 ||--o{ T2 : "プロパティA"
      5. 片方向1対1の場合(1ページ制限): T1 ||--|| T2 : "プロパティA"

実行結果

実際に森高千里DBで /er コマンドを実行してみました。リレーションが多すぎるので、小さすぎますが、1対多の接続もうまく抽出できているようです。

作成したER図

おわりに

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

hkob.notion.site