Hola a todos, hoy os voy a explicar como validar que nuestra tabla este en tercera forma normal (3FN) con ejemplos reales.
El objetivo de la normalización es eliminar redundancias y asegurar que los datos estén organizados de forma consistente y sin inconsistencias.
Para ello tenemos diferentes formas normales, en este post, vamos a ver la tercera forma normal o 3FN.
Condiciones para que cumpla la tercera forma normal
Cuando tenemos una tabla de base de datos, si queremos comprobar que cumple la tercera forma normal, debe cumplir las siguientes condiciones:
La tabla cumple la 2FN
Debe cumplir las condiciones para estar en 2FN. Esto lo vimos en otra entrada:
https://discoduroderoer.es/segunda-forma-normal-2fn-guia-con-ejemplos-reales
Todos los atributos no clave deben depender solo de la clave primaria, no de otros campos intermedios.
Esto se conoce como dependencia transitiva.
A lo que se refiere a que el valor de cada una de los campos no primarios tiene que depender de la clave primaria, si este depende de uno no primario, no cumple la 3FN.
Ejemplo 1
Veamos un ejemplo con empleado y oficina:

Veamos un ejemplo real de base de datos:

Entre ciudad y cod_postal existe una dependencia transitiva.
Porque cada vez que ponga 50018 como código postal, siempre tendré que poner Zaragoza como ciudad.
Se soluciona pasando creando una nueva tabla con ambos campos.
En oficina, dejamos solo uno de ellos, en este caso cod_postal como campo foráneo, que apunta al campo primario de la nueva tabla.

Así quedaría en base de datos:
Ejemplo 2
Algo que es habitual, es que el campo sea una cadena.
Veamos un ejemplo:

Veamos un ejemplo real de base de datos:

Como vemos tenemos una dependencia transitiva entre empresa y empresa_pais, con lo que hemos visto hasta ahora, lo transformamos así:

Veamos como quedaría en la base de datos:

A nivel de normalización es correcto pero si en una de las dos tablas no es igual, no estarán relacionadas.
Por ejemplo, si en Empleado tenemos TechNova S.A. y en Empresa TechNova sa aunque entendamos que es el mismo, son diferentes.
Para solucionar esto, recomiendo crear un código propio.

Veamos como quedaría en la base de datos:

De esta forma, es mas fácil asociar registros de una tabla a otra sin riesgo a equivocarse.
Te lo dejo en video donde lo comentamos.
https://youtu.be/PxaGQ0mA4-w
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta