Database Expert
The Database Expert agent specializes in database design, optimization, and data management.
Expertise Areas#
- Schema Design - Normalization, relationships, constraints
- Query Optimization - Indexes, execution plans, performance
- ORMs - Prisma, Drizzle, TypeORM, Sequelize
- Migrations - Schema versioning, rollbacks, data migrations
- SQL - Complex queries, CTEs, window functions
- NoSQL - MongoDB, Redis, DynamoDB
- Data Modeling - ERD design, domain modeling
Usage Examples#
Schema Design#
Use the database-expert agent to design a schema for an e-commerce platform with:
- Users and authentication
- Products with categories
- Orders and order items
- Reviews and ratings
Response includes:
- Complete schema design
- Relationship definitions
- Index recommendations
- Constraint definitions
Query Optimization#
Use the database-expert agent to optimize this slow query:
SELECT * FROM orders
JOIN order_items ON orders.id = order_items.order_id
WHERE orders.created_at > '2024-01-01'
Response includes:
- Query analysis
- Index suggestions
- Optimized query
- Execution plan explanation
Prisma Schema#
Use the database-expert agent to create a Prisma schema for a social media app.
Response includes:
- Model definitions
- Relations setup
- Enum types
- Index decorators
Best Practices Applied#
1. Schema Design#
- Proper normalization (usually 3NF)
- Appropriate denormalization for performance
- Consistent naming conventions
- Proper use of constraints
2. Performance#
- Strategic index placement
- Covering indexes
- Query analysis
- Connection pooling
3. Data Integrity#
- Foreign key constraints
- Check constraints
- Unique constraints
- Default values
4. Scalability#
- Partitioning strategies
- Sharding considerations
- Read replicas
- Caching layers
Common Patterns#
Prisma Schema Example#
1model User {
2 id String @id @default(cuid())
3 email String @unique
4 name String?
5 posts Post[]
6 profile Profile?
7 createdAt DateTime @default(now())
8 updatedAt DateTime @updatedAt
9
10 @@index([email])
11}
12
13model Post {
14 id String @id @default(cuid())
15 title String
16 content String?
17 published Boolean @default(false)
18 author User @relation(fields: [authorId], references: [id])
19 authorId String
20 tags Tag[]
21 createdAt DateTime @default(now())
22 updatedAt DateTime @updatedAt
23
24 @@index([authorId])
25 @@index([published, createdAt])
26}
27
28model Tag {
29 id String @id @default(cuid())
30 name String @unique
31 posts Post[]
32}Migration Strategy#
1// 1. Create migration
2npx prisma migrate dev --name add_user_roles
3
4// 2. Data migration (if needed)
5async function migrateData() {
6 await prisma.$transaction(async (tx) => {
7 // Update existing users
8 await tx.user.updateMany({
9 where: { role: null },
10 data: { role: 'USER' },
11 });
12 });
13}
14
15// 3. Deploy migration
16npx prisma migrate deployIndex Strategy#
1-- Primary lookup index
2CREATE INDEX idx_orders_user_id ON orders(user_id);
3
4-- Covering index for common query
5CREATE INDEX idx_orders_status_created
6ON orders(status, created_at)
7INCLUDE (total, user_id);
8
9-- Partial index for active records
10CREATE INDEX idx_users_active
11ON users(email)
12WHERE deleted_at IS NULL;Database-Specific Guidance#
PostgreSQL#
- JSON/JSONB usage
- Full-text search
- Extensions (PostGIS, pgvector)
- Connection pooling (PgBouncer)
MySQL#
- InnoDB vs MyISAM
- Character sets
- Replication setup
- Query cache
MongoDB#
- Document design
- Aggregation pipelines
- Indexing strategies
- Sharding
Redis#
- Data structures
- Caching patterns
- Pub/Sub
- Persistence options
Sample Prompts#
| Task | Prompt |
|---|---|
| Schema design | "Design a schema for a multi-tenant SaaS application" |
| Optimization | "Optimize queries for a reporting dashboard" |
| Migration | "Create a migration to add soft deletes to all tables" |
| Indexing | "Recommend indexes for these common query patterns" |
| Relationships | "Model a many-to-many relationship with metadata" |
Configuration#
1// bootspring.config.js
2module.exports = {
3 agents: {
4 customInstructions: {
5 'database-expert': `
6 - Use Prisma as the ORM
7 - Follow PostgreSQL best practices
8 - Include index recommendations
9 - Consider query performance
10 - Use soft deletes where appropriate
11 `,
12 },
13 },
14 stack: {
15 database: ['postgresql', 'prisma'],
16 },
17};Related Agents#
- Backend Expert - API and server logic
- Performance Expert - Query optimization
- Software Architect - Data architecture