Documentos de Académico
Documentos de Profesional
Documentos de Cultura
pag 1 DE 14
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)
CI. nombre
puesto
salarioemails
Jefe de rea
... ...
...
...
...
Tabla 1
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
Jefe de rea
3000 juanp@ecn.es
Jefe de rea
3000 jefe2@ecn.es
Administrativo1500 adiaz@ecn.es
333Ana Daz
Administrativo1500 ana32@gmail.com
... ...
...
...
Tabla 2
/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
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
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
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.
/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
puesto
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
h_inicio
domicilio turn
h_fin
sueldo
desc_turno
f_inicio
f_fin
peticion
clave
carrera
disco
alum
f_prestamo cant_disp
f_entrega
cant_exis
f_entregada
cargo
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
CodLibro
Titulo
Autor
Editorial
NombreLector
FechaDev
1001
Variable compleja
Murray Spiegel
McGraw Hill
1004
Visual Basic 5
E. Petroustsos
Anaya
17/04/2005
1005
Estadstica
Murray Spiegel
McGraw Hill
Roca, Ren
16/04/2005
1006
Oracle University
Nancy Greenberg y
Oracle Corp.
Priya Nathan
1007
Clipper 5.01
Ramalho
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
FechaDev
1001
Gmez
Juan
15/04/2005
1004
Visual Basic 5
E. Petroustsos
Anaya
Tern
Ana
17/04/2005
1005
Estadstica
Murray Spiegel
Ren
16/04/2005
1006
Roque
Luis
20/04/2005
1006
Roque
Luis
20/04/2005
1007
Clipper 5.01
Gmez
Juan
18/04/2005
Ramalho
Ros
/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
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
/var/www/apps/conversion/tmp/scratch_4/253306059.doc
EL PROCESO DE NORMALIZACIN
CodAutor
pag 11 DE 14
Autor
CodEditorial
Editorial
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
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
/var/www/apps/conversion/tmp/scratch_4/253306059.doc
EL PROCESO DE NORMALIZACIN
pag 14 DE 14
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