database-design
Expert database design and data modeling. Use when designing schemas, normalizing data, creating ER diagrams, or making architectural database decisions.
When & Why to Use This Skill
This Claude skill provides expert-level guidance on database design, data modeling, and architectural decision-making. It helps developers move beyond basic SQL patterns to create optimized schemas, select the right ORM (like Drizzle or Prisma), and implement efficient indexing strategies. By focusing on normalization and performance tuning, it ensures scalable and maintainable data infrastructures while avoiding common pitfalls like N+1 queries.
Use Cases
- Schema Design & Normalization: Creating robust data models and ER diagrams for new applications to ensure data integrity and scalability.
- Database & ORM Selection: Evaluating the best technology stack (e.g., PostgreSQL vs. SQLite, Prisma vs. Kysely) based on specific project constraints and deployment environments.
- Performance Optimization: Tuning database performance through strategic indexing, query analysis using EXPLAIN ANALYZE, and identifying inefficient data access patterns.
- Migration Management: Planning and executing safe schema migrations and architectural changes, particularly for serverless and production databases.
| name | database-design |
|---|---|
| description | Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases. |
| allowed-tools | Read, Write, Edit, Glob, Grep |
Database Design
Learn to THINK, not copy SQL patterns.
🎯 Selective Reading Rule
Read ONLY files relevant to the request! Check the content map, find what you need.
| File | Description | When to Read |
|---|---|---|
database-selection.md |
PostgreSQL vs Neon vs Turso vs SQLite | Choosing database |
orm-selection.md |
Drizzle vs Prisma vs Kysely | Choosing ORM |
schema-design.md |
Normalization, PKs, relationships | Designing schema |
indexing.md |
Index types, composite indexes | Performance tuning |
optimization.md |
N+1, EXPLAIN ANALYZE | Query optimization |
migrations.md |
Safe migrations, serverless DBs | Schema changes |
⚠️ Core Principle
- ASK user for database preferences when unclear
- Choose database/ORM based on CONTEXT
- Don't default to PostgreSQL for everything
Decision Checklist
Before designing schema:
- Asked user about database preference?
- Chosen database for THIS context?
- Considered deployment environment?
- Planned index strategy?
- Defined relationship types?
Anti-Patterns
❌ Default to PostgreSQL for simple apps (SQLite may suffice) ❌ Skip indexing ❌ Use SELECT * in production ❌ Store JSON when structured data is better ❌ Ignore N+1 queries