taiageweb/flashcards/B3T1-normalizacion.md

42 lines
2.0 KiB
Markdown

# Normalización de bases de datos
> Bloque 3 · Tema 1
## ¿Qué es la normalización?
Proceso de diseño de bases de datos relacionales para **eliminar redundancias** y **anomalías** (inserción, actualización, borrado), garantizando la integridad de los datos.
---
## Conceptos previos
| Concepto | Definición |
|---------|-----------|
| **Clave primaria** | Atributo(s) que identifican unívocamente cada fila |
| **Clave candidata** | Cualquier atributo (o conjunto) que podría ser clave primaria |
| **Dependencia funcional** | A → B: el valor de A determina el valor de B |
| **Dependencia parcial** | B depende solo de *parte* de una clave compuesta |
| **Dependencia transitiva** | A → B → C: C depende de A a través de B |
---
## Formas normales
| Forma | Condición | Problema que elimina |
|-------|-----------|---------------------|
| **1FN** | Todos los atributos son **atómicos** (un solo valor por celda). No hay grupos repetitivos. | Valores múltiples en una celda |
| **2FN** | Cumple 1FN + todos los atributos no clave dependen de la **clave completa** (no de parte de ella). Solo aplica si la clave es compuesta. | Dependencias parciales |
| **3FN** | Cumple 2FN + no hay **dependencias transitivas**: los atributos no clave no dependen de otros atributos no clave. | Dependencias transitivas |
| **FNBC** (Boyce-Codd) | Versión estricta de 3FN: toda dependencia funcional A → B tiene A como superclave. | Casos especiales de 3FN con múltiples claves candidatas |
| **4FN** | Cumple FNBC + no hay **dependencias multivaluadas** independientes. | Dependencias multivaluadas |
| **5FN** | Cumple 4FN + no hay **dependencias de reunión** que no vengan de claves candidatas. | Redundancias por descomposición |
---
## Resumen rápido
- **1FN** → sin valores múltiples en celdas
- **2FN** → sin dependencias parciales (clave compuesta)
- **3FN** → sin dependencias transitivas
- **FNBC** → toda dependencia funcional implica superclave
- En la práctica, llegar a **3FN o FNBC** es suficiente para la mayoría de diseños.