Segunda forma normal (2NF): definición, requisitos y ejemplos
La segunda forma normal (2NF) es una propiedad de un modelo relacional, concretamente de las tablas, que constituye un criterio de normalización de las bases de datos. Su objetivo principal es eliminar ciertas redundancias y dependencias parciales que causan anomalías al insertar, actualizar o borrar datos.
El primer criterio para ser segunda forma normal es que la tabla sea primera forma normal: es decir, que todas las celdas contengan valores atómicos (no listas ni conjuntos) y que exista una clave primaria que identifique de forma única cada fila.
Requisitos para cumplir 2NF
- Estar en 1NF.
- No contener dependencias parciales: cada atributo no clave debe depender funcionalmente de la clave primaria completa, no sólo de una parte de ella.
- Si la clave primaria está formada por una única columna, y la tabla está en 1NF, entonces automáticamente está en 2NF (no hay «parte de clave» sobre la que depender).
¿Qué es una dependencia parcial?
Una dependencia parcial ocurre cuando un atributo no clave depende únicamente de una parte de una clave primaria compuesta (formada por varias columnas) en lugar de depender de la clave completa. Estas dependencias causan redundancia: el mismo dato se repite varias veces y puede desincronizarse.
Ejemplo práctico
Supongamos una tabla de ejemplo (no normalizada) con clave primaria compuesta (PedidoID, ProductoID):
- PedidoID
- ProductoID
- ProductoNombre
- PrecioUnitario
- Cantidad
- Proveedor
En este caso, ProductoNombre, PrecioUnitario y Proveedor dependen solo de ProductoID, no de la combinación completa (PedidoID, ProductoID). Es una dependencia parcial y, por tanto, la tabla no está en 2NF.
Cómo transformar a 2NF (pasos)
- Identificar la clave primaria y comprobar si es compuesta.
- Detectar atributos que dependen solo de una parte de la clave (dependencias parciales).
- Extraer esos atributos a una nueva tabla cuya clave primaria sea la parte de la clave de la que dependen (por ejemplo, una tabla Productos con clave ProductoID).
- Dejar en la tabla original únicamente los atributos que dependen de la clave completa; enlazar las tablas mediante claves foráneas.
Decomposición del ejemplo
Después de aplicar 2NF, podríamos tener al menos dos tablas:
- Productos(ProductoID, ProductoNombre, PrecioUnitario, Proveedor)
- PedidosProductos(PedidoID, ProductoID, Cantidad)
Así, los datos del producto quedan centralizados en la tabla Productos y en PedidosProductos solo se almacena la relación entre pedido y producto con la cantidad asociada.
Ventajas y consideraciones
- Reduce redundancia y evita anomalías de actualización, inserción y borrado.
- Mejora la consistencia de los datos al centralizar atributos que pertenecen a una entidad única.
- Aumento posible de las operaciones JOIN al consultar datos desnormalizados, lo que puede afectar el rendimiento en consultas frecuentes. Hay que balancear normalización y rendimiento según el caso.
Notas prácticas
- 2NF trata solo dependencias parciales; no elimina dependencias transitivas (eso corresponde a la tercera forma normal, 3NF).
- En diseños con claves simples, alcanzar 2NF es trivial, pero sigue siendo importante revisar otras formas normales según las necesidades de integridad y rendimiento.
- Al descomponer tablas, conservar claves foráneas y definir índices adecuados facilita consultas eficientes y mantiene integridad referencial.