NORMALIZACION5

download NORMALIZACION5

If you can't read please download the document

Transcript of NORMALIZACION5

El proceso de normalizacin de bases de datos relacionalesLa 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) relacionalEl 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 formaR(A1, ..., An), dondeRes el nombre de la relacin, que se define por una serie de atributosAi.Sobre las tablas relacionales se pueden definir diferentes restricciones. La integridad de entidad es una restriccin que nos indica que cada entidad representada por una tupla tiene que ser diferente de las dems en su relacin, es decir, debe haber algunos atributos cuyos valores identifiquen unvocamente las tuplas. La integridad referencial indica que una clave ajena solo debe contener valores que o bien sean nulos, o bien existan en la relacin referenciada por la clave ajena.El proceso de normalizacinEl proceso de normalizacin consiste en comprobar en secuencia si el esquema original est en 1FN, 2FN y 3FN, analizando las dependencias funcionales en cada paso.Un ejemplo completoTenemos una empresa pblica donde los puestos de trabajo estn regulados por el Estado, de modo que las condiciones salariales estn determinadas por el puesto. Se ha creado el siguiente esquema relacionalEMPLEADOS(nss, nombre, puesto, salario, emails)connsscomo clave primaria.nssnombrepuestosalarioemails

111Juan PrezJefe de [email protected]; [email protected]

222Jos [email protected]

333Ana [email protected]; [email protected]

...............

TABLE 1Primera forma normal (1FN)Una tabla est en 1FN si sus atributos contienen valores atmicos. En el ejemplo, podemos ver que el atributoemailspuede contener ms de un valor, por lo que viola 1FN.En general, tenemos una relacinRcon clave primariaK. Si un atributoMviola la condicin de 1FN, tenemos dos opciones.Solucin 1: duplicar los registros con valores repetidosEn general, esta solucin pasa por sustituirRpor una nueva relacin modificadaR', en la cual:El atributoMque violaba 1FN se elimina.

Se incluye un nuevo atributoM'que solo puede contener valores simples, de modo que si R'[M'] es uno de los valores que tenamos enR[M], entoncesR'[K] = R[K]. En otras palabras, para una tupla connvalores duplicados enM, en la nueva relacin habrntuplas, que slo varan en que cada una de ellas guarda uno de los valores que haba enM.

La clave primaria deR'es(K, M'), dado que podr haber valores deKrepetidos, para los valores multivaluados enM.

Siguiendo el ejemplo, tendramos el siguiente esquema para la nueva tablaEMPLEADOS'(a)con clave primaria(nss, email):nssnombrepuestosalarioemail

111Juan PrezJefe de [email protected]

111Juan PrezJefe de [email protected]

222Jos [email protected]

333Ana [email protected]

333Ana [email protected]

...............

TABLE 2Solucin 2: separar el atributo que viola 1FN en una tablaEn general, esta solucin pasa por:sustituirRpor una nueva relacin modificadaR'que no contiene el atributoM.Crear una nueva relacinN(K, M'), es decir, una relacin con una clave ajenaKreferenciandoR', junto al atributoM', que es la variante mono-valuada del atributoM.La nueva relacinNtiene como clave(K, M').Siguiendo el ejemplo, tendramos el siguiente esquema para la nueva tablaEMPLEADOS'(b)nssnombrepuestosalario

111Juan PrezJefe de rea3000

222Jos SnchezAdministrativo1500

333Ana DazAdministrativo1500

............

TABLE 3Y adems tendramos una nueva tablaEMAILScon clave primaria(nss, email):nssemail

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

......

TABLE 4Segunda forma normal (2FN)Un esquema est en 2FN si: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 ms atributos. Si una relacin est en 1FN y su clave primaria es simple (tiene un solo atributo), entonces tambin est en 2FN. Por tanto, de las soluciones anteriores, la tablaEMPLEADOS'(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 deEMPLEADOS'(a).Las dependencias funcionales que tenemos son las siguientes:nss->nombre, salario, emailpuesto->salarioComo la clave es(nss, email), las dependencias de nombre, salario y email sonincompletas, por lo que la relacin 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 incompletaM:Eliminar deRel atributoM.Crear una nueva relacinNcon el atributoMy la parte de la clave primariaKde la que depende, que llamaremosK'.La clave primaria de la nueva relacin serK'.Siguiendo el ejemplo anterior, crearamos una nueva relacin con los atributos que tienen dependencia incompleta:nssnombrepuestosalario

111Juan PrezJefe de rea3000

222Jos SnchezAdministrativo1500

333Ana DazAdministrativo1500

............

TABLE 5Y al eliminar de la tabla original estos atributos nos quedara:nssemail

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

......

TABLE 6Como vemos, la solucin a la que llegamos es la misma que en la otra opcin de solucin para el problema de 1FN.Tercera forma normal (3FN)Una relacin est en tercera forma normal si, y slo si:est en 2FNy, adems, 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 estn en la clave.En general, tenemos que buscar dependencias transitivas de la clave, es decir, secuencias de dependencias como la siguiente:K->AyA->B, dondeAyBno pertenecen a la clave. La solucin a este tipo de dependencias est en separar en una tabla adicionalNel/los atributosB, y poner como clave primaria deNel atributo que define la transitividadA.Siguiendo el ejemplo anterior, podemos detectar la siguiente transitividad:nss->puestopuesto->salarioPor lo tanto la descomposicin sera la siguiente:nssnombrepuesto

111Juan PrezJefe de rea

222Jos SnchezAdministrativo

333Ana DazAdministrativo

.........

TABLE 7En la nueva tablaPUESTOS, la clave sera el puesto, que tambin queda como clave ajena referenciando la tablaEMPLEADOS. El resto de las tablas quedan como estaban.