Está en la página 1de 5

Connexions

Y ou are here: Home Content Un ejemplo simple de normalizacin de bases de datos relacionales (hasta 3FN)

Un ejemplo simple de normalizaci n de bases de datos relacionales (hasta 3FN)


Module b : Miguel-Angel Sicilia. Sum m ar : Se describe un ejemplo sencillo (de una sola tabla) de aplicacin de la normalizacin de bases de datos relacionales.

El proceso de normalizaci n 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 nuev o esquema que representa la misma informacin pero contiene menos redundancias y ev ita 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 A , . . A ) donde Res el nombre de la relacin, que se define (1 ., n, por una serie de atributos A . i 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 cuy os v alores identifiquen unv ocamente las tuplas. La integridad referencial indica que una clav e ajena solo debe contener v alores que o bien sean nulos, o bien ex istan en la relacin referenciada por la clav e ajena.

El proceso de normalizaci n
El proceso de normalizacin consiste en comprobar en secuencia si el esquema original est en 1 FN, 2FN y 3FN, analizando las dependencias funcionales en cada paso.

Un ejemplo completo
Tenemos 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 relacional
E P E D S n , n m e p e o a a i , e a l ) con n MLAO( ob , , l o mi

como clav e primaria.

nss 111

nombre Juan Prez

puesto Jefe de rea

salario emails 3000 juanp@ecn.es; jefe2@ecn.es jsanchez@ecn.es adiaz@ecn.es; ana32@gmail.com ...

222 Jos Snchez Administrativ o 1 500 333 Ana Daz ... ... Administrativ o 1 500 ... ...
TABLE 1

Primera forma normal (1FN)


Una tabla est en 1 FN si sus atributos contienen v alores atmicos. En el ejemplo, podemos v er que el atributo e a l puede contener ms de un v alor, por lo que v iola 1 FN. mi En general, tenemos una relacin Rcon clav e primaria K Si un atributo Mv iola la condicin de . 1 FN, tenemos dos opciones.

Soluci n 1: duplicar los registros con valores repetidos


En general, esta solucin pasa por sustituir Rpor una nuev a relacin modificada R , en la ' cual: El atributo Mque v iolaba 1 FN se elimina. Se incluy e un nuev o atributo M que solo puede contener v alores simples, de modo ' que si R'[M'] es uno de los v alores que tenamos en R M , entonces R [ ] = R K . En [] 'K [] otras palabras, para una tupla con nv alores duplicados en M en la nuev a relacin , habr ntuplas, que slo v aran en que cada una de ellas guarda uno de los v alores que haba en M . La clav e primaria de R es ( , M ) dado que podr haber v alores de Krepetidos, ' K ', para los v alores multiv aluados en M . Siguiendo el ejemplo, tendramos el siguiente esquema para la nuev a tabla E P E D S ( ) MLAO'a con clav e primaria ( , e a l : n mi) nss 111 111 nombre Juan Prez Juan Prez puesto Jefe de Jefe de rea rea salario email 3000 3000 juanp@ecn.es jefe2@ecn.es jsanchez@ecn.es adiaz@ecn.es ana32@gmail.com

222 Jos Snchez Administrativ o 1 500 333 Ana Daz 333 Ana Daz Administrativ o 1 500 Administrativ o 1 500

...

...

...

TABLE 2

...

...

Soluci n 2: separar el atributo que viola 1FN en una tabla


En general, esta solucin pasa por: sustituir Rpor una nuev a relacin modificada R que no contiene el atributo M ' . Crear una nuev a relacin N K M ) es decir, una relacin con una clav e ajena K (, ', referenciando R , junto al atributo M , que es la v ariante mono-v aluada del atributo M ' ' . La nuev a relacin Ntiene como clav e ( , M ) K '. Siguiendo el ejemplo, tendramos el siguiente esquema para la nuev a tabla E P E D S ( ) MLAO'b nss 111 nombre Juan Prez puesto Jefe de rea salario 3000

222 Jos Snchez Administrativ o 1 500 333 Ana Daz ... ... Administrativ o 1 500 ...
TABLE 3

...

Y adems tendramos una nuev a tabla E A L con clav e primaria ( , e a l : MIS n mi) nss 111 111 email juanp@ecn.es jefe2@ecn.es

222 jsanchez@ecn.es 333 adiaz@ecn.es 333 ana32@gmail.com ... ...


TABLE 4

Segunda forma normal (2FN)


Un esquema est en 2FN si: Est en 1 FN. Todos sus atributos que no son de la clav e principal tienen dependencia funcional completa respecto de todas las clav es ex istentes en el esquema. En otras palabras, para determinar cada atributo no clav e se necesita la clav e primaria completa, no v ale con una subclav e. La 2FN se aplica a las relaciones que tienen clav es primarias compuestas por dos o ms atributos. Si una relacin est en 1 FN y su clav e primaria es simple (tiene un solo atributo), entonces

tambin est en 2FN. Por tanto, de las soluciones anteriores, la tabla E P E D S ( ) est en 1 FN MLAO'b (y la tabla EMAILS no tiene atributos no clav e), por lo que el esquema est en 2FN. Sin embargo, tenemos que ex aminar las dependencias funcionales de los atributos no clav e de E P E D S ( ) MLAO'a. Las dependencias funcionales que tenemos son las siguientes:
n -nm e aai,eal >ob , l o mi pe o>aai - l o

Como la clav e es ( , e a l , las dependencias de nombre, salario y email son incom pletas, n mi) por lo que la relacin no est en 2FN. En general, tendremos que observ ar los atributos no clav e que dependan de parte de la clav e. Para solucionar este problema, tenemos que hacer lo siguiente para los gupos de atributos con dependencia incompleta M : Eliminar de Rel atributo M . Crear una nuev a relacin Ncon el atributo My la parte de la clav e primaria Kde la que depende, que llamaremos K . ' La clav e primaria de la nuev a relacin ser K . ' Siguiendo el ejemplo anterior, crearamos una nuev a relacin con los atributos que tienen dependencia incompleta: nss 111 nombre Juan Prez puesto Jefe de rea salario 3000

222 Jos Snchez Administrativ o 1 500 333 Ana Daz ... ... Administrativ o 1 500 ...
TABLE 5

...

Y al eliminar de la tabla original estos atributos nos quedara: nss 111 111 email juanp@ecn.es jefe2@ecn.es

222 jsanchez@ecn.es 333 adiaz@ecn.es 333 ana32@gmail.com ... ...


TABLE 6

Como v emos, la solucin a la que llegamos es la misma que en la otra opcin de solucin para el problema de 1 FN.

Tercera forma normal (3FN)


Una relacin est en tercera forma normal si, y slo si: est en 2FN y , adems, cada atributo que no est incluido en la clav e primaria no depende transitiv amente de la clav e primaria. Por lo tanto, a partir de un esquema en 2FN, tenemos que buscar dependencias funcionales entre atributos que no estn en la clav e. En general, tenemos que buscar dependencias transitiv as de la clav e, es decir, secuencias de dependencias como la siguiente: K > y A > , donde Ay Bno pertenecen a la clav e. La solucin a -A -B este tipo de dependencias est en separar en una tabla adicional Nel/los atributos B y poner como , clav e primaria de Nel atributo que define la transitiv idad A . Siguiendo el ejemplo anterior, podemos detectar la siguiente transitiv idad:
n -pe o > pe o>aai - l o

Por lo tanto la descomposicin sera la siguiente: nss 111 nombre Juan Prez puesto Jefe de rea

222 Jos Snchez Administrativ o 333 Ana Daz ... ... Administrativ o ...
TABLE 7

En la nuev a tabla P E T S la clav e sera el puesto, que tambin queda como clav e ajena USO, referenciando la tabla E P E D S El resto de las tablas quedan como estaban. MLAO.

Mor e a bou t t h is m odu le: Met a da t a | Dow n loa ds | V er sion Hist or y How t o r eu se a n d a t t r ibu t e t h is con t en t How t o ci t e a n d a t t r ibu t e t h is con t en t T h is w or k is licen sed by Mig u el-A n g el Sicilia u n der a Cr ea t iv e Com m on s A t t r ibu t ion Licen se (CC-BY 2 .0 ), a n d is a n Open Edu ca t ion a l Resou r ce. Las t edited b Miguel-Angel Sicilia on Nov 19, 2008 12:10 pm US/Central.