You are on page 1of 7

Bases de Datos: Formas Normales (Optimizar Tablas)

Autor: Carlos Carmona


La normalizacin es un proceso que pretende conseuir tablas con una estructura ptima !
e"caz# $l proceso de normalizacin est% basado en lorar la independencia de los datos
respecto a las aplicaciones que los usan#
Antes de empezar el proceso& se 'an de conocer las tablas que inter(endr%n ! las relaciones
que las unen# )i no se conocen a partir del an%lisis pre(io& se buscan todos los nombres
(sustanti(os) que 'an sido empleados en la de"nicin del problema# Alunos de esos nombres
ser%n las entidades& otros depender%n de ellas ! ser%n los atributos# Otros no *ormar%n parte ni
de las entidades ni de los atributos& son parte del lenua+e necesario para describir el problema
a solucionar mediante la creacin de una base de datos#
$+emplo
$+emplo pr%ctico#
,,###a cada cliente& al pasar por Ca+a### se marcan por la ca+a reistradora los art-culos que 'a
comprado# Con los datos de los art-culos se 'ace una *actura por el importe total de las
mercanc-as adquiridas que se imprime ! se entrea al cliente# Los datos de la *actura se
almacenan para su posterior tratamiento in*orm%tico que comprende###..#
Las tablas son sustanti(os& por lo que tenemos los siuientes: cliente& Ca+a& ca+a reistradora&
art-culos& datos de los art-culos& *actura& importe total& mercanc-as adquiridas& datos de la
*actura# De estos nombres& alunos son atributos de otros: datos de los art-culos ! art-culos&
datos de la *actura& importe total ! *actura# De cada cliente no se piden datos& por lo que
aunque sea una tabla& si no se necesitan sus datos& no se crear% esa entidad# Ca+a con
ma!/scula se re"ere a un ob+eto con el que se realizan procesos& por lo que no se necesita
almacenar in*ormacin de ellos# De cada una de las ca+as reistradoras& tal (ez se necesite para
las *acturas& el n/mero de ca+a& por lo que se considera una entidad m%s# 0ercanc-as adquiridas
! art-culos que 'a comprado son sinnimos& por lo que solo se tratar% de art-culos#
Las tablas encontradas tras el an%lisis son: art-culos& *actura ! ca+a reistradora# Ca+a
reistradora se puede considerar un atributo de *actura& por lo que tenemos dos tablas#
Las relaciones se pueden encontrar conociendo todos los (erbos que aparecen en la de"nicin
del problema# )e eliminan aquellos (erbos que son necesarios para el lenua+e ! se buscan
aquellos que implican dos o m%s entidades (sustanti(os) que !a se 'an encontrado#
$n el e+emplo 'an aparecido los (erbos: pasar& se marcan& 'a comprado& se 'ace una *actura&
imprime& entrea& almacena# De estos (erbos& los que asocian entidades son: marcar& comprar#
Los (erbos pasar& 'acer *actura& imprimir& entrear& almacenar& se re"eren a procesos que se
(an a realizar& no a asociaciones entre entidades#
)e 'an obtenido las siuientes entidades con sus relaciones: clientes& comprar art-culos !
marcar art-culos en *actura# Como no se necesitan los datos de los clientes& queda la relacin
marcada (en la ca+a reistradora) que une las tablas art-culos& ! *actura# La operacin marcar
en la ca+a reistradora sini"ca que los art-culos se inclu!en en una *actura que se entrear% al
cliente para su liquidacin& consiui1ndose obtener el modelo entidad2relacin siuiente:
3a! cinco ni(eles de normalizacin& siendo cada (ez m%s comple+o el proceso de obtencin de
tablas normalizadas# 4ara bases de datos relati(amente sencillas se puede terminar la
normalizacin en el tercer ni(el o tercera *orma normal#
$l proceso de normalizacin se basa en la descomposicin sin p1rdida de las tablas que est%n
en una *orma normal in*erior& obteni1ndose una *orma normal superior# $l proceso de
Pgina 1 de 7
descomposicin sin p1rdida& sini"ca que se 'a de di(idir o descomponer la tabla en otras con
menor cantidad de atributos sin que 'a!a p1rdida de in*ormacin#
Formas normales ! dependencias *uncionales#
4rimera Forma Normal o 5FN:
La 4rimera Forma Normal& o 5FN& es la m%s elemental de todas# 6na tabla est% en 5FN si el
(alor que contiene un atributo de un reistro& un campo& es /nico ! elemental# $n cada uno de
los atributos slo se puede incluir un dato& aunque sea compuesto& pero no se pueden incluir
una lista de datos# 4or e+emplo& no se pueden incluir en el atributo Direccin el domicilio
'abitual ! el de (acaciones7 'abr-a que crear dos reistros que se di*erenciar%n por el atributo
Direccin:
Tabla de una base de datos
N8F Ape Nom Dir C4ost 4obl 4ro(
5 9arc-a Francisco C:0ar-n 5; <<;=> O(iedo Asturias
?
)%nc'e
z
Luisa
C:Tener-as <@
C:Aamorta ;B
>B@B>
B@B>B
Ciales
Bueu
Calladolid
4onte(edr
a
$sta tabla no est% en 5FN& !a que el cliente con 8d ? tiene dos direcciones# 4ara poder tener
esta tabla en 5FN se 'ace el siuiente cambio:
Tabla de una base de datos
N8F Ape Nom Dir C4ost 4obl 4ro(
5 9arc-a Francisco C:0ar-n 5; <<;=> O(iedo Asturias
?
)anc'e
z
Luisa C:Tener-as <@ >B@B> Ciales Calladolid
?
)%nc'e
z
Luisa C:Aamorta ;B B@B>B Bueu
4onte(edr
a
)eunda Forma Normal o ?FN:
)e dice que un atributo o con+unto de atributos tiene dependencia *uncional de otro u otros si a
cada uno de los primeros le corresponde slo uno de los seundos#
4or e+emplo& 'a! una dependencia *uncional entre N8F ! el atributo Aazn )ocial& !a que a cada
N8F le corresponde una /nica Aazn )ocial#
6na tabla est% en )eunda Forma Normal o ?FN cuando est% en 5FN ! todo atributo que no
pertenece a la cla(e primaria tiene una dependencia *uncional de la cla(e completa ! no de
parte de ella# Lueo& si la cla(e principal est% *ormada por un solo atributo ! !a est% en 5FN& !a
estar% en ?FN#
4ara trans*ormar una tabla con dependencias *uncionales& cu!a cla(e est% *ormada por m%s de
un campo& en una tabla en ?FN se necesitan crear tablas nue(as para eliminar las
dependencias *uncionales& las tablas nue(as tendr%n los atributos que dependen
*uncionalmente de la cla(e ! los que *orman la parte de la cla(e de la que dependen# 6na (ez
creadas las nue(as tablas& se eliminan de la tabla primera los atributos que ten-an
dependencias *uncionales#
$n el e+emplo anterior& tanto el nombre como los apellidos dependen del N8F# )e crea una nue(a
tabla que contiene los atributos: N8F& nombre ! apellidos& elimin%ndose de la tabla cliente los
atributos nombre ! apellidos& quedando las siuientes tablas:
Tabla en seunda *orma normal
N8F Dir C4ost 4obl 4ro(
5 C: 0ar-n nD5; <<;=> O(iedo Asturias
? C: Tener-as nD<@ >B@B> Ciales Calladolid
Pgina 2 de 7
? C: Aamorta nD;B B@B>B Bueu
4onte(edr
a
Tercera Forma Normal o <FN:
)e dice que 'a! dependencia *uncional transiti(a entre dos atributos cuando un atributo que no
pertenece a la cla(e primaria permite conocer el (alor de otro atributo#
4or e+emplo: dada la tabla clientes& entre los atributos pro(incia ! pre"+o tele*nico 'a! una
dependencia *uncional transiti(a& !a que el primero permite conocer el (alor del seundo#
6na tabla est% en Tercera Forma Normal o <FN si est% en ?FN ! no eEisten atributos que no
pertenezcan a la cla(e primaria que puedan ser conocidos mediante otro atributo que no *orma
parte de la cla(e primaria& es decir& no 'a! dependencias *uncionales transiti(as#
)iuiendo con el e+emplo anterior& cuando 'a! dependencias *uncionales transiti(as& se crea
una nue(a tabla con los atributos que tienen dependencia *uncional transiti(a& elimin%ndose el
atributo dependiente de la tabla oriinal#
)i nos "+amos en esta tabla:
Tabla en seunda *orma normal
N8F Dir C4ost 4obl 4ro(
5 C: 0ar-n nD5; <<;=> O(iedo Asturias
? C: Tener-as nD<@ >B@B> Ciales Calladolid
? C: Aamorta nD;B B@B>B Bueu
4onte(edr
a
La direccin& la poblacin ! la pro(incia dependen del cdio postal& que no *orma parte de la
cla(e primaria# Descomponiendo sin perdida una (ez m%s& obtenemos estas dos tablas:
Tabla en tercera *orma
normal
N8F Dir
5 C: 0ar-n nD5;
? C: Tener-as nD<@
? C: Aamorta nD;B
4ara solucionar alunos problemas de dependencias *uncionales& que no se pod-an resol(er solo
con la normalizacin en <FN& se 'an propuesto tres *ormas normales adicionales# La
normalizacin m%s all% de <FN queda al +uicio del diseFador de la base de datos# A partir de esa
*orma normal& la eliminacin de dependencias *uncionales pasa por la creacin de tablas con
multitud de in*ormacin redundante& con un posible aumento de tamaFo& por lo que se 'a de
optar entre una optimizacin del diseFo ! una optimizacin del tamaFo# Lle%ndose a di(ersas
soluciones de compromiso entre ambos par%metros# )al(o eEcepciones& con la <FN o a lo sumo&
la FNBC (que (eremos a continuacin) es m%s que su"ciente& ! lle(ar la normalizacin m%s all%
ser% m%s per+udicial que bene"cioso#
Forma Normal de Bo!ce2Codd o FNBC:
Pgina 3 de 7
Tabla en seunda *orma
normal
N8F Ape Nom
5 9arc-a Francisco
? )%nc'ez Luisa
Tabla en tercera *orma normal
C4ost Dir 4obl 4ro(
<<;=> C: 0ar-n nD5; O(iedo Asturias
>B@B> C: Tener-as nD<@ Ciales Calladolid
B@B>B C: Aamorta nD;B Bueu
4onte(edr
a
6na tabla est% en Forma Normal de Bo!ce2Codd o FNBC si solo eEisten dependencias
*uncionales elementales que dependan de la cla(e primaria o de cualquier cla(e alternati(a# )i
la cla(e primaria est% *ormada por un solo atributo ! est% en <FN& !a est% en FNBC#
6n e+emplo t-pico para mostrar una tabla que& estando en <FN& mantiene dependencias
*uncionales& sin relacin con el e+emplo seuido 'asta este momento& es una tabla que posee
los atributos direccin& cdio postal ! poblacin& suponiendo que a poblaciones di*erentes le
corresponden cdios postales distintos#
Tabla en tercera *orma normal
C4ost Dir 4obl
<GGG=
C: 4antano Camarillas
nD5;
0urcia
@>B=; A(# Buenos Aires nD5? 0adrid
$n este caso 'a! dependencia entre el cdio postal ! la poblacin& !a que& conocido el cdio
postal se puede conocer la poblacin& ! conocida la direccin ! la poblacin& se conoce el
cdio postal# 4ara trans*ormar la tabla en una tabla en FNBC se crea una tabla de cdios
postales ! poblaciones& eliminando de la tabla oriinal la poblacin& obteni1ndose dos tablas&
una con los atributos direccin ! cdio postal ! otra con el cdio postal ! la poblacin:
Tabla en *orma normal de Bo!ce2Codd
C4ost Dir
<GGG= C: 4antano Camarillas nD5;
@>B=; A(# Buenos Aires nD5?
Cuarta Forma Normal o @FN:
$Eiste dependencia *uncional multi(alorada o de m/ltiples (alores si& dados tres atributos de
una tabla& si para cada (alor del primer atributo eEisten m/ltiples (alores en el seundo
atributo ! no 'a! ninuna relacin entre el tercer atributo ! el primero& a no ser a tra(1s del
seundo atributo#
6na tabla est% en Cuarta Forma Normal o @FN si est% en FNBC ! las /nicas dependencias
*uncionales multi(aloradas que eEisten son las dependencias *uncionales de la cla(e con los
atributos que no *orman parte de la misma# $stas dependencias multie(aluadas de la cla(e con
los atributos que no *orman parte de la misma son dependencias tri(iales& por lo que alunos
autores dicen que no eEisten dependencias multie(aluadas en @FN#
)uponamos que los atributos de la tabla transporte son conductor& tipo de (e'-culo ! tipo de
cara& *ormando los tres campos la cla(e primaria# A cada conductor se le puede asinar un
(e'-culo u otro ! cada (e'-culo puede transportar (arios tipos de cara#
Tabla que no esta en cuarta *orma
normal
Transporte
Conductor Tipo Ce'-culo Tipo Cara
Huan Furoneta 4erecederos
0arcos Furoneta 4erecederos
Huan Furoneta 0uebles
0arcos Furoneta 0uebles
Pgina 4 de 7
Tabla en *orma normal de Bo!ce2Codd
C4ost 4obl
<GGG= 0urcia
@>B=; 0adrid
Huan Camin 0udanza
0arcos Camin 0udanza
Con estas condiciones& los conductores son independientes de la cara7 el tipo de (e'-culos
depende del conductor ! el tipo de (e'-culo depende de la cara# $n este caso 'a!
dependencias *uncionales multi(aloradas& !a que alunos atributos que *orman la cla(e
dependen de otro atributo que tambi1n la *orman#
4ara conseuir que esta tabla est1 en @FN se necesita crear dos nue(as tablas en luar de la
tabla actual& manteni1ndose en cada una de ellas una dependencia m/ltiple# La primera tabla
tendr% los atributos conductor ! tipo de (e'-culo ! la seunda& tipo de (e'-culo ! tipo de cara#
De este modo la tabla en @FN debido a que la cla(e primaria de ambas tablas son todos los
campos que la *orman# Aesultado:
Tabla en cuarta *orma
normal
Tipo Ce'-culo Tipo Cara
Furoneta 4erecederos
Furoneta 4erecederos
Furoneta 0uebles
Furoneta 0uebles
Camin 0udanza
Camin 0udanza
Iuinta Forma Normal o BFN:
)e dice que 'a! dependencia de HO8N& de unin o de producto si una tabla tiene dependencia de
Junin con (arias de sus Jpro!ecciones ! se puede obtener la tabla por medio de la unin de
dic'as pro!ecciones#
4ro!eccin
J4ro!eccin:
Creacin de una tabla cu!os elementos *orman un subcon+unto de una tabla dada# )e inclu!en
todas las "las ! alunas columnas#
6nin
J6nin:
Formar& a partir de dos tablas& una nue(a con todos los campos de una de ellas ! los reistros
de ambas& eEcepto los repetidos# Ambas tablas 'an de tener el mismo rado ! las mismas
columnas#
6na tabla esta en Iuinta Forma Normal (BFN) o Forma Normal de 4ro!eccin26nin si est% en
@FN ! las /nicas dependencias que eEisten son las dependencias de unin de una tabla con sus
pro!ecciones relacion%ndose entre las distintas pro!ecciones mediante la cla(e primaria o
cualquier cla(e alternati(a# La BFN se emplea cuando en una misma tabla tenemos muc'a
Pgina 5 de 7
Tabla en cuarta *orma
normal
Conductor Tipo Ce'-culo
Huan Furoneta
0arcos Furoneta
Huan Furoneta
0arcos Furoneta
Huan Camin
0arcos Camin
in*ormacin redundante& con pocos atributos o cuando una tabla posee una ran cantidad de
atributos ! se 'ace por ello inmane+able#
4ara conseuir que una tabla @FN con ran cantidad de atributos est1 en BFN& se parte la tabla
oriinal en tantas tablas como se desee& teniendo cada una de ellas en com/n con las dem%s
los campos que *orman la cla(e primaria en la tabla oriinal#
$+emplo para el caso de una tabla que posee una ran cantidad de atributos:
Tabla
8d
Datos
Familiares
Datos
4ro*esionales
Datos
4ersonales
Datos Cl-nicos
5 D5 D? D< D@ DB D; DK D> D= D5G D55 D5?
$n este caso tenemos una empresa donde se uardan los datos personales& *amiliares&
pro*esionales ! cl-nicos de cada empleado en una /nica tabla llamada $mpleados# )i esta tabla
est% !a en @FN& se puede partir en las tablas empleados2personal& empleados2*amilia&
empleados2pro*esional& empleados2cl-nicos7 de este modo& la (elocidad de acceso ! la estin
de datos por cada departamento de la empresa se simpli"ca& al no tenerse que crear nin/n
tipo de restriccin sobre determinados atributos que no 'an de ser (istos por el personal que no
los necesite#
$l resultado ser-a:
Tabla en quinta *orma normal
8d Datos Familiares
5 D5 D? D<
Tabla en quinta *orma normal
8d Datos 4ersonales
5 DK D> D=
$+emplo para el caso de una tabla que posee muc'a in*ormacin redundante& con pocos
atributos:
Tabla que no esta en quinta *orma
normal
Biblioteca
T-tulo Fec'a )ocio
T5 FT )5
T? F6 )?
T< FC )5
T@ F9 )@
T5 F3 )<
T? FT )@
T< FC )<
Pgina 6 de 7
Tabla en quinta *orma normal
8d Datos 4ro*esionales
5 D@ DB D;
Tabla en quinta *orma normal
8d Datos Cl-nicos
5 D5G D55 D5?
)i se tiene una tabla de pr1stamo de libros de una biblioteca& con los atributos t-tulo& *ec'a de
pr1stamo ! n/mero de socios que 'a tomado prestado el libro& eEisten multitud de reistros que
se crean diariamente en esa tabla& pero para cada libro o para cada socio 'abr% pocos reistros&
con lo que una consulta para esa tabla como: LCu%les son los libros le-dos por un determinado
socioM& puede tener una (elocidad de respuesta ele(ada# )i esta tabla se parte en las tablas
t-tulo2*ec'a& t-tulo2socio ! socio2*ec'a& cualquier consulta similar a la anterior tendr% un tiempo
de respuesta tolerable& ! cuando sea necesario& se podr%n realizar consultas que impliquen los
datos de las tres tablas#
$l resultado ser-a pues:
Tabla en quinta *orma normal
T-tulo2Fec'a
T-tulo Fec'a
T5 FT
T? F6
T< FC
T@ F9
T5 F3
T? FT
T< FC
Tabla en quinta *orma normal
Fec'a2)ocio
Fec'a )ocio
FT )5
F6 )?
FC )5
F9 )@
F3 )<
FT )@
FC )<
N con esto conclu!o el art-culo& espero 'aber resuelto todas las dudas posibles sobre
optimizacin de tablas mediante las *ormas normales#
4D: 0i m%s sincera en'orabuena a todos los que 'a!%is tenido el (alor de leeros todo el
art-culo###
Pgina 7 de 7
Tabla en quinta *orma normal
T-tulo2)ocio
T-tulo )ocio
T5 )5
T? )?
T< )5
T@ )@
T5 )<
T? )@
T< )<

You might also like