Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La normalizacin de bases de datos relacionales toma un esquema relacional y le aplica un conjunto de tcnicas para producir un nuevo esquema que representa la misma informacin pero contiene menos redundancias y evita posibles anomalas en las inserciones, actualizaciones y borrados.
El proceso de normalizacin
El proceso de normalizacin consiste en comprobar en secuencia si el esquema ori inal est! en $%&, '%& y (%&, analizando las dependencias funcionales en cada paso.
Un ejemplo completo
)enemos una empresa p*blica donde los puestos de trabajo est!n re ulados por el Estado, de modo que las condiciones salariales est!n determinadas por el puesto. Se "a creado el si uiente esquema relacional
EMPLEADOS(nss, nombre, puesto, salario, emails)
nss nombre puesto salarioemails $$$+uan ,rez +efe de -rea (... juanp/ecn.es0 jefe'/ecn.es '''+os S!nc"ez1dministrativo$2.. jsanc"ez/ecn.es (((1na 3az 1dministrativo$2.. adiaz/ecn.es0 ana('/ mail.com ... ... ... ... ... )able $
Una tabla est! en $%& si sus atributos contienen valores atmicos. En el ejemplo, podemos ver que el atributo emails puede contener m!s de un valor, por lo que viola $%&. En eneral, tenemos una relacin R con clave primaria K. Si un atributo M viola la condicin de $%&, tenemos dos opciones. Solucin 1 duplicar los re!istros con valores repetidos En eneral, esta solucin pasa por sustituir R por una nueva relacin modificada R', en la cual4
El atributo M que violaba $%& se elimina. Se incluye un nuevo atributo M' que solo puede contener valores simples, de modo que si 567869 es uno de los valores que tenamos en R[M , entonces R'[K ! R[K . En otras palabras, para una tupla con n valores duplicados en M, en la nueva relacin "abr! n tuplas, que slo varan en que cada una de ellas uarda uno de los valores que "aba en M. La clave primaria de R' es (K, M'), dado que podr! "aber valores de K repetidos, para los valores multivaluados en M.
Si uiendo el ejemplo, tendramos el si uiente esquema para la nueva tabla EMPLEADOS'(a) con clave primaria (nss, email)4 nss nombre puesto salarioemail $$$+uan ,rez +efe de -rea (... juanp/ecn.es $$$+uan ,rez +efe de -rea (... jefe'/ecn.es '''+os S!nc"ez1dministrativo$2.. jsanc"ez/ecn.es (((1na 3az 1dministrativo$2.. adiaz/ecn.es (((1na 3az 1dministrativo$2.. ana('/ mail.com ... ... ... ... ... )able ' Solucin " separar el atributo #ue viola 1FN en una tabla En eneral, esta solucin pasa por4 sustituir R por una nueva relacin modificada R' que no contiene el atributo M. :rear una nueva relacin "(K, M'), es decir, una relacin con una clave ajena K referenciando R', junto al atributo M', que es la variante mono;valuada del atributo M. La nueva relacin " tiene como clave (K, M'). Si uiendo el ejemplo, tendramos el si uiente esquema para la nueva tabla EMPLEADOS'(b)
nss nombre puesto salario $$$+uan ,rez +efe de -rea (... '''+os S!nc"ez1dministrativo$2.. (((1na 3az 1dministrativo$2.. ... ... ... ... )able ( < adem!s tendramos una nueva tabla EMA#LS con clave primaria (nss, email)4 nss email $$$juanp/ecn.es $$$jefe'/ecn.es '''jsanc"ez/ecn.es (((adiaz/ecn.es (((ana('/ mail.com ... ... )able =
:omo la clave es (nss, email), las dependencias de nombre, salario y email son incompletas, por lo que la relacin no est! en '%&. En eneral, tendremos que observar los atributos no clave que dependan de parte de la clave.
,ara solucionar este problema, tenemos que "acer lo si uiente para los upos de atributos con dependencia incompleta M4 Eliminar de R el atributo M. :rear una nueva relacin " con el atributo M y la parte de la clave primaria K de la que depende, que llamaremos K'. La clave primaria de la nueva relacin ser! K'. Si uiendo el ejemplo anterior, crearamos una nueva relacin con los atributos que tienen dependencia incompleta4 nss nombre puesto salario $$$+uan ,rez +efe de -rea (... '''+os S!nc"ez1dministrativo$2.. (((1na 3az 1dministrativo$2.. ... ... ... ... )able 2 < al eliminar de la tabla ori inal estos atributos nos quedara4 nss email $$$juanp/ecn.es $$$jefe'/ecn.es '''jsanc"ez/ecn.es (((adiaz/ecn.es (((ana('/ mail.com ... ... )able A :omo vemos, la solucin a la que lle amos es la misma que en la otra opcin de solucin para el problema de $%&.
En eneral, tenemos que buscar dependencias transitivas de la clave, es decir, secuencias de dependencias como la si uiente4 K$%A y A$%&, donde A y & no pertenecen a la clave. La solucin a este tipo de dependencias est! en separar en una tabla adicional " elBlos atributos &, y poner como clave primaria de " el atributo que define la transitividad A. Si uiendo el ejemplo anterior, podemos detectar la si uiente transitividad4
nss$%puesto puesto$%salario
,or lo tanto la descomposicin sera la si uiente4 nss nombre puesto $$$+uan ,rez +efe de -rea '''+os S!nc"ez1dministrativo (((1na 3az 1dministrativo ... ... ... )able C En la nueva tabla P'ES(OS, la clave sera el puesto, que tambin queda como clave ajena referenciando la tabla EMPLEADOS. El resto de las tablas quedan como estaban.