Segunda forma normal para niños
La segunda forma normal (conocida como 2NF) es una regla importante que se usa para organizar la información en las bases de datos. Fue creada por un experto llamado E.F. Codd en 1971. Imagina que una base de datos es como un gran archivador con muchas carpetas (tablas). Para que una tabla esté bien organizada y sea eficiente, debe seguir ciertas reglas, llamadas "formas normales".
Una tabla que ya cumple con la primera forma normal (1NF) puede pasar a la segunda forma normal. Para que una tabla esté en 2NF, cada parte de la información que no es clave principal debe depender completamente de la clave principal completa, y no solo de una parte de ella.
En palabras más sencillas: si tienes una tabla con una clave principal formada por varias columnas (por ejemplo, "Empleado" y "Habilidad"), cualquier otra columna de la tabla (como "Lugar de trabajo") no debe depender solo de "Empleado" o solo de "Habilidad", sino de la combinación de ambas.
Si una tabla ya está en 1NF y su clave principal no está formada por varias columnas, entonces automáticamente cumple con la 2NF.
Contenido
¿Por qué es importante la 2NF?
La 2NF ayuda a evitar problemas cuando guardamos, cambiamos o borramos información en una base de datos. Si una tabla no está en 2NF, puede haber información repetida o inconsistente, lo que significa que los datos podrían no ser correctos.
Ejemplo: Habilidades de los empleados
Imagina que tenemos una tabla para registrar las habilidades de los empleados:
Empleado | Habilidad | Lugar actual de trabajo |
---|---|---|
Jones | Mecanografía | 114 Main Street |
Jones | Taquigrafía | 114 Main Street |
Jones | Tallado | 114 Main Street |
Bravo | Limpieza ligera | 73 Industrial Way |
Ellis | Alquimia | 73 Industrial Way |
Ellis | Malabarismo | 73 Industrial Way |
Harrison | Limpieza ligera | 73 Industrial Way |
En esta tabla, la clave principal es la combinación de {Empleado, Habilidad}. Esto significa que para identificar una fila única, necesitamos saber tanto el nombre del empleado como su habilidad.
El problema es que la columna Lugar actual de trabajo solo depende del Empleado, no de la combinación de Empleado y Habilidad. Por ejemplo, sabemos que Jones trabaja en "114 Main Street" tres veces, una por cada habilidad. Esto es información repetida.
Esta repetición puede causar problemas. Si Jones cambia de lugar de trabajo, tendríamos que actualizar su dirección en cada una de sus habilidades. Si olvidamos actualizar una, la base de datos tendría información contradictoria sobre dónde trabaja Jones.
Solución con 2NF
Para solucionar esto y que la tabla esté en 2NF, podemos dividir la información en dos tablas:
Empleado | Lugar actual de trabajo |
---|---|
Jones | 114 Main Street |
Bravo | 73 Industrial Way |
Ellis | 73 Industrial Way |
Harrison | 73 Industrial Way |
-
-
-
Habilidades de los empleados Empleado Habilidad Jones Mecanografía Jones Taquigrafía Jones Tallado Bravo Limpieza ligera Ellis Alquimia Ellis Malabarismo Harrison Limpieza ligera
-
-
Ahora, la información del lugar de trabajo de cada empleado se guarda solo una vez en la tabla "Empleados". Si Jones cambia de dirección, solo necesitamos actualizarla en un lugar. Las dos tablas están en 2NF y son más eficientes.
¿La 2NF resuelve todos los problemas?
Aunque la 2NF mejora mucho la organización de los datos, no resuelve todos los problemas. Por ejemplo, mira esta tabla de ganadores de torneos:
Torneo | Año | Ganador | Fecha de nacimiento del ganador |
---|---|---|---|
Des Moines Masters | 1998 | Chip Masterson | 14 de marzo de 1977 |
Indiana Invitational | 1998 | Al Fredrickson | 21 de julio de 1975 |
Cleveland Open | 1999 | Bob Albertson | 28 de septiembre de 1968 |
Des Moines Masters | 1999 | Al Fredrickson | 21 de julio de 1975 |
Indiana Invitational | 1999 | Chip Masterson | 14 de marzo de 1977 |
Aquí, la clave principal es {Torneo, Año}. Las columnas Ganador y Fecha de nacimiento del ganador dependen de esta clave completa. Sin embargo, la fecha de nacimiento del ganador se repite cada vez que aparece el mismo ganador. Este tipo de problema se resuelve con la tercera forma normal (3NF).
2NF y las claves candidatas
Una clave candidata es cualquier columna o grupo de columnas que puede identificar de forma única una fila en una tabla. Una tabla puede tener varias claves candidatas.
Para que una tabla esté en 2NF, no solo la clave principal debe cumplir la regla, sino que ninguna parte de la información que no es clave debe depender de solo una parte de CUALQUIERA de las claves candidatas.
Por ejemplo, en esta tabla de modelos de cepillos de dientes:
Fabricante | Modelo | Nombre completo del modelo | País del fabricante |
---|---|---|---|
Forte | X-Prime | Forte X-Prime | Italia |
Forte | Ultraclean | Forte Ultraclean | Italia |
Dent-o-Fresh | EZBrush | Dent-o-Fresh EZBrush | USA |
Kobayashi | ST-60 | Kobayashi ST-60 | Japón |
Hoch | Toothmaster | Hoch Toothmaster | Alemania |
Hoch | Contender | Hoch Contender | Alemania |
Aquí, {Nombre completo del modelo} podría ser la clave principal. Pero {Fabricante, Modelo} también es una clave candidata. La columna País del fabricante depende solo de Fabricante, que es solo una parte de la clave candidata {Fabricante, Modelo}. Por lo tanto, esta tabla no está en 2NF.
Véase también
En inglés: Second normal form Facts for Kids
Enlaces externos
de:Normalisierung (Datenbank)#Zweite Normalform (2NF)