Formas normales
Las formas normales son reglas que rigen la estructura de una base de datos relacional para reducir la redundancia de datos y evitar problemas de actualización. Existen varias formas normales, desde la Primera Forma Normal (1NF) hasta la Quinta Forma Normal (5NF), y cada una aborda diferentes tipos de redundancia. Aquí, se describirán las tres primeras formas normales (1NF, 2NF y 3NF) con ejemplos.
Primera Forma Normal (1NF):
- Definición: En 1NF, los valores en cada columna de una tabla son atómicos, lo que significa que no pueden dividirse en partes más pequeñas. Además, no debe haber duplicados en las filas.
- Ejemplo: Supongamos que tenemos una tabla "Pedidos" con las columnas "ID de Pedido," "Productos" y "Cantidad." En 1NF, cada celda debe contener un solo valor. Por lo tanto, no es correcto tener múltiples productos y cantidades en una sola celda. Deberíamos dividir esto en filas separadas para cada producto y cantidad.
ID de Pedido | Productos | Cantidad |
---|---|---|
1 | Producto A, Producto B | 2, 3 |
Segunda Forma Normal (2NF):
- Definición: En 2NF, la tabla debe cumplir con 1NF, y todos los atributos no clave deben depender completamente de la clave primaria.
- Ejemplo: Consideremos una tabla "Pedidos" con columnas "ID de Pedido," "ID de Producto," "Nombre de Producto" y "Cantidad." En este caso, "ID de Producto" y "Nombre de Producto" no dependen completamente de la clave primaria "ID de Pedido." En 2NF, deberíamos dividir esta tabla en dos: una para la información del pedido y otra para la información del producto.
ID de Pedido | ID de Producto | Nombre de Producto | Cantidad |
---|---|---|---|
1 | 101 | Producto A | 2 |
1 | 102 | Producto B | 3 |
Tercera Forma Normal (3NF):
- Definición: En 3NF, la tabla debe cumplir con 2NF, y no debe haber dependencias transitivas entre los atributos no clave.
- Ejemplo: Supongamos una tabla "Empleados" con columnas "ID de Empleado," "Nombre," "Departamento" y "Ciudad." En este caso, "Ciudad" depende de "ID de Empleado," pero también depende de "Departamento." Esto crea una dependencia transitiva. En 3NF, deberíamos dividir esta tabla en tres: una para la información del empleado, otra para la información del departamento y una tercera para la información de la ciudad.
ID de Empleado | Nombre | Departamento | Ciudad |
---|---|---|---|
101 | Empleado1 | Ventas | Ciudad1 |
102 | Empleado2 | Ventas | Ciudad2 |
Estas son las tres primeras formas normales. A medida que avanzamos en las formas normales, la estructura de la base de datos se vuelve más eficiente, se minimiza la redundancia y se evitan problemas de actualización. Sin embargo, cada nivel de normalización puede aumentar la complejidad del esquema de la base de datos y las consultas. Por lo tanto, es importante equilibrar la normalización con las necesidades específicas del sistema.
Cuarta Forma Normal (4NF):
- Definición: La Cuarta Forma Normal aborda la multivaluación y las dependencias de join. Una tabla está en 4NF si no contiene conjuntos repetitivos y si los atributos no clave son independientes de los demás atributos no clave.
- Ejemplo: Supongamos que tenemos una tabla "Estudiantes" con las columnas "ID de Estudiante," "Cursos" y "Libros de Referencia." Si un estudiante puede estar inscrito en varios cursos y tener múltiples libros de referencia, podríamos tener una estructura de tabla como esta:
ID de Estudiante | Cursos | Libros de Referencia |
---|---|---|
1 | Matemáticas, Física | Libro1, Libro2, Libro3 |
2 | Química | Libro2, Libro4 |
Para llevar esto a 4NF, podríamos dividir esta tabla en tres: una para la información del estudiante, otra para los cursos y otra para los libros de referencia. También habría una tabla de relación para conectar estudiantes con cursos y otra para conectar estudiantes con libros de referencia.
Quinta Forma Normal (5NF):
- Definición: La Quinta Forma Normal trata las dependencias de unión (join) que no pueden ser eliminadas mediante las anteriores formas normales. Se logra eliminando redundancias y asegurando que las dependencias de join sean mínimas.
- Ejemplo: Imagina una base de datos de empleados en una empresa. Tienes tablas separadas para empleados, departamentos y proyectos. Ahora, supongamos que deseas rastrear cuáles son los proyectos en los que participa cada empleado. Para lograrlo, creas una tabla de relación que asocia empleados con proyectos. Si un empleado participa en varios proyectos, tendrás múltiples filas con el mismo ID de empleado y diferentes IDs de proyecto. En este caso, una forma de alcanzar la 5NF es asegurarse de que no haya dependencias transitivas en la tabla de relación, lo que podría requerir un diseño más sofisticado.
La normalización de una base de datos es un proceso que busca minimizar la redundancia y eliminar las dependencias indeseadas entre los datos. Cada forma normal (1NF, 2NF, 3NF, 4NF y 5NF) tiene sus propias reglas y objetivos para lograr este propósito. La elección de hasta qué nivel normalizar una base de datos depende de las necesidades y complejidad del sistema.