Está en la página 1de 26

Curso de Administracin de Base de Datos

SQL Server 2008 Unidad 2 Base de Datos Relacional

2012

Contenido del curso


Contenido del curso...........................................................................................2 Unidad 2: Base de Datos Relacional.................................................................3 Objetivos.........................................................................................................3 Base de Datos Relacional..................................................................................3 Reglas de Codd..............................................................................................4 Diseo de Base de Datos.................................................................................. !"u# es un buen diseo de base de datos$.................................................% &l 'roceso de diseo......................................................................................% Deter(inar la )inalidad de la base de datos...................................................* Buscar + organi,ar la in)or(aci-n necesaria.................................................* Dividir la in)or(aci-n en tablas....................................................................10 Convertir los ele(entos de in)or(aci-n en colu(nas.................................12 &s'eci)icar claves 'rinci'ales......................................................................13 Crear relaciones entre las tablas.................................................................1. .........................................................................................................................1 /justar el diseo...........................................................................................21 /'licar las reglas de nor(ali,aci-n..............................................................23 Desnor(ali,aci-n.........................................................................................24 0ntegridad Re)erencial......................................................................................2.

12gina 2 de 23

Unidad 2: Base de Datos Relacional


Objetivos
Dar una visi-n acerca: Bases de datos relacionales + RDB45 Relaciones 6or(ali,aci-n 0ntegridad

Base de Datos Relacional


5u idea )unda(ental es el uso de 7relaciones7. &stas relaciones 'odr8an considerarse en )or(a l-gica co(o conjuntos de datos lla(ados 7tu'las7. &sto es 'ensando en cada relaci-n co(o si )uese una tabla 9ue est2 co('uesta 'or registros :las )ilas de una tabla;< 9ue re'resentar8an las tu'las< + campos :las colu(nas de una tabla;. &n este (odelo< el lugar + la )or(a en 9ue se al(acenan los datos no tienen relevancia :a di)erencia de otros (odelos co(o el jer2r9uico + el de red;. &sto tiene la considerable ventaja de 9ue es (2s )2cil de entender + de utili,ar 'ara un usuario es'or2dico de la base de datos. =a in)or(aci-n 'uede ser recu'erada o al(acenada (ediante consultas 9ue o)recen una a('lia )le>ibilidad + 'oder 'ara ad(inistrar la in)or(aci-n. &l lenguaje (2s ?abitual 'ara construir las consultas a bases de datos relacionales es SQL, Structured Query Language o Lenguaje Estructurado de Consultas, un est2ndar i('le(entado 'or los 'rinci'ales (otores o siste(as de gesti-n de bases de datos relacionales. Durante su diseo< una base de datos relacional 'asa 'or un 'roceso al 9ue se le conoce co(o nor(ali,aci-n de una base de datos. Un RDB45 es un Sistema Administrador de Bases de Datos Relacionales. RDB45 viene del acr-ni(o en ingl#s Relational Data Base Mana ement S!stem"

=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

Una BDR tiene inde'endencia de distribuci-n.


=as (is(as -rdenes + 'rogra(as se ejecutan igual en una BD centrali,ada 9ue en una distribuida. =as BDR son )2cil(ente distribuibles: 5e 'arten las tablas en )rag(entos 9ue se distribu+en. Cuando se necesitan las tablas co('letas se reco(binan usando o'eraciones relacionales con los )rag(entos. 5in e(bargo se co('lica (2s la gesti-n interna de la integridad< etc. &sta regla es res'onsable de tres ti'os de trans'arencia de distribuci-n: o Crans'arencia de locali,aci-n. &l usuario tiene la i('resi-n de 9ue trabaja con una BD local. :as'ecto de la regla de inde'endencia )8sica; o Crans'arencia de )rag(entaci-n. &l usuario no se da cuenta de 9ue la relaci-n con 9ue trabaja est2 )rag(entada. :as'ecto de la regla de inde'endencia l-gica de datos;. o Crans'arencia de re'licaci-n. &l usuario no se da cuenta de 9ue 'ueden e>istir co'ias :r#'licas; de una (is(a relaci-n en di)erentes lugares.

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.

Dise,o de Base de Datos


&l diseo de una base de datos re9uiere un conoci(iento 'ro)undo de las )unciones e('resariales 9ue se desean (odelar< as8 co(o de las caracter8sticas + conce'tos de base de datos 9ue se desea utili,ar 'ara re'resentar esas )unciones e('resariales. /segDrese de disear con 'recisi-n la base de datos 9ue utili,ar2 'ara (odelar el negocio 'or9ue el ca(bio del diseo de la base de datos una ve, i('le(entada 'uede re9uerir (uc?o tie('o. 1or otra 'arte< una base de datos bien diseada o)rece un (ejor rendi(iento.

12gina

de 23

Qu es un buen diseo de base de datos?


&l 'roceso de diseo de una base de datos se gu8a 'or algunos 'rinci'ios. &l 'ri(ero de ellos es 9ue se debe evitar la in)or(aci-n du'licada o< lo 9ue es lo (is(o< los datos redundantes< 'or9ue (algastan el es'acio + au(entan la 'robabilidad de 9ue se 'rodu,can errores e inco?erencias. &l segundo 'rinci'io es 9ue es i('ortante 9ue la in)or(aci-n sea correcta + co('leta. 5i la base de datos contiene in)or(aci-n incorrecta< los in)or(es 9ue recogen in)or(aci-n de la base de datos contendr2n ta(bi#n in)or(aci-n incorrecta +< 'or lo tanto< las decisiones 9ue se to(e a 'artir de esos in)or(es estar2n (al )unda(entadas. Un buen diseo de base de datos es< 'or lo tanto< a9u#l 9ue: Divide la in)or(aci-n en tablas basadas en te(as 'ara reducir los datos redundantes. 1ro'orciona a RDB45 la in)or(aci-n necesaria 'ara reunir la in)or(aci-n de las tablas cuando as8 se 'recise. /+uda a garanti,ar la e>actitud e integridad de la in)or(aci-n. 5atis)ace las necesidades de 'rocesa(iento de los datos + de generaci-n de in)or(es.

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.

Deter inar la !inalidad de la base de datos


&s conveniente 'las(ar en 'a'el el 'ro'-sito de la base de datos: c-(o 'iensa utili,arla + 9ui#n va a utili,arla. 1ara una 'e9uea base de datos de un negocio 'articular< 'or eje('lo< 'odr8a escribir algo tan si('le co(o 7=a base de datos de clientes contiene una lista de in)or(aci-n de los clientes 'ara el env8o (asivo de correo electr-nico + la generaci-n de in)or(es7. 5i la base de datos es (2s co('leja o la utili,an (uc?as 'ersonas< co(o ocurre nor(al(ente en un entorno cor'orativo< la )inalidad 'odr8a de)inirse )2cil(ente en uno o varios '2rra)os + deber8a incluir cu2ndo + c-(o va a utili,ar cada 'ersona la base de datos. =a idea es desarrollar una declaraci-n de intenciones bien de)inida 9ue sirva de re)erencia durante todo el 'roceso de diseo. &sta declaraci-n de intenciones le 'er(itir2 centrarse en los objetivos a la ?ora de to(ar decisiones.

"uscar y organi#ar la in!or aci$n necesaria


1ara buscar + organi,ar la in)or(aci-n necesaria< e('iece con la in)or(aci-n e>istente. 1or eje('lo< si registra los 'edidos de co('ra en un libro contable o guarda la in)or(aci-n de los clientes en )or(ularios en 'a'el en un arc?ivador< 'uede reunir esos docu(entos + enu(erar cada ti'o de in)or(aci-n 9ue contienen :'or eje('lo< cada casilla de un )or(ulario;. 5i no dis'one de )or(ularios< i(agine 9ue tiene 9ue disear uno 'ara registrar la in)or(aci-n de los clientes. !"u# in)or(aci-n incluir8a en el )or(ulario$ !"u# casillas crear8a$ 0denti)i9ue cada uno de estos ele(entos + cree un listado. 5u'onga< 'or eje('lo< 9ue guarda la lista de clientes en )ic?as. Cada )ic?a 'odr8a contener un no(bre de cliente< su direcci-n< ciudad< 'rovincia< c-digo 'ostal + nD(ero de tel#)ono. Cada uno de estos ele(entos re'resenta una colu(na 'osible de una tabla. Cuando 're'are esta lista< no se 'reocu'e si no es 'er)ecta al 'rinci'io. 5i('le(ente< enu(ere cada ele(ento 9ue se le ocurra. 5i alguien (2s va a utili,ar la base de datos< '8dale ta(bi#n su o'ini-n. 42s tarde 'odr2 ajustar la lista. / continuaci-n< considere los ti'os de in)or(es o la corres'ondencia 9ue desea 'roducir con la base de datos. 1or eje('lo< tal ve, desee crear un in)or(e de ventas de 'roductos 9ue contenga las ventas 'or regi-n< o un in)or(e de resu(en de inventario con los niveles de inventario de los 'roductos. &s 'osible 9ue ta(bi#n desee generar cartas (odelo 'ara envi2rselas a los clientes con un anuncio de una actividad de ventas o una
12gina * de 23

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.

Dividir la in!or aci$n en tablas


1ara dividir la in)or(aci-n en tablas< elija las entidades o los te(as 'rinci'ales. 1or eje('lo< des'u#s de buscar + organi,ar la in)or(aci-n de una base de datos de ventas de 'roductos< la lista 'reli(inar 'odr8a ser si(ilar a la siguiente:

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.

Convertir los ele entos de in!or aci$n en colu nas


1ara deter(inar las colu(nas de una tabla :los ca('os de la tabla;< decida 9u# in)or(aci-n necesita registrar sobre el te(a re'resentado 'or la tabla. 1or eje('lo< 'ara la tabla Clientes< una buena lista de colu(nas iniciales ser8a 6o(bre< Direcci-n< CiudadI1rovinciaIC-digo 'ostal< &nviar correo electr-nico< 5aludo + Correo electr-nico. Cada registro de la tabla contiene el (is(o nD(ero de colu(nas< 'or lo 9ue 'uede al(acenar in)or(aci-n sobre el no(bre< direcci-n< ciudadI'rovinciaIc-digo 'ostal< env8o de correo electr-nico< saludo + direcci-n de correo electr-nico 'ara cada registro. 1or eje('lo< la colu(na de direcci-n 'odr8a contener las direcciones de los clientes. Cada registro contendr2 datos sobre un cliente + el ca('o de direcci-n< la direcci-n de ese cliente. Cuando ?a+a deter(inado el conjunto inicial de colu(nas 'ara cada tabla< 'uede ajustar con (a+or 'recisi-n las colu(nas. 1or eje('lo< tiene sentido al(acenar los no(bres de los clientes en dos colu(nas distintas :el no(bre + el a'ellido; 'ara 'oder ordenar< buscar e indi,ar 'or esas colu(nas. De igual )or(a< la direcci-n consta en realidad de cinco co('onentes distintos: direcci-n< ciudad< 'rovincia< c-digo 'ostal + 'a8s o regi-n< + 'arece l-gico ta(bi#n al(acenarlos en colu(nas distintas. 5i desea reali,ar< 'or eje('lo< una bDs9ueda o una o'eraci-n de ordenaci-n o )iltrado 'or 'rovincia< necesita 9ue la in)or(aci-n de 'rovincia est# al(acenada en una colu(na distinta. Debe considerar ta(bi#n si la base de datos va a contener in)or(aci-n s-lo de 'rocedencia nacional o internacional. 1or eje('lo< si 'iensa al(acenar direcciones internacionales< es 're)erible tener una colu(na Regi-n en lugar
12gina 12 de 23

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.

Especi!icar claves principales


Cada tabla debe incluir una colu(na o conjunto de colu(nas 9ue identi)i9uen ine9u8voca(ente cada )ila al(acenada en la tabla. Jsta suele ser un nD(ero de identi)icaci-n e>clusivo< co(o un nD(ero de identi)icador de e('leado o un nD(ero de serie. &n la ter(inolog8a de bases de datos< esta in)or(aci-n recibe el no(bre de clave )rinci)al de la tabla. &l RDB45 utili,a los ca('os de clave 'rinci'al 'ara asociar r2'ida(ente datos de varias tablas + reunir auto(2tica(ente esos datos. 5i +a tiene un identi)icador e>clusivo 'ara una tabla< co(o un nD(ero de 'roducto 9ue identi)ica ine9u8voca(ente cada 'roducto del cat2logo< 'uede utili,ar ese identi)icador co(o clave 'rinci'al de la tabla< 'ero s-lo si los valores de esa colu(na son sie('re di)erentes 'ara cada registro. 6o 'uede tener valores du'licados en una clave 'rinci'al. 1or eje('lo< no utilice los no(bres de las 'ersonas co(o clave 'rinci'al< +a 9ue los no(bres no son

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.

Crear relaciones entre las tablas


/?ora 9ue ?a dividido la in)or(aci-n en tablas necesita un (odo de reunir de nuevo la in)or(aci-n de )or(a 'rovec?osa. 1or eje('lo< el siguiente )or(ulario inclu+e in)or(aci-n de varias tablas.

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.

Una clave e>terna es la clave 'rinci'al de otra tabla.

=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.

%plicar las reglas de nor ali#aci$n


&n el siguiente 'aso del diseo< 'uede a'licar las reglas de nor(ali,aci-n de datos :deno(inadas a veces si('le(ente reglas de nor(ali,aci-n;. &stas reglas sirven 'ara co('robar si las tablas est2n estructuradas correcta(ente. &l 'roceso de a'licar las reglas al diseo de la base de datos se deno(ina nor(ali,ar la base de datos o< si('le(ente< nor(ali,aci-n. =a nor(ali,aci-n es (2s Dtil una ve, re'resentados todos los ele(entos de in)or(aci-n + des'u#s de ?aber de)inido un diseo 'reli(inar. =a idea es asegurarse de 9ue se ?an dividido los ele(entos de in)or(aci-n en las tablas adecuadas. =o 9ue la nor(ali,aci-n no 'uede ?acer es garanti,ar 9ue se dis'one de los ele(entos de datos correctos 'ara e('e,ar a trabajar. =as reglas se a'lican consecutiva(ente en cada 'aso 'ara garanti,ar 9ue el diseo ado'ta lo 9ue se conoce co(o 7)or(a nor(al7. Ba+ cinco )or(as nor(ales a('lia(ente ace'tadas: de la 'ri(era )or(a nor(al a la 9uinta )or(a nor(al. &n este art8culo se abordan las tres 'ri(eras< 'or9ue todas ellas son necesarias 'ara la (a+or8a de los diseos de base de datos. /rimera +orma normal =a 'ri(era )or(a nor(al establece 9ue en cada intersecci-n de )ila + colu(na de la tabla e>iste un valor + nunca una lista de valores. 1or eje('lo< no 'uede ?aber un ca('o deno(inado 1recio en el 9ue se inclu+a (2s de un 'recio. 5i considera cada intersecci-n de )ilas + colu(nas co(o una celda< cada celda s-lo 'uede contener un valor. Se unda +orma normal =a segunda )or(a nor(al e>ige 9ue cada colu(na 9ue no sea clave de'enda 'or co('leto de toda la clave 'rinci'al + no s-lo de 'arte de la clave. &sta regla se a'lica cuando e>iste una clave 'rinci'al )or(ada 'or varias colu(nas. 5u'onga< 'or eje('lo< 9ue e>iste una tabla con las siguientes colu(nas< de las cuales 0d. de 'edido e 0d. de 'roducto )or(an la clave 'rinci'al: 0d. de 'edido :clave 'rinci'al; 0d. de 'roducto :clave 'rinci'al; 6o(bre de 'roducto

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.

*nte ridad Re+erencial


/l disear una base de datos< se divide la in)or(aci-n en (uc?as tablas basadas en te(as 'ara (ini(i,ar la redundancia de los datos. / continuaci-n< se 'ro'orciona a 5"= 5erver los (edios 'ara reco'ilar de nuevo la in)or(aci-n< colocando ca('os co(unes en tablas relacionadas. 1or eje('lo< 'ara re'resentar una relaci-n de uno a varios se to(a la clave 'rinci'al de la tabla 7uno7 + se agrega co(o un ca('o adicional a la tabla 7varios7. 1ara reco'ilar de nuevo los datos< 5"= 5erver to(a el valor de la tabla 7varios7 + busca el valor corres'ondiente en la tabla 7uno7. De este (odo los valores de la tabla 7varios7 ?acen re)erencia a los valores corres'ondientes de la tabla 7uno7. 5u'onga 9ue tiene una relaci-n de uno a varios entre las tablas Crans'ortistas + 1edidos + desea eli(inar un trans'ortista. 5i el destinatario 9ue desea 9uitar tiene 'edidos en la tabla 1edidos< dic?os 'edidos 9uedar2n 7?u#r)anos7 si eli(ina el registro Crans'ortista. =os 'edidos todav8a

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

También podría gustarte