Hola a todos, hoy os voy a explicar como validar que nuestra tabla este en primera forma normal (1FN) 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 primera forma normal o 1FN.
Condiciones para que cumpla la primera forma normal
Cuando tenemos una tabla de base de datos, si queremos comprobar que cumple la primera forma normal, debe cumplir las siguientes condiciones:
Cada registro debe ser único.
Cada uno de los registros debe tener una clave primaria (o varias) para ser identificado.
Los valores de los campos deben ser atómicos.
Cada campo debe tener un valor único, no puede tener una lista de valores dentro del mismo. Por ejemplo, los campos multivaluados incumplen esta condición.
Alterar el orden de los registros y los campos no altera el significado de la tabla.
Si cojo un registro y lo cambio de posición, no debe afectar al significado de la tabla. Lo mismo con las columnas dentro de un registro.
Todas las columnas son regulares.
No se deben crear columnas ocultas.
De todas estas condiciones, la más habitual que suele incumplirse es la 2º.
Ejemplo 1
Vamos a ver un pequeño ejemplo con una tabla empleado:

En este caso, supongamos que telefonos es un atributo multivaluado.
Veamos un ejemplo real en base de datos:

No cumpliría la 1FN porque el campo telefonos no es atómico.
La solución es crear una tabla nueva con el código del empleado y el teléfono, siendo ambas primarias y codigo apuntaría a empleado.
El campo telefono se quitaría de la tabla empleado.

Así se representaría en base de datos:
Ejemplo 2
Veamos otro ejemplo:
Tenemos nuestra tabla empleado que tiene un campo multivaluado que puede tener varios valores (liderazgo, comunicación, etc)
Veamos un ejemplo real en base de datos:

Así quedaría si lo separamos en una tabla nueva:

Así se representaría en base de datos:

El problema de este caso, es que pueden haber varios empleados que tengan la misma habilidad.
Además, en esta caso, al ser cadenas, puede complicar su modificación.
Para este tipo de casos, se suele crear un nueva tabla donde tengamos un campo codigo y un campo nombre.
En la tabla que hemos creado antes, cambiaremos el campo que venia de empleado y lo cambiaremos por un codigo.
Este campo será foráneo apuntando a nuestra nueva tabla.
Así quedaría:

Así se representaría en base de datos:

Te lo dejo en video donde lo comentamos.
https://youtu.be/3pkktjWimhE
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
Deja una respuesta