martes, 6 de septiembre de 2011

Ejemplo de Normalizacion 1FN-4FN

Ejemplo sin 1FN 

 1FN(Mismo formato, seguir reglas)

3FN(Eliminar Dependencias Transitivas)

4FN(Eliminar dependencias Multivalor)

4FN

Para llegar a la 4to forma normal desde la 3era, se debe hacer un breve paso previo. Se debe pasar por la forma normal Boyce-Codd que señala que esta en dicha forma normal si cada dependencia no trivial es una súper llave (ósea una clave candidata o similar). Para muestra un botón:


EJ1: Vemos como esta relación no cumple al comienzo pero al hacer unos cambios si cumple





Terminada esa pequeña explicación, pasamos a hablar de la 4FN: Una relación esta en 4FN cuando no existen dependencias múltiples, por ejemplo en esta tabla si las hay (es un poco obvio porque hay mucha repetición) Ejemplo 2: Por lo que hay que dividirla en otras tablas (Ejemplo 3). 




Ejemplo2



Ejemplo
Sin embargo (ya saben lo que viene) la 4FN tiene un error, si bien desde la 3FN ya se considera una base de datos como buena y perfecta para el desarrollo, siempre hay perfeccionistas que prefieren ver una explosión de tablas. Y ellos se quejan que en la 4FN hay algunos casos en que por reglas de negocio, una dependencia conjunta no esta implícita en las llaves principales.

3FN

La 2do forma normal que acabamos de ver también tiene un error clave,  no dice nada si es que un atributo no clave principal es dependiente de otro atributo no clave principal. En este caso la relación estaría mal. Por consiguiente la 3era FN señala que no deben existir dependencias transitivas entre los atributos dato de una relación. A continuación ejemplos:




EJ1: Partiendo del EJ3: Se divide la relación compras para evitar tener una dependencia transitiva. 





El 2do Ejemplo se explica por si solo :3




EJ3: Vemos un claro ejemplo de como una relación 2FN pasa a 3FN.







Sin embargo (y esto ya se va volviendo repetitivo) la 3FN también tiene fallas (oh sorpresa) por ejemplo pueden haber casos en donde los determinantes de una tabla no sean cables candidatas: Como este ejemplo: (EJEM 4):




2FN

Sin embargo la 1FN esta lejos de ser perfecta, la mayoría de las relaciones que están en 1FN contienen muchas otras fallas que son subsanadas en las siguientes formas normales. Por ejemplo la 1FN no dice nada acerca de si el resto de atributos debe depender del primero. Esto es arreglado en la 2FN, que indica precisamente eso: Que todos los atributos de la  PK deben ser dependientes de esta. A continuación ejemplos de la 2FN.







EJ1: En esta tabla podemos ver que viene d una tabla más grande, que contenía todos esos datos. Esta en 2FN porque cada dato depende de cada uno.










EJ2: Esta evidentemente-no-sacada-de-wikipedia relación también esta en 2FN, ya que del año depende el ganador y por consiguiente la fecha de nacimiento.










EJ1: En el caso anterior, en el EJ3 el código de libro no dependía del código del lector. Por lo que se puede separar en 2 tablas. Una para cod. Libro y otra para cod. Lector.








Pero la 2FN tiene fallas, por ejemplo:

Ejemplo 4: Vemos que hay 2 claves primarias candidatas, por lo que no sirve.





1FN

En las base de datos, gran parte de su “secreto” para el correcto funcionamiento es el correcto orden de los datos. A esto se le llama “normalizar”. En este blog veremos cada una de las “formas normales” que son condiciones para que los datos estén en un formato correcto.
En el universo de datos, datos se presentan de cualquier modo, ya sea con números con faltas ortográficas, en otro idioma etc. La 1era forma normal hace que los datos se estandaricen y sean del mismo tipo siguiendo 5 reglas: 1. No hay orden de arriba-a-abajo en las filas.
2. No hay orden de izquierda-a-derecha en las columnas.
3. No hay filas duplicadas.
4. Cada intersección de fila-y-columna contiene exactamente un valor del dominio aplicable (y nada más).
5. Todas las columnas son regulares [es decir, las filas no tienen componentes como IDs de fila, IDs de objeto, o timestamps ocultos].

. A continuación un ejemplos de datos en cualquier forma y en la 1FN y otros de datos en 1FN y porque.


EJ1: Acá vemos que los datos están de cualquier modo, no existe alguien que se llame XXX y las notas están en cualquier formato. Pero seguidamente esta la tabla correcta, que estaría en 1FN.






EJ2: Los datos están en forma normal, no importa si se repiten los datos ya que en este caso se trata de 2 personas diferentes.



EJ3: En este caso también esta en forma normal, ya que cumplen las 5 características ya mencionadas.