database-design · git:20261020.bfd01fa · 2026-10-20 · sha256 8f8adef07037b10a
database-design git:20261020.bfd01faA
Immutable. This exact content never changes and is served at /api/v1/blob/8f8adef07037b10a.
--- name: database-design description: "Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases." category: library risk: safe source: community date_added: "2026-02-27" --- # Database Design > **Learn to THINK, not copy SQL patterns.** ## Plan first A schema or service move starts from the `migration` template — safe cutover and a way back: ```bash aos-plan-canvas new migration <plan-dir> # scaffold the plan folder aos-plan-canvas open <plan-dir> --mode bdb-plan-builder # render and open in the browser aos-plan-canvas await <plan-dir>/plan.mdx # keep listening until the verdict ``` On `approve`, `aos-plan-canvas trail <plan-dir>` derives the agenttrail map. The full loop: the `plan-canvas` skill — a plain CLI, identical on every harness. ## 🎯 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 ## When to Use This skill is applicable to execute the workflow or actions described in the overview. ## Limitations - Use this skill only when the task clearly matches the scope described above. - Do not treat the output as a substitute for environment-specific validation, testing, or expert review. - Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.