Design a correct relational schema: normalize to 3NF, denormalize only with measured evidence and a named consistency cost, push constraints (PK/FK/UNIQUE/CHECK/NOT NULL) into the database, and choose precise data types.
Installs into .claude/skills of the current project.
Are you the author of Relational Schema Design?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mcorbett51090-relational-schema-design)
---
name: relational-schema-design
description: "Design a correct relational schema: normalize to 3NF, denormalize only with measured evidence and a named consistency cost, push constraints (PK/FK/UNIQUE/CHECK/NOT NULL) into the database, and choose precise data types."
---
# Relational Schema Design
## Normalize first
3NF by default: each fact once, relationships via keys. Most 'we must denormalize' instincts are premature.
## Denormalize deliberately
Only with a measured read benefit AND the write/consistency cost named — often a **materialized view** or **covering index** is better than redundant columns.
## Constraints in the DB
PK on every table, FK for every relationship, NOT NULL/UNIQUE/CHECK to make illegal states unrepresentable. The app is not a trustworthy enforcer.
## Types
Precise numeric/temporal/text; `uuid`/`enum`/`jsonb` where they fit. `text` for everything + naive timestamps are smells.