35
  Autor: Luis Felipe Wa numen Silva 1 ENCICLOPEDIA CONOCIENDO TOMO XLI ASESORÍAS BASES DE DATOS ELABORADO POR: LUIS FELIPE WANUMEN SILVA INGENIERO DE SISTEMAS Y AUTOR DE LA ENCICLOPEDIA CONOCIENDO CONTIENE EXPLICACIONES, ACLARACIÓN DE DUDAS, EJEMPLOS ADICIONALES, ENUNCIADOS Y ALGO MÁS. PRIMERA VERSIÓN AUN NO REVISADA SANTAFE DE BOGOTA D.C. AGOSTO DE 200. Enciclopedia Conociendo Asesorías Bases de Datos

Atomo Xli Asesorías Bases de Datos

Embed Size (px)

DESCRIPTION

xszxz

Citation preview

Page 1: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 1/35

 Autor: Luis Felipe Wanumen Silva 1

ENCICLOPEDIA CONOCIENDO

TOMO XLI

ASESORÍASBASES DE DATOS

ELABORADO POR:

LUIS FELIPE WANUMEN SILVA

INGENIERO DE SISTEMASY AUTOR DE LA ENCICLOPEDIA CONOCIENDO

CONTIENEEXPLICACIONES,ACLARACIÓN DEDUDAS, EJEMPLOSADICIONALES,ENUNCIADOS Y ALGOMÁS.

PRIMERA VERSIÓN AUN NO REVISADASANTAFE DE BOGOTA D.C.

AGOSTO DE 200.

Enciclopedia Conociendo Asesorías Bases de Datos

Page 2: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 2/35

 Autor: Luis Felipe Wanumen Silva 2

!. LLAVES PRIMARIAS Y FORANEAS

1.1. LLAVES PRIMARIAS CON IDENTITY:

Supongamos una tabla que se crea con las siguientes instrucciones:

create table PAIS( crea la tabla PAIS  id int identit!(1"#$ primar! %e!"  nombre n&arc'ar ()$$*

Con lo cual se est+ creando una tabla cu!a lla&e principal es el campo id, Al reali-ar lassiguientes inserciones:

insert into PAIS &alues (.C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (.ECAD/3.$*insert into PAIS &alues (.PE3.$*

Se insertan los siguientes datos:

I" #$%&'(1 C/0/BIA4 ECAD/3  5 PE3

/bser&e que el primer n6mero indica el c7digo en el que comien-a la lla&e ! el segundoindica el incremento que es necesario dar cada &e- que se 'acen inserciones,

Con el 8in de aclarar este tema" a continuaci7n &eamos otro e9ercicio:

Al crear la tabla:

create table PAIS( crea la tabla PAIS  id int identit!("2$ primar! %e!"  nombre n&arc'ar ()$$*

! posteriormente al insertar los siguientes datos:

insert into PAIS &alues (.C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (.ECAD/3.$*insert into PAIS &alues (.PE3.$*

Se obtienen los siguientes datos:

I" #$%&'(

C/0/BIA5 ECAD/3  

Enciclopedia Conociendo Asesorías Bases de Datos

Page 3: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 3/35

 Autor: Luis Felipe Wanumen Silva #

PE3

1.2. LLAVES PRIMARIAS SIN IDENTITY:

Al crear la tabla ;PAIS<" tal como se muestra a continuaci7n:

create table PAIS( crea la tabla pais  id int primar! %e!"  nombre n&arc'ar ()$$*

e insertar datos tal como se muestra a continuaci7n:

insert into PAIS &alues (.C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (.ECAD/3.$*insert into PAIS &alues (.PE3.$*

Se presentan errores debido a que el campo id debe ser especi8icado, S=0 Ser&er muestra el error mediante el siguiente mensa9e de error:

Ser&idor: mensa9e 21#" ni&el 1>" estado 4" línea 1Error de inserci7n: el nombre de columna o los &alores especi8icados no corresponden ala de8inici7n de la tabla,Ser&idor: mensa9e 21#" ni&el 1>" estado 1" línea 1Error de inserci7n: el nombre de columna o los &alores especi8icados no corresponden ala de8inici7n de la tabla,

Ser&idor: mensa9e 21#" ni&el 1>" estado 1" línea 1Error de inserci7n: el nombre de columna o los &alores especi8icados no corresponden ala de8inici7n de la tabla,

0as inserciones anteriores pueden ser arregladas especi8icando el campo a insertar en elcampo ;id<" &eamos:

insert into PAIS &alues (1".C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (2".ECAD/3.$*insert into PAIS &alues (#".PE3.$*

Como puede apreciar el amigo lector ? estudiante" es interesante notar que el 'ec'o de no colocar la palabra IDE@I al especi8icar el atributo ;id<obliga a tener que especi8icarlo manualmente a la 'ora de insertarlo,

1.3. LLAVES FORÁNEAS:

Enciclopedia Conociendo Asesorías Bases de Datos

Page 4: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 4/35

 Autor: Luis Felipe Wanumen Silva 4

En esta secci7n &amos a describir el 8uncionamiento de las lla&es 8or+neas, En primer lugar diremos que las lla&es 8or+neas son re8erencias a campos que se encuentran enotras tablas, eamos por e9emplo la creaci7n de la tabla ;PAIS< ! de la tabla;DEPA3AE@/<:

create table PAIS( crea la tabla PAIS  id int identit!(1"#$ primar! %e!"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/  iddepartamento int identit!(1"1$ primar! %e!"  idpais int not null 8oreign %e!(idpais$ re8erences PAIS(idpais$"  nombre n&arc'ar ()$$*

A'ora insertamos datos en la tabla PAIS:

insert into PAIS &alues (.C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (.ECAD/3.$*insert into PAIS &alues (.PE3.$*

que producirían la inserci7n de los siguientes datos en la tabla PAIS:

)"*+)- #$%&'(1 C/0/BIA2 ECAD/3  # PE3

3ecordemos que la tabla departamento depende de la tabla PAIS" pues el campo;idpais< de la tabla ;DEPA3AE@/< depende de la eistencia de un campo;idpais< en la tabla ;PAIS<* tanto así que si reali-amos las siguientes inserciones en latabla ;DEPA3AE@/<:

insert into DEPA3AE@/ &alues (1".A@I/=IA.$*insert into DEPA3AE@/ &alues (".AFDA0E@A.$*insert into DEPA3AE@/ &alues (#".C@DI@AA3CA.$*insert into DEPA3AE@/ &alues (2".A00E.$*

Se insertan correctamente los departamentos siguientes:

)"*"(+'%(#$ )"*+)- #$%&'(1 1 A@I/=IA# # C@DI@AA3CA4 2 A00E

Pero el departamento de ;AFDA0E@A<" no se inserta ! en la e9ecuci7n de dic'alínea" se produce un error similar al siguiente:

Ser&idor: mensa9e 45" ni&el 1>" estado 1" línea 1Instrucci7n I@SE3 en con8licto con la restricci7n C/0@ G/3EIF@ HE

Enciclopedia Conociendo Asesorías Bases de Datos

Page 5: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 5/35

 Autor: Luis Felipe Wanumen Silva

GHDEPA3AEidpa>1BJ)4J, El con8licto 'a aparecido en la base de datosasesorar" tabla PAIS" column idpais,Se termin7 la instrucci7n,

=ue indica la in8racci7n que se intenta cometer al querer insertar un departamento quedepende de un ;PAIS< con c7digo ;<" que no eiste en la tabla ;PAIS<,

1.4. SINTAXIS DE INSTRUCCIÓN FOREIGN KEY:

Es bueno recordar el siguiente diagrama que muestra ! eplica la sintais de lainstrucci7n ;8oreign %e!<:

1.5. INSTRUCCIONES FOREIGN KEY CONFUSAS:

0a siguiente creaci7n de las tablas ;PAIS< ! ;DEPA3AE@/<:

create table PAIS( crea la tabla pro8esor   idpais int identit!(1"1$ primar! %e!"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/

  iddepartamento int identit!(1"1$ primar! %e!"

Enciclopedia Conociendo Asesorías Bases de Datos

CAP/1 de la tabla que depende de la otra" inclu!endo atributos que

especi8iquen si es nulo ! el tipo de datos que &a a almacenar G/3EIF@ HE: Esta palabra reser&ada indica se indica el nombre delcampo que es lla&e 8or+nea

CAP/1: Es el mismo campo1 pero 6nicamente elnombre" sin los atributos del mismo

3EGE3E@CES:Palabra reser&ada

CAP/2: Campo que 'acere8erencia al campo de la tablaeterna de la que depende laactual

AB0A: @ombre de latabla de la que depende laactual tabla

 SINTAXIS DE LA INSTRUCCIÓNFOREIGN KEY

(FORMA RECOMENDADA, NO

CONFUSA)

1 2 # 4 >

Page 6: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 6/35

 Autor: Luis Felipe Wanumen Silva >

  idpais int not null 8oreign %e!(idpais$ re8erences PAIS(idpais$"  nombre n&arc'ar ()$$*

Es equi&alente a las siguientes instrucciones:

create table PAIS( crea la tabla pro8esor   idpais int identit!(1"1$ primar! %e!"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/  iddepartamento int identit!(1"1$ primar! %e!"  idpais int not null"  nombre n&arc'ar ()$  8oreign %e!(idpais$ re8erences PAIS(idpais$$*

/bser&emos que la palabra 8oreign %e! se encuentra despuKs de la especi8icaci7n delatributo:

  nombre n&arc'ar ()$

lo que quiere decir que el anterior diagrama eplicati&o de la instrucci7n ;8oreign %e!< puede ser escrito en 8orma m+s general como se muestra a continuaci7n:

Enciclopedia Conociendo Asesorías Bases de Datos

I@S3CCI/@ES: Cualquier cantidad de instrucciones de de8inici7n decampos de una tabla

G/3EIF@ HE: Esta palabra reser&ada indica se indica el nombre delcampo que es lla&e 8or+nea

CAP/1: Es el nombre de un campo de la tabla actual

3EGE3E@CES:Palabra reser&ada

CAP/2: Campo que 'acere8erencia al campo de la tablaeterna de la que depende laactual

AB0A: @ombre de latabla de la que depende laactual tabla

 SINTAXIS DE LA

 INSTRUCCIÓNFOREIGN KEY(FORMAGENERAL, PERO UN

 POCO CONFUSA PARA ALGUNOS)

1 2 # 4 >

Page 7: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 7/35

 Autor: Luis Felipe Wanumen Silva 5

/b&iamente es aconse9able por pura estKtica colocar la restricci7n de lla&e 8or+nea al8rente del campo al que est+ asociado para lograr ma!or &isibilidad ! claridad alidenti8icar las lla&es 8or+neas,

1.6. FOREIGN KEY FUERA DE LA DEFINICIÓN DE LA TALA:

Es posible de8inir los campos que &an a 'acer parte de una tabla ! posteriormente a ello"reali-ar una alteraci7n de la estructura de la tabla adicionando la restricci7n que coloquea un campo de dic'a tabla como un campo lla&e 8or+nea que 'ace re8erencia a otro dealguna tabla, 0o anterior en c7digo S=0 se muestra mediante la creaci7n de la tabla;CIDAD<" la cual depende de la tabla ;DEPA3AE@/< ! los scripts de creaci7nde las tablas son los siguientes:

create table PAIS( crea la tabla pro8esor   idpais int identit!(1"1$ primar! %e!"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/  iddepartamento int identit!(1"1$ primar! %e!"  idpais int not null 8oreign %e!(idpais$ re8erences PAIS(idpais$"  nombre n&arc'ar ()$$*

create table CIDAD( crea la tabla CIDAD  id int identit!(1"1$ primar! %e!"  iddepartamento int not null"

  nombre n&arc'ar ()$$*alter table CIDAD

add constraint lla&e8oraneaciudaddepartamento  8oreign %e!(iddepartamento$ re8erences DEPA3AE@/(iddepartamento$

/bser&emos detenidamente que cuando un campo se de8ine como lla&e 8or+nea en un bloque de instrucciones precedido por la instrucci7n ;alter table<" es necesario colocar nombre a la restricci7n mediante las intrucciones ;add contraint<" las cuales sonsentencias S=0 que indican al gestor de bases de datos que se &a 'a aLadir unarestricci7n cu!o nombre es el que &a a continuaci7n de mencionadas instrucciones,

1.!. ELIMINANDO UNA LLAVE FORÁNEA:

Para este e9ercicio &amos a suponer" el siguiente script:

create table PAIS( crea la tabla pro8esor   idpais int identit!(1"1$ primar! %e!"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/

  iddepartamento int identit!(1"1$ primar! %e!"

Enciclopedia Conociendo Asesorías Bases de Datos

Page 8: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 8/35

 Autor: Luis Felipe Wanumen Silva J

  idpais int not null 8oreign %e!(idpais$ re8erences PAIS(idpais$"  nombre n&arc'ar ()$$*

create table CIDAD( crea la tabla CIDAD  id int identit!(1"1$ primar! %e!"

  iddepartamento int not null"  nombre n&arc'ar ()$$*

alter table CIDADadd constraint lla&e8oraneaciudaddepartamento

  8oreign %e!(iddepartamento$ re8erences DEPA3AE@/(iddepartamento$

Si se desea eliminar la lla&e 8or+nea denominada:

lla&e8oraneaciudaddepartamento

simplemente basta e9ecutar las siguientes instrucciones:

alter table CIDADdrop constraint lla&e8oraneaciudaddepartamento

 @ota: cabe anotar que no es posible eliminar directamente una restricci7n;8oreign %e!< si esta 8ue creada en la misma de8inici7n de la tabla ! sin nombrealguno" debido a que para poder eliminar una restricci7n es necesario que Kstatenga un nombre, Pero como todo es posible en esta &ida" de antemano les

cuento que eisten procedimientos almacenados que muestran los nombres queS=0 Ser&er le coloca a dic'as lla&es 8or+neas,

1.". LLAVES FORÁNEAS CON NOMRE:

En secciones anteriores se mostraba como era posible alterar la estructura de una tablaaLadiendo una restricci7n de lla&e 8or+nea a un campo de una determinada tabla,

ambiKn se comentaba a cerca de la necesidad que eistía en este caso de colocarle unnombre a dic'a restricci7n, Pues bien" a'ora 'a llegado el momento de mostrar que es posible aLadir esta restricci7n de lla&e 8or+nea directamente en la de8inici7n de la tabla"! coloc+ndole un nombre a dic'a restricci7n" por si de pronto se requiere 'acer menci7na la misma, eamos pues:

create table PAIS( crea la tabla pro8esor   idpais int identit!(1"1$ primar! %e!"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/

  iddepartamento int identit!(1"1$ primar! %e!"  idpais int not null 8oreign %e!(idpais$ re8erences PAIS(idpais$"

Enciclopedia Conociendo Asesorías Bases de Datos

Page 9: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 9/35

 Autor: Luis Felipe Wanumen Silva

  nombre n&arc'ar ()$$*

create table CIDAD( crea la tabla CIDAD  id int identit!(1"1$ primar! %e!"  iddepartamento int not null"

  nombre n&arc'ar ()$"  constraint lla&e8oraneaciudaddepartamento  8oreign %e!(iddepartamento$ re8erences DEPA3AE@/(iddepartamento$$*

/bser&emos que en la tabla ;DEPA3AE@/< se crea un campo ;idpais<" el cuales asociado a una restricci7n de lla&e 8or+nea" pero dic'a restricci7n no tiene nombre,Caso contrario ocurre con el campo ;iddepartamento<" el cual es asociado a unarestricci7n de lla&e 8or+nea ! a dic'a restricci7n se le da el nombre de:

lla&e8oraneaciudaddepartamento

1.#. FOREIGN KEY $ACIENDO REFERENCIA A UNI%UE:

Masta el momento se 'a tratado de mostrar que la restricci7n ;G/3EIF@ HE< permiterestringir los &alores a introducir en una determinada tabla" 6nicamente a &aloreseistentes en un campo de una tabla eterna especi8ica, ambiKn se 'a mencionado quedic'o campo al que 'ace re8erencia la restricci7n ;G/3EIF@ HE<" debe ser un &alor unico" por eso se parti7 inicialmente 'aciendo re8erencia campos de tabla de8inidos con

la restricci7n ;P3IA3 HE<" pero esto no quiere decir que la restricci7n;G/3EIF@ HE< se deba re8erir siempre a campos con este tipo de restricci7n, Esentonces pertinente mencionar que la restricci7n ;G/3EIF@ HE< puede 'acer re8erencia a campos en otra tabla de8inidos con la restricci7n ;@I=E<, eamos puesel siguiente e9ercicio que muestra como la restricci7n ;G/3EIF@ HE< 'ace re8erenciaa campos en otra tabla con la restricci7n ;@I=E<:

create table PAIS( crea la tabla P3/GES/3   idpais int identit!(1"1$ primar! %e!"  codigopais int unique"  nombre n&arc'ar ()$$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/  iddepartamento int identit!(1"1$ unique"  idpais int not null 8oreign %e!(idpais$ re8erences PAIS(codigopais$"  nombre n&arc'ar ()$$*

create table CIDAD( crea la tabla CIDAD  id int identit!(1"1$ primar! %e!"  iddepartamento int not null"  nombre n&arc'ar ()$"  constraint lla&e8oraneaciudaddepartamento

  8oreign %e!(iddepartamento$ re8erences DEPA3AE@/(iddepartamento$

Enciclopedia Conociendo Asesorías Bases de Datos

Page 10: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 10/35

 Autor: Luis Felipe Wanumen Silva 1)

$*

1.1&. CAMPOS FOREIGN KEY CON VALORES NULOS:

Es posible insertar &alores nulos en un campo cu!a restricci7n sea ;G/3EIF@ HE<"siempre ! cuando no se 'alla especi8icado un &alor de nulidad o se 'alla especi8icado unla posibilidad de contener &alores nulos en el campo eterno al que 'ace re8erencia larestricci7n ;G/3EIF@ HE<, Bueno" !a sK: @ue&amente es posible que el amigo lector 'alla quedado perdido con lo epuesto anteriormente, ranquilo que a continuaci7n sedescriben estas cosas cosas con dos e9emplos, El primero muestra la inserci7n de uncampo ;@00<" en un campo con restricci7n ;G/3EIF@ HE< a cu!o campo en latabla eterna a la que 'ace re8erencia no se le especi8ico &alor de nulidad, eamos:

create table PAIS( crea la tabla P3/GES/3   idpais int identit!(1"1$ primar! %e!"  codigopais int unique"  nombre n&arc'ar ()$$*

insert into PAIS &alues (1)".C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (2)".ECAD/3.$*insert into PAIS &alues (#)".PE3.$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/  iddepartamento int identit!(1"1$ unique"

  idpais int 8oreign %e!(idpais$ re8erences PAIS(codigopais$"  nombre n&arc'ar ()$$*

insert into DEPA3AE@/ &alues (@00".A@I/=IA.$*insert into DEPA3AE@/ &alues (@00".AFDA0E@A.$*insert into DEPA3AE@/ &alues (@00".C@DI@AA3CA.$*insert into DEPA3AE@/ &alues (@00".A00E.$*

/bser&emos que los &alores de las tablas ;PAIS< ! ;DEPA3AE@/< son lossiguientes:

abla PAIS:

)"*+)- /$")$*+)- #$%&'(1 1) C/0/BIA2 2) ECAD/3  # #) PE3

abla DEPA3AE@/:

)"*"(+'%(#$ )"*+)- #$%&'(1 @00 A@I/=IA2 @00 AFDA0E@A

Enciclopedia Conociendo Asesorías Bases de Datos

Page 11: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 11/35

 Autor: Luis Felipe Wanumen Silva 11

# @00 C@DI@AA3CA4 @00 A00E

Se pueden insertar &alores nulos en el campo ;idpais< de la tabla;DEPA3AE@/<" debido a que para dic'o campo no es especi8ic7 condici7n de

nulidad ! por de8ecto cuando no se especi8ica condici7n de nulidad en el campo escomo si el campo tu&iera la palabra ;null<" que quiere decir que el campo acepta &aloresnulos, Para este caso el campo ;idpais< se de8ini7 así:

  idpais int

! esto es equi&alente a 'aberlo de8inido así:

  idpais int null

Pues por de8ecto se toma como si el campo acepta &alores nulos cuando no se especi8icacondici7n de nulidad para el campo,

En este segundo e9ercicio se muestra que es posible asignar &alores nulos a lla&es8or+neas cu!a de8inici7n del campo eterno al que 'ace re8erencia se especi8ica con la

 palabra ;null<, eamos:

create table PAIS( crea la tabla P3/GES/3   idpais int identit!(1"1$ primar! %e!"  codigopais int unique"  nombre n&arc'ar ()$$*

insert into PAIS &alues (1)".C/0/BIA.$* inserta registros en PAISinsert into PAIS &alues (2)".ECAD/3.$*insert into PAIS &alues (#)".PE3.$*

create table DEPA3AE@/( crea la tabla DEPA3AE@/  iddepartamento int identit!(1"1$ unique"  idpais int null 8oreign %e!(idpais$ re8erences PAIS(codigopais$"  nombre n&arc'ar ()$$*

insert into DEPA3AE@/ &alues (@00".A@I/=IA.$*

insert into DEPA3AE@/ &alues (@00".AFDA0E@A.$*insert into DEPA3AE@/ &alues (@00".C@DI@AA3CA.$*insert into DEPA3AE@/ &alues (@00".A00E.$*

En donde por supuesto los resultados de las inserciones son las mismas del primer e9ercicio se esta secci7n, eamos:

abla PAIS:

)"*+)- /$")$*+)- #$%&'(1 1) C/0/BIA

2 2) ECAD/3  

Enciclopedia Conociendo Asesorías Bases de Datos

Page 12: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 12/35

 Autor: Luis Felipe Wanumen Silva 12

# #) PE3

abla DEPA3AE@/:

)"*"(+'%(#$ )"*+)- #$%&'(

1 @00 A@I/=IA2 @00 AFDA0E@A# @00 C@DI@AA3CA4 @00 A00E

1.11. LLAVES PRIMARIAS Y FORÁNEAS COMPUESTAS 

Bien" !a que estamos tratando con cierta pro8undidad el tema de las lla&es primarias !

8or+neas" &eamos como se pueden generar lla&es primarias compuestas para el caso deuna tabla estudiante ! lla&es 8or+neas compuestas para el caso de una tabla matricula,

 SentenciaC3EAE AB0E estudiante( codigoestudiante integer not null"  incrementalestudiante int IDE@I (2"1$"  nombreestudiante n&arc'ar ()$" primar! %e! (codigoestudiante" incrementalestudiante$$*

C3EAE AB0E matricula

( codigoestudiante integer not null"incrementalestudiante int IDE@I (2"1$"  nombrematricula n&arc'ar ()$"

8oreign %e! (codigoestudiante" incrementalestudiante$ re8erences estudiante(codigoestudiante"incrementalestudiante$$*

I@SE3 I@/ estudiante&alues ( 1"0uis$*I@SE3 I@/ estudiante&alues ( 2"Carlos$*I@SE3 I@/ estudiante&alues ( #"Nuan$*I@SE3 I@/ estudiante

&alues ( 4"Pedro$*

D3/P AB0E estudiante*D3/P AB0E matricula*

 Res!ta"#

(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$

Enciclopedia Conociendo Asesorías Bases de Datos

Page 13: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 13/35

 Autor: Luis Felipe Wanumen Silva 1#

Como e9ercicio para 'acer en casa" &er como se debe 'acer para insertar datos en latabla matricula

3espuesta a e9ercicio propuesto para casa:

 SentenciaC3EAE AB0E estudiante( codigoestudiante integer not null"  incrementalestudiante int IDE@I (2"1$"  nombreestudiante n&arc'ar ()$" primar! %e! (codigoestudiante" incrementalestudiante$$*

C3EAE AB0E matricula( codigoestudiante integer not null"

incrementalestudiante int IDE@I (2"1$"  nombrematricula n&arc'ar ()$"

8oreign %e! (codigoestudiante" incrementalestudiante$ re8erences estudiante(codigoestudiante"incrementalestudiante$$*

I@SE3 I@/ estudiante&alues ( 1"0uis$*I@SE3 I@/ estudiante&alues ( 2"Carlos$*I@SE3 I@/ estudiante&alues ( #"Nuan$*I@SE3 I@/ estudiante&alues ( 4"Pedro$*

I@SE3 I@/ matricula (codigoestudiante" incrementalestudiante$&alues ( 1"2$*I@SE3 I@/ matricula (codigoestudiante" incrementalestudiante$&alues ( 2"#$*I@SE3 I@/ matricula (codigoestudiante" incrementalestudiante$&alues ( #"4$*I@SE3 I@/ matricula (codigoestudiante" incrementalestudiante$&alues ( 4"$*

D3/P AB0E estudiante*D3/P AB0E matricula*

 Res!ta"#

(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$(1 8ilas a8ectadas$

Enciclopedia Conociendo Asesorías Bases de Datos

Page 14: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 14/35

 Autor: Luis Felipe Wanumen Silva 14

1.12. PRECISIONES SORE LAS RESTRICCIONES Y LLAVESFORANEAS 

amos a'ora a borrar todos los datos ! las bases de datos que 'emos creado de prueba" para dar comien-o a un nue&o e9ercicio como se muestra a continuaci7n

 Sentencia

C3EAE DAABASE gestionacademica*

C3EAE AB0E pro8esor ( codigopro8esor int"  nombrepro8esor n&arc'ar ()$"  apellidopro8esor n&arc'ar ()$"  cedulapro8esor int"  constraint cedulapro8esor primar! %e! (cedulapro8esor$$*

C3EAE AB0E asignatura( 'ora integer "  dia integer "  mes integer "  ano integer "  salon integer "  codigoasignatura integer IDE@I(1"1$"  nombreasignatura n&arc'ar ()$"  constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$$*

C3EAE AB0E estudiante( codigoestudiante int IDE@I(1"1$"  'ora integer "

  dia integer "  mes integer "  ano integer "  salon integer "  nombreestudiante n&arc'ar ()$"  apellidoestudiante n&arc'ar ()$"  constraint lla&ecompuesta1 8oreign %e!('ora" dia" mes" ano" salon$ re8erences asignatura('ora" dia" mes"ano" salon$$*

D3/P AB0E estudianteD3/P AB0E asignaturaD3/P AB0E pro8essor 

 Res!ta"#

'e command(s$ completed success8ull!,

En el e9ercicio anterior" nos damos cuenta que se estan creando tres tablas: estudiante"asignatura ! pro8esor, En la tabla pro8esor" se de8ine una lla&e primaria, En la tablaasignatura se de8ine una lla&e compuesta con8ormada por los campos: 'ora" dia" mes"ano" salon, engamos en cuenta que en la creaci7n de esta tabla" 8ue necesario lacreaci7n de una restricci7n denominada lla&ecompuesta" la cual es de ambito global,Posteriormente" estamos creando una tabla estudiante que 'ace re8erencia a estos

&alores en la tabla asignatura ! que esta asociada dic'a lla&e 8or+nea con una restricci7nque en este caso es la restricci7n: lla&ecompuesta1, engamos en cuenta que este

Enciclopedia Conociendo Asesorías Bases de Datos

Page 15: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 15/35

 Autor: Luis Felipe Wanumen Silva 1

e9emplo 8unciona" pero si se modi8ica como se muestra a continuaci7n" generara algunoserrores" &eamos:

 Sentencia

C3EAE DAABASE gestionacademica*

C3EAE AB0E pro8esor ( codigopro8esor int"  nombrepro8esor n&arc'ar ()$"  apellidopro8esor n&arc'ar ()$"  cedulapro8esor int"  constraint cedulapro8esor primar! %e! (cedulapro8esor$$*

C3EAE AB0E asignatura( 'ora integer "  dia integer "  mes integer "  ano integer "  salon integer "  codigoasignatura integer IDE@I(1"1$"  nombreasignatura n&arc'ar ()$"  constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$$*

C3EAE AB0E estudiante( codigoestudiante int IDE@I(1"1$"  'ora integer "  dia integer "  mes integer "  ano integer "  salon integer "

  nombreestudiante n&arc'ar ()$"  apellidoestudiante n&arc'ar ()$"  constraint lla&ecompuesta1 8oreign %e!(dia" mes" ano" salon$ re8erences asignatura(dia" mes" ano"salon$$*

D3/P AB0E estudianteD3/P AB0E asignaturaD3/P AB0E pro8esor 

 Res!ta"#sSer&er: sg 155>" 0e&el 1>" State 1" 0ine 22

 @o 'a! cla&es principales ni candidatas en la tabla a la que se 'ace re8erencia (asignatura$ queconcuerden con la lista de columnas que 'ace la re8erencia en la cla&e eterna lla&ecompuesta1,

Ser&er: sg 15)" 0e&el 1>" State 1" 0ine 22 @o se puede crear la restricci7n, Consulte los errores anteriores,

Este c7digo genera errores" debido a que la lla&e compuesta 8or+nea" no estaeactamente de8inida como se de8ini7 en la tabla asignatura, Por lo tanto se presentadic'o error,

ambiKn 'a! que tener en cuenta que si se llega a repetir el nombre de una restricci7n"se generan errores, Para ilustrar ello" &eamos el siguiente c7digo:

 SentenciaC3EAE DAABASE gestionacademica*

Enciclopedia Conociendo Asesorías Bases de Datos

Page 16: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 16/35

 Autor: Luis Felipe Wanumen Silva 1>

C3EAE AB0E pro8esor ( codigopro8esor int"  nombrepro8esor n&arc'ar ()$"  apellidopro8esor n&arc'ar ()$"  cedulapro8esor int"

  constraint cedulapro8esor primar! %e! (cedulapro8esor$$*

C3EAE AB0E asignatura( 'ora integer "  dia integer "  mes integer "  ano integer "  salon integer "  codigoasignatura integer IDE@I(1"1$"  nombreasignatura n&arc'ar ()$"  constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$$*

C3EAE AB0E estudiante

( codigoestudiante int IDE@I(1"1$"  'ora integer "  dia integer "  mes integer "  ano integer "  salon integer "  nombreestudiante n&arc'ar ()$"  apellidoestudiante n&arc'ar ()$"  constraint lla&ecompuesta 8oreign %e!('ora" dia" mes" ano" salon$ re8erences asignatura('ora" dia" mes"ano" salon$$*

D3/P AB0E estudianteD3/P AB0E asignatura

D3/P AB0E pro8esor 

 Res!ta"#sSer&er: sg 2514" 0e&el 1>" State 4" 0ine 22a 'a! un ob9eto con el nombre lla&ecompuesta en la base de datos,Ser&er: sg 15)" 0e&el 1>" State 1" 0ine 22

 @o se puede crear la restricci7n, Consulte los errores anteriores,

Por ello" es importante que no se lleguen a repetir los nombres de las restricciones" delas tablas" ni de ningun otro elemento de la base de datos,

1.13. NULL EN LLAVES FORÁNEAS COMPUESTAS:

Si una de las columnas a las que 'ace re8erencia una restricci7n ;G/3EIF@ HE< tieneun campo ;@00<" se omite la comprobaci7n al insertar &alores en el campo que tienedic'a restricci7n de lla&e 8or+nea, eamos el siguiente script que de8ine unas tablas !reali-a algunas inserciones en algunas de ellas:

C3EAE DAABASE gestionacademica*

C3EAE AB0E pro8esor(

codigopro8esor int"nombrepro8esor n&arc'ar ()$"

Enciclopedia Conociendo Asesorías Bases de Datos

Page 17: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 17/35

 Autor: Luis Felipe Wanumen Silva 15

  apellidopro8esor n&arc'ar ()$"cedulapro8esor int"constraint cedulapro8esor primar! %e! (cedulapro8esor$

$*

I@SE3 I@/ pro8esor &alues(1"0IS G" SI0A" 1111$*I@SE3 I@/ pro8esor &alues(2"NA@ C" F/EO" 2222$*

C3EAE AB0E asignatura('ora integer "dia integer "mes integer "ano integer "salon integer "

codigoasignatura integer IDE@I(1"1$"nombreasignatura n&arc'ar ()$"constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$

$*I@SE3 I@/ asignatura('ora" dia" mes" ano" salon$A0ES(1)"1)"1)"2))#"2)1$*I@SE3 I@/ asignatura('ora" dia" mes" ano" salon$A0ES(2)"2)"2)"2))#"#)1$*

C3EAE AB0E estudiante(codigoestudiante int IDE@I(1"1$"'ora integer "dia integer "mes integer "ano integer "salon integer "nombreestudiante n&arc'ar ()$"apellidoestudiante n&arc'ar ()$"constraint lla&ecompuesta1 8oreign %e!('ora" dia" mes" ano" salon$re8erences asignatura('ora" dia" mes" ano" salon$

$*Para el caso de las tablas anteriormente creadas" tenemos que las siguientes insercionesson &+lidas:

I@SE3 I@/ estudiante('ora" dia" mes" ano" salon$A0ES(@00" @00" @00" @00" 2)4$*I@SE3 I@/ estudiante('ora" dia" mes" ano" salon$A0ES(@00" @00" @00" 14" 2)4$*I@SE3 I@/ estudiante('ora" dia" mes" ano" salon$A0ES(1)" 1)" 1)" 2))#" @00$*

I@SE3 I@/ estudiante('ora" dia" mes" ano" salon$A0ES(1)" 1)" 1)" 2))#" 2)1$*

Enciclopedia Conociendo Asesorías Bases de Datos

Page 18: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 18/35

 Autor: Luis Felipe Wanumen Silva 1J

ientras que la siguiente inserci7n no es &+lida:

I@SE3 I@/ estudiante('ora" dia" mes" ano" salon$A0ES(1)" 1)" 1)" 2))#" 2)2$*

0a ra-7n 8undamental para que no sea &+lida es que dado que ning6n &alor de los que sequiere insertar es nulo" entonces el motor de bases de datos comprueba la integridad delos datos a insertar ! no encuentra un registro en la tabla ;ASIF@A3A< quecontenga los &alores:

1)" 1)" 1)" 2))#" 2)2

Es decir" que la siguiente inserci7n es &+lida:

I@SE3 I@/ estudiante('ora" dia" mes" ano" salon$

A0ES(1)" 1)" 1)" 2))#" 2)1$*

Debido a que si eiste una asignatura que tenga estos &alores,

1.14. EL ORDEN EN LAS LLAVES FORANEAS 

Supongamos el siguiente script:

C3EAE AB0E asignatura(

'orainteger 

"dia integer "mes integer "ano integer "salon integer "codigoasignatura integer IDE@I(1"1$"nombreasignatura n&arc'ar ()$"constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$

$*I@SE3 I@/ asignatura('ora" dia" mes" ano" salon$A0ES(1)"1)"1)"2))#"2)1$*

I@SE3 I@/ asignatura('ora" dia" mes" ano" salon$A0ES(2)"2)"2)"2))#"#)1$*

C3EAE AB0E estudiante(codigoestudiante int IDE@I(1"1$"'ora integer "dia integer "mes integer "ano integer "salon integer "

nombreestudiante n&arc'ar ()$"

Enciclopedia Conociendo Asesorías Bases de Datos

Page 19: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 19/35

 Autor: Luis Felipe Wanumen Silva 1

apellidoestudiante n&arc'ar ()$"constraint lla&ecompuesta1 8oreign %e!(dia" 'ora" mes" ano" salon$re8erences asignatura('ora" dia" mes" ano" salon$$*

emos pues que este script no produce errores a6n a pesar que el campo cla&e primariase de8ine así:

  constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$

el campo lla&e 8or+nea" se de8ine así:

0o que sucede con esta instrucci7n es que 'a! cierto desorden l7gico de &alores" talcomo se muestra en el siguiente diagrama:

De otro lado" en la parte que sigue a la instrucci7n ;3EGE3E@CES<" es bien importanteel orden" por cuanto de8inir una restricci7n 8or+nea en la tabla estudiante" tal como semuestra a continuaci7n no es &+lido:

constraint lla&ecompuesta1 8oreign %e!(dia" 'ora" mes" ano" salon$re8erences asignatura(dia" 'ora" mes" ano" salon$

Pues" se generaría un error similar al siguiente:

Ser&idor: mensa9e 155>" ni&el 1>" estado 1" línea 1 @o 'a! cla&es principales ni candidatas en la tabla a la que se 'ace re8erencia(asignatura$ que concuerden con la lista de columnas que 'ace la re8erencia en la cla&eeterna lla&ecompuesta1,Ser&idor: mensa9e 15)" ni&el 1>" estado 1" línea 1

 @o se puede crear la restricci7n, Consulte los errores anteriores,

Debido a que el campo en la tabla asignatura" 8ue de8inido como se muestra acontinuaci7n:

  constraint lla&ecompuesta primar! %e!('ora" dia" mes" ano" salon$

Enciclopedia Conociendo Asesorías Bases de Datos

abla: Asignatura abla: Estudiante

'ora

dia

mes

ano

salon

'ora

dia

mes

ano

salon

Page 20: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 20/35

 Autor: Luis Felipe Wanumen Silva 2)

2. TEORÍA SOBRE LA INTEGRIDAD

0a integridad en tKrminos de bases de datos 'ace re8erencia a la capacidad paramantener datos &+lidos en una tabla de una base de datos, En el siguiente esquema semuestran las di8erentes categorías en las que se puede presentar la integridad de datos:

2.1. INTEGRIDAD DE ENTIDAD:

Si una 8ila se puede distinguir de otra 8ila de la misma tabla, Esto como el amigo lector ?estudiante lo imagina" se implementa mediante las lla&es primarias e índices creados ani&el de columna" pero que permiten que entre 8ilas se puedan distinguir los di8erentes

registros,

2.2. INTEGRIDAD DE DOMINIO:

Determina los posibles &alores que puede tomar un registro para un campo en particular,Por e9emplo" si estamos 'aciendo una base de datos que almacene el sueldo de&engado

 por una persona" no podemos permitir que se &a!a a insertar un &alor etremadamente pequeLo como 1) pesos" lo cual en la &ida pr+ctica 'o! en día es imposible que se presente que una persona gane en una empresa dic'a cantidad mensualmente,Coloquemos otro e9emplo" supongamos que tenemos una base de datos para un 'ospital

! queremos almacenar en la tabla paciente en un campo particular la edad en aLos deuna persona* ob&iamente en esta situaci7n tenemos que restringir a que la edad no sea por e9emplo ma!or a 2))" por cuanto es imposible que una persona 'o! en día &i&a m+sde 2)) aLos(Creo que 'an eistido personas que 'an alcan-ado 'asta los 1) aLos" perode a'í a pasar esta meta" es casi imposible 'acerlo$,

2.3. INTEGRIDAD REFERENCIAL

0a integridad re8erencial en bases de datos est+ íntimamente relacionada con lacapacidad de mantener datos en una tabla que no estKn en desacuerdo con datoseistentes en otras tablas, Por e9emplo" supongamos que tenemos una tabla

Enciclopedia Conociendo Asesorías Bases de Datos

Categorías de Integridad de Datos

Integridad de

E#)""

Integridad de

D$%)#)$

Integridad

R(1('(#/)

Integridad

D(1)#)" +$' (3-3')$

Page 21: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 21/35

 Autor: Luis Felipe Wanumen Silva 21

;CIDADA@/<" la cual tiene un identi8icador que se relaciona directamente con el país donde naci7" es ob&iamente a penas l7gico" que no se puede colocar unidenti8icador en dic'a tabla" si pre&iamente no eiste en la tabla PAIS" un identi8icador que se pueda relacionar,

Como el amigo lector ? estudiante puede apreciar" la integridad re8erencial" est+tremendamente relacionada con la l7gica del diseLo de la base de datos ! por tanto es un8actor sumamente importante a tener en cuenta al momento de diseLar una base de datos

2.4. INTEGRIDAD DEFINIDA POR EL USUARIO 

Supongamos a'ora que tenemos una entidad que atiende abuelitos de la tercera edad(perdonando la redundancia$ ! adem+s que cuida niLos pequeLos a las madres que por alguna ra-7n no pueden tener sus niLos durante el día (mu! seguramente porquetraba9an en la ma!oría de los casos$, 0a entidad desea almacenar en una base de datoslos nombres de las personas a las que se 'an atendido" para ello se diseL7 una base dedatos ! se lleg7 a la conclusi7n que era necesaria una tabla denominada;C0IE@EPACIE@E<" en dic'a tabla se &an a almacenar los nombres de las

 personas a las que la entidad cuida ! protege" sin importar si es un abuelito o si es unniLo pequeLo, /b&iamente es necesario almacenar en un campo de dic'a tabla" la edadde la persona ! para ello se puede obser&ar que eisten dos rangos para almacenar laedad" tal como se muestra a continuaci7n:

E"" 4)"- +' N)5$- +(63(5$- E""(- 47)"- +' &3()$-) Q 5 ) Q 1>)

0a anterior tabla" es &+lida seg6n las reglas de la empresa" 6nicamente para temporadasde mitad ! 8inal de aLo" mientras que en temporadas ordinarias de aLo" se presenta lasiguiente tabla:

E"" 4)"- +' N)5$- +(63(5$- E""(- 47)"- +' &3()$-) Q Q 1>)

Seg6n lo &isto 'asta el momento" este tipo de integridad no se podría tratar como un tipo

de integridad tan sencillo ! por tanto es casi personali-ado a una empresa especí8ica" loque requiere de8inir una integridad por parte del usuario ! esto generalmente se 'acemediante desencadenadores ! procedimientos almacenados como se &er+ en posterioressecciones de este material,

Enciclopedia Conociendo Asesorías Bases de Datos

Page 22: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 22/35

 Autor: Luis Felipe Wanumen Silva 22

. INTEGRIDAD REFERENCIAL EN ACCESS

Sean las siguientes tablas:

Partiendo de la tabla PAIS" mostrada a continuaci7n:

COD PAIS NOM PAIS1 COLOMBIA2 PERU3 ECUADOR

4 VENEZUELA

de la tabla DEPA3AE@E/" que es la siguiente:

COD DPTO COD PAIS NOM DPTO1 1 NARIÑO2 1 CHOCO3 1 VALLE4 1 BOYACA5 1 GUAVIARE6 1 CAQUETA

7 1 RISARALDA8 1 SANTANDER9 1 ANTIOQUIA

1 1 CUNDINAMARCA

Podemos concluir que un pais" contiene &arios departamentos" pero que cadadepartamento pertenece a un 6nico ! eclusi&o pais,

3.1. EXIGIR INTEGRIDAD REFERENCIAL UNICAMENTE 

Para el caso del e9ercicio que estamos traba9ando de pais ! departamento" a continuaci7nse muestran las propiedades de la relaci7n:

Enciclopedia Conociendo Asesorías Bases de Datos

Page 23: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 23/35

 Autor: Luis Felipe Wanumen Silva 2#

 @/ SE PEDE MACE3 ♦ En este caso" no se puede agregar un departamento con un c7digo de PAIS que no

eista en la tabla PAIS,♦  @o se puede borrar un PAIS que tenga re8erencias eternas en la tabla

DEPA3AE@/♦  @o se puede agregar un PAIS con un c7digo de PAIS nulo,♦  @o se puede modi8icar el codigo de un PAIS que tenga re8erencias eternas en la

tabla DEPA3AE@/,

En el caso del e9ercicio que estamos tratando" si intentamos modi8icar el codigo del paisColombia cambiandole el ;1< por el ;15<" obtenemos el siguiente mensa9e de error:

(+s adelante como el amigo estudiante ? lector podr+ apreciar" este mensa9e de error no

aparece si se acti&a la casilla de ;actuali-ar en cascada los campos relacionados<$

SE PEDE MACE3 o Se puede de9ar un DEPA3AE@/" con un c7digo de PAIS nuloo Se puede agregar un pais que no tenga re8erencias en la tabla

DEPA3AE@/,o Se puede agregar un DEPA3AE@/" con un c7digo de PAIS nulo,

3.2. INTEGRIDAD Y ACTUALI'ACIÓN EN CASCADA

Enciclopedia Conociendo Asesorías Bases de Datos

Page 24: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 24/35

 Autor: Luis Felipe Wanumen Silva 24

Continuando con el e9ercicio de esta secci7n" &eamos la siguiente gr+8ica" que nosmuestra la con8iguraci7n de la relaci7n entre las dos tablas creadas anteriormente:

 @/ SE PEDE MACE3 ♦ En este caso" no se puede agregar un departamento con un c7digo de PAIS que no

eista en la tabla PAIS,♦  @o se puede borrar un PAIS que tenga re8erencias eternas en la tabla

DEPA3AE@/♦  @o se puede agregar un PAIS con un c7digo de PAIS nulo,

SE PEDE MACE3 o Se puede de9ar un DEPA3AE@/" con un c7digo de PAIS nuloo Se puede agregar un pais que no tenga re8erencias en la tabla

DEPA3AE@/,o Se puede agregar un DEPA3AE@/" con un c7digo de PAIS nulo,o Se puede modi8icar el codigo de un PAIS que tenga re8erencias eternas en la

tabla DEPA3AE@/,(Al modi8icarse el codigo de un pais" que tengare8erencias eternas en la tabla DEPA3AE@/" se actuali-an los &alores de

dic'o codigo de pais en la tabla departamento$

3.3. INTEGRIDAD Y ELIMINACIÓN EN CASCADA

Continuando con el e9ercicio de esta secci7n" &eamos la siguiente gr+8ica" que nosmuestra la con8iguraci7n de la relaci7n entre las dos tablas que &enimos traba9ando:

Enciclopedia Conociendo Asesorías Bases de Datos

Page 25: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 25/35

 Autor: Luis Felipe Wanumen Silva 2

 @/ SE PEDE MACE3 ♦ En este caso" se puede agregar un departamento con un c7digo de PAIS que no

eista en la tabla PAIS,♦  @o se puede agregar un PAIS con un c7digo de PAIS nulo,

o  @o se puede modi8icar el codigo de un PAIS que tenga re8erencias eternas en latabla DEPA3AE@/,

SE PEDE MACE3 o Se puede de9ar un DEPA3AE@/" con un c7digo de PAIS nuloo Se puede agregar un pais que no tenga re8erencias en la tabla

DEPA3AE@/,o Se puede agregar un DEPA3AE@/" con un c7digo de PAIS nulo,

♦ Se puede borrar un PAIS que tenga re8erencias eternas en la tablaDEPA3AE@/

Para el caso del e9emplo que estamos traba9ando" al intentar reali-ar una eliminaci7n deun pais que contenga re8erencias eternas en la tabla departamento" se genera unaad&ertencia similar a la siguiente:

Enciclopedia Conociendo Asesorías Bases de Datos

Page 26: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 26/35

 Autor: Luis Felipe Wanumen Silva 2>

De9ando a 9uicio del usuario la eliminaci7n de dic'o registro, En caso de contestarsea8irmati&amente a esta pregunta" se eliminan tambiKn todos los registros de la tablaDEPA3AE@/" que 'acían re8erencia al departamento que se acaba de eliminar,

3.4. INTEGRIDAD( ACTUALI'ACIÓN Y ELIMINACIÓN EN CASCADA

 @/ SE PEDE MACE3 ♦ En este caso" se puede agregar un departamento con un c7digo de PAIS que no

eista en la tabla PAIS,♦  @o se puede agregar un PAIS con un c7digo de PAIS nulo,

SE PEDE MACE3 o Se puede de9ar un DEPA3AE@/" con un c7digo de PAIS nuloo Se puede agregar un pais que no tenga re8erencias en la tabla

DEPA3AE@/,o Se puede agregar un DEPA3AE@/" con un c7digo de PAIS nulo,

♦ Se puede borrar un PAIS que tenga re8erencias eternas en la tablaDEPA3AE@/ (3ecordemos que al responder a8irmati&amente a la pregunta de

 borrado" se borran inmediatamente todos los registros de la tabla departamento que'acen re8erencia a dic'o pais,$o Se puede modi8icar el codigo de un PAIS que tenga re8erencias eternas en la

tabla DEPA3AE@/, (Al modi8icarse el codigo de un pais" que tengare8erencias eternas en la tabla DEPA3AE@/" se actuali-an los &alores dedic'o codigo de pais en la tabla departamento$

3.5. NOTA ACLARATORIA

Enciclopedia Conociendo Asesorías Bases de Datos

Page 27: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 27/35

 Autor: Luis Felipe Wanumen Silva 25

/bser&emos que para poder reali-ar actuali-aciones en cascada ! eliminaciones encascada de registros relacionados" es necesario que se ei9a primero integridadre8erencial" tal situaci7n se muestra a continuaci7n:

En donde se puede apreciar que de no acti&ar primero la integridad re8erencial" no es posible reali-ar actuali-aciones en cascada ! muc'o menos eliminaciones en cascada,

8. INTEGRIDAD REFERENCIAL EN S9L SERVER 

4.1. ACTUALI'ACIÓN EN CASCADA

Bueno" la &erdad es que se 'a &isto el concepto de actuali-aci7n" pero la &erdad poco !nada se 'a concretado en la 8orma como esto se puede implementar en S=0 Ser&er,Pues" bien" a continuaci7n se muestra un pequeLo e9ercicio" que da una idea de una delas posibles 8ormas de resol&er este problema en mencionada 'erramienta:

Supongamos las dos tablas siguientes:

Ta$!a Pais

COD*PAIS NOM*PAIS1 C/0/BIA12 E# ERIC/4 A3FE@I@A

Ta$!a De%a&ta'ent#

COD*DPTO COD*PAIS NOM*PAIS1 1 A@I/=IA

2 1 C@DI@AA3CA

Enciclopedia Conociendo Asesorías Bases de Datos

Page 28: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 28/35

 Autor: Luis Felipe Wanumen Silva 2J

# 12 G0/3IDA

Creadas con las siguientes instrucciones:

i8 eists (select 8rom s!sob9ects T'ere id U ob9ectid(@VdboW,VPAISW$ and/BNECP3/PE3(id" @Isserable$ U 1$drop table VdboW,VPAISWF/

i8 eists (select 8rom s!sob9ects T'ere id U ob9ectid(@VdboW,VDEPA3AE@/W$and /BNECP3/PE3(id" @Isserable$ U 1$drop table VdboW,VDEPA3AE@/WF/

C3EAE AB0E VdboW,VPAISW (

VC/DPAISW VnumericW(1J" )$ @/ @00 "V@/PAISW Vn&arc'arW ()$ @00

$ /@ VP3IA3WF/

C3EAE AB0E VdboW,VDEPA3AE@/W (VC/DDP/W VnumericW(1J" )$ @/ @00 "VC/DPAISW VnumericW(1J" )$ @00 "V@/PAISW Vn&arc'arW ()$ @00

$ /@ VP3IA3WF/

Bueno" las sentencias que 'acen las respecti&as inserciones" 8ueron ob&iadas" para no'acer el manual demasiado etenso,(Se supone que el amigo lector ? estudiante" sabe'acer las inserciones en las tablas$

na actuali-aci7n en cascada para este e9ercicio" requiere que para una actuali-aci7n'ec'a en la tabla independiente" es decir en la tabla ;PAIS<" se produ-can lasactuali-aciones respecti&as en las tablas que dependan de esta" es decir para el casoespecí8ico de nuestro e9ercicio" que se produ-can actuali-aciones en la tabla;DEPA3AE@/<, 0o contrario" no se debe 'acer" por cuanto no sería una

actuali-aci7n en cascada" sino una actuali-aci7n desordenada ! sin co'erencia, Pero bueno" sin etendernos m+s" de lo que se trata es que si cambiamos el c7digo de un;PAIS< que se encuentra relacionado con uno o &arios registros de la tabla;DEPA3AE@/<" se actualicen los &alores respecti&os en la tabla;DEPA3AE@/<,

Suponemos que queremos e9ecutar la siguiente consulta:

PDAE PAISSE C/DPAIS U 2XME3E C/DPAISU12

Enciclopedia Conociendo Asesorías Bases de Datos

Page 29: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 29/35

 Autor: Luis Felipe Wanumen Silva 2

Podemos obser&ar entonces que antes de e9ecutar esta consulta" eiste una clara relaci7nentre el dapartamento ;G0/3IDA< ! el pais ;E<, (Bueno" esta relaci7n est+especi8icada implícitamente al reali-ar una consulta de los departamentos que poseecada pais" puesto que si llegase a especi8icar a ni&el de lla&e 8or+nea" no se podríareali-ar la anterior consulta de actuali-aci7n, Esta 8ue la ra-7n por la cual al crear las

tablas no se le colocaron lla&es$

A'ora &eamos como quedarían las tablas" en caso de e9ecutarse la consulta anterior:

Ta$!a Pais

COD*PAIS NOM*PAIS1 C/0/BIA2 E# ERIC/4 A3FE@I@A

Ta$!a De%a&ta'ent#

COD*DPTO COD*PAIS NOM*PAIS1 1 A@I/=IA2 1 C@DI@AA3CA# 12 G0/3IDA

Como se puede apreciar" al reali-ar una consulta que muestre los departamentos que

est+n asociados con el pais ;E<" &emos que no aparece departamento alguno, Estol7gicamente nos lle&a a pensar que de alguna u otra manera se perdi7 integridad en la

 base de datos,

Antes de continuar con nuestra eplicaci7n es necesario que de9emos las tablas comoestaban antes de e9ecutar la consulta,

 @ecesitamos que se e9ecutan ciertas acciones cada &e- que se intente reali-ar unaactuali-aci7n en la tabla ;PAIS<" ra-7n por la cual es necesario crear un trigger asociadoa la tabla ;PAIS<" que sea de tipo ;PDAE<" dic'o trigger puede tener un aspectosimilar al siguiente:

C3EAE 3IFFE3  VACA0IOA PAISW /@ VPAISWG/3 PDAEASDEC0A3E YC/DIF/IEN/ I@EFE3 DEC0A3E YC/DIF/@E/ I@EFE3 BEFI@P3I@ SE ESA ACA0IOA@D/ PAIS

SE YC/DIF/IEN/ U (SE0EC C/DPAIS G3/ DE0EED$SE YC/DIF/@E/ U (SE0EC C/DPAIS G3/ I@SE3ED$  PDAE DEPA3AE@/

Enciclopedia Conociendo Asesorías Bases de Datos

Page 30: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 30/35

 Autor: Luis Felipe Wanumen Silva #)

  SE C/DPAIS U YC/DIF/@E/  XME3E C/DPAIS U YC/DIF/IEN/E@D

A'ora bien" con el +nimo de eplicar detalladamente el 8uncionamiento del anterior 

trigger &amos a e9ecutar la siguiente consulta de inserci7n:

PDAE PAISSE C/DPAIS U 2XME3E C/DPAISU12

En la cual se actuali-a el ;PAIS< cu!o c7digo es 12" por el c7digo 2" pero obser&ando enc+mara lenta este proceso" podemos apreciar que la actuali-aci7n se reali-a en dos

 pasos" que son ;borrar e insertar<(por decirlo de alg6n modo en cuanto a trigger sere8iere$, Por e9emplo para el caso que estamos traba9ando dado que se &a a actuali-ar elregistro siguiente:

12 E

Se crea una tabla temporal denominada ;DE0EED<" la cual contiene el mismon6mero" nombre ! tipo de columnas que la tabla sobre la que se &a a reali-ar laactuali-aci7n ! es precisamente en ella" en la que se copian temporalmente los datos que&an a ser modi8icados, Esta situaci7n se muestra a continuaci7n:

Ta$!a De!ete" 

COD*PAIS NOM*PAIS12 E

Posteriormente" se crea una tabla denominada ;I@SE3ED<" la cual al igual que latabla ;DE0EED<" contiene para nuestro caso dos columnas: ;C/DPAIS< !;@/PAIS<" pero los datos que se &an a colocar" son los datos por los cuales se &an areempla-ar los datos eistentes" es decir que la tabla ;I@SE3ED<" queda con lossiguientes datos:

Ta$!a Inse&te" 

COD*PAIS NOM*PAIS2 E

0a siguiente acci7n que reali-a el motor de bases de datos es e9ecutar la consulta" con locual los resultados son los mostrados a continuaci7n:

Ta$!a Pais

COD*PAIS NOM*PAIS1 C/0/BIA2 E

Enciclopedia Conociendo Asesorías Bases de Datos

Page 31: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 31/35

 Autor: Luis Felipe Wanumen Silva #1

# ERIC/4 A3FE@I@A

Ta$!a De%a&ta'ent#

COD*DPTO COD*PAIS NOM*PAIS1 1 A@I/=IA2 1 C@DI@AA3CA# 12 G0/3IDA

Posteriormente" se e9ecuta el trigger de actuali-aci7n" el cual coloca los siguientes&alores a las &ariables:

YC/DIEN/ U 12YC/D@E/ U 2

! posteriormente e9ecuta la siguiente instrucci7n:

  PDAE DEPA3AE@/  SE C/DPAIS U 2  XME3E C/DPAIS U 12

0a cual produce que la tabla ;DEPA3AE@/<" quede como se muestra acontinuaci7n:

Ta$!a De%a&ta'ent#

COD*DPTO COD*PAIS NOM*PAIS1 1 A@I/=IA2 1 C@DI@AA3CA# 2 G0/3IDA

Por 6ltimo el motor de bases de datos" borra las tablas temporales

Es importante notar que el trigger anterior no &alida el tipo demodi8icaci7n 'ec'a a la tabla ;PAIS<" es decir" se puede dar el caso queun usuario intente cambiar el c7digo del pais ;C/0/BIA< por eln6mero ;2<" cosa que ob&iamente &iolaría !a no la integridad re8erencialo de dominio" sino la integridad de entidad ! para solucionar este

 problema" sería necesario crear una lla&e primaria en la tabla ;PAIS<" o sise quiere me9orar el trigger descrito en esta secci7n con el +nimo delograr &alidar este tipo de integridad,

A manera in8ormati&a" a continuaci7n se muestra el resultado que se tendría si se creara

una lla&e primaria para la tabla ;PAIS< ! se intentara reali-ar una consulta de

Enciclopedia Conociendo Asesorías Bases de Datos

Page 32: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 32/35

 Autor: Luis Felipe Wanumen Silva #2

actuali-aci7n que pro&oque que se repita la lla&e con respecto a otro registro de lamisma tabla:

In8racci7n de la restricci7n P3IA3 HE PHPAIS, @o se puede insertar una cla&eduplicada en el ob9eto PAIS,

Se termin7 la instrucci7n,

. TALLERES PROPUESTOS SOBRE INTEGRIDAD

5.1. TALLER OLIGATORIO 

o Plantear un e9ercicio en el cual un trigger &alide la integridad de entidad sobreconsultas de inserci7n" actuali-aci7n ! eliminaci7n,

o Plantear un e9ercicio en el cual un trigger &alide la integridad de dominio sobreconsultas de inserci7n" actuali-aci7n ! eliminaci7n,

o Plantear un e9ercicio en el cual un trigger &alide la integridad re8erencial sobreconsultas de inserci7n" actuali-aci7n ! eliminaci7n,

5.2. TALLER VOLUNTARIO 

o Plantear un e9ercicio en el cual un trigger &alide la integridad de entidad sobreconsultas de inserci7n" actuali-aci7n ! eliminaci7n en /3AC0E

o Plantear un e9ercicio en el cual un trigger &alide la integridad de dominio sobreconsultas de inserci7n" actuali-aci7n ! eliminaci7n en /3AC0E

o Plantear un e9ercicio en el cual un trigger &alide la integridad re8erencial sobreconsultas de inserci7n" actuali-aci7n ! eliminaci7n en /3AC0E

o Eplicar como en /3AC0E" se pueden especi8icar trigger para e9ecutar" antes !despuKs de la e9ecuci7n de sentencias, (raba9o obligatorio para todo aquel quellegue a 'abilitar$,

;. CONSULTAS

6.1. TIPOS DE CONSULTAS 

TIPO DE CONSULTA DESCRIPCIÓN

Consulta Eacta En este tipo de consultas se locali-an unos registrosespecí8icos por medio del operador igual a

Enciclopedia Conociendo Asesorías Bases de Datos

Page 33: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 33/35

 Autor: Luis Felipe Wanumen Silva ##

Consulta Condicional En este tipo de consulta" se utili-an los operadores Z" [U" ZU"\" \U

Consulta Aproimada En este tipo de consultas" se utili-a el operador 0IHEConsulta 6ltiple Es un tipo de consulta" en la que se espera que se de&uel&an

&arios campos por cada registro resultado

Consulta A&an-ada Se puede llamar a esta consulta a aquellas que 'acen uso detKcnicas combinadas de las consultas anteriores" para obtener un resultado

<. DUDAS 9UE NO =E PODIDO RESOLVER 

!.1. DES$AILITAR LLAVES PRIMARIAS 

Pro8esor: ]es posible des'abilitar una lla&e primaria ! tambiKn una lla&e 8or+nea parainsertar datos^

3espuesta dada al estudiante:Masta el momento no sK si pueda 'acer" pero la &erdad es que lo 6nico que se me ocurrees borrar la lla&e primaria" reali-ar la inserci7n ! posterior a ello" &ol&er a crear la lla&e

 primaria, Claro que ob&iamente esto no me de9a como mu! con&encido,

!.2. RECORRIENDO REGISTROS EN CUAL%UIER )DK 

Pro8esor: ]Por quK la aplicaci7n que usted mostr7 en clase 8unciona en casa solamente para las personas que tienen el 9d% 1,#" mientras que aquí en la no 8unciona^ ere8iero a la aplicaci7n 'ec'a en 9a&a que permite na&egar por registros de una base dedatos Access o Sql Ser&er,

3espuesta:En el 9d% 1,# 8unciona la na&egaci7n de registros ! la &erdad lo 6nico que se me ocurre'asta el momento para que 8uncione la na&egaci7n de registros en el 9d% 1,4 es que secree el cursor que &iene predeterminado el abrir una consulta" que es de a&ance" serecorran los registros de la base de datos ! se &a!a almacenando dic'os registros en un&ector din+mico o una lista ! posteriormente se manipule dic'a lista seg6n losrequerimientos de la aplicaci7n,

/tra soluci7n que se me ocurre" es utili-ar los saltos de absolutos ! relati&os por registros para a&an-ar o retroceder ! mane9ando un cursor que se abre ! se cierradin+micamente a medida que se de la orden de a&an-ar o retroceder en la aplicaci7n,

!.3. DOCUMENTACIÓN SORE DATAMINING 

Enciclopedia Conociendo Asesorías Bases de Datos

Page 34: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 34/35

 Autor: Luis Felipe Wanumen Silva #4

Pro8esor: ]Es posible que nos dK m+s documentaci7n sobre datamining^3espuesta:Esto! traba9ando en esto ! espero que en el otro semestre les pueda dar a mis estudianteme9or documentaci7n sobre este mara&illoso tema,

!.4. CREAR USUARIOS CON PROCEDIMIENTOS ALMACENADOS 

Pro8esor: ]Por quK al crear un usuario utili-ando procedimientos almacenados no setiene el mismo e8ecto que cre+ndolo manualmente^3espuesta:

 @o sK ! por m+s que 'e tratado de &er que pasa" nadie me da respuesta a esto, ([Fuauque triste dar una respuesta de estas_$

Enciclopedia Conociendo Asesorías Bases de Datos

Page 35: Atomo Xli Asesorías Bases de Datos

7/18/2019 Atomo Xli Asesorías Bases de Datos

http://slidepdf.com/reader/full/atomo-xli-asesorias-bases-de-datos 35/35

 Autor: Luis Felipe Wanumen Silva #

TABLA DE CONTENIDO

1, 00AES P3IA3IAS G/3A@EAS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,1, 00AES P3IA3IAS C/@ IDE@I:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,2, 00AES P3IA3IAS SI@ IDE@I:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#1,#, 00AES G/3`@EAS:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#1,4, SI@ARIS DE I@S3CCI@ G/3EIF@ HE:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, I@S3CCI/@ES G/3EIF@ HE C/@GSAS:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,>, G/3EIF@ HE GE3A DE 0A DEGI@ICI@ DE 0A AB0A:,,,,,,,,,,,,,,,51,5, E0II@A@D/ @A 00AE G/3`@EA:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51,J, 00AES G/3`@EAS C/@ @/B3E:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,J1,, G/3EIF@ HE MACIE@D/ 3EGE3E@CIA A @I=E:,,,,,,,,,,,,,,,,,,,,,,,,,1,1), CAP/S G/3EIF@ HE C/@ A0/3ES @0/S:,,,,,,,,,,,,,,,,,,,,,,,,,,,,1)1,11, 00AES P3IA3IAS G/3`@EAS C/PESAS,,,,,,,,,,,,,,,,,,,,,,,,,121,12, P3ECISI/@ES S/B3E 0AS 3ES3ICCI/@ES 00AESG/3A@EAS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,141,1#, @00 E@ 00AES G/3`@EAS C/PESAS:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1>1,14, E0 /3DE@ E@ 0AS 00AES G/3A@EAS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1J

2, E/3A S/B3E 0A I@EF3IDAD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2)2,1, I@EF3IDAD DE E@IDAD:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2)2,2, I@EF3IDAD DE D/I@I/:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2)2,#, I@EF3IDAD 3EGE3E@CIA0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2)2,4, I@EF3IDAD DEGI@IDA P/3 E0 SA3I/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21

#, I@EF3IDAD 3EGE3E@CIA0 E@ ACCESS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22#,1, ERIFI3 I@EF3IDAD 3EGE3E@CIA0 @ICAE@E,,,,,,,,,,,,,,,,,,,,,,,22#,2, I@EF3IDAD ACA0IOACI@ E@ CASCADA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2##,#, I@EF3IDAD E0II@ACI@ E@ CASCADA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24#,4, I@EF3IDAD" ACA0IOACI@ E0II@ACI@ E@ CASCADA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2>#,, @/A AC0A3A/3IA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2>

4, I@EF3IDAD 3EGE3E@CIA0 E@ S=0 SE3E3 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,254,1, ACA0IOACI@ E@ CASCADA,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25

, A00E3ES P3/PES/S S/B3E I@EF3IDAD,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#2

,1, A00E3 /B0IFA/3I/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#2,2, A00E3 /0@A3I/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#2>, C/@S0AS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#2

>,1, IP/S DE C/@S0AS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#25, DDAS =E @/ ME P/DID/ 3ES/0E3 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,##

5,1, DESMABI0IA3 00AES P3IA3IAS,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,##5,2, 3EC/33IE@D/ 3EFIS3/S E@ CA0=IE3 NDH ,,,,,,,,,,,,,,,,,,,,,,,,,,,,##5,#, D/CE@ACI@ S/B3E DAAI@I@F,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,##5,4, C3EA3 SA3I/S C/@ P3/CEDIIE@/S A0ACE@AD/S,,,,,##

AB0A DE C/@E@ID/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#>