De un ejemplo de normalización
Supongamos que tenemos información sobre libros y autores, y queremos normalizar para evitar redundancias y mejorar la eficiencia del diseño de la base de datos.
Conjunto de Datos Original:
Tenemos una tabla llamada "Libros" con la siguiente estructura:
ISBN | Título | Autor | Género | Precio |
978-1234567 | "Introducción a DB" | John Doe | Informática | $30.00 |
978-2345678 | "Historia del Arte" | Jane Smith | Arte | $25.00 |
978-3456789 | "Python Avanzado" | John Doe | Informática | $40.00 |
978-4567890 | "Literatura Clásica" | Alice Johnson | Literatura | $22.00 |
Proceso de Normalización:
Primera Forma Normal (1NF):
Asegurar que cada celda de la tabla contenga un solo valor. Dado que la tabla cumple con esta condición, ya tenemos cubierto la 1NF.
Segunda Forma Normal (2NF):
Podemos usar el “ISBN” como clave primaria. Los atributos no clave son "Título", "Autor", "Género" y "Precio".
Como podemos ver "Autor" depende completamente de la clave primaria (ISBN), pero "Género" y "Precio" dependen solo de parte de la clave primaria. Para cumplir con 2NF, creamos una nueva tabla llamada "Autores" para separar la información del autor.
Tabla "Autores":
Autor ID | Autor |
1 | John Doe |
2 | Jane Smith |
3 | Alice Johnson |
Tabla "Libros" después de 2NF:
ISBN | Título | Autor ID | Género | Precio |
978-1234567 | "Introducción a DB" | 1 | Informática | $30.00 |
978-2345678 | "Historia del Arte" | 2 | Arte | $25.00 |
978-3456789 | "Python Avanzado" | 1 | Informática | $40.00 |
978-4567890 | "Literatura Clásica" | 3 | Literatura | $22.00 |
Tercera Forma Normal (3NF):
Observamos que "Género" depende funcionalmente solo de la clave primaria y no de otros atributos. Sin embargo, "Precio" depende de "ISBN" y también de "Género". Para cumplir con 3NF, creamos una nueva tabla llamada "Géneros".
Tabla "Géneros":
Género ID | Género |
1 | Informática |
2 | Arte |
3 | Literatura |
Tabla "Libros" después de 3NF:
ISBN | Título | Autor ID | Género ID | Precio |
978-1234567 | "Introducción a DB" | 1 | 1 | $30.00 |
978-2345678 | "Historia del Arte" | 2 | 2 | $25.00 |
978-3456789 | "Python Avanzado" | 1 | 1 | $40.00 |
978-4567890 | "Literatura Clásica" | 3 | 3 | $22.00 |
Ahora tenemos tres tablas normalizadas ("Libros", "Autores", "Géneros") que evitan redundancias y mejoran la eficiencia del diseño de la base de datos. Este es solo un ejemplo básico, y en situaciones más complejas, el proceso de normalización puede implicar más pasos y consideraciones.