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< )<
Sintésis y Caracterización de Electrodos de Titanio Modificados A Base de Ir02 y Ta205 Construidos Por Déposito Electroquímico para La Generación de Radicales Hidroxilo - Reest