home / skills / langchain-ai / deepagents / schema-exploration

This skill helps you explore database schemas, map table relationships, and extract column details and sample data for informed queries.

npx playbooks add skill langchain-ai/deepagents --skill schema-exploration

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
4.5 KB
---
name: schema-exploration
description: For discovering and understanding database structure, tables, columns, and relationships
---

# Schema Exploration Skill

## When to Use This Skill

Use this skill when you need to:
- Understand the database structure
- Find which tables contain certain types of data
- Discover column names and data types
- Map relationships between tables
- Answer questions like "What tables are available?" or "What columns does the Customer table have?"

## Workflow

### 1. List All Tables
Use `sql_db_list_tables` tool to see all available tables in the database.

This returns the complete list of tables you can query.

### 2. Get Schema for Specific Tables
Use `sql_db_schema` tool with table names to examine:
- **Column names** - What fields are available
- **Data types** - INTEGER, TEXT, DATETIME, etc.
- **Sample data** - 3 example rows to understand content
- **Primary keys** - Unique identifiers for rows
- **Foreign keys** - Relationships to other tables

### 3. Map Relationships
Identify how tables connect:
- Look for columns ending in "Id" (e.g., CustomerId, ArtistId)
- Foreign keys link to primary keys in other tables
- Document parent-child relationships

### 4. Answer the Question
Provide clear information about:
- Available tables and their purpose
- Column names and what they contain
- How tables relate to each other
- Sample data to illustrate content

## Example: "What tables are available?"

**Step 1:** Use `sql_db_list_tables`

**Response:**
```
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
```

## Example: "What columns does the Customer table have?"

**Step 1:** Use `sql_db_schema` with table name "Customer"

**Response:**
```
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
```

## Example: "How do I find revenue by artist?"

**Step 1:** Identify tables needed
- Artist (has artist names)
- Album (links artists to tracks)
- Track (links albums to sales)
- InvoiceLine (has sales data)
- Invoice (has revenue totals)

**Step 2:** Map relationships
```
Artist (ArtistId)
  ↓ 1:many
Album (ArtistId, AlbumId)
  ↓ 1:many
Track (AlbumId, TrackId)
  ↓ 1:many
InvoiceLine (TrackId, UnitPrice, Quantity)
```

**Response:**
```
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.
```

## Quality Guidelines

**For "list tables" questions:**
- Show all table names
- Add brief descriptions of what each contains
- Group related tables (e.g., music catalog, transactions, people)

**For "describe table" questions:**
- List all columns with data types
- Explain what each column contains
- Show sample data for context
- Note primary and foreign keys
- Explain relationships to other tables

**For "how do I query X" questions:**
- Identify required tables
- Map the JOIN path
- Explain the relationship chain
- Suggest next steps (use query-writing skill)

## Common Exploration Patterns

### Pattern 1: Find a Table
"Which table has customer information?"
→ Use list_tables, then describe Customer table

### Pattern 2: Understand Structure
"What's in the Invoice table?"
→ Use schema tool to show columns and sample data

### Pattern 3: Map Relationships
"How are artists connected to sales?"
→ Trace the foreign key chain: Artist → Album → Track → InvoiceLine → Invoice

## Tips

- Table names in Chinook are singular and capitalized (Customer, not customers)
- Foreign keys typically have "Id" suffix and match a table name
- Use sample data to understand what values look like
- When unsure which table to use, list all tables first

Overview

This skill helps discover and understand a database's structure, including tables, columns, data types, sample rows, and relationships. It guides exploration steps to locate relevant tables, inspect schemas, and map foreign-key chains so you can plan queries or analytics. The output focuses on practical, actionable findings rather than raw dumps.

How this skill works

Start by listing all tables to see what objects exist. Inspect specific tables to get column names, data types, primary and foreign keys, and a few sample rows to understand content. Identify relationship patterns by matching Id-suffixed columns and tracing foreign keys to primary keys to build parent-child maps for join planning.

When to use it

  • You need to understand overall database structure before writing queries.
  • You want to find which table contains specific data (e.g., customer emails).
  • You must document columns, types, and keys for ETL or reporting.
  • You need to map joins to compute aggregates (revenue, counts) across tables.
  • You want sample rows to validate assumptions about values and formats.

Best practices

  • Always list tables first to narrow exploration scope before inspecting schemas.
  • Inspect sample rows with schema info to confirm data types and typical values.
  • Look for columns ending in 'Id' to quickly discover foreign-key relationships.
  • Document primary and foreign keys and the direction of relationships (1:many).
  • Group related tables (catalog, transactions, people) to simplify mapping and queries.

Example use cases

  • Answer 'What tables are available?' with a concise list and short descriptions.
  • Describe the Customer table: columns, types, primary key, and sample rows.
  • Map how Artist relates to sales: Artist → Album → Track → InvoiceLine → Invoice.
  • Plan a query to compute revenue by artist by identifying the necessary JOIN path and aggregate.
  • Locate which table contains phone or email fields when building a contact export.

FAQ

What if I don't know which table contains the data I need?

List all tables and scan table descriptions or inspect schema samples to quickly find likely candidates; search for columns with expected names or suffixes like 'Email' or 'Phone'.

How do I confirm relationships between tables?

Look for foreign-key columns (commonly ending in 'Id') and match them to primary keys in other tables, then verify by checking sample rows for linking values.