Está en la página 1de 5

El proceso de normalizacin de bases de datos relacionales

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.

Breve recordatorio del modelo (formal) relacional


El modelo relacional de bases de datos se basa en un modelo formal especificado de acuerdo a la teora de conjuntos. Una base de datos relacional puede considerarse como un conjunto de relaciones o tablas de la forma R(A1, ..., An), donde R es el nombre de la relacin, que se define por una serie de atributos Ai. Sobre las tablas relacionales se pueden definir diferentes restricciones. La inte ridad de entidad es una restriccin que nos indica que cada entidad representada por una tupla tiene que ser diferente de las dem!s en su relacin, es decir, debe "aber al unos atributos cuyos valores identifiquen unvocamente las tuplas. La inte ridad referencial indica que una clave ajena solo debe contener valores que o bien sean nulos, o bien e#istan en la relacin referenciada por la clave ajena.

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)

con nss como clave primaria.

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 $

Primera forma normal (1FN)

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 =

Se!unda forma normal ("FN)


Un esquema est! en '%& si4 Est! en $%&. )odos sus atributos que no son de la clave principal tienen dependencia funcional completa respecto de todas las claves e#istentes en el esquema. En otras palabras, para determinar cada atributo no clave se necesita la clave primaria completa, no vale con una subclave. La '%& se aplica a las relaciones que tienen claves primarias compuestas por dos o m!s atributos. Si una relacin est! en $%& y su clave primaria es simple >tiene un solo atributo?, entonces tambin est! en '%&. ,or tanto, de las soluciones anteriores, la tabla EMPLEADOS'(b) est! en $%& >y la tabla E81@LS no tiene atributos no clave?, por lo que el esquema est! en '%&. Sin embar o, tenemos que e#aminar las dependencias funcionales de los atributos no clave de EMPLEADOS'(a). Las dependencias funcionales que tenemos son las si uientes4
nss$%nombre, salario, email puesto$%salario

: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 $%&.

$ercera forma normal (%FN)


Una relacin est! en tercera forma normal si, y slo si4 est! en '%& y, adem!s, cada atributo que no est! incluido en la clave primaria no depende transitivamente de la clave primaria. ,or lo tanto, a partir de un esquema en '%&, tenemos que buscar dependencias funcionales entre atributos que no estn en la clave.

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.

También podría gustarte