¿Quieres apoyarnos? Con nuestro Código: "VIVESINLIMITES" tendrás 2 MESES GRATIS en el plan mensual del Hosting SERED QUIERO APOYARTE!
La 4fn busca eliminar los problemas que nacen de malas relaciones, provenientes de las dependencias multivaluadas.
Esta forma no siempre se debe aplicar, porque en la mayoría de los casos no se genera problemas con esta forma.
¿Que debería conocer para entender esta forma?
¿Que Dice la Cuarta Forma Normal?
Las dependencias multivaluadas nacen cuando no se realiza un correcta selección de las determinantes en las dependencias funcionales.
Son problemas bastante graves que pueden llevar a una redundancia excesiva.
A pesar de no ser indispensable para todos los casos, aplicar esta forma cuando es necesario si que puede marcar la diferencia en tu tabla.
Características de la Cuarta Forma Normal
- La tabla debe estar en 3FN o BCFN
- No deben existir dependencias multivaluadas
¿Que es una dependencia multivaluadas?
Antes de mostrar un ejemplo, primero debes entender que es una dependencia multivaluadas.
| Determinante | Dependiente |
| X | Y |
En una tabla donde X es la determinante de Y.
| X | Y |
| X1 | Y1 |
| X1 | Y2 |
| X1 | Y3 |
Y tiene múltiples valores ( Y1, Y2, Y3) asociados a un mismo dato en X ( X1).
Esa tabla tiene una “especie” de dependencias multivaluadas.
¿Porque digo especie?
Porque con dos columnas no genera ningún problema grave, el inconveniente nace cuando son mínimo 3 columnas.
X ->> Y
X ->> Z
| X | Y | Z |
| X1 | Y1 | Z1 |
| X1 | Y2 | Z1 |
| X1 | Y3 | Z1 |
| X1 | Y1 | Z1 |
| X1 | Y1 | Z2 |
| X1 | Y1 | Z3 |
Tanto ( Y ) como ( Z ) no tienen una relación entre si, es decir están complemente aislada la una de la otra.
Pero ambas tienen una dependencia multivaluadas con ( X ), generando una redundancia de datos complemente innecesaria de la información.
Ejemplo
Tengo varios puestos venta de hamburguesas, con varios tipos de hamburguesa y varios lugares donde hacemos Delivery…
| Puestos | Tipos | Delivery |
Claves primarias compuestas: ( Puestos + Tipos + Delivery).
Dependencias funcionales:
- Puestos ->> Tipos
- Puestos ->> Delivery
Quiero conocer que tipo de hamburguesa tengo en cada puesto y ademas quiero conocer las zonas de delivery que cada puesto maneja..
Sin embargo, este símbolo ( ->> ) nos advierte que esto tiene una dependencia mutivaluadas. Si rellenamos la tabla nos encontraremos con problemas.
| Puestos | Tipos | Delivery |
| Sin limites burger | Pavo | Nueva York |
| Sin limites burger | Pavo | Chicago |
| Sin limites burger | Pavo | Miami |
Agregamos una hamburguesa de pavo a mi puesto, con sus diferentes zonas de delivery, y todo parece estar correcto.
Pero… ¿ Si agrego otro tipo de hamburguesa que ocurre?
| Puestos | Tipos | Delivery |
| Sin limites burger | Pavo | Nueva York |
| Sin limites burger | Pavo | Chicago |
| Sin limites burger | Pavo | Miami |
| Sin limites burger | Chorizo | Nueva York |
| Sin limites burger | Chorizo | Chicago |
| Sin limites burger | Chorizo | Miami |
Aquí ya empezamos a notar que estamos repitiendo una información que teníamos (delivery).
Entonces cada vez que yo agregue un nuevo tipo de hamburguesa, tendré que agregarla 3 zonas de delivery.
Generando con esto, un exceso de datos innecesarios.
Y si agrego otro punto de delivery, tendré que agregarlo a cada uno de los tipos de hamburguesa ( Una completa locura! )
Tal como lo vimos aquí.
| X | Y | Z |
| X1 | Y1 | Z1 |
| X1 | Y2 | Z1 |
| X1 | Y3 | Z1 |
| X1 | Y1 | Z1 |
| X1 | Y1 | Z2 |
| X1 | Y1 | Z3 |
Para que tengas una idea de lo caótico que puede ser esto, mira la diferencia de datos entre no normalizada y si normalizada en 4FN.
| Sin normalizar | 4FN |
| 40 tipos de hamburguesas x 3 delivery | 40 tipos de hamburguesas x 3 delivery |
| 120 filas repetidas | 43 filas en total |
| 3 veces mas de lo correcto | cantidad correcta |
¿Solución? Separamos.
| Puestos | Tipos |
| Sin limites burger | Pavo |
| Sin limites burger | Chorizo |
Dependencia funcional correcta: Puestos -> Tipos
| Puestos | Delivery |
| Sin limites burger | New York |
| Sin limites burger | Chicago |
| Sin limites burger | Miami |
Dependencia funcional correcta: Puestos -> Delivery
Con esto ya solucionamos.
En algunos casos estas tablas pueden mezclar tanto dependencias funcionales como dependencias multivaluadas e igualmente esta malo.
Si agrego dueño a la tabla:
| Puestos | Tipos | Delivery | Dueño |
| Sin limites burger | Pavo | Nueva York | Tony |
| Sin limites burger | Pavo | Chicago | Tony |
| Sin limites burger | Pavo | Miami | Tony |
| Sin limites burger | Chorizo | Nueva York | Tony |
| Sin limites burger | Chorizo | Chicago | Tony |
| Sin limites burger | Chorizo | Miami | Tony |
- Puestos ->> Tipos
- Puestos ->> Delivery
- Puestos -> Dueños
Dueño tiene una dependencia funcional porque cada local en este caso imaginemos que tiene un dueño.
Pero las demás columnas siguen siendo multivaluadas, por lo cual el error sigue vigente..
Ejercicio de 4FN
¿Puede generar problemas con 4Fn?
- A -> B
- A -> C
Dime en comentarios en este vídeo de Youtube tu opinión, Sigue bajando para ver las respuestas.
Respuestas del ejercicios
No. la dependencia que tenemos en el ejercicio luce así ( -> ) mientras que una dependencia que cumpla con las características para ser multivaluadas luciría así ( ->> ).
Si acertaste déjame este emoji ☀️ en respuesta a tu comentario de Youtube del vídeo de arriba.
Y si no acertaste déjame este emoji ☘️, y dime porque tomaste esa decisión.
( Si no te salen los emoji déjame tu comentario igual diciendo si acertaste o no)
Ademas te felicito si vienes de Youtube ❤️, porque demuestra que eres una persona curiosa y que quiere mejorar.
El regalo no solamente es el ejercicio… Sino también la información extra que compartí en este post que en el vídeo no la menciono.
Los que navegan mas profundo, son los que descubren tesoros mas valiosos.
Anterior capitulo
Siguiente capitulo