The interface is localized. Skill descriptions and documents are machine-translated by AI into your language; code, commands, paths and technical terms stay in the original, and the author's document governs.
Explore skills
Design & creative · SKILL.md

database-schema-designer

database-schema-designer

This skill should be used when designing database schemas for SQL or NoSQL databases. It provides normalization guidelines, indexing strategies, migration patterns, and performance optimization.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill documentation

GitHub

name: database-schema-designer description: This skill should be used when designing database schemas for SQL or NoSQL databases. It provides normalization guidelines, indexing strategies, migration patterns, and performance optimization. argument-hint: "[domain or requirements]" allowed-tools: Read agent: database-designer context: fork metadata: triggers: database schema, schema design, SQL design, NoSQL design, ERD, database design, create tables, model data, data modeling related-skills: architecture-design, java-spring-api, nestjs-api, python-dev domain: infrastructure role: architect scope: design output-format: document last-reviewed: "2026-03-14"

Iron Law

NO SCHEMA MIGRATION WITHOUT A DOWN (ROLLBACK) SCRIPT AND AN INDEX ON EVERY FOREIGN KEY — unindexed FKs cause full table scans; irreversible migrations cause production incidents

Database Schema Designer

Design production-ready database schemas with best practices built-in.

Triggers

TriggerExample
design schema"design a schema for user authentication"
database design"database design for multi-tenant SaaS"
create tables"create tables for a blog system"
schema for"schema for inventory management"
model data"model data for real-time analytics"
I need a database"I need a database for tracking orders"
design NoSQL"design NoSQL schema for product catalog"

Quick Reference

TaskApproachKey Consideration
New schemaNormalize to 3NF firstDomain modeling over UI
SQL vs NoSQLAccess patterns decideRead/write ratio matters
Primary keysINT or UUIDUUID for distributed systems
Foreign keysAlways constrainON DELETE strategy critical
IndexesFKs + WHERE columnsColumn order matters
MigrationsAlways reversibleBackward compatible first

Process

Phase 1: Analyze

  • Identify entities and relationships
  • Determine access patterns (read-heavy vs write-heavy)
  • Choose SQL or NoSQL based on requirements

Phase 2: Design

  • Normalize to 3NF (SQL) or determine embed/reference strategy (NoSQL)
  • Define primary keys and foreign keys
  • Choose appropriate data types -- read reference/data-types-reference.md for type guides
  • Add constraints -- read reference/constraints-and-relationships.md for patterns

Read reference/normalization-guide.md for 1NF/2NF/3NF rules and examples.

Phase 3: Optimize

  • Plan indexing strategy -- read reference/indexing-strategy.md for when to index and composite index rules
  • Consider denormalization for read-heavy queries
  • Add timestamps (created_at, updated_at)

Phase 4: Migrate

  • Generate migration scripts (up + down)
  • Ensure backward compatibility
  • Plan zero-downtime deployment

Read reference/migration-patterns.md for zero-downtime patterns and rollback strategies.

Read reference/expand-contract-migrations.md for zero-downtime Expand-Contract strategy, CONCURRENTLY index operations, and batched SKIP LOCKED backfills.

NoSQL Design

For MongoDB, Firestore, and other document databases, read reference/nosql-design-patterns.md for embedding vs referencing patterns and Firestore-specific design rules.

Commands

CommandWhen to Use
design schema for {domain}Start fresh -- full schema generation
normalize {table}Fix existing table -- apply normalization rules
add indexes for {table}Performance issues -- generate index strategy
migration for {change}Schema evolution -- create reversible migration
review schemaCode review -- audit existing schema

Anti-Patterns

PostgreSQL Type Forbidden List

NEVER use these types — they have silent, hard-to-debug failure modes:

Forbidden typeProblemUse instead
timestamp (no tz)Stores local time, breaks across timezonestimestamptz
timetzDoesn't handle DST — reports wrong time after clock changestimestamptz
char(n) / varchar(n)char pads with spaces, silently breaks equality checkstext
moneyLocale-dependent formatting, rounding errors across serversnumeric
serialSequence ownership breaks on pg_dump/restoregenerated always as identity
float for moneyBinary floating-point rounding errorsnumeric(10,2)

Schema Anti-Patterns

AvoidWhyInstead
VARCHAR(255) everywhereWastes storage, hides intentSize appropriately per field
Missing FK constraintsOrphaned dataAlways define foreign keys
No indexes on FKsSlow JOINsIndex every foreign key
Storing dates as stringsCannot compare/sortDATE, TIMESTAMPTZ types
Non-reversible migrationsCannot rollbackAlways write DOWN migration

Verification

After designing a schema, run through reference/schema-design-checklist.md to verify completeness.

Documentation Sources

Before generating schemas or queries, consult these sources:

SourceURL / ToolPurpose
PostgreSQLPostgreSQL MCP serverSchema-aware SQL, introspection, admin-safe workflows
Firebase FirestoreFirebase MCP serverDocument design, rules, indexes for NoSQL schemas

Reference Files

FileContents
reference/schema-design-checklist.mdPre-design, table design, and deployment checklist
reference/normalization-guide.md1NF/2NF/3NF explanations, examples, denormalization guide
reference/data-types-reference.mdString, numeric, date/time, JSON type guides
reference/indexing-strategy.mdWhen to index, composite indexes, B-tree vs hash, EXPLAIN
reference/constraints-and-relationships.mdPKs, FKs, CHECK, UNIQUE, relationship patterns
reference/nosql-design-patterns.mdMongoDB/Firestore embedding vs referencing
reference/migration-patterns.mdZero-downtime migrations, rollback strategies
reference/expand-contract-migrations.mdExpand-Contract pattern, CONCURRENTLY index ops, SKIP LOCKED backfills
assets/templates/migration-template.sqlSQL migration file template
reference/postgresql-review-checklist.mdPostgreSQL review checklist (used by postgresql-database-reviewer agent)

Error Handling

Migration conflicts: When migrations fail, check for column type mismatches or missing dependent migrations. Never modify an applied migration — create a new corrective one.

Index creation failures: Verify the column exists and data types support the index type. For large tables, use CREATE INDEX CONCURRENTLY.

Hard Prohibitions

  • No DROP TABLE or DROP COLUMN without explicit human approval
  • Use plural table names (users, orders, payments)
  • Database credentials rotated every 90 days (see security-review-checklist.md §8)

Post-Code Review

After writing SQL/migration code, dispatch this reviewer agent:

  • postgresql-database-reviewer — query optimization, schema correctness, index coverage, security
Saved skills