Departamento de Informtica Ctedra de Base de Datos I
Facultad Politcnica Seccin NA
Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta Por Jos Rojas Dvalos Basado en Concepcin y Diseo de Bases de Datos Adoracin de MiguelMario Piattini Pro%lemas del es)uema relacional !l es"ue#a relacional$ cual"uiera sea la %or# en la "ue se lleg a ella & o'servacin directa o diseo en dos %ases($ co#o consecuencia de una percepcin %alsa o inco#pleta de la realidad$ puede presentar algunos pro'le#as$ a sa'er) * +ncapacidad para representar ciertos ,ec,os * Redundancias y$ por tanto$ posi'ilidad de inco,erencias * A#'ig-edades$ * Perdida de in%or#acin * Perdida de dependencias %uncionales . Base de datos "ue no re%lejan el #undo real. /leve#os esto a un eje#plo para co#prender #ejor los pro'le#as posi'les. /a ta'la #ostrada a continuacin registra los datos de clientes y pedidos de productos) clid clape clno# pid0 pno#0 pprec0 pi#g0 pid1 pno#1 pprec1 pi#g1 pdnro pd%ec pdcant ceno# Donde) clid es id del cliente$ clape es apellido del cliente$ clno# es no#'re del cliente$ pid0 es id del producto0$ pno#0 es no#'re del producto0$ pprec0 es precio del producto0$ pi#g0 es i#agen del producto0$ pid1 es id del producto1$ pno#1 es no#'re del producto1$ pprec1 es precio del producto1$ pi#g1 es i#agen del producto1$ pdnro es n2#ero de pedido$ pde%ec es %ec,a del pedido$ pdcant es cantidad del pedido y ceno# es no#'re de la co#pa3a por #edio de la cual se env3a el pedido. 4i o'serva#os con atencin$ encontrare#os varios de los pro'le#as #encionados) 005 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta clid clape clno# pid0 pno#0 pprec0 pi#g0 pid1 pno#1 pprec1 pi#g1 pdnro pd%ec pdcant ceno# 0 ;onse <ri 0 4al 1555 4al.jpg 1 A=ucar >555 A=.jpg 0 115001 > !nvios 1 Rojas Marga : Carne 15555 Car.jpg > Papa 6555 pa.jpg 1 1:5101 6 /levo 0 ;onse <ri : Carne 15555 Car.jpg > Papa 6555 pa.jpg : 1:5101 7 /levo : Rojas Clara ? Pan :555 Pan.jpg 05 <as ?5555 <a.jpg > 5@5@01 0 8,o !edundancia) !n la #is#a linea se repetir3an los datos de dos productos di%erentes Por cada pedido ,ay "ue repetir los no#'res y apelidos 4e repite el no#'re de la co#pa3a Perdida de informacin) Ao sa'e#os si pdcant &cantidad de producto pedido( si a cual producto se re%iere. Pro%lemas de modificacin) Pode#os ca#'iar el no#'re y apellido en una %ila y olvidarnos de ca#'iar en otra. !n la pri#era %ila ca#'ia#os B<riC por B<riseldaC y B;onseC por B;onsecaC. Aos olvida#os de ca#'iar en la %ila :. Pro%lemas de insercin) Para agregar los datos de un pedido$ ,ay "ue cargar necesaria#ente los datos del cliente$ para #antener la consistencia de datos dentro de la ta'la. !sto ta#'in da ocasin a "ue se o#ita o se cargue #al alg2n dato del cliente a%ectado por la carga de pedido. Por eje#plo$ una de las %ilas "ue corresponde a un pedido est al#acenada as3) 1 Marga Rojas : Carne 15555 Car.jpg > Papa 6555 pa.jpg 1 1:5101 6 /levo 4i agrega#os un nuevo pedido) 1 *ar+u Rojas 7 /ec,e 6555 /ec.jpg D 4oja D555 so.jpg 6 5D5D01 05 8,o Co#o ve#os se co#eti un error en la carga del no#'re. Pro%lemas de %orrado) 4i se "uiere 'orrar sola#ente un pedido y #antener los datos del cliente$ ser3a i#posi'le. Eea#os en el eje#plo) : Clara Rojas ? Pan :555 Pan.jpg 05 <as ?5555 <a.jpg > 5@5@01 0 8,o 4i "uere#os eli#inar los datos del 2nico #ovi#iento de Clara !o"as nos "uedar3a#os sin datos de ese cliente$ pues tendr3a#os "ue eli#inar todo la %ila. 105 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta ,acia la normali(acin /os eje#plos nos de#uestran "ue tanto la actuali=acin de los #ovi#ientos$ co#o la de los datos de clientes$ nos puede o'ligar a actuali=ar #as de una %ila$ dejando la integridad en #anos de los usuarios$ ade#s de #uc,os otros pro'le#as potenciales. !sta relacin) clid clno# clape pid0 pno#0 pprec0 pi#g0 pid1 pno#1 pprec1 pi#g1 pdnro pd%ec pdcant ceno# 0 <ri ;onse 0 4al 1555 4al.jpg 1 A=ucar >555 A=.jpg 0 115001 > !nvios 1 Marga Rojas : Carne 15555 Car.jpg > Papa 6555 pa.jpg 1 1:5101 6 /levo 0 <ri ;onse : Carne 15555 Car.jpg > Papa 6555 pa.jpg : 1:5101 7 /levo : Clara Rojas ? Pan :555 Pan.jpg 05 <as ?5555 <a.jpg > 5@5@01 0 8,o
de%inida co#o eje#plo atenta contra un principio 'sico en todo diseo) HECHOS DISTINTOS SE DEBEN ALMACENAR EN OBJETOS DIFERENTES /os #todos de diseo son ,erra#ientas "ue ayudan a #ini#i=ar grande#ente estos pro'le#as planteados. 4in e#'argo ante las posi'les dudas de la valide= de un #odelo relacional$ se reco#ienda aplicar a dic,o #odelo un #todo %or#al de deteccin de los errores y generar otro es"ue#a de relaciones "ue cu#plan los re"uisitos. !se #todo %or#al$ constituye la teora de la normalizacin . !sta teor3a trata de evitar las redundancias y los pro'le#as de actuali=acin. As3$ en lugar de la relacin del eje#plo$ se podr3a ,a'er diseado el siguiente es"ue#a relacional) cliente-clid. clape. clnom/ producto-pid. pnom. pprec. pim+/ pedido-pdnro. pdfec. pid. pdcant&clid/ ciaenvio-ceid.cenom%re/ Co#o se ve$ se ,a seguido estricta#ente el principio 'sico anterior#ente enunciado$ separando ,ec,os distintos en relaciones distintas$ de %or#a "ue cada uno de estos es"ue#as recoge un ,ec,o 'ien deter#inado y concreto del #undo real$ con sus correspondientes atri'utos. /a nor#ali=acin es el proceso de si#pli%icar la relacin entre los colu#nas de una %ila. Mediante este proceso un conjunto de datos en una %ila se ree#pla=a por varias %ilas "ue son #s si#ples y predeci'les y por lo tanto$ #s #aneja'les. !a(ones para la normali(acin /a nor#ali=acin se lleva a ca'o$ entre otras ra=ones$ para) Fener estructuras "ue pueda representar las relaciones entre los datos Propiciar la recuperacin de los datos en %or#a sencilla$ en respuesta a las peticiones de consultas y reportes ;acilitar las operaciones de actuali=acin de datos) insercin$ #odi%icacin y eli#inacin Mini#i=ar la necesidad de reorgani=ar o reestructurar los datos cuando surjan nuevas aplicaciones.
Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta /a nor#ali=acin #ejora la calidad del diseo de una aplicacin. !n general un proceso de este tipo i#plica) Desco#poner todos los grupos de datos en ta'las 'idi#ensionales &%ilas y colu#nas( !li#inar todas la relaciones en las "ue los datos no dependan co#pleta#ente de la clave pri#aria de la %ila !li#inar todas las relaciones "ue tengan dependencias transitivas. Antes de entrar a ver las %or#as nor#ales$ repase#os 'reve#ente algunos conceptos de la terminolo+0a relacional) *odelo !elacional-!elational *odel/ Gn #odelo de 'ase de datos en "ue los ele#entos se representan co#o ta'las$ los registros se guardan co#o %ilas de la ta'la y los datos aclaratorios o ca#pos co#o colu#nas de cada %ila. 1a%la-1a%le/ Gna coleccin de registros en los "ue cada uno es %ila y cada ca#po en el registro es una colu#na. /as ta'las ta#'in son conocidas co#o relaciones. 2"emplo: 1a%la cliente 3 sus datos clid clape clnom 0 ;onseca <ricelda Margarita 1 Rojas ;onseca Margarita Maria : Rojas ;onseca Clara Margarita > Prieto Rojas Ana <iselle Atri%utos-Attri%utes/ Gna propiedad de un ele#ento. !n una 'ase de datos relacional$ los ele#entos se guardan co#o ta'las y los atri'utos co#o colu#nas. 2"emplo) clnom <ricelda Margarita Margarita Maria Clara Margarita >05 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta Ana <iselle 4alores atmicos-Atomic values/ Ealores "ue no tienen estructura interna. /os valores at#icos no se pueden desco#poner en valores o tipos de datos #s sencillos 2"emplo) clid 0 Fila-!o5/ Registros guardados en una ta'la. Gna ta'la no de'e tener %ilas duplicadas. Dentro de una %ila$ la in%or#acin se distri'uye en colu#nas. !stas colu#nas de'en tener valores at#icos. /as %ilas son aconteci#ientos de un ele#ento. Fa#'in son conocidas tuplas. 2"emplo) clid clape clnom > Prieto Rojas Ana <iselle 1a%la %ase-Base ta%le/ Gna ta'la de una 'ase de datos "ue sirve co#o 'ase para una consulta al#acenada en la #is#a 'ase de datos. /a ta'la 'ase o %3sica se contrapone al concepto de consulta $ ta'la virtual o vista lgica. 2"emplo) A partir de una la ta%la %ase cliente$ con los siguientes datos) clid clape clnom 0 ;onseca <ricelda Margarita 1 Rojas ;onseca Margarita Maria 605 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta : Rojas ;onseca Clara Margarita > Prieto Rojas Ana <iselle se puede construir una consulta$ ta'la virtual o vista lgica) clape clnom ;onseca <ricelda Margarita Rojas ;onseca Margarita Maria Rojas ;onseca Clara Margarita Prieto Rojas Ana <iselle Atri%uto clave-6e3 attri%ute/ Gn atri'uto "ue es una clave o parte de ella en una ta'la. 2"emplo) el atri'uto cclid en la ta'la cliente. Atri%uto no clave-Non 7e3 attri%ute/ Gn atri'uto "ue no es una clave o no forma parte de ella en una ta'la. 2"emplo) el atri'uto clape en la ta'la cliente. Clave candidata-Candidate 7e3/ Conjunto de uno o #as atri'utos "ue identi%ican una %ila en una ta'la 2"emplo) los atri'utos cclid$clape y clno# en la ta'la cliente. Clave primaria-Primar3 7e3 o P6/ /a clave candidata elegida co#o clave principal para la ta'la. /as regla para esta clave dice "ue su valor de'e ser 2nico y no nulo. 2"emplo) clid en la ta'la cliente. Clave fornea. e8terna o e8tran"era -Forei+n 7e3 o F6/ Conjunto de una o #as colu#nas en una ta'la "ue no son la clave principal de esa ta'la pero lo son @05 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta de otra ta'la. Gna clave %ornea es una re%erencia a una sola %ila en otra ta'la "ue contenga el valor "ue concuerda con la clave principal. /a integridad re%erencial asegura "ue no ,aya valores no vlidos de clave %ornea en la ta'la. 2"emplo) clid en la ta'la pedido "ue de'e concordar en valor con clid en cliente "ue es la clave pri#aria&PH( en dic,a ta'la. Clave alterna-Alternate 6e3/ Atri'uto&s( clave candidata "ue no se eligi&(&eron( co#o clave pri#aria. 2"emplo: clape y clno# en conjuncin %or#an la clave alterna de la ta'la cliente.
Primera forma normal-9FN/ !s la lla#ada %or#a at#ica por el ,ec,o de "ue es i#posi'le dividirla a2n #s. !sta %or#a nor#al es la "ue no per#ite #ult3ples ele#entos en una %ila co#o podr3a ser el eje#plo "ue se #uestra a continuacin) clid clno# clape pid0 pno#0 pprec0 pi#g0 pid1 pno#1 pprec1 pi#g1 pdnro pd%ec pdcant ceno# 0 <ri ;onse 0 4al 1555 4al.jpg 1 A=ucar >555 A=.jpg 0 115001 > !nvios 1 Marga Rojas : Carne 15555 Car.jpg > Papa 6555 pa.jpg 1 1:5101 6 /levo 0 <ri ;onse : Carne 15555 Car.jpg > Papa 6555 pa.jpg : 1:5101 7 /levo : Clara Rojas ? Pan :555 Pan.jpg 05 <as ?5555 <a.jpg > 5@5@01 0 8,o Co#o se nota en el eje#plo$ se registra #as de un pedido del cliente en una sola %ila. !l pri#er pro'le#a aparecer3a cuando el cliente tiene #as de 1 pedidos. 4i se #antiene el l3#ite de registrar ,asta dos pedidos por cada cliente ser3a i#posi'le registrar un tercer #ovi#iento. /a %or#a correcta de estructurar los datos es separar la parte "ue se repite. /os datos repetidos son los de productos$ por lo tendria#os) producto&pid$pno#$pprec$pi#g( I lo "ue resta) cliente&clid$clape$clno#$pdnro$pd%ec$pid$pdcant$ceno#( /as ta'las #ostradas estn en primera forma normal. A propsito$ recorde#os lo "ue eJpresa la Feor3a Relacional$ con respecto a esto) BSe dice )ue una relacin est en rimera !orma normal"#FN$ si 3 slo si todos los dominios simples su%3acentes contienen slo valores atmicos. es decir cuando no admiten +rupos repetitivosC. 705 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta Se+unda forma normal-'FN/ !sta %or#a nor#al es igual a la pri#era$ salvo por el ,ec,o de "ue co#prende adicional#ente el criterio "ue todos los ca#pos "ue no sean clave principal de'en depender por co#pleto del valor de la clave principal. !l tr#ino Bpor co#pletoC es #uy i#portante en este caso$ dada la posi'ilidad de "ue una clave principal de co#ponga de #as de un ca#po. 4i anali=a#os la relacin y elegi#os pid co#o clave pri#aria) producto&pid$pno#$pprec$pi#g( Kaga#os el ensayo) pid L pno#$ "ue signi%ica "ue pno# depende %uncional y co#pleta#ente de pid$ es decir de la clave pri#aria$ pid L pprec$ ta#'in es una dependencia %uncional directa$ co#o en) pid L pi#g Por lo tanto$ pode#os decir "ue la relacin producto est en se+unda forma normal. A,ora elegi#os clave pri#aria y analice#os la relacin) cliente&clid$clape$clno#$pdnro$pd%ec$pid$pdcant$ceno#( Aota#os "ue) clid L clape clid L clno# Por lo tanto separa#os la relacin anali=ada en) cliente&clid$ clape$ clno#( pedido&pdnro.pd%ec$pid$pdcant$ceno#$clid( /a relacin cliente est en se+unda forma normal. I la relacin pedidoM 4a'e#os "ue) pdid L pd%ec$ pues el pedido se reali=a en una %e,a dada$ pdid L pid$ siendo "ue el pedido es de un producto$ pdid L pdcant$ en una cantidad deter#inada$ pdid L ceno# $ es trasportada por una co#pa3a de envio$ y pdid L clid$ es para un cliente. D05 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta !ntonces pode#os decir "ue la relacin pedido est en se+unda forma normal. Por lo eJpuesto $ pode#os decir "ue a#'as relaciones estn en segunda %or#a nor#al$ "ue es de%inida por la Feor3a Relacional co#o sigue) BSe dice )ue una relacin est en %e&'nda !orma normal"(FN$ s0 3 solo s0: : 2st en 9FN : 1odos los atri%utos no clave dependen por completo de la clave primaria;& 1ercera forma normal-#FN/ !sta %or#a nornal esta'lece "ue los atri'utos "ue %or#an parte de una relacin son #utua#ente independientes$ eJcepcin ,ec,a de la dependencia esta'lecida en la segunda %or#a nor#al. !n este punto es i#portante destacar "ue para una relacin est en :;A$ de'e estar en 1;A. Asocie#os lo eJpuesto a un eje#plo. Agregue#os a la ta'la pedido el atri'uto "ue identi%ica a la co#pa3a de envios) pedido&pdnro.pd%ec$pid$pdcant$ceid$ceno#$clid( 4a'e#os "ue) pdid L pd%ec pdid L pid pdid L pdcant pdid L clid Pero ta#'in "ueN pdid L ceid ceid L ceno# y por lo tanto) pdid L ceno# !s decir ,ay una dependencia %uncional transitiva entre ceno# y pdid. Para "ue "uede en tercera %or#a nor#al separa#os) cenvio&ceid$ ceno#( pedido&pdid.pd%ec$pid$pdcant$ceid$clid( Reto#ando lo "ue es la tercera %or#a nor#al recorde#os lo "ue dice la Feor3a Relacional al respecto) ?05 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt Departamento de Informtica Ctedra de Base de Datos I Facultad Politcnica Seccin NA Universidad Nacional de Asuncin Docente: os !o"as Dvalos Unidad #: Dise$o de %ases de datos relacionales #&'& Normali(acin Documentos de consulta BSe dice )ue una relacin est en Tercera !orma normal")FN$ s0 3 solo s0: : 2st en 'FN : 1odos los atri%utos no claves dependen de manera no transitiva de la clave primaria;& Conclusin Concluyendo$ nuestra 'ase de datos en la tercera %or#a nor#al estar3a constituida por las siguientes relaciones) cliente&clid$ clape$ clno#( producto&pid$pno#$pprec$pi#g( cenvio&ceid$ ceno#( pedido&pdid$pd%ec$pid$pdcant$ceid$clid( !n esta ulti#a ta'la eJisten) ;H0) ceid con re%erencia cenvio ;H1) pid con re%erencia a producto ;H:) clid con re%erencia a cliente Normali(acin adicional -enlaces/ ;or#a nor#al de Boyce9Codd Cuarta %or#a nor#al Ouinta %or#a nor#al ;or#a nor#al do#inioclave Desnor#ali=acin Fin del documento 0505 560001 10)01)57 #ediaJR8JA4D%puna150191'd0naunidad:docu#entosdeconsultad5:951.odt