Ejemplo de Nomalizacion
Ejemplo de Nomalizacion
Ejemplo de Nomalizacion
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
Una tabla está en 1FN si sus atributos contienen valores atómicos. En el ejemplo, podemos ver que
el atributo emails puede contener más de un valor, por lo que viola 1FN.
En general, esta solución pasa por sustituir R por una nueva relación modificada R', en la cual:
Crear una nueva relación N(K, M'), es decir, una relación con una clave ajena K referenciando R',
junto al atributo M', que es la variante mono-valuada del atributo M.
nss email
111 juanp@ecn.es
111 jefe2@ecn.es
222 jsanchez@ecn.es
333 adiaz@ecn.es
333 ana32@gmail.com
... ...
Está en 1FN.
Todos sus atributos que no son de la clave principal tienen dependencia funcional completa respecto
de todas las claves existentes en el esquema. En otras palabras, para determinar cada atributo no
clave se necesita la clave primaria completa, no vale con una subclave.
La 2FN se aplica a las relaciones que tienen claves primarias compuestas por dos o más atributos. Si
una relación está en 1FN y su clave primaria es simple (tiene un solo atributo), entonces también
está en 2FN. Por tanto, de las soluciones anteriores, la tabla EMPLEADOS'(b) está en 1FN (y la
tabla EMAILS no tiene atributos no clave), por lo que el esquema está en 2FN. Sin embargo,
tenemos que examinar las dependencias funcionales de los atributos no clave
de EMPLEADOS'(a). Las dependencias funcionales que tenemos son las siguientes:
puesto->salario
Como la clave es (nss, email), las dependencias de nombre, salario y email son incompletas, por lo
que la relación no está en 2FN.
En general, tendremos que observar los atributos no clave que dependan de parte de la clave.
Para solucionar este problema, tenemos que hacer lo siguiente para los gupos de atributos con
dependencia incompleta M:
Crear una nueva relación N con el atributo M y la parte de la clave primaria K de la que depende,
que llamaremos K'.
Siguiendo el ejemplo anterior, crearíamos una nueva relación con los atributos que tienen
dependencia incompleta:
nss email
111 juanp@ecn.es
111 jefe2@ecn.es
222 jsanchez@ecn.es
333 adiaz@ecn.es
333 ana32@gmail.com
Como vemos, la solución a la que llegamos es la misma que en la otra opción de solución para el
problema de 1FN.
está en 2FN
y, además, cada atributo que no está incluido en la clave primaria no depende transitivamente de la
clave primaria.
Por lo tanto, a partir de un esquema en 2FN, tenemos que buscar dependencias funcionales entre
atributos que no estén en la clave.
nss->puesto
puesto->salario