Aprovecha el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comienza ahora

Termina en:

09h

22m

58s

2

Como normalizar una base de datos sin morir en el intento.

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:

  1. La normalización es el proceso de simplificación de los datos o dicho de otra forma dividir lo datos en tablas más pequeñas y relacionadas entre sí que permiten:
    • Tener los datos ordenados
    • Tener almacenado los datos con el menor espacio posible
    • Eliminar datos repetidos
    • Eliminar errores lógicos
  2. La normalización debe realizarse sin que exista perdida de información.
  3. Una clave primaria (PK) es un campo o conjunto de campos que identifica de forma única cada registro, no se puede repetir y no puede estar vacío.
  4. Una clave foránea (FK) es un campo que apunta a una clave primaria en otra tabla, sirve para relacionar las tablas entre sí y por tanto puede repetirse en los registros.
  5. Una dependencia funcional ocurre cuando un atributo depende directamente de otro.
  6. Una dependencia transitiva ocurre cuando un atributo depende de otro atributo no clave, y este otro depende de la clave primaria.

Tabla sin normalizar.

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”.

Aplicando primera forma normal (1NF).

Una tabla está en 1NF si:

  • Cada columna debe tener valores atómicos (no divisibles).
  • Debe haber una clave primaria para identificación.
  • No debe haber filas o columnas duplicadas.
  • Cada columna debe tener solamente un valor por cada fila o registro en la tabla.

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.

Aplicando segunda forma normal (2NF).

Una tabla está en 2NF si:

  • Ya está en 1NF.
  • No tiene dependencias parciales. Es decir que todos los atributos no claves son totalmente dependientes de la clave primaria.

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ó.

Aplicando tercera forma normal (3NF).

Una tabla está en 3NF si:

  • Ya está en 2NF.
  • No tiene dependencias parciales transitivas. Es decir, un campo o atributo no clave no puede depender de otro campo no clave.

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:

  • En este caso ejemplo, no se crea una tabla de cliente, ya que se supone que el sistema solo necesita registrar qué persona realizó la orden en ese momento. Si el mismo cliente regresa otro día, se registra como una nueva orden con su nombre y apellido nuevamente. Esto es completamente válido si no se requiere historial ni gestión del cliente como entidad única.
  • Es probable que te preguntes por qué debes usar llaves foráneas, el usar llaves foráneas aparte de crear y establecer la relaciones entre las tablas reduce el uso de memoria, ya que no es lo mismo guardar un número (ocupa usualmente 4 bytes) que un texto completo (ocupa por cada carácter de 1 a 2 bytes), además evita redundancia de datos, facilita actualización de datos, y hace la base de datos más eficiente y limpia.
  • Por lo general, las bases de datos se normalizan hasta 3NF, ya que a partir de ese punto ya están libre de redundancias y dependencias innecesarias, lo cual es suficiente para garantizar consistencias en aplicaciones comunes.
  • Existen un total de cinco formas normales, pero la 4NF y 5NF solo se usan cuando la base de datos crece mucho y se vuelve compleja, existen múltiples relaciones multivaluadas o combinaciones que requieren precisión absoluta, y se manejan en entornos como Big Data, analítica avanzada o modelos de alta escalabilidad.

¡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

Escribe tu comentario
+ 2