La normalización es un proceso fundamental en el diseño de bases de datos relacionales. Su objetivo principal es organizar los datos para reducir la redundancia y mejorar la integridad de los datos. A continuación, se detallan los conceptos clave de la normalización.
Objetivos de la Normalización
- Eliminar la Redundancia de Datos: Reducir la duplicación de datos para ahorrar espacio y evitar inconsistencias.
- Mejorar la Integridad de los Datos: Asegurar que los datos sean precisos y consistentes.
- Facilitar el Mantenimiento de la Base de Datos: Hacer que la base de datos sea más fácil de actualizar y mantener.
Conceptos Clave
- Dependencias Funcionales
Una dependencia funcional describe una relación entre dos conjuntos de atributos en una base de datos. Si el valor de un atributo (o un conjunto de atributos) determina el valor de otro atributo, se dice que el segundo atributo es funcionalmente dependiente del primero.
Ejemplo:
En una tabla de empleados, si EmpleadoID
determina Nombre
, entonces Nombre
es funcionalmente dependiente de EmpleadoID
.
- Formas Normales
Las formas normales son niveles de normalización que una base de datos puede alcanzar. Cada nivel tiene sus propios requisitos y se basa en el nivel anterior.
Primera Forma Normal (1NF)
- Requisitos:
- Eliminar grupos repetitivos.
- Asegurar que cada columna contenga solo valores atómicos (indivisibles).
- Cada columna debe contener valores del mismo tipo.
- Cada columna debe tener un nombre único.
- El orden en el que se almacenan los datos no debe tener importancia.
Ejemplo: Una tabla que almacena información de pedidos:
| PedidoID | ClienteID | Producto1 | Producto2 | Producto3 | |----------|-----------|-----------|-----------|-----------| | 1 | 101 | A | B | C | | 2 | 102 | D | E | NULL |
Para cumplir con 1NF, se debe transformar en:
| PedidoID | ClienteID | Producto | |----------|-----------|----------| | 1 | 101 | A | | 1 | 101 | B | | 1 | 101 | C | | 2 | 102 | D | | 2 | 102 | E |
Segunda Forma Normal (2NF)
- Requisitos:
- Cumplir con 1NF.
- Eliminar dependencias parciales; es decir, todos los atributos no clave deben depender de la clave primaria completa.
Ejemplo: Una tabla que almacena información de cursos y estudiantes:
| CursoID | EstudianteID | NombreEstudiante | NombreCurso | |---------|--------------|------------------|-------------| | 1 | 101 | Juan | Matemáticas | | 1 | 102 | Ana | Matemáticas | | 2 | 101 | Juan | Física |
Para cumplir con 2NF, se debe dividir en dos tablas:
Tabla Cursos: | CursoID | NombreCurso | |---------|-------------| | 1 | Matemáticas | | 2 | Física | Tabla Estudiantes: | EstudianteID | NombreEstudiante | |--------------|------------------| | 101 | Juan | | 102 | Ana | Tabla Inscripciones: | CursoID | EstudianteID | |---------|--------------| | 1 | 101 | | 1 | 102 | | 2 | 101 |
Tercera Forma Normal (3NF)
- Requisitos:
- Cumplir con 2NF.
- Eliminar dependencias transitivas; es decir, los atributos no clave no deben depender de otros atributos no clave.
Ejemplo: Una tabla que almacena información de empleados y departamentos:
| EmpleadoID | NombreEmpleado | DepartamentoID | NombreDepartamento | |------------|----------------|----------------|--------------------| | 1 | Juan | 10 | Ventas | | 2 | Ana | 20 | Marketing |
Para cumplir con 3NF, se debe dividir en dos tablas:
Tabla Empleados: | EmpleadoID | NombreEmpleado | DepartamentoID | |------------|----------------|----------------| | 1 | Juan | 10 | | 2 | Ana | 20 | Tabla Departamentos: | DepartamentoID | NombreDepartamento | |----------------|--------------------| | 10 | Ventas | | 20 | Marketing |
Ejercicio Práctico
Ejercicio 1: Identificación de Dependencias Funcionales
Dada la siguiente tabla de estudiantes y cursos, identifica las dependencias funcionales:
| EstudianteID | NombreEstudiante | CursoID | NombreCurso | Profesor | |--------------|------------------|---------|-------------|----------| | 1 | Juan | 101 | Matemáticas | Dr. Pérez| | 2 | Ana | 102 | Física | Dr. López| | 1 | Juan | 102 | Física | Dr. López|
Solución:
Dependencias funcionales:
EstudianteID
->NombreEstudiante
CursoID
->NombreCurso
CursoID
->Profesor
Ejercicio 2: Normalización a 1NF
Normaliza la siguiente tabla a la Primera Forma Normal (1NF):
| PedidoID | ClienteID | Productos | |----------|-----------|-----------| | 1 | 101 | A, B, C | | 2 | 102 | D, E |
Solución:
| PedidoID | ClienteID | Producto | |----------|-----------|----------| | 1 | 101 | A | | 1 | 101 | B | | 1 | 101 | C | | 2 | 102 | D | | 2 | 102 | E |
Conclusión
La normalización es un proceso crucial en el diseño de bases de datos relacionales que ayuda a reducir la redundancia y mejorar la integridad de los datos. Comprender y aplicar las diferentes formas normales permite crear bases de datos eficientes y fáciles de mantener. En el siguiente tema, exploraremos las formas normales en mayor detalle y cómo aplicarlas en el proceso de diseño de bases de datos.
Fundamentos de Bases de Datos
Módulo 1: Introducción a las Bases de Datos
- Conceptos Básicos de Bases de Datos
- Tipos de Bases de Datos
- Historia y Evolución de las Bases de Datos
Módulo 2: Bases de Datos Relacionales
Módulo 3: Bases de Datos No Relacionales
- Introducción a NoSQL
- Tipos de Bases de Datos NoSQL
- Comparación entre Bases de Datos Relacionales y No Relacionales
Módulo 4: Diseño de Esquemas
- Principios de Diseño de Esquemas
- Diagramas Entidad-Relación (ER)
- Transformación de Diagramas ER a Esquemas Relacionales