Normalizar una base de datos puede ser un poco complejo e incluso en las primeras ocasiones en que se realiza un poco retador, pero no es imposible. Es crucial que quede claro el proceso de normalización de una base de datos y por ello normalizaremos una tabla de órdenes hasta la tercera forma normal (3NF) para lograr una estructura eficiente, sin redundancias y con integridad de los datos.
Puntos importantes antes de iniciar:
La siguiente tabla ejemplo es de una pastelería que ha comenzado a registrar las órdenes recibidas con su respectiva identificación, nombre del cliente que la realizo, pasteles de la orden y la sucursal donde se despacharon.
Ahora procederemos a normalizarla para eliminar las redundancias y garantizar la integridad de los datos mediante las reglas llamadas “formas normales”.
Una tabla está en 1NF si:
Al analizar la tabla anterior nos percatamos que sí tiene una llave primaria y no tiene filas ni columnas duplicadas, sin embargo, la columna Nombre no es atómica y la columna Pasteles tiene múltiples valores.
Para aplicar la 1NF solo tenemos que asegurarnos en este caso que la columna Nombre sea atómica separándola en una columna Nombre y otro Apellido, por último, también hacer que la columna Pasteles tenga solo un valor por fila o registro para que se cumplan todas las condiciones de la 1NF de la siguiente manera:
De esta forma se ha terminado de aplicar la 1NF y es importante aclara que, aunque Id_Orden identifica la orden, no es suficiente para identificar cada fila, ya que una misma orden puede incluir varios pasteles. Por eso, en esta etapa de 1NF, consideramos que la clave primaria es compuesta por Id_Orden y Pasteles, por el hecho de que juntas identifican de forma única cada combinación.
Una tabla está en 2NF si:
Ahora al analizar la tabla en 1NF nos percatamos que los atributos o columnas Nombre, Apellido y Sucursal no dependen completamente de la clave primaria compuesta Id_Orden + Pasteles, sino solamente de una parte de ella Id_Orden. Esto es un problema porque hace que se repita información que no tiene relación directa con el pastel, sino con la orden completa y esto genera redundancia de datos.
Para aplicar la 2NF entonces solamente dividimos la tabla anterior creando tres tablas nuevas de la siguiente manera:
De esta forma se ha terminado de aplicar la 2NF, ya que en las tablas de órdenes, pasteles y pedidos existen solamente y respectivamente en sus atributos una dependencia completamente directa de la PK de cada tabla. Recalcar que se creó la tabla pedidos, por el hecho de que esta actúa como una tabla intermedia que relaciona Id_Orden y Id_Pastel, es decir que conecta la tabla órdenes y pastel de tal forma que nos permite saber en cada pedido registrado en la tabla a qué orden corresponde y que pedido de pastel se realizó.
Una tabla está en 3NF si:
Con la tabla anterior completamente en 2NF al analizarla nos percatamos que únicamente en la tabla órdenes existe una dependencia transitiva que viola la 3NF, porque el atributo Sucursal depende del cliente (Nombre + Apellido) y no directamente de la clave primaria (Id_Orden). Esto es un problema debido a que, si un mismo cliente hace varias órdenes, la sucursal se podría repetir llevando a redundancia en los datos y riesgo de inconsistencias.
Para alcanzar y aplicar la 3NF, debemos separar la Sucursal en su propia tabla y referenciarla mediante una FK de la siguiente manera:
Como resultado final se ha terminado de aplicar la 3NF, ya que ninguna tabla tiene dependencias parciales transitivas y la tabla sucursal está separada a la vez que se ha referenciado en la tabla órdenes mediante una FK lo que nos permite saber la relación de en qué sucursal se realizó una orden en específico, logrando una estructura de base de datos eficiente, evitando redundancias y mejorando la integridad de los datos.
Puntos finales:
¡Felicidades!
Has aprendido que normalizar una base de datos puede ser un poco complejo e incluso retador, pero no es imposible.
Espero haberte ayudado a entender mejor el tema de la normalización.
Cualquier comentario o sugerencia será muy bien recibido.
¡Mucho éxito y hasta la próxima!
Referencias:
• FreeCodeCamp (s.f.). Normalización de base de datos: formas normales 1NF, 2NF, 3NF – ejemplos de tablas. Recuperado de:
https://www.freecodecamp.org/espanol/news/normalizacion-de-base-de-datos-formas-normales-1nf-2nf-3nf-ejemplos-de-tablas/
• García, J. [Programación ATS]. (2020, 13 de mayo). Normalización de base de datos: 1FN, 2FN, 3FN – Ejercicio práctico [Video]. YouTube. https://www.youtube.com/watch?v=bO18omSzeR4&list=PLs1sXiNvW4OyJCZs5WR3OjPZTlIqNcvQi&index=13