schema-exploration について
schema-explorationは、SQLデータベースツールでテーブル、列、サンプル行、キー、関連を調べるスキルです。エージェントが利用可能なデータを説明し、クエリ前にテーブル間の関係を把握するのに役立ちます。
主な機能
- 01利用可能なテーブルの一覧表示
- 02列・型・サンプル行の確認
- 03主キーと外部キーの特定
- 04テーブル間の関連の把握
- 05クエリ計画向けのデータ構造説明
活用シーン
- 01関連データを含むテーブルの特定
- 02テーブルの列とキーの説明
- 03分析に必要な結合関係の整理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ langchain-ai/ deepagents --skill schema-explorationインストール後、Claude Code で/schema-explorationを入力して読み込まれたか確認します。
詳細
スキーマ探索スキル
ワークフロー
1. すべてのテーブルを一覧表示する
sql_db_list_tables ツールを使用して、データベースで利用できるすべてのテーブルを確認します。
クエリ可能なテーブルの完全な一覧が返されます。
2. 特定のテーブルのスキーマを取得する
テーブル名を指定して sql_db_schema ツールを使用し、次の項目を確認します。
- 列名 - 利用可能なフィールド
- データ型 - INTEGER、TEXT、DATETIME など
- サンプルデータ - 内容を把握するための例となる 3 行
- 主キー - 行を一意に識別するもの
- 外部キー - 他のテーブルとの関係
3. リレーションシップを把握する
テーブル同士のつながりを特定します。
- 「Id」で終わる列を探します(例:CustomerId、ArtistId)
- 外部キーは他のテーブルの主キーに紐づきます
- 親子関係を記録します
4. 質問に回答する
次の内容を明確に説明します。
- 利用可能なテーブルとその用途
- 列名と各列に含まれるデータ
- テーブル同士の関係
- 内容を示すサンプルデータ
例:「利用可能なテーブルは何ですか?」
ステップ 1: sql_db_list_tables を使用します
応答:
The Chinook database has 11 tables:
1. Artist - Music artists
2. Album - Music albums
3. Track - Individual songs
4. Genre - Music genres
5. MediaType - File formats (MP3, AAC, etc.)
6. Playlist - User-created playlists
7. PlaylistTrack - Tracks in playlists
8. Customer - Store customers
9. Employee - Store employees
10. Invoice - Customer purchases
11. InvoiceLine - Individual items in invoices
例:「Customer テーブルにはどのような列がありますか?」
ステップ 1: テーブル名「Customer」を指定して sql_db_schema を使用します
応答:
The Customer table has these columns:
- CustomerId (INTEGER) - Primary key, unique customer ID
- FirstName (NVARCHAR) - Customer's first name
- LastName (NVARCHAR) - Customer's last name
- Company (NVARCHAR) - Company name (optional)
- Address, City, State, Country, PostalCode - Location fields
- Phone (NVARCHAR) - Phone number
- Fax (NVARCHAR) - Fax number
- Email (NVARCHAR) - Email address
- SupportRepId (INTEGER) - Foreign key to Employee table
Sample data shows customers like:
- Luís Gonçalves from Brazil
- Leonie Köhler from Germany
- François Tremblay from Canada
例:「アーティスト別の売上を調べるにはどうすればよいですか?」
ステップ 1: 必要なテーブルを特定します
- Artist(アーティスト名を含みます)
- Album(アーティストとトラックを紐づけます)
- Track(アルバムと売上を紐づけます)
- InvoiceLine(売上データを含みます)
- Invoice(売上合計を含みます)
ステップ 2: リレーションシップを把握します
Artist (ArtistId)
↓ 1:many
Album (ArtistId, AlbumId)
↓ 1:many
Track (AlbumId, TrackId)
↓ 1:many
InvoiceLine (TrackId, UnitPrice, Quantity)
応答:
To find revenue by artist, you'll need to:
1. Start with the Artist table
2. JOIN to Album on ArtistId
3. JOIN to Track on AlbumId
4. JOIN to InvoiceLine on TrackId
5. SUM the revenue (UnitPrice * Quantity)
6. GROUP BY artist name
This requires the query-writing skill to execute.
品質ガイドライン
「テーブルの一覧表示」に関する質問の場合:
- すべてのテーブル名を表示します
- 各テーブルに含まれる内容を簡潔に説明します
- 関連するテーブルをグループ化します(例:音楽カタログ、トランザクション、人物)
「テーブルの説明」に関する質問の場合:
- すべての列をデータ型とともに一覧表示します
- 各列に含まれる内容を説明します
- 文脈を把握できるサンプルデータを示します
- 主キーと外部キーを明記します
- 他のテーブルとのリレーションシップを説明します
「X をクエリするにはどうすればよいですか?」という質問の場合:
- 必要なテーブルを特定します
- JOIN の経路を把握します
- リレーションシップのつながりを説明します
- 次のステップを提案します(クエリ作成スキルを使用)
コメント
Markdown 対応