Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2012
12gina 2 de 23
=os RDB45 'ro'orcionan el a(biente adecuado 'ara gestionar una base de datos.
12gina 3 de 23
Reglas de Codd
&n 1*%. el Dr. &dgar @ranA Codd 'ublic- trece reglas 'ara evaluar si un DB45 :DataBase 4anage(ent 5+ste(; 'uede considerarse un RDB45 :Relational DataBase 4anage(ent 5+ste(;< o dic?o (2s concisa(ente< si un siste(a de bases de datos 'uede considerarse o no relacional. Re la 0 1ara 9ue un siste(a se deno(ine siste(a de ad(inistraci-n de bases de datos relacionales< debe usar :e>clusiva(ente; sus ca'acidades relacionales 'ara gestionar la base de datos. Re la de acceso aranti#ado. 1ara todos + cada uno de los datos :valores at-(icos; de una Base de Datos Relacional :BDR; se garanti,a 9ue son accesibles a nivel l-gico utili,ando una co(binaci-n de no(bre de tabla< valor de clave 'ri(aria + no(bre de colu(na.
Cual9uier dato al(acenado en una BDR tiene 9ue 'oder ser direccionado un8voca(ente. 1ara ello ?a+ 9ue indicar en 9u# tabla est2< cu2l es la colu(na + cu2l es la )ila :(ediante la clave 'ri(aria;. 1or tanto se necesita el conce'to de clave 'ri(aria< 9ue no es so'ortado en (uc?as i('le(entaciones. &n estos casos< 'ara lograr un e)ecto si(ilar se 'uede ?acer lo siguiente: Bacer 9ue los atributos clave 'ri(aria no 'uedan ser nulos :6OC 6U==;. Crear un 8ndice Dnico sobre la clave 'ri(aria. 6o eli(inar nunca el 8ndice.
$ratamiento sistem%tico de valores nulos. =os valores nulos :9ue son distintos de la cadena vac8a< blancos< 0< ...; se so'ortan en los 5EBD total(ente relacionales 'ara re'resentar in)or(aci-n desconocida o no a'licable de (anera siste(2tica< inde'endiente(ente del ti'o de datos.
5e reconoce la necesidad de la e>istencia de valores nulos< 'ara un trata(iento siste(2tico de los (is(os. Ba+ 'roble(as 'ara so'ortar los valores nulos en las o'eraciones relacionales< es'ecial(ente en las o'eraciones l-gicas. =-gica trivaluada. &s una 'osible soluci-n< e>isten tres :no dos; valores de verdad: Ferdadero< @also + Desconocido :null;. 5e crean tablas de verdad 'ara las o'eraciones l-gicas: o o o o o null G null H null Ferdadero G null H null @also G null H @also Ferdadero O null H Ferdadero etc.
12gina 4 de 23
Diccionario din%mico en l&nea 'asado en el modelo relacional . =a descri'ci-n de la base de datos se re'resenta a nivel l-gico de la (is(a (anera 9ue los datos nor(ales< de (odo 9ue los usuarios autori,ados 'ueden a'licar el (is(o lenguaje relacional a su consulta< igual 9ue lo a'lican a los datos nor(ales. Re la del su'len ua(e de datos com)leto Un siste(a relacional debe so'ortar varios lenguajes + varios (odos de uso de ter(inal :ej: rellenar )or(ularios< etc.;. 5in e(bargo< debe e>istir al (enos un lenguaje cu+as sentencias sean e>'resables< (ediante una sinta>is bien de)inida< co(o cadenas de caracteres + 9ue sea co('leto< so'ortando:
De)inici-n de datos De)inici-n de vistas 4ani'ulaci-n de datos :interactiva + 'or 'rogra(a; =i(itantes de integridad =i(itantes de transacci-n :iniciar< reali,ar< des?acer; :Begin< co((it< rollbacA;. /de(2s de 'oder tener inter)aces (2s a(igables 'ara ?acer consultas< etc. sie('re debe de ?aber una (anera de ?acerlo todo de (anera te>tual< 9ue es tanto co(o decir 9ue 'ueda ser incor'orada en un 'rogra(a tradicional. Un lenguaje 9ue cu('le esto en gran (edida es 5"=.
Re la de actuali#acin de vistas Codas las vistas 9ue son te-rica(ente actuali,ables se 'ueden actuali,ar 'or el siste(a.
&l 'roble(a es deter(inar cu2les son las vistas te-rica(ente actuali,ables< +a 9ue no est2 (u+ claro. Cada siste(a 'uede ?acer unas su'osiciones 'articulares sobre las vistas 9ue son actuali,ables.
*nsercin, actuali#acin ! 'orrado de alto nivel =a ca'acidad de (anejar una relaci-n base o derivada co(o un solo o'erando se a'lica no s-lo a la recu'eraci-n de los datos :consultas;< sino ta(bi#n a la inserci-n< actuali,aci-n + borrado de datos. &sto es< el lenguaje de (anejo de datos ta(bi#n debe ser de alto nivel. /lgunas bases de datos inicial(ente s-lo 'od8an (odi)icar las tu'las de la base de datos de una en una :un registro de cada ve,;. *nde)endencia +&sica de los datos
12gina . de 23
=os 'rogra(as de a'licaci-n + actividades del ter(inal 'er(anecen inalterados a nivel )isico cuando9uiera 9ue se realicen ca(bios en las re'resentaciones de al(acena(iento o (#todos de acceso. &l (odelo relacional es un (odelo l-gico de datos< + oculta las caracter8sticas de su re'resentaci-n )8sica. &s la ca'acidad de (odi)icar el es9ue(a interno sin tener 9ue alterar el es9ue(a conce'tual :o los e>ternos;. 1or eje('lo< 'uede ser necesario reorgani,ar ciertos arc?ivos )8sicos con el )in de (ejorar el rendi(iento de las o'eraciones de consulta o de actuali,aci-n de datos. la inde'endencia )8sica se re)iere s-lo a la se'araci-n entre las a'licaciones + las estructuras )8sicas de al(acena(iento. *nde)endencia l ica de los datos =os 'rogra(as de a'licaci-n + actividades del ter(inal 'er(anecen inalterados a nivel l-gico cuando 9uiera 9ue se realicen ca(bios a las tablas base 9ue 'reservan la in)or(aci-n.
Cuando se (odi)ica el es9ue(a l-gico 'reservando in)or(aci-n :no valdr8a '.ej. eli(inar un atributo; no es necesario (odi)icar nada en niveles su'eriores. &je('los de ca(bios 9ue 'reservan la in)or(aci-n: o /adir un atributo a una tabla base. o 5ustituir dos tablas base 'or la uni-n de las (is(as. Usando vistas de la uni-n 'uedo recrear las tablas anteriores...
*nde)endencia de inte ridad. =os li(itantes de integridad es'ec8)icos 'ara una deter(inada base de datos relacional deben 'oder ser de)inidos en el sublenguaje de datos relacional< + al(acenables en el cat2logo< no en los 'rogra(as de a'licaci-n.
&l objetivo de las bases de datos no es s-lo al(acenar los datos< sino ta(bi#n sus relaciones + evitar 9ue estas :li(itantes; se codi)i9uen en los 'rogra(as. 1or tanto en una BDR se deben 'oder de)inir li(itantes de integridad. Cada ve, se van a('liando (2s los ti'os de li(itantes de integridad 9ue se 'ueden utili,ar en los 5EBDR< aun9ue ?asta ?ace 'oco eran (u+ escasos. Co(o 'arte de los li(itantes in?erentes al (odelo relacional :)or(an 'arte de su de)inici-n; est2n: o Una BDR tiene integridad de entidad. &s decir< toda tabla debe tener una clave 'ri(aria. o Una BDR tiene integridad re)erencial. &s decir< toda clave e>terna no nula debe e>istir en la relaci-n donde es 'ri(aria.
*nde)endencia de distri'ucin"
12gina 3 de 23
Re la de la no su'versin 5i un siste(a relacional tiene un lenguaje de bajo nivel :un registro de cada ve,;< ese bajo nivel no 'uede ser usado 'ara saltarse :subvertir; las reglas de integridad + los li(itantes e>'resados en los lenguajes relacionales de (2s alto nivel :una relaci-n :conjunto de registros; de cada ve,;
/lgunos 'roble(as no se 'ueden solucionar directa(ente con el lenguaje de alto nivel. 6or(al(ente se usa 5"= in(erso en un lenguaje an)itri-n 'ara solucionar estos 'roble(as. 5e utili,a el conce'to de cursor 'ara tratar individual(ente las tu'las de una relaci-n. &n cual9uier caso no debe ser 'osible saltarse los li(itantes de integridad i('uestos al tratar las tu'las a ese nivel.
12gina
de 23
El proceso de diseo
&l 'roceso de diseo consta de los siguientes 'asos: Deter(inar la )inalidad de la base de datos. &sto le a+udar2 a estar 're'arado 'ara los de(2s 'asos. Buscar + organi,ar la in)or(aci-n necesaria. ReDna todos los ti'os de in)or(aci-n 9ue desee registrar en la base de datos< co(o los no(bres de 'roductos o los nD(eros de 'edidos. Dividir la in)or(aci-n en tablas. Divida los ele(entos de in)or(aci-n en entidades o te(as 'rinci'ales< co(o 1roductos o 1edidos. Cada te(a 'asar2 a ser una tabla. Convertir los ele(entos de in)or(aci-n en colu(nas. Decida 9u# in)or(aci-n desea al(acenar en cada tabla. Cada ele(ento se convertir2 en un ca('o + se (ostrar2 co(o una colu(na en la tabla. 1or eje('lo< una tabla &('leados 'odr8a incluir ca('os co(o /'ellido + Cel#)ono. &s'eci)icar claves 'rinci'ales. &lija la clave 'rinci'al de cada tabla. =a clave 'rinci'al es una colu(na 9ue se utili,a 'ara identi)icar ine9u8voca(ente cada )ila< co(o 0d. de 'roducto o 0d. de 'edido. De)inir relaciones entre las tablas. &>a(ine cada tabla + decida c-(o se relacionan los datos de una tabla con las de(2s tablas. /gregue
12gina % de 23
ca('os a las tablas o cree nuevas tablas 'ara clari)icar las relaciones segDn sea necesario. /justar el diseo. /nalice el diseo 'ara detectar errores. Cree las tablas + agregue algunos registros con datos de eje('lo. Co('ruebe si 'uede obtener los resultados 'revistos de las tablas. Realice los ajustes necesarios en el diseo. /'licar las reglas de nor(ali,aci-n. /'li9ue reglas de nor(ali,aci-n de los datos 'ara co('robar si las tablas est2n estructuradas correcta(ente. Realice los ajustes necesarios en las tablas.
o)erta. Disee el in)or(e en su i(aginaci-n + 'iense c-(o le gustar8a 9ue )uera. !"u# in)or(aci-n incluir8a en el in)or(e$ Cree un listado de cada ele(ento. Baga lo (is(o 'ara la carta (odelo + 'ara cual9uier otro in)or(e 9ue tenga 'ensado crear.
Det#ngase a 'ensar en los in)or(es + en la corres'ondencia 9ue desea crear 'ara identi)icar los ele(entos 9ue necesita incluir en la base de datos. 1arece l-gico crear un 'rototi'o de cada in)or(e o listado de salida + considerar 9u# ele(entos necesita 'ara crear el in)or(e. Un 'unto clave 9ue ?a+ 9ue recordar es 9ue debe desco('oner cada 'ie,a de in)or(aci-n en sus 'artes l-gicas (2s 'e9ueas. &n el caso de un no(bre< 'ara 'oder utili,ar el a'ellido< dividir2 el no(bre en dos 'artes: el no(bre + el a'ellido. 1ara ordenar un in)or(e 'or no(bre< 'or eje('lo< ser8a Dtil 9ue el a'ellido de los clientes estuviera al(acenado de )or(a inde'endiente. &n general< si desea ordenar< buscar< calcular o generar in)or(es a 'artir de un ele(ento de in)or(aci-n< debe incluir ese ele(ento en su 'ro'io ca('o. 1iense en las 'reguntas 9ue le gustar8a 9ue la base de datos contestara. 1or eje('lo< !cu2ntas ventas de un deter(inado 'roducto se cerraron el 'asado (es$ !D-nde viven sus (ejores clientes$ !"ui#n es el 'roveedor del 'roducto (ejor vendido$ 1rever esas 'reguntas le a+udar2 a deter(inar los ele(entos adicionales 9ue necesita registrar.
12gina 10 de 23
=as entidades 'rinci'ales (ostradas a9u8 son los 'roductos< los 'roveedores< los clientes + los 'edidos. 1or lo tanto< 'arece l-gico e('e,ar con estas cuatro tablas: una 'ara los datos sobre los 'roductos< otra 'ara los datos sobre los 'roveedores< otra 'ara los datos sobre los clientes + otra 'ara los datos sobre los 'edidos. /un9ue esto no co('lete la lista< es un buen 'unto de 'artida. 1uede seguir ajustando la lista ?asta obtener un diseo correcto. Cuando e>a(ine 'or 'ri(era ve, la lista 'reli(inar de ele(entos< 'odr8a estar tentado a incluirlos todos ellos en una sola tabla en lugar de en las cuatro tablas (ostradas en la ilustraci-n anterior. Considere 'or un (o(ento la tabla 9ue se (uestra a continuaci-n:
&n este caso< cada )ila contiene in)or(aci-n sobre el 'roducto + su 'roveedor. Co(o ?a+ (uc?os 'roductos del (is(o 'roveedor< la in)or(aci-n del no(bre + la direcci-n del 'roveedor debe re'etirse (uc?as veces< con lo 9ue se (algasta el es'acio en disco. Registrar la in)or(aci-n del 'roveedor una sola ve, en una tabla 1roveedores distinta + luego vincular esa tabla a la tabla 1roductos es una soluci-n (uc?o (ejor. Otro 'roble(a de este diseo surge cuando es necesario (odi)icar la in)or(aci-n del 'roveedor. 5u'onga< 'or eje('lo< 9ue necesita ca(biar la direcci-n de un 'roveedor. Co(o #sta a'arece en (uc?os lugares< 'odr8a sin 9uerer ca(biar la direcci-n en un lugar + olvidarse de ca(biarla en los de(2s lugares. &se 'roble(a se resuelve registrando la in)or(aci-n del 'roveedor en un Dnico lugar.
12gina 11 de 23
Cuando disee la base de datos< intente registrar sie('re cada dato una sola ve,. 5i descubre 9ue est2 re'itiendo la (is(a in)or(aci-n en varios lugares< co(o la direcci-n de un deter(inado 'roveedor< colo9ue esa in)or(aci-n en una tabla distinta. 1or Dlti(o< su'onga 9ue el 'roveedor Bodega 5ol s-lo su(inistra un 'roducto + desea eli(inar ese 'roducto 'ero conservar el no(bre del 'roveedor + la in)or(aci-n de su direcci-n. !C-(o eli(inar8a el 'roducto sin 'erder la in)or(aci-n del 'roveedor$ 6o se 'uede. Co(o cada registro contiene datos sobre un 'roducto< ade(2s de datos sobre un 'roveedor< no 'uede eli(inar unos sin eli(inar los otros. 1ara (antener estos datos se'arados< debe dividir la tabla en dos: una tabla 'ara la in)or(aci-n sobre los 'roductos + otra tabla 'ara la in)or(aci-n sobre los 'roveedores. /l eli(inar un registro de 'roducto s-lo se eli(inar8an los datos del 'roducto + no los datos del 'roveedor. Una ve, seleccionado el te(a re'resentado 'or una tabla< las colu(nas de esa tabla deben al(acenar datos Dnica(ente sobre ese te(a. 1or eje('lo< la tabla de 'roductos s-lo debe contener datos de 'roductos. Co(o la direcci-n del 'roveedor es un dato del 'roveedor< 'ertenece a la tabla de 'roveedores.
de 1rovincia< +a 9ue esa colu(na 'uede incluir 'rovincias del 'ro'io 'a8s + regiones de otros 'a8ses. De igual )or(a< es (2s l-gico incluir una colu(na Regi-n en lugar de Co(unidad /ut-no(a si va a al(acenar direcciones internacionales. &n la lista siguiente se inclu+en algunas sugerencias 'ara deter(inar las colu(nas de la base de datos. -o inclu!a datos calculados. &n la (a+or8a de los casos< no debe al(acenar el resultado de los c2lculos en las tablas. &n lugar de ello< 'uede dejar 9ue RDB45 realice los c2lculos cuando desee ver el resultado. 5u'onga< 'or eje('lo< 9ue tiene un in)or(e 1roductos bajo 'edido 9ue contiene el subtotal de unidades de un 'edido 'ara cada categor8a de 'roducto de la base de datos. 5in e(bargo< no ?a+ ninguna tabla 9ue contenga una colu(na de subtotal Unidades en 'edido. =a tabla Detalles de 1edidos contiene una colu(na Unidades en 'edido 9ue al(acena las unidades incluidas en un 'edido de cada 'roducto. Con esos datos< RDB45 calcula el subtotal cada ve, 9ue se i('ri(e el in)or(e< 'ero el subtotal 'ro'ia(ente dic?o no debe al(acenarse en una tabla. Almacene la in+ormacin en sus )artes l icas m%s )e.ue,as . 1uede ceder a la tentaci-n de ?abilitar un Dnico ca('o 'ara los no(bres co('letos o 'ara los no(bres de 'roductos junto con sus descri'ciones. 5i co(bina varios ti'os de in)or(aci-n en un ca('o< ser2 di)8cil recu'erar datos individuales (2s adelante. 0ntente dividir la in)or(aci-n en 'artes l-gicas. 1or eje('lo< cree ca('os distintos 'ara el no(bre + el a'ellido< o 'ara el no(bre del 'roducto< la categor8a + la descri'ci-n. Una ve, ajustadas las colu(nas de datos de cada tabla< +a 'uede seleccionar la clave 'rinci'al de cada tabla.
12gina 13 de 23
e>clusivos. &s (u+ )2cil 9ue dos 'ersonas tengan el (is(o no(bre en la (is(a tabla. Una clave 'rinci'al sie('re debe tener un valor. 5i el valor de una colu(na 'uede 9uedar sin asignar o vac8o :'or9ue no se conoce; en algDn (o(ento< no 'uede utili,arlo co(o co('onente de una clave 'rinci'al.
Debe elegir sie('re una clave 'rinci'al cu+o valor no ca(bie. &n una base de datos con varias tablas< la clave 'rinci'al de una tabla se 'uede utili,ar co(o re)erencia en las de(2s tablas :clave e>terna o secundaria;. 5i la clave 'rinci'al ca(bia< el ca(bio debe a'licarse ta(bi#n a todos los lugares donde se ?aga re)erencia a la clave. Usar una clave 'rinci'al 9ue no ca(bie reduce la 'osibilidad de 9ue se 'ierda su sincroni,aci-n con las otras tablas en las 9ue se ?ace re)erencia a ella. / (enudo< se utili,a co(o clave 'rinci'al un nD(ero Dnico arbitrario. 1or eje('lo< 'uede asignar a cada 'edido un nD(ero de 'edido distinto. =a Dnica )inalidad de este nD(ero de 'edido es identi)icar el 'edido. Una ve, asignado< nunca ca(bia. 5i 'iensa 9ue no ?a+ ninguna colu(na o conjunto de colu(nas 9ue 'ueda constituir una buena clave 'rinci'al< considere la 'osibilidad de utili,ar una colu(na 9ue tenga el ti'o de datos /utonu(#rico. Cuando se utili,a el ti'o de datos /utonu(#rico< &l RDB45 asigna auto(2tica(ente un valor. &ste ti'o de identi)icador no es 7)2ctico7< es decir< no contiene in)or(aci-n objetiva sobre la )ila 9ue re'resenta. =os identi)icadores de este ti'o son 'er)ectos 'ara usarlos co(o claves 'rinci'ales< +a 9ue no ca(bian. Una clave 'rinci'al 9ue contiene datos sobre una )ila< co(o un nD(ero de tel#)ono o el no(bre de un cliente< es (2s 'robable 9ue ca(bie< +a 9ue la 'ro'ia in)or(aci-n 7)2ctica7 'odr8a ca(biar.
Una colu(na establecida en el ti'o de datos /utonu(#rico suele constituir una buena clave 'rinci'al. 6o ?a+ dos identi)icadores de 'roducto iguales. &n algunos casos< tal ve, considere conveniente utili,ar dos o (2s ca('os juntos co(o clave 'rinci'al de una tabla. 1or eje('lo< una tabla Detalles de 'edidos 9ue contenga art8culos de l8nea de 'edidos tendr8a dos colu(nas en
12gina 14 de 23
su clave 'rinci'al: 0d. de 'edido e 0d. de 'roducto. Cuando una clave 'rinci'al est2 )or(ada 'or (2s de una colu(na se deno(ina clave co('uesta. 1ara la base de datos de ventas de 'roductos< 'uede crear una colu(na autonu(#rica 'ara cada una de las tablas 9ue )uncione co(o clave 'rinci'al: 0d1roducto 'ara la tabla 1roductos< 0d1edido 'ara la tabla 1edidos< 0dCliente 'ara la tabla Clientes e 0d1roveedores 'ara la tabla 1roveedores.
12gina 1. de 23
1. 2. 3. 4. ..
=a in)or(aci-n de este )or(ulario 'rocede de la tabla Clientes... ...la tabla &('leados... ...la tabla 1edidos... ...la tabla 1roductos... ...+ la tabla Detalles de 'edidos.
5"= 5erver 200% es un siste(a de ad(inistraci-n de bases de datos relacionales. &n una base de datos relacional< la in)or(aci-n se divide en tablas distintas en )unci-n del te(a. / continuaci-n< se utili,an relaciones entre las tablas 'ara reunir la in)or(aci-n segDn se 'recise. Crear una relacin de uno a varios Considere este eje('lo: las tablas 1roveedores + 1roductos de la base de datos de 'edidos de 'roductos. Un 'roveedor 'uede su(inistrar cual9uier nD(ero de 'roductos +< 'or consiguiente< 'ara cada 'roveedor re'resentado en la tabla 1roveedores< 'uede ?aber (uc?os 'roductos re'resentados en la tabla 1roductos. =a relaci-n entre la tabla 1roveedores + la tabla 1roductos es< 'or tanto< una relaci-n de uno a varios.
12gina 13 de 23
1ara re'resentar una relaci-n de uno a varios en el diseo de la base de datos< to(e la clave 'rinci'al del lado 7uno7 de la relaci-n + agr#guela co(o colu(na o colu(nas adicionales a la tabla en el lado 7varios7 de la relaci-n. &n este caso< 'or eje('lo< agregar8a la colu(na 0d. de 'roveedor de la tabla 1roveedores a la tabla 1roductos. 5"= 5erver utili,a entonces el nD(ero de identi)icador de 'roveedor de la tabla 1roductos 'ara locali,ar el 'roveedor correcto de cada 'roducto. =a colu(na 0d. de 'roveedor de la tabla 1roductos se deno(ina clave e>terna.
=a colu(na 0d. de 'roveedor de la tabla 1roductos es una clave e>terna 'or9ue ta(bi#n es la clave 'rinci'al en la tabla 1roveedores.
12gina 1 de 23
&l 'unto de 'artida 'ara la uni-n de tablas relacionadas se 'ro'orciona estableciendo 'arejas de claves 'rinci'ales + claves e>ternas. 5i no est2 seguro de las tablas 9ue deben co('artir una colu(na co(Dn< el identi)icar una relaci-n de uno a varios asegura 9ue las dos tablas i('licadas re9uieren de una colu(na co('artida. Crear una relacin de varios a varios Considere la relaci-n entre la tabla 1roductos + la tabla 1edidos. Un solo 'edido 'uede incluir varios 'roductos. 1or otro lado< un Dnico 'roducto 'uede a'arecer en (uc?os 'edidos. 1or tanto< 'ara cada registro de la tabla 1edidos 'uede ?aber varios registros en la tabla 1roductos. G 'ara cada registro de la tabla 1roductos 'uede ?aber varios registros en la tabla 1edidos. &ste ti'o de relaci-n se deno(ina relaci-n de varios a varios 'or9ue 'ara un 'roducto 'uede ?aber varios 'edidos< + 'ara un 'edido 'uede ?aber varios 'roductos. Cenga en cuenta 9ue 'ara detectar las relaciones de varios a varios entre las tablas< es i('ortante 9ue considere a(bas 'artes de la relaci-n. =os te(as de las dos tablas :'edidos + 'roductos; tienen una relaci-n de varios a varios. &sto 'resenta un 'roble(a. 1ara co('render el 'roble(a< i(agine 9u# suceder8a si intenta crear la relaci-n entre las dos tablas agregando el ca('o 0d. de 'roducto a la tabla 1edidos. 1ara 9ue ?a+a (2s de un 'roducto 'or 'edido< necesita (2s de un registro en la tabla 1edidos 'ara cada 'edido +< en ese caso< tendr8a 9ue re'etir la in)or(aci-n de 'edido 'ara cada )ila relacionada con un Dnico 'edido< lo 9ue dar8a lugar a un diseo ine)ica, 9ue 'odr8a 'roducir datos ine>actos. &l (is(o 'roble(a a'arece si coloca el ca('o 0d. de 'edido en la tabla 1roductos: tendr8a varios registros
12gina 1% de 23
en la tabla 1roductos 'ara cada 'roducto. !C-(o se soluciona este 'roble(a$ =a soluci-n a este 'roble(a consiste en crear una tercera tabla 9ue desco('onga la relaci-n de varios a varios en dos relaciones de uno a varios. 0nserte la clave 'rinci'al de cada una de las dos tablas en la tercera tabla +< 'or consiguiente< la tercera tabla va a registrar todas las a'ariciones o instancias de la relaci-n.
Cada registro de la tabla Detalles de 'edidos re'resenta un art8culo de l8nea de un 'edido. =a clave 'rinci'al de la tabla Detalles de 'edidos consta de dos ca('os: las claves e>ternas de las tablas 1edidos + 1roductos. &l ca('o 0d. de 'edido no se 'uede utili,ar en solitario co(o clave 'rinci'al< +a 9ue un 'edido 'uede tener varios art8culos de l8nea. &l identi)icador de 'edido se re'ite 'ara cada art8culo de l8nea del 'edido< 'or lo 9ue el ca('o no contiene valores Dnicos. Ca('oco servir8a utili,ar sola(ente el ca('o 0d. de 'roducto< 'or9ue un 'roducto 'uede a'arecer en varios 'edidos. 1ero los dos ca('os juntos 'roducen un valor e>clusivo 'ara cada registro. &n la base de datos de ventas de 'roductos< la tabla 1edidos + la tabla 1roductos no se relacionan directa(ente entre s8< sino indirecta(ente a trav#s de la tabla Detalles de 'edidos. =a relaci-n de varios a varios entre los 'edidos + los 'roductos se re'resenta en la base de datos (ediante dos relaciones de uno a varios: =a tabla 1edidos + la tabla Detalles de 'edidos tienen una relaci-n de uno a varios. Cada 'edido tiene varios art8culos de l8nea< 'ero cada art8culo est2 asociado a un Dnico 'edido. =a tabla 1roductos + la tabla Detalles de 'edidos tienen una relaci-n de uno a varios. Cada 'roducto 'uede tener varios art8culos asociados< 'ero cada art8culo de l8nea ?ace re)erencia Dnica(ente a un 'roducto.
12gina 1* de 23
Desde la tabla Detalles de 'edidos se 'uede deter(inar todos los 'roductos de un deter(inado 'edido< as8 co(o todos los 'edidos de un deter(inado 'roducto. Des'u#s de incor'orar la tabla Detalles de 'edidos< la lista de tablas + ca('os ser8a si(ilar a la siguiente:
Crear una relacin de uno a uno Otro ti'o de relaci-n es la relaci-n de uno a uno. 5u'onga< 'or eje('lo< 9ue necesita registrar in)or(aci-n co('le(entaria sobre 'roductos 9ue a'enas va a necesitar o 9ue s-lo se a'lica a unos 'ocos 'roductos. Co(o no necesita la in)or(aci-n con )recuencia< + co(o al(acenar la in)or(aci-n en la tabla 1roductos crear8a un es'acio vac8o 'ara todos los 'roductos 9ue no necesitan esa in)or(aci-n< la coloca en una tabla distinta. /l igual 9ue en la tabla 1roductos< utili,a el identi)icador de 'roducto co(o clave 'rinci'al. =a relaci-n entre esta tabla co('le(entaria + la tabla 1roductos es una relaci-n de uno a uno. 1ara cada registro de la tabla 1roductos ?a+ un Dnico registro coincidente en la tabla co('le(entaria. Cuando identi)i9ue esta relaci-n< a(bas tablas deben co('artir un ca('o co(Dn. Cuando necesite crear una relaci-n de uno a uno en la base de datos< considere si 'uede incluir la in)or(aci-n de las dos tablas en una tabla. 5i no desea ?acer eso 'or algDn (otivo :9ui,2s 'or9ue se crear8a una gran cantidad de es'acio vac8o;< 'uede re'resentar esa relaci-n en su diseo gui2ndose 'or las 'autas siguientes: 5i las dos tablas tienen el (is(o te(a< 'robable(ente 'odr2 de)inir la relaci-n utili,ando la (is(a clave 'rinci'al en a(bas tablas.
12gina 20 de 23
5i las dos tablas tienen te(as di)erentes con claves 'rinci'ales distintas< elija una de las tablas :cual9uiera de ellas; e inserte su clave 'rinci'al en la otra tabla co(o clave e>terna. Deter(inar las relaciones entre las tablas le a+udar2 a asegurarse de 9ue tiene las tablas + colu(nas correctas. Cuando e>iste una relaci-n de uno a uno o de uno a varios< las tablas i('licadas deben co('artir una o varias colu(nas co(unes. Cuando la relaci-n es de varios a varios< se necesita una tercera tabla 'ara re'resentar la relaci-n.
%justar el diseo
Cuando tenga las tablas< los ca('os + las relaciones necesarias< debe crear + rellenar las tablas con datos de eje('lo + 'robar 9ue )uncionan con la in)or(aci-n: creando consultas< agregando nuevos registros< etc. &sto 'er(ite encontrar 'osibles 'roble(as< co(o la necesidad de agregar una colu(na 9ue olvid- insertar durante la )ase de diseo< o dividir una tabla en dos tablas 'ara eli(inar datos du'licados. Co('ruebe si 'uede usar la base de datos 'ara obtener las res'uestas 9ue desea. Co('ruebe si e>isten datos du'licados innecesarios +< si encuentra alguno< (odi)i9ue el diseo 'ara eli(inar la du'licaci-n. Cuando 'ruebe la base de datos inicial< 'robable(ente se d# cuenta de 9ue se 'uede (ejorar. Jstas son algunas co('robaciones 9ue 'uede ?acer: !Olvid- incluir alguna colu(na$ G< en ese caso< !'ertenece la in)or(aci-n a alguna de las tablas e>istentes$ 5i se trata de in)or(aci-n sobre otro te(a< tal ve, necesite crear otra tabla. Cree una colu(na 'ara cada ele(ento de in)or(aci-n 9ue desee registrar. 5i la in)or(aci-n no se 'uede calcular a 'artir de otras colu(nas< es 'robable 9ue necesite una nueva colu(na 'ara esa in)or(aci-n. !Ba+ alguna colu(na innecesaria 'or9ue se 'uede calcular con los ca('os e>istentes$ 5i un ele(ento de in)or(aci-n se 'uede calcular a 'artir de otras colu(nas e>istentes :co(o un descuento calculado a 'artir del 'recio de venta al 'Dblico;< nor(al(ente es 're)erible 9ue se calcule en lugar de crear una nueva colu(na. !Ba 'ro'orcionada in)or(aci-n du'licada en alguna de las tablas$ 5i es as8< 'robable(ente deba dividir la tabla en dos tablas 9ue tengan una relaci-n de uno a varios. !Ciene tablas con (uc?os ca('os< un nD(ero li(itado de registros + (uc?os ca('os vac8os en cada registro$ &n ese caso< considere la 'osibilidad de volver a disear la tabla de )or(a 9ue tenga (enos ca('os + (2s registros. !Ba dividido cada ele(ento de in)or(aci-n en sus 'artes l-gicas (2s 'e9ueas$ 5i necesita generar in)or(es< ordenar< buscar o calcular a 'artir de un ele(ento de in)or(aci-n< inclu+a ese ele(ento en su 'ro'ia colu(na.
12gina 21 de 23
!Contiene cada colu(na datos sobre el te(a de la tabla$ 5i una colu(na no contiene in)or(aci-n sobre el te(a de la tabla< 'ertenece a una tabla distinta. !&st2n re'resentadas todas las relaciones entres las tablas (ediante ca('os co(unes o (ediante una tercera tabla$ =as relaciones de uno a uno + de uno a varios re9uieren colu(nas co(unes. =as relaciones de varios a varios re9uieren una tercera tabla. A(ustar la ta'la /roductos 5u'onga 9ue cada 'roducto de la base de datos de ventas de 'roductos 'ertenece a una categor8a general< co(o bebidas< condi(entos o (arisco. =a tabla 1roductos 'odr8a incluir un ca('o 9ue (ostrara la categor8a de cada 'roducto. 5u'onga 9ue des'u#s de e>a(inar + ajustar el diseo de la base de datos< decide al(acenar una descri'ci-n de la categor8a junto con su no(bre. 5i agrega un ca('o Descri'ci-n de categor8a a la tabla 1roductos< tendr8a 9ue re'etir la descri'ci-n de cada categor8a 'ara cada 'roducto 'erteneciente a dic?a categor8a< lo cual no es una buena soluci-n. Una soluci-n (ejor es convertir las categor8as en un nuevo te(a de la base de datos< con su 'ro'ia tabla + su 'ro'ia clave 'rinci'al. / continuaci-n< 'uede agregar la clave 'rinci'al de la tabla Categor8as a la tabla 1roductos co(o clave e>terna. =as tablas Categor8as + 1roductos tienen una relaci-n de uno a varios: una categor8a 'uede incluir varios 'roductos< 'ero un 'roducto 'ertenece Dnica(ente a una categor8a. Cuando e>a(ine las estructuras de las tablas< co('ruebe si e>isten gru'os e>tensibles. 1or eje('lo< considere una tabla con las siguientes colu(nas: 0d. de 'roducto 6o(bre 0d1 de 'roducto 6o(bre1 0d2 de 'roducto 6o(bre2 0d3 de 'roducto 6o(bre3
/9u8< cada 'roducto es un gru'o e>tensible de colu(nas 9ue se di)erencia de los de(2s sola(ente 'or el nD(ero agregado al )inal del no(bre de colu(na. 5i tiene colu(nas nu(eradas de esta )or(a< debe revisar el diseo. Un diseo co(o #ste tiene varios de)ectos. 1ara e('e,ar< obliga a crear un l8(ite (2>i(o de nD(ero de 'roductos. &n cuanto su'ere ese l8(ite< deber2 agregar un nuevo gru'o de colu(nas a la estructura de la tabla< lo 9ue su'one una tarea ad(inistrativa i('ortante.
12gina 22 de 23
Otro 'roble(a es 9ue se (algastar2 el es'acio en a9uellos 'roveedores 9ue tengan (enos 9ue el nD(ero (2>i(o de 'roductos< +a 9ue las colu(nas adicionales 9uedar2n en blanco. &l de)ecto (2s grave de este diseo es 9ue (uc?as tareas son di)8ciles de reali,ar< co(o ordenar o indi,ar la tabla 'or identi)icador de 'roducto o no(bre. 5ie('re 9ue a'are,can gru'os e>tensibles< revise atenta(ente el diseo con vistas a dividir la tabla en dos. &n el eje('lo anterior< ser8a conveniente usar dos tablas< una 'ara 'roveedores + otra 'ara 'roductos< vinculadas 'or el identi)icador de 'roveedor.
12gina 23 de 23
&ste diseo in)ringe los re9uisitos de la segunda )or(a nor(al< 'or9ue 6o(bre de 'roducto de'ende de 0d. de 'roducto< 'ero no de 0d. de 'edido< 'or lo 9ue no de'ende de toda la clave 'rinci'al. Debe 9uitar 6o(bre de 'roducto de la tabla< +a 9ue 'ertenece a una tabla di)erente :a la tabla 1roductos;. $ercera +orma normal =a tercera )or(a nor(al e>ige no s-lo 9ue cada colu(na 9ue no sea clave de'enda de toda la clave 'rinci'al< sino ta(bi#n 9ue las colu(nas 9ue no sean clave sean inde'endientes unas de otras. O dic?o de otra )or(a: cada colu(na 9ue no sea clave debe de'ender de la clave 'rinci'al + nada (2s 9ue de la clave 'rinci'al. 1or eje('lo< considere una tabla con las siguientes colu(nas: 0d1roducto :clave 'rinci'al; 6o(bre 1F1 Descuento 5u'onga 9ue la colu(na Descuento de'ende del 'recio de venta al 'Dblico :1F1; sugerido. &sta tabla in)ringe los re9uisitos de la tercera )or(a nor(al 'or9ue una colu(na 9ue no es clave< la colu(na Descuento< de'ende de otra colu(na 9ue no es clave< la colu(na 1F1. =a inde'endencia de las colu(nas i('lica 9ue debe 'oder ca(biar cual9uier colu(na 9ue no sea clave sin 9ue ninguna otra colu(na resulte a)ectada. 5i ca(bia un valor en el ca('o 1F1< la colu(na Descuento ca(biar8a en consecuencia e in)ringir8a esa regla. &n este caso< la colu(na Descuento debe (overse a otra tabla cu+a clave sea 1F1.
Desnor ali#aci$n
4icroso)t 5"= 5erver reali,a o'eraciones de ordenaci-n< intersecci-n< uni-n + di)erencia (ediante una tecnolog8a de ordenaci-n en (e(oria + co(binaci-n ?as?. Con este ti'o de 'lan de consulta< 5"= 5erver ace'ta la 'artici-n vertical de tablas< a veces lla(ada al(acena(iento en colu(nas. 5"= 5erver e('lea tres ti'os de o'eraciones de co(binaci-n: Co(binaciones de bucles anidados Co(binaciones de (e,cla Co(binaciones ?as? 5i la entrada de una co(binaci-n es 'e9uea :(enor de 10 )ilas;< + la entrada de otra co(binaci-n es bastante grande + est2 indi,ada en las colu(nas de co(binaci-n< una co(binaci-n de bucles anidados de 8ndices es la o'eraci-n de co(binaci-n (2s r2'ida< debido a 9ue re9uieren (enos &K5 + (enos co('araciones.
12gina 24 de 23
5i las dos entradas de la co(binaci-n no son 'e9ueas 'ero est2n ordenadas 'or la colu(na de co(binaci-n :'or eje('lo< si se obtuvieron al recorrer 8ndices ordenados;< una co(binaci-n de (e,cla es la o'eraci-n de co(binaci-n (2s r2'ida. 5i a(bas entradas de co(binaci-n son grandes + tienen ta(aos si(ilares< una co(binaci-n de (e,cla con una ordenaci-n 'revia + una co(binaci-n ?as? o)recen un rendi(iento si(ilar. 5in e(bargo< las o'eraciones de co(binaci-n ?as? a (enudo son (2s r2'idas si los ta(aos de las dos entradas di)ieren signi)icativa(ente entre s8. =as co(binaciones ?as? 'ueden 'rocesar e)ica,(ente entradas grandes< sin ordenar + no indi,adas. 5on Dtiles 'ara obtener resultados inter(edios en consultas co('lejas debido a 9ue: =os resultados inter(edios no est2n indi,ados :a (enos 9ue se ?a+an guardado e>'l8cita(ente en disco +< des'u#s< se ?a+an indi,ado; +< a (enudo< no tienen un orden adecuado 'ara la siguiente o'eraci-n del 'lan de consulta. =os o'ti(i,adores de consultas s-lo calculan los ta(aos de resultados inter(edios. Dado 9ue las esti(aciones 'ueden ser 'oco e>actas en consultas co('lejas< los algorit(os utili,ados 'ara 'rocesar los resultados inter(edios no s-lo deben ser e)icaces< sino 9ue ta(bi#n deben rebajarse si un resultado inter(edio es (a+or de lo 'revisto. =a co(binaci-n ?as? 'er(ite reducir el uso de la desnor(ali,aci-n. =a desnor(ali,aci-n se suele utili,ar 'ara conseguir un rendi(iento (ejor (ediante la reducci-n de las o'eraciones de co(binaci-n< a 'esar del 'eligro de redundancia< co(o las actuali,aciones inco?erentes. =as co(binaciones ?as? reducen la necesidad de desnor(ali,aci-n. =as co(binaciones ?as? 'er(iten 9ue las 'articiones verticales :9ue re'resentan gru'os de colu(nas de una sola tabla en arc?ivos o 8ndices inde'endientes; se conviertan en una o'ci-n viable 'ara el diseo )8sico de bases de datos.
12gina 2. de 23
contendr2n un 0d.de trans'ortista< 'ero el 0d. +a no ser2 v2lido< 'or9ue el registro al 9ue ?ace re)erencia +a no e>iste. &l 'ro'-sito de la integridad re)erencial es evitar los registros ?u#r)anos + (antener las re)erencias sincroni,adas 'ara 9ue esta situaci-n ?i'ot#tica no ocurra nunca. Una ve, a'licada la integridad re)erencial< 5"= 5erver rec?a,ar2 todas las o'eraciones 9ue in)rinjan la integridad re)erencial de esa relaci-n de tabla. &sto signi)ica 9ue 5"= 5erver rec?a,a las actuali,aciones 9ue ca(bian el destino de una re)erencia< as8 co(o las eli(inaciones 9ue 9uitan el destino de una re)erencia. =a integridad re)erencial es un siste(a de reglas 9ue garanti,an 9ue las relaciones entre )ilas de tablas relacionadas sean v2lidas + 9ue no se eli(inen ni ca(bien accidental(ente los datos relacionados.
5e 'uede establecer la integridad re)erencial cuando se cu('len las siguientes condiciones: =a colu(na coincidente de la tabla 'rinci'al es una clave 'rinci'al o tiene una restricci-n U60"U&. =as colu(nas relacionadas en la tabla e>terna tienen el (is(o ti'o de datos + el (is(o ta(ao. Cuando se e>ige la integridad re)erencial< se deben observar las reglas siguientes: 6o se 'uede es'eci)icar un valor en la colu(na de clave e>terna de la tabla relacionada si ese valor no e>iste en la clave 'rinci'al de la tabla relacionada. 5in e(bargo< se 'uede es'eci)icar un valor 6U== en la colu(na de clave e>terna. 1or eje('lo< no se 'uede indicar 9ue se asigna un trabajo a un e('leado 9ue no est2 incluido en la tabla &('leados< 'ero se 'uede indicar 9ue un e('leado no tiene trabajo asignado (ediante la es'eci)icaci-n de un valor 6U== en la colu(na jobLid de la tabla &('leados. 6o se 'uede eli(inar una )ila de una tabla de clave 'rinci'al si e>isten )ilas 9ue coinciden con ella en una tabla relacionada. 1or eje('lo< no se 'uede eli(inar una )ila de la tabla trabajos si ?a+ e('leados asignados al trabajo re'resentado 'or esa )ila en la tabla e('leados. 6o se 'uede ca(biar un valor de clave 'rinci'al en la tabla de clave 'rinci'al si esa )ila tiene )ilas relacionadas. 1or eje('lo< no 'uede ca(biar el valor jobLid de una )ila en la tabla trabajos si ?a+ e('leados con dic?o jobLid en la tabla e('leados.
12gina 23 de 23