Database Schema Design
Use this skill when planning a new application or feature to design a normalized, scalable, and efficient relational database schema before writing any backend code.
Database Schema Design
Purpose
⚠IMPORTANT⚠This skill enforces mathematically rigorous Relational Calculus (Codd's rules) and normal form constraint validation. It strictly prohibits the algorithmic flattening of relational data into unscalable, non-atomic topologies.
When to Use This Skill
⚠NOTE⚠Use this skill during the architectural planning phase of any feature that requires persisting complex relational data.
What This Skill Prevents
This skill prevents:
- Denormalization Violation: Collapsing orthogonal $1:N$ domain entities into a single scalar vector.
- Dangling Pointers: Defining relational maps using raw integers without asserting strict Foreign Key constraint enforcement at the engine level.
- Index Sparsity: Generating $O(N)$ sequential scan bottlenecks by omitting B-Tree/Hash indexes on mutation/search vectors.
- Invariant Failure: Omitting
NOT NULLconstraints and default schemas, leading to unpredictable null-pointer state propagation.
Core Principle
Schema topologies MUST enforce strict Third Normal Form ($3NF$) invariants. Transitive dependencies are strictly prohibited. The relational topology serves as the foundational AST for all higher-level application logic.
Research-Backed Rules
- Normalization Execution ($3NF$): Execute orthogonal entity separation. Redundant property allocation across isolated domains is prohibited.
- Primary Key Specification (UUIDv7): Initialize all primary constraints utilizing UUIDv7 algorithms. UUIDv7 provides distributed initialization velocity while maintaining strict $B$-Tree sequential locality, mitigating index fragmentation. UUIDv4 is restricted exclusively to opaque entropy tokens.
- Referential Integrity Constraints: Explicitly map
FOREIGN KEYbounds. Configure deterministicON DELETEdirectives (CASCADE,SET NULL) to prevent orphan state vectors. - Structured JSON Invariants (PostgreSQL 18): Restrict
JSONBarrays exclusively to dynamic schema-less contexts. Flattening relational data intoJSONBto evade normalization is prohibited. Leverage PostgreSQL 18's nativeJSON_TABLElogic to project JSON vectors into highly indexed relational sets. - Audit Logging Topology: Mandate
created_atandupdated_attimestamps on all domain core entities.
Stack-Aware Guidance
Prisma Guidance
Declare relation boundaries explicitly across both object definitions in schema.prisma. Initialize keys via @default(cuid()) or @default(uuid()). Enforce @@index() on frequently scanned query vectors.
Drizzle ORM Guidance
Map explicit referential connections via .references(). Assert .notNull() boundary conditions, neutralizing Drizzle's default nullable generation.
Implementation Guidance
- Entity Identification: Formulate discrete data topologies (User, Post, Organization).
- Topology Connection: Establish $1:1$, $1:N$, and $M:N$ relation maps.
- Join Stratification: Instantiate explicit bridge schemas for $M:N$ arrays.
- Data Type Strictness: Assign highest-restriction types (
VARCHAR(255)overTEXT,BOOLEANover numeric equivalents). - Constraint Generation: Declare
UNIQUEmaps and appendINDEXoptimizations.
Mathematical / Measurable Rules
- The Indexing Threshold: Any vector subject to
WHERE,JOIN, orORDER BYoperations exceeding estimated scale $N \ge 10,000$ MUST register an explicitINDEX. - String Length Limits: Cap email string definitions at $N=255$ limits.
Quality Gates
Maintainability Gate
- Validated $3NF$ structural compliance.
- Asserted Foreign Key constraint maps and destruction rules.
- Confirmed audit timestamp parameters.
Performance Gate
- Validated index strategies on target constraint queries.
Anti-Patterns to Avoid
- First Normal Form ($1NF$) Violation: Emitting non-atomic tuple attributes (e.g., CSV strings) instead of deterministic relational intersections.
- Premature Soft Deletes: Injecting
is_deletedflags indiscriminately. Soft deletes drastically increase query cyclomatic complexity and should only be initiated upon strict auditing constraints.
Agent Behavior Instructions
- Suspend database engine operations pending strict architectural validation.
- Emit relational schemas logically before emitting query code.
- Execute deterministic cascading behavior checks before relation commitment.
Final Review Checklist
- Denormalization artifacts nullified.
- Referential integrity constraints enforced.
- Data type bounds optimized.
- Fully agent-optimized deterministic rules.