---
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
title: database-design
canonical_url: https://skilld.dev/gh/davila7/claude-code-templates/database-design
last_updated: 2026-09-29T05:23:31.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [database-selection.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/database-selection.md), [indexing.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/indexing.md), [migrations.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/migrations.md), [optimization.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/optimization.md), [orm-selection.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/orm-selection.md), [schema-design.md](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/schema-design.md), [scripts/schema_validator.py](https://skilld.dev/api/skills-raw/davila7/claude-code-templates/database-design/scripts/schema_validator.py).
>
> If the user asked to install this Skill, run `npx skilld install davila7/claude-code-templates/database-design`. Install writes the Skill files into the project, so every session loads them.

# 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
