domingo, 13 de julio de 2014

EJEMPLO NORMALIZACION


Tenemos una empresa pública donde los puestos de trabajo están regulados por el Estado, de modo que las condiciones salariales están determinadas por el puesto. Se ha creado el siguiente esquema relacional EMPLEADOS(nss, nombre, puesto, salario, emails) con “nss” como clave primaria.

nss
nombre
puesto
salario
emails
111
Juan Pérez
Jefe de Área
3000
juanp@ecn.es; jefe2@ecn.es
222
José Sánchez
Administrativo
1500
jsanchez@ecn.es
333
Ana Díaz
Administrativo
1500
adiaz@ecn.es; ana32@gmail.com
...
...
...
...
...


1FN: buscamos atributos no atómicos: el atributo emails puede contener más de un valor, por lo que viola 1FN.
Solución 1: Duplicar registros con valores repes, añadiendo a clave valores no repesà Crearíamos una nueva tabla, con una nueva clave en la que meteríamos el atributo email, ahora no repetido

nss
nombre
puesto
salario
email
111
Juan Pérez
Jefe de Área
3000
juanp@ecn.es
111
Juan Pérez
Jefe de Área
3000
jefe2@ecn.es
222
José Sánchez
Administrativo
1500
jsanchez@ecn.es
333
Ana Díaz
Administrativo
1500
adiaz@ecn.es
333
Ana Díaz
Administrativo
1500
ana32@gmail.com
...
...
...
...
...
Solución 2: Separar el atrib emails a otra tabla,“arrastrando” la clave (nss) a otra tabla

NOTA: En esta otra tabla, la clave será (nss,email)

nss
nombre
puesto
salario
111
Juan Pérez
Jefe de Área
3000
222
José Sánchez
Administrativo
1500
333
Ana Díaz
Administrativo
1500
...
...
...
...



nss
email
111
juanp@ecn.es
111
jefe2@ecn.es
222
jsanchez@ecn.es
333
adiaz@ecn.es
333
ana32@gmail.com
...
...
2FN: Si revisamos las dependencias de los atrib no clave de parte de la clave en la tabla de la 1ª de las soluciones del ejemplo anterior:
  nssànombre, puesto, salario
  puestoàsalario
Como la clave es (nss, email), las dependencias de nombre, salario y email son incompletas (dependen del nss, no del email..nss es “subclave”), por lo que la relación no está en 2FN
Solución: crearíamos una nueva relación con los atributos que tienen dependencia incompleta, a la que “arrastraríamos” la “subclave” de la que dependen (que eliminaríamos de la tabla “original”); nos quedarían 2 tablas à Llegamos a la 2ª de las soluciones del ejemplo anterior
Tabla con los atributos con dependencia incompleta, y la clave de la que dependen

nss
nombre
puesto
salario
111
Juan Pérez
Jefe de Área
3000
222
José Sánchez
Administrativo
1500
333
Ana Díaz
Administrativo
1500
...
...
...
...
Tabla “original”, sin los atributos con dependencia incompleta

nss
email
111
juanp@ecn.es
111
jefe2@ecn.es
222
jsanchez@ecn.es
333
adiaz@ecn.es
333
ana32@gmail.com
...
...
3FN: buscamos algún tipo de dep entre atrib no clave (en particular, si hay dep. transitivas de la clave); en la 1ª tabla de la solución anterior se observa:
  nssàpuesto
  puestoàsalario
..es decir, el salario depende de puesto, y puesto no está en la clave
Solución: Pasar a nueva tabla los atributos no clave que no dependen solo de la clave, y poner como clave de esa tabla al atrib del que dependen
Tabla sin los atributos que no dependían solo de clave

nss
nombre
puesto
111
Juan Pérez
Jefe de Área
222
José Sánchez
Administrativo
333
Ana Díaz
Administrativo
...
...
...
 (NOTA: El atributo no clave del que dependían se queda como clave ajena o foránea)
Tabla con los atributos que no dependían solo de clave

puesto
salario
Jefe de Área
3000
Administrativo
1500
...
...

(NOTA: La clave es el atributo no clave del que dependían, en este caso, puesto)
Tabla que ya estaba en 3FN

nss
email
111
juanp@ecn.es
111
jefe2@ecn.es
222
jsanchez@ecn.es
333
adiaz@ecn.es
333
ana32@gmail.com
...
...

1 comentario: