Está en la página 1de 14

EL PROCESO DE NORMALIZACIN

pag 1 DE 14

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 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.
Diferentes niveles de normalizacin
Primer nivel de Formalizacin/Normalizacin. (F/N)
1. Eliminar los grupos repetitivos de las tablas individuales.
2. Crear una tabla separada por cada grupo de datos relacionados.
3. Identificar cada grupo de datos relacionados con una clave primaria.
Segundo nivel de F/N
1. Crear tablas separadas para aquellos grupos de datos que se aplican a varios registros.
2. Relacionar estas tablas mediante una clave externa.
Tercer nivel de F/N.
1. Eliminar aquellos campos que no dependan de la clave.
Tercera forma normal Boyce-Codd
1. La forma normal de Boyce-Codd requiere que no existan dependencias funcionales no
triviales de los atributos que no sean un conjunto de la clave candidata
Cuarto Nivel de F/N.
1. En las relaciones varios-con-varios, entidades independientes no pueden ser
almacenadas en la misma tabla (slo se aplica a las relaciones varios-con-varios para
dejarla, al menos, en una relacin 1 a muchos).
Quinto Nivel de F/N.
1. La tabla original debe ser reconstruida desde las tablas resultantes en las cuales a sido
troceada (Los beneficios de aplicar esta regla aseguran que no has creado ninguna
columna extraa en tus tablas y que la estructura de las tablas que has creado sea del
tamao justo que tiene que ser. Es una buena prctica aplicar este regla, pero a no ser
que ests tratando con una extensa estructura de datos probablemente no la
necesitars.).

El proceso de normalizacin
El 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 completo

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 2 DE 14

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
EMPLEADOS(CI., nombre, puesto, salario, emails)

con CI. como clave primaria.

CI. nombre

puesto

salarioemails

111 Juan Prez

Jefe de rea

3000 juanp@ecn.es; jefe2@ecn.es

222Jos SnchezAdministrativo1500 jsanchez@ecn.es


333Ana Daz

Administrativo1500 adiaz@ecn.es; ana32@gmail.com

... ...

...

...

...

Tabla 1

Primera forma normal (1FN)


Una tabla est en 1FN si sus atributos contienen valores atmicos. En el ejemplo, podemos ver que el
atributo emails puede contener ms de un valor, por lo que viola 1FN.
En general, tenemos una relacin R con clave primaria K. Si un atributo M viola la condicin de 1FN,
tenemos dos opciones.
Solucin 1: duplicar los registros con valores repetidos
En general, esta solucin pasa por sustituir R por una nueva relacin modificada R', en la cual:

El atributo M que violaba 1FN se elimina.

Se incluye un nuevo atributo M' que solo puede contener valores simples, de modo que si R'[M']
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 habr n tuplas, que slo varan en que
cada una de ellas guarda uno de los valores que haba en M.

La clave primaria de R' es (K, M'), dado que podr haber valores de K repetidos, para los
valores multivaluados en M.

Siguiendo el ejemplo, tendramos el siguiente esquema para la nueva tabla EMPLEADOS'(a) con clave
primaria (CI., email):
CI. nombre

puesto

salarioemail

111 Juan Prez

Jefe de rea

3000 juanp@ecn.es

111 Juan Prez

Jefe de rea

3000 jefe2@ecn.es

222Jos SnchezAdministrativo1500 jsanchez@ecn.es


333Ana Daz

Administrativo1500 adiaz@ecn.es

333Ana Daz

Administrativo1500 ana32@gmail.com

... ...

...

...
Tabla 2

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


En general, esta solucin pasa por:

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

...

EL PROCESO DE NORMALIZACIN

pag 3 DE 14

sustituir R por una nueva relacin modificada R' que no contiene el atributo M.
Crear una nueva relacin N(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 N tiene como clave (K, M').
Siguiendo el ejemplo, tendramos el siguiente esquema para la nueva tabla EMPLEADOS'(b)
CI. nombre

puesto

salario

111 Juan Prez

Jefe de rea

3000

222Jos SnchezAdministrativo1500
333Ana Daz

Administrativo1500

... ...

...

...

Tabla 3
Y adems tendramos una nueva tabla EMAILS con clave primaria (CI., email):
CI. email
111 juanp@ecn.es
111 jefe2@ecn.es
222jsanchez@ecn.es
333adiaz@ecn.es
333ana32@gmail.com
... ...
Tabla 4

Segunda 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 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:
CI.->nombre, salario, email
puesto->salario

Como la clave es (CI., email), las dependencias de nombre, salario y email son incompletas, por lo
que la relacin no est en 2FN.

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 4 DE 14

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:
Eliminar de R el atributo M.
Crear una nueva relacin N 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'.
Siguiendo el ejemplo anterior, crearamos una nueva relacin con los atributos que tienen dependencia
incompleta:
CI. nombre

puesto

salario

111 Juan Prez

Jefe de rea

3000

222Jos SnchezAdministrativo1500
333Ana Daz

Administrativo1500

... ...

...

...

Tabla 5
Y al eliminar de la tabla original estos atributos nos quedara:
CI. email
111 juanp@ecn.es
111 jefe2@ecn.es
222jsanchez@ecn.es
333adiaz@ecn.es
333ana32@gmail.com
... ...
Tabla 6
Como 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 2FN
y, 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->A y A->B, donde A y B no pertenecen a la clave. La solucin a este

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 5 DE 14

tipo de dependencias est en separar en una tabla adicional N el/los atributos B, y poner como clave
primaria de N el atributo que define la transitividad A.
Siguiendo el ejemplo anterior, podemos detectar la siguiente transitividad:
CI.->puesto
puesto->salario

Por lo tanto la descomposicin sera la siguiente:


CI. nombre

puesto

111 Juan Prez

Jefe de rea

222Jos SnchezAdministrativo
333Ana Daz

Administrativo

... ...

...
Tabla 7

En la nueva tabla PUESTOS, la clave sera el puesto, que tambin queda como clave ajena referenciando
la tabla EMPLEADOS. El resto de las tablas quedan como estaban.

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 6 DE 14

Ejemplo 1. Control de rotaciones


Se requiere llevar un control de las rotaciones de vigilantes de una empresa. Un vigilante cubre un turno
de 6 horas, o si l lo desea puede cubrir un turno doble de 12 horas, pero no ms. Cada semana se
reciben las solicitudes de horas extras por parte de los vigilantes y se realiza la asignacin de rotacin
para los 7 das de la siguiente semana.
Si el vigilante no realiza una peticin de horas extras, en cada ciclo se le asignan 6 horas. Un ciclo se
cumple cuando cada vigilante ha cubierto un turno. Si el vigilante realiza una peticin de horas extras, se
le asigna un turno de 12 horas.
Actualmente la empresa tiene 7 vigilantes contratados, pero se espera contratar ms en los siguientes
meses. Se desea tener un registro con los datos personales de los vigilantes, llevar un control del tiempo
que ha trabajado y generar el reporte de rotacin automticamente cada semana.
Vigilantes Solicitudes Turnos
vigilante vigi

h_inicio

domicilio turn

h_fin

sueldo

desc_turno

f_inicio
f_fin
peticion

Ejemplo 2. Control de material didctico


En una institucin de educacin superior se cuenta con material bibliogrfico grabado en Discos
Compactos (CD) y se requiere llevar un control de los prstamos de estos CD a los alumnos. Cada
alumno tiene un nmero de control de 8 dgitos, su nombre completo y la carrera que cursa. Un CD se
identifica con una clave de 4 dgitos, adems tiene un nombre y se registra la cantidad en existencia y la
cantidad disponible para prstamo.
Un CD se presta al alumno por 3 das, si no lo regresa en el plazo se le har un cargo de $1.20 por cada
da de retraso. Se desea tener un registro de las existencias, los prstamos y las multas generadas, ya sea
diaria, semanal o por periodo determinados por el usuario.
Alumnos Prestamos Discos
alumno disc

clave

carrera

disco

alum

f_prestamo cant_disp
f_entrega

cant_exis

f_entregada
cargo

Ejemplo 3. Control de cheques


Se necesita llevar un control de los cheques de varias instituciones bancarias expedidos como gastos de
/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 7 DE 14

una empresa. Cada cheque se identifica por un nmero no mayor de 8 dgitos o letras, pertenece a una
institucin bancaria, tiene una fecha de expedicin, un cliente que lo recibe y un monto.
Se desea saber cuntos cheques se han expedido en un periodo determinado por el usuario, agrupados
por institucin bancaria y con totales por banco.
Bancos Cheques Clientes
banco ban

cliente

cli
cheque
f_exped
monto

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 8 DE 14

El siguiente ejemplo pertenece a un pequeo texto que prepar para el


curso de Base de Datos I. Espero que sea revisado, comentado, corregido
o aumentado. Tambin necesito sugerencias para preparar otros ejemplos
que sean ms o menos fciles de elaborar y ensear.
A travs del siguiente ejercicio se intenta afirmar los conocimientos de normalizacin con un ejemplo
simplificado de una base de datos para una pequea biblioteca.

CodLibro

Titulo

Autor

Editorial

NombreLector

FechaDev

1001

Variable compleja

Murray Spiegel

McGraw Hill

Prez Gmez, Juan 15/04/2005

1004

Visual Basic 5

E. Petroustsos

Anaya

Ros Tern, Ana

17/04/2005

1005

Estadstica

Murray Spiegel

McGraw Hill

Roca, Ren

16/04/2005

1006

Oracle University

Nancy Greenberg y
Oracle Corp.
Priya Nathan

Garca Roque, Luis 20/04/2005

1007

Clipper 5.01

Ramalho

Prez Gmez, Juan 18/04/2005

McGraw Hill

Esta tabla no cumple el requisito de la Primera Forma Normal (1NF) de slo tener campos atmicos,
pues el nombre del lector es un campo que puede (y conviene) descomponerse en apellido paterno,
apellido materno y nombres. Tal como se muestra en la siguiente tabla.
1NF
CodLibro

Titulo

Autor

Editorial

Paterno Materno Nombres

FechaDev

1001

Variable compleja Murray Spiegel

McGraw Hill Prez

Gmez

Juan

15/04/2005

1004

Visual Basic 5

E. Petroustsos

Anaya

Tern

Ana

17/04/2005

1005

Estadstica

Murray Spiegel

McGraw Hill Roca

Ren

16/04/2005

1006

Oracle University Nancy Greenberg Oracle Corp. Garca

Roque

Luis

20/04/2005

1006

Oracle University Priya Nathan

Oracle Corp. Garca

Roque

Luis

20/04/2005

1007

Clipper 5.01

McGraw Hill Prez

Gmez

Juan

18/04/2005

Ramalho

Ros

Como se puede ver, hay cierta redundancia caracterstica de 1NF.


La Segunda Forma Normal (2NF) pide que no existan dependencias parciales o dicho de otra manera,
todos los atributos no clave deben depender por completo de la clave primaria. Actualmente en nuestra
tabla tenemos varias dependencias parciales si consideramos como atributo clave el cdigo del libro.
Por ejemplo, el ttulo es completamente identificado por el cdigo del libro, pero el nombre del lector en
realidad no tiene dependencia de este cdigo, por tanto estos datos deben ser trasladados a otra tabla.

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 9 DE 14

2NF
CodLibro

Titulo

Autor

Editorial

1001

Variable compleja

Murray Spiegel

McGraw
Hill

1004

Visual Basic 5

E. Petroustsos

Anaya

1005

Estadstica

Murray Spiegel

McGraw
Hill

1006

Oracle University

Nancy
Greenberg

Oracle Corp.

1006

Oracle University

Priya Nathan

Oracle Corp.

1007

Clipper 5.01

Ramalho

McGraw
Hill

La nueva tabla slo contendr datos del lector.

CodLector Paterno Materno Nombres


501

Prez

Gmez

Juan

502

Ros

Tern

Ana

503

Roca

504

Garca

Ren
Roque

Luis

Hemos creado una tabla para contener los datos del lector y tambin tuvimos que crear la columna
CodLector para identificar unvocamente a cada uno. Sin embargo, esta nueva disposicin de la base de
datos necesita que exista otra tabla para mantener la informacin de qu libros estn prestados a qu
lectores. Esta tabla se muestra a continuacin:

CodLibro CodLector

FechaDev

1001

501 15/04/2005

1004

502 17/04/2005

1005

503 16/04/2005

1006

504 20/04/2005

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN
CodLibro CodLector
1007

pag 10 DE 14

FechaDev

501 18/04/2005

Para la Tercera Forma Normal (3NF) la relacin debe estar en 2NF y adems los atributos no clave
deben ser mutuamente independientes y dependientes por completo de la clave primaria. Tambin
recordemos que dijimos que esto significa que las columnas en la tabla deben contener solamente
informacin sobre la entidad definida por la clave primaria y, por tanto, las columnas en la tabla deben
contener datos acerca de una sola cosa.
En nuestro ejemplo en 2NF, la primera tabla conserva informacin acerca del libro, los autores y
editoriales, por lo que debemos crear nuevas tablas para satisfacer los requisitos de 3NF.
3NF
CodLibro

Titulo

1001 Variable compleja


1004 Visual Basic 5
1005 Estadstica
1006 Oracle University
1007 Clipper 5.01

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

CodAutor

pag 11 DE 14

Autor

801 Murray Spiegel


802 E. Petroustsos
803 Nancy Greenberg
804 Priya Nathan
806 Ramalho

CodEditorial

Editorial

901 McGraw Hill


902 Anaya
903 Oracle Corp.

Aunque hemos creado nuevas tablas para que cada una tenga slo informacin acerca de una entidad,
tambin hemos perdido la informacin acerca de qu autor ha escrito qu libro y las editoriales
correspondientes, por lo que debemos crear otras tablas que relacionen cada libro con sus autores y
editoriales.

CodLibro

codAutor

1001

801

1004

802

1005

801

1006

803

1006

804

1007

806

CodLibro

codEditorial

1001

901

1004

902

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN
CodLibro

codEditorial

1005

901

1006

903

1007

901

Y el resto de las tablas no necesitan modificacin.


CodLector Paterno Materno Nombres
501 Prez

Gmez

Juan

502 Ros

Tern

Ana

503 Roca
504 Garca

Ren
Roque

CodLibro CodLector

Luis

FechaDev

1001

501 15/04/2005

1004

502 17/04/2005

1005

503 16/04/2005

1006

504 20/04/2005

1007

501 18/04/2005

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

pag 12 DE 14

EL PROCESO DE NORMALIZACIN

CodAutor

pag 13 DE 14

Autor

801 Murray Spiegel


802 E. Petroustsos
803 Nancy Greenberg
804 Priya Nathan
806 Ramalho

Forma normal de Boyce-Codd


La Forma Normal de Boyce-Codd (o FNBC) es una forma normal utilizada en la normalizacin de bases de
datos. Es una versin ligeramente ms fuerte de la Tercera forma normal (3FN). La forma normal de Boyce-Codd
requiere que no existan dependencias funcionales no triviales de los atributos que no sean un conjunto de la
clave candidata. En una tabla en 3FN, todos los atributos dependen de una clave, de la clave completa y de
ninguna otra cosa excepto de la clave (excluyendo dependencias triviales, como
). Se dice que una
tabla est en FNBC si y solo si est en 3FN y cada dependencia funcional no trivial tiene una clave candidata
como determinante. En terminos menos formales, una tabla est en FNBC si est en 3FN y los nicos
determinantes son claves candidatas.
Ejemplo
Consideremos una empresa donde un trabajador puede trabajar en varios departamentos. En cada
departamento hay varios responsables, pero cada trabajador slo tiene asignado uno. Tendramos una tabla con
las columnas:
IDTrabajador, IDDepartamento, IDResponsable
La nica clave candidata es IDTrabajador (que ser por tanto la clave primaria).
Si aadimos la limitacin de que el responsable slo puede serlo de un departamento, este detalle produce una
dependencia funcional ya que: Responsable Departamento
Por lo tanto hemos encontrado un determinante (IDResponsable) que sin embargo no es clave candidata. Por
ello, esta tabla no est en FNBC. En este caso la redundancia ocurre por mala seleccin de clave. La repeticin
del par [IDDepartamento + IDResponsable] es innecesaria y evitable.
Solamente en casos raros una tabla en 3NF no satisface los requerimientos de la FNBC. Un ejemplo de tal tabla
es (teniendo en cuenta que cada estudiante puede tener ms de un tutor):

Referencia cruzada de Tutor/Estudiante


ID Tutor Nmero de seguro social del tutor ID Estudiante
1078
088-51-0074
31850
1078
088-51-0074
37921
1293
096-77-4146
46224
1480
072-21-2223
31850

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

EL PROCESO DE NORMALIZACIN

pag 14 DE 14

El propsito de la tabla es mostrar qu tutores estn asignados a qu estudiantes. Las claves


candidatas de la tabla son:

{ID Tutor, ID Estudiante}


{Nmero de seguro social del tutor, ID Estudiante}

Otra formulacin
Una forma sencilla de comprobar si una relacin se encuentra en FNBC consiste en comprobar,
adems de que est en 3FN, lo siguiente:

(1) Si no existen claves candidatas compuestas (con varios atributos), est en FNBC.
(2) Si existen varias claves candidatas compuestas y stas tienen un elemento comn, no est en
FNBC.

En la tabla de ejemplo anterior existen dos claves candidatas y ambas comparten el atributo ID
Estudiante, por lo tanto no est en FNBC

/var/www/apps/conversion/tmp/scratch_4/253306059.doc

También podría gustarte