# Database Normalization

Record: `arch:database-normalization`
Kind: technique
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: recommended
Scope: schema, data modeling, integrity
Canonical: https://banes-lab.com/ontology#arch-database-normalization

## Repair

- Refactored by: Normalize to 3NF, extracting dependent attributes into their own relations
- Detected by: the same fact stored in multiple places drifting out of sync
- Violated by: repeating groups and transitively-dependent columns duplicated across rows
- Measured by: update-anomaly incidents and redundant-column count
- Enforced by: schema review

## requires

- [Functional Dependencies](https://banes-lab.com/records/lex/functional-dependencies.md)

## reinforces

- [Single Source of Truth](https://banes-lab.com/records/arch/single-source-of-truth.md)
- [Data Integrity](https://banes-lab.com/records/lex/data-integrity.md)

## enables

- [Update-Anomaly Elimination](https://banes-lab.com/records/lex/update-anomaly-elimination.md)
- [Non-Redundant Storage](https://banes-lab.com/records/lex/non-redundant-storage.md)

## conflicts-with

- [Duplicated Denormalized Columns](https://banes-lab.com/records/lex/duplicated-denormalized-columns.md)

## tensions-with

- [Read Performance](https://banes-lab.com/records/lex/read-performance.md)

## tensions

- [Database Normalization Read Performance](https://banes-lab.com/records/tension/database-normalization-read-performance.md)
