Normalización de Base de Datos: Formas Normales 1NF, 2NF, 3NF con Ejemplos

Normalización de Base de Datos: Formas Normales 1NF, 2NF, 3NF con Ejemplos

La normalización de base de datos es un proceso fundamental para diseñar bases de datos eficientes y robustas. Su objetivo principal es eliminar la redundancia de datos y garantizar la integridad de la información. Esto se logra mediante la aplicación de diferentes formas normales, cada una de las cuales establece reglas específicas para la organización de la información en tablas.

En este artículo, exploraremos las formas normales más comunes, como la primera forma normal (1NF), la segunda forma normal (2NF) y la tercera forma normal (3NF). Para comprender mejor estos conceptos, utilizaremos un ejemplo práctico de una base de datos para un restaurante. Analizaremos cómo se separan las tablas y se aplican las reglas de normalización en cada forma, desde la menos restrictiva (1NF) hasta la más restrictiva (3NF).

Primera Forma Normal (1NF)

La primera forma normal (1NF) es la forma más básica de normalización. Para que una base de datos esté en primera forma normal, debe cumplir los siguientes requisitos:

  • Cada celda debe contener un solo valor: Cada celda de la tabla debe contener un único dato, evitando la repetición de valores en una misma celda.
  • Debe haber una clave primaria: Se debe definir una clave primaria que identifique de manera única cada fila de la tabla.
  • No debe haber filas o columnas duplicadas: Las filas de la tabla deben ser únicas, y las columnas deben tener un propósito único, evitando duplicaciones innecesarias.

Ejemplo de tabla sin normalizar (no 1NF):

| Pedido | Plato | Cliente | Dirección | Telefono |
|—|—|—|—|—|
| 1 | Pizza | Juan Perez | Calle 123 | 555-1234 |
| 2 | Hamburguesa | Juan Perez | Calle 123 | 555-1234 |
| 3 | Ensalada | Maria Rodriguez | Calle 456 | 555-5678 |

LEER:  Static keyword in Java: Optimización de memoria y gestión de código

Ejemplo de tabla en 1NF:

| Pedido | Plato | ClienteID |
|—|—|—|
| 1 | Pizza | 1 |
| 2 | Hamburguesa | 1 |
| 3 | Ensalada | 2 |

Tabla Cliente:

| ClienteID | Nombre | Dirección | Telefono |
|—|—|—|—|
| 1 | Juan Perez | Calle 123 | 555-1234 |
| 2 | Maria Rodriguez | Calle 456 | 555-5678 |

En este ejemplo, la tabla «Pedido» ahora está en 1NF. Se ha eliminado la redundancia de la información del cliente, creando una tabla separada «Cliente» con una clave primaria (ClienteID) que se relaciona con la tabla «Pedido».

Segunda Forma Normal (2NF)

La segunda forma normal (2NF) se basa en la primera forma normal y añade un requisito adicional:

  • Eliminación de la dependencia parcial: Todos los atributos no claves (los que no forman parte de la clave primaria) deben depender totalmente de la clave primaria. Esto significa que no se puede tener un atributo no clave que dependa solo de una parte de la clave primaria.

Ejemplo de tabla en 1NF, pero no 2NF:

| Pedido | Plato | ClienteID | Precio |
|—|—|—|—|
| 1 | Pizza | 1 | $10 |
| 2 | Hamburguesa | 1 | $8 |
| 3 | Ensalada | 2 | $6 |

En este ejemplo, el atributo «Precio» depende parcialmente de la clave primaria (Pedido, ClienteID), ya que el precio del plato está asociado al pedido y al cliente.

Ejemplo de tabla en 2NF:

| Pedido | Plato | Precio |
|—|—|—|
| 1 | Pizza | $10 |
| 2 | Hamburguesa | $8 |
| 3 | Ensalada | $6 |

Tabla Plato:

| Plato | Precio |
|—|—|
| Pizza | $10 |
| Hamburguesa | $8 |
| Ensalada | $6 |

Al separar la información del precio en una tabla «Plato», se eliminó la dependencia parcial. Ahora, el precio del plato depende únicamente de la clave primaria «Plato», y no depende de la información del pedido o el cliente.

Tercera Forma Normal (3NF)

La tercera forma normal (3NF) se basa en la segunda forma normal y añade una restricción adicional:

  • Eliminación de la dependencia parcial transitiva: Ningún atributo no principal puede depender de otro atributo no principal. Es decir, la dependencia entre atributos no debe ser transitiva, es decir, no debe haber un «camino» de dependencias a través de otros atributos no principales.
LEER:  Código Gray: Entendiendo el Código Binario Reflejado

Ejemplo de tabla en 2NF, pero no 3NF:

| Pedido | Plato | Precio | ClienteID | Ciudad |
|—|—|—|—|—|
| 1 | Pizza | $10 | 1 | New York |
| 2 | Hamburguesa | $8 | 1 | New York |
| 3 | Ensalada | $6 | 2 | Los Ángeles |

En este ejemplo, la ciudad del cliente (Ciudad) depende del ClienteID, pero también depende indirectamente del Plato a través de ClienteID y Pedido.

Ejemplo de tabla en 3NF:

| Pedido | Plato | Precio | ClienteID |
|—|—|—|—|
| 1 | Pizza | $10 | 1 |
| 2 | Hamburguesa | $8 | 1 |
| 3 | Ensalada | $6 | 2 |

Tabla Cliente:

| ClienteID | Nombre | Ciudad |
|—|—|—|
| 1 | Juan Perez | New York |
| 2 | Maria Rodriguez | Los Ángeles |

Al separar la información de la ciudad del cliente en la tabla «Cliente», se elimina la dependencia transitiva. Ahora, la ciudad del cliente depende únicamente de ClienteID, y no depende indirectamente del Plato.

Más Allá del 3NF: 4NF y 5NF

Aunque la tercera forma normal es suficiente para la mayoría de las bases de datos, existen dos formas normales adicionales:

  • Forma normal de Boyce-Codd (4NF): Esta forma normal trata con dependencias multivaluadas, donde un atributo puede tener varios valores asociados a otro atributo.

  • Quinta forma normal (5NF): Esta forma normal trata con dependencias de unión, donde un atributo puede estar relacionado con varios otros atributos a través de una unión.

La mayoría de las bases de datos no necesitan ir más allá del 3NF. La 4NF y 5NF se utilizan principalmente en casos especiales donde se necesitan niveles de normalización muy altos.

Beneficios de la Normalización

La normalización de la base de datos ofrece numerosos beneficios:

  • Reducción de la redundancia de datos: Elimina la duplicación de información, lo que reduce el espacio de almacenamiento y mejora la eficiencia.
  • Mejora la integridad de los datos: Garantiza la consistencia de los datos, evitando errores e inconsistencias.
  • Facilitación de las actualizaciones: Al separar la información en tablas independientes, las actualizaciones se vuelven más fáciles y eficientes.
  • Mejora el rendimiento: Reduce el tiempo necesario para recuperar datos, ya que se busca información en tablas más pequeñas y optimizadas.
  • Facilita la gestión de datos: La estructura organizada de la base de datos facilita las tareas de administración y mantenimiento.
LEER:  Inner Join en SQL: Guía Completa con Ejemplos Prácticos

Conclusión

La normalización de la base de datos es una práctica fundamental para el diseño de bases de datos eficientes y robustas. Las formas normales (1NF, 2NF, 3NF) proporcionan un marco para organizar la información y eliminar la redundancia. Aunque la tercera forma normal es suficiente para la mayoría de las bases de datos, las formas normales adicionales (4NF, 5NF) se utilizan para casos especiales. La normalización permite reducir la redundancia, mejorar la integridad de los datos, optimizar el rendimiento y facilitar la gestión de la base de datos.