# Normalization

> A technique for storing each fact once and referring to it by key wherever it is needed.

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

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Single Source of Truth](https://banes-lab.com/records/architecture/single-source-of-truth.md) and before [Semantic Consistency](https://banes-lab.com/records/architecture/semantic-consistency.md).

## Repair

- Refactored by: Extract Entity, Normalize Table, Add Reference
- Detected by: update anomalies, duplicated facts
- Violated by: uncontrolled duplicated data
- Measured by: redundancy/anomaly count
- Enforced by: schema review, database constraints

## Requires

- [Data Semantics](https://banes-lab.com/records/lexicon/data-semantics.md)

## Reinforces

- [Consistency](https://banes-lab.com/records/architecture/consistency.md)
- [Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.md)

## Enables

- [Reduced Redundancy](https://banes-lab.com/records/lexicon/reduced-redundancy.md)

## In tension with

- [Query Performance](https://banes-lab.com/records/lexicon/query-performance.md)
- [Denormalized Read Models](https://banes-lab.com/records/lexicon/denormalized-read-models.md)

## Tensions

- [Normalization / Query Performance](https://banes-lab.com/records/tension/normalization-query-performance.md)
- [Normalization / Denormalized Read Models](https://banes-lab.com/records/tension/denormalized-read-models-normalization.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Schema / Canonical Data / Semantics](https://banes-lab.com/records/architecture-category/schema-canonical-data-semantics.md)

## Reinforced by

- [Canonical Data Model](https://banes-lab.com/records/architecture/canonical-data-model.md)

## Linked from

- [Separate, trade, or mitigate](https://banes-lab.com/software-architecture/principles/separate-trade-or-mitigate.md)
- [The principle architecture](https://banes-lab.com/software-architecture/glossary/the-principle-architecture.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/lexicon/lexicon-category-schema-canonical-data-semantics.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
