You are on page 1of 38

MODELO ENTIDAD-RELACION

El modelo entidad relacin es una tcnica de representacin grfica que incorpora informacin relativa a los datos la relacin existente entre ellos para abstraer el mundo real. Las caractersticas: Las caractersticas del modelo entidad relacin son: Reflejan slo la existencia de datos, no lo que se ace con ellos! "e inclu#en todos los datos del sistema en estudio #, por tanto no est orientado a aplicaciones particulares! Es independiente de las bases de datos y sistemas operativos concretos! $o se tienen en cuenta restricciones de espacio, almacenamiento, ni tiempo de ejecucin! Est a%ierto a la evolucin del sistema! Entidad &na entidad es una cosa u o%jeto concreto o a%stracto que existe, que puede distinguirse de otros # del cual se desea almacenar informacin! Clave de una Entidad 'ntes de definir el concepto de (lave es conveniente especificar un concepto ms general denominado )dentificador, *eterminante o "uperclave! Es un conjunto de uno o ms atri%utos que permiten identificar de forma +nica una ocurrencia de Entidad dentro de un conjunto de ellas! *e entre todas las "uperclaves, aquellas para las que ning+n su%conjunto propio es a su ve, una "uperclave se denominan (L'-E" ('$*)*'.'"! *e entre todas las claves candidatas el dise/ador elegir una que pasar a denominarse (L'-E 0R)1'R)', siendo todas las dems (laves 'lternativas! 0or +ltimo definimos el concepto de (L'-E '2E$', siendo aquel o aquellos atri%utos de una Entidad que son clave primaria en otra!

Relacin Es una asociacin, sin existencia propia, de varias Entidades! "e representa mediante un rom%o! &na limitacin del modelo E3R es que no es posi%le expresar Relaciones entre Relaciones Grado de una relacin El 4rado de una Relacin representa la participacin en la Relacin de cada una de las entidades afectadas # existen tres tipos posi%les: 5:5 6una a una7: a cada ocurrencia de una entidad corresponde no ms de una ocurrencia de la otra # viceversa! 5:n 6una a muc as7: a cada ocurrencia de la primera entidad pueden corresponderle varias ocurrencias de la segunda # a cada ocurrencia de la segunda le corresponden no ms de una de la primera! n:m 6muc as a muc as7: a cada ocurrencia de la primera entidad puede corresponderle ms de una ocurrencia de la segunda # viceversa!

Estructura relacional de los datos. Tablas Es una forma sencilla de estructurar los datos, es decir, en filas # columnas 6tuplas # atri%utos en terminologa relacional7! 0ara que una ta%la forme parte de una estructura relacional de%e cumplir las siguientes condiciones: *e%e tener un solo tipo de fila, cu#o formato queda definido por el esquema de la ta%la! 0or lo tanto todas las filas tienen las mismas columnas! (ada fila de%e ser +nica # no pueden existir filas duplicadas! (ada columna de%e ser +nica # no pueden existir columnas duplicadas! (ada columna de%e estar identificada por un nom%re especfico! El valor de una columna para una fila de%e ser +nico! $o pueden existir m+ltiples valores en una posicin de una columna! Los valores de una columna de%en pertenecer al dominio que representan! Es posi%le que un mismo dominio se utilice para definir los valores de varias columnas!

El concepto relacin se utili,a para indicar que la ta%la relacional mantiene asociacin con otras ta%las, por lo que representa a una entidad asociativa!

El proceso de normali aci!n Este proceso sigue una serie de normas que, tras aplicarlas, consigue tener los datos agrupados en diferentes ta%las de forma ptima para su implementacin, gestin # explotacin desde diferentes futuras aplicaciones! El proceso de normali,acin parte de las formas normales definidas por (odd, quien defini las tres primeras! 0osteriormente unas anomalas detectadas for,aron a crear una forma normal ms completa que la 89$, es la 9$:( 6forma normal :o#ce # (odd7! *espus 9agin defini la ;9$ # <9$! La normali,acin se %asa en que = los datos son independientes de las aplicaciones que los gestionan, # su o%jetivo es o%tener el ma#or n+mero de ta%las posi%les, dejando en cada una de ellas los atri%utos imprescindi%les para representar a la entidad, o a la relacin entre entidades a la que ace referencia la ta%la mediante la conexin de sus claves! 0rimera forma normal 659$7! &na ta%la est en primera forma normal si los valores que componen el atri%uto de un tupla son elementales # +nicos! 0ara que una ta%la que no se encuentra en 59$ pase a 59$ se procede: 5! "e locali,an los atri%utos que forman parte de la clave principal >! "e descompone la ta%la reali,ando una pro#eccin: &na ta%la compuesta por la clave con los atri%utos que tienen valores +nicos ?tra ta%la con la clave # los atri%utos que tienen valores m+ltiples

"egunda forma normal 6>9$7! "e dice que una ta%la est en >9$ si # slo si cumple las siguientes condiciones : "e encuentra en 59$ .odo atri%uto secundario 6aquellos que no pertenecen a la clave principal7 dependen totalmente 6tienen una dependencia funcional total7 de la clave completa # no de parte de ella!

"e dice que el atri%uto o conjunto de atri%utos : depende "uncionalmente del atri%uto o conjunto de atri%utos ', # se representa como ' : o ' *9 : si # slo si cada valor de ' se corresponde 6a nivel conceptual7 con cada valor de :!

0ara convertir una ta%la que no est en segunda forma normal a >9$, se reali,a una pro#eccin # se crea: 5! &na ta%la con la clave # todas sus dependencias totales con los atri%utos secundarios afectados! >! ?tra ta%la con la parte de la clave que tiene dependencias, junto con los atri%utos secundarios implicados! .ercera forma normal 689$7 "e dice que una ta%la est en 89$ si # slo si cumple las siguientes condiciones : "e encuentra en >9$ $o existen atri%utos no primarios que son transitivamente dependientes de cada posi%le clave de la ta%la! Esto quiere decir que un atri%uto secundario slo se de%e conocer a travs de la clave principal o claves secundarias de la ta%la # no por medio de otro atri%uto no primario!

El algoritmo de descomposicin en 89$ consiste en: 5! "ea una *9 @ A donde @ e A son disjuntos # no son clave ni forman parte de ella! >! "e o%tienen dos pro#ecciones : .5 B 06@,A7 .> B 06&3#7 "iendo & todos los atri%utos que componen la ta%la! "i la ta%la .> sigue sin permanecer en 89$ se repite el proceso!

INTE#RIDAD DE $A%E% DE DATO% RELACIONALE%

El trmino de integridad ace referencia a la co erencia # veracidad de la informacin que se encuentra repartida por numerosas ta%las en la %ase de datos! Las +nicas operaciones que afectan a la integridad son aquellas que permiten actuali,ar de alg+n modo la informacin: 1odificacin )nsercin :orrado

Los elementos que proporciona un "istema 4estor de :ases de *atos relacional para mantener ntegra la informacin son restricciones del tipo: Restricciones de los valores que puede tomar un atri%uto en la %ase de datos, tanto referido al tipo de datos como a su dominio o conjunto de valores! 4eneralmente se ace directamente a partir de la definicin de los atri%utos en la ta%la! 'tri%utos que siempre de%en permanecer con informacin # en los que la %ase de datos no admite el valor $&LL! Estos atri%utos pueden ser claves o no! "i son claves # so%re ellos van a existir ndices +nicos, de%en estar definidos como $?. $&LL! "i no son clave, simplemente se inclu#e la clusula $?. $&LL en la definicin del atri%uto de la ta%la! La %ase de datos comprue%a esta restriccin para las operaciones de modificacin e insercin! ' pesar de que nos emos referido a "CL en los prrafos anteriores, la ma#ora de los sistemas gestores de %ases de datos permiten definir esta restriccin! Los valores de los atri%utos que forman parte de la clave principal o primaria son +nicos # la %ase de datos no puede admitir valores nulos ni duplicados! Esta restriccin toma la denominacin de = INTE#RIDAD DE ENTIDADD! 0ara ello se crearn ndices +nicos so%re la ta%la! "iempre que se realice una modificacin o insercin, la %ase de datos compro%ar que los datos no estn duplicados! (uando una ta%la mantiene una clave ajena se le denomina ta%la ija de aqulla que contienen la clave principal a la que ace referencia! Entonces, a esta otra ta%la se le denomina ta%la padre! 0ues %ien, la %ase de datos tiene que for,ar a que en toda operacin de insercin o modificacin so%re la ta%la ija, la clave ajena se corresponda con la clave principal de la ta%la padre o %ien tenga el valor $&LL! *el mismo modo,

una operacin de %orrado o de modificacin de la clave principal en la ta%la padre no de%e afectar a los valores definidos so%re las ta%las ijas! Esta restriccin toma la denominacin de = INTE#RIDAD RE&ERENCIALD! "e pueden definir determinadas restricciones o reglas que go%iernan la realidad del pro%lema con las operaciones de actuali,acin! La %ase de datos tiene que ser capa, por s misma de validar aquellas operaciones que pueden verse afectadas por reglas o solicitudes de la empresa! Este tipo de restricciones toma el nom%re de = RE#LA% %EMANTICA%D!

CONCE'TO% $A%ICO% DE D$(

Bases de datos Relacional *:> es un administrador de sistema de %ase de datos relacional! Los datos en una %ase de datos relacional pueden existir en una o ms ta%las! (ada una contiene # especifica el nom%re de las columnas # el nom%re de las filas! (ada columna en una fila esta relacionada de alguna forma con otras columnas! %)L ".R&(.&RE* C&ERA L'$4&'4E, lenguaje usado para acceso de datos en ta%las de *:>! "CL contiene las sentencia de definicin de los datos # las sentencias de manipulacin de los datos 6retrieve, insert, delete, # update7 so%re los datos de la ta%la! "CL tam%in ejecuta funciones que no definen ni manipulan datos, tales como 4R'$.)$4 o RE-?EE que son ustili,adas para autori,ar o impedir el uso de los recursos! Estructura de D$( Estructuras de *atos *ata%ases: &na %ase de datos fija la estructura del *:>F cuando se define una %ase de datos en *:>, se da un nom%re a las .a%las e )ndices asociados, # tam%in .a%le "pace en cual ellas residen! &na sola %ase de datos, puede contener todos los datos asociados con una aplicacin o con un grupo de aplicaciones relacionadas! "torage groups: El "torage 4roup de *:> pone los vol+menes en el *ispositivo de 'lmacenamiento de acceso *irecto6*'"*7! Los vol+menes tienen los *atasets en los cuales ta%las e ndices estn almacenados! &n "torage 4roups puede tener asta588 -olumenes, todos del mismo tipo! "i los volumenes de clarados no estan su%idos o no son del mismo tipo pueden ocurrir situaciones de error en los procesos de alocacin dinmica6momento de extend o de create de un space7!

.a%le "pace: En el se encuentran almacenados los *ata sets que contienen una o ms ta%les! El .a%le "pace puede ser "imple, "egmentado o 0articionado! &n .a%lespace tener de 5 a G; -"'1 datasets, los datasets manejados por *:> son Linear data sets6L*"7! "imple : .iene paginas que contiene informacin desordenada de varias ta%las! "i una ta%la es dropped, el espacio ocupado por las filas no queda disponi%le asta que el ta%lespace sea reorgani,ado! "egmentado : El ta%lespace esta dividido en varios segmentos, # cada uno contiene el mismo numero de paginas! (ada segmento contiene filas de solo una ta%la en donde los datos estan ordenados!Las ventajas de utili,ar un ta%le space segmentado son las siguientes: (uando se necesita acceder a un dato de una ta%la , no es necesario acer un ta%lespace scan de toda la ta%la sino que se va directamente al segmento donde se encuentra el dato a consultar! (uando una ta%la es %loqueada, el %loqueo no interfiere con el acceso de de segmentos de otras ta%las! (uando una ta%la es %orrada los segmentos de esa ta%la quedan inmediatamente disponi%le despues del drop, # no es necesario reali,ar el Reorg!

0articionado : &n ta%lespace particionado es utili,ado para manejar datos istoricos de una ta%la, cada particion contiene informacin de una parte de la ta%la! 'unque las particiones pueden ser asignadas independientemente storage groups separados, la coleccin entera de datos es una +nica ta%la!

.a%las: los datos en una %ase de datos de *:> esta representada en ta%las, que esta conformada por 9ilas # (olumnas! )ndices: &n ndice es un mtodo de fijar apuntadores acia los datos en una ta%la *:>! El )ndice esta almacenado separadamente de la ta%la! -ieHs: &na -ieH es un camino alterno que representa los datos existentes en una o ms ta%las! &na -ieH puede incluir todas o algunas columnas de las ta%las %ase!

Estructuras del "istema *:> (atalogo: (onsiste en las ta%las de datos que estn definidos en el sistema *:>! El catalogo de *:> esta contenido en un sistema de %ase de datos D%ND$*+. *onde se crea, altera, o %orra cualquier estructura, *:> inserta, o %orra filas del catalogo que descri%e la estructura # como esta relacionada con otras estructuras! *:> *irector#: (ontiene toda la informacin requerida al iniciar el *:>! $o se puede acceder al directorio usando "CL! El directorio se maneja a travs de arc ivos -"'1 6L*"7! El director# de *:> esta contenido en un sistema de %ase de datos D%ND$*,! 'ctive and 'rc ive Logs: (ontiene todos los registros modificadfos # eventos significativos que a#a ocurrido en el Log de *:>F en el momento de alguna eventualidad *:> utili,a el Log para recuperar la informacin! *:> escri%e cada registro de log en un *'"* data set llamado active log, cuando este active log esta lleno, *:> copia el contenido del active log a un *'"* o cinta magnetica llamada arc ive log! :ootstrap *ataset 6:"*"7: el :ootstrap *ataset es un -sam Ie#3*ataset "ecuencial6Isds7 contiene informacin critica de *:>! Especificamente un inventario de todos los active # arc ive log data sets conocidos de *:> F # tam%ien los R:' que son puntos de c equeo que recuperan la informacin del log de una fec a determinada! :uffer 0ools: :uffer pools, tam%in se conoce como -irtual :uffer 0ools, reas de almacenamiento virtual usadas temporalmente para almacenar paginas de ta%le "paces o )ndices! *:> utili,a el :uffer 0ools6:0J7 para almacenar informacin en paginas de ;I! (ommunications data%ase : 6(*:7 es automaticamente creada durante la instalacin! *:> usa el (*: para adquirir informacin so%re otras *:> *istri%uidas, o con estaciones remotas que soportan arquitectura de %ase de dato relacional distri%uida! Resource Limit 9acilit# *ata%ase : (ontiene todas las limitaciones dadas por el 'dministrador de la %ase de datos para reali,ar sentencias "CL dinamicamente de "elect, &pdate, *elete, )nsert so%re las ta%las! El administrador puede esta%lecer un solo limite de autori,acin para todos los &suarios o puede dar diferentes autori,aciones para cada uno de los &suarios!

CODI&ICACION %ENTENCIA% %)L EN -N 'RO#RAMA CO$OL


(uando un programa ejecuta una sentencia "CL, el programa necesita comunicarse con *:>! (uando *:> termina la ejecucin devuelve un cdigo de retorno que puede ser evaluado por el programa! 0ara comunicarse con *:> se necesita : 5! >! 8! ;! *elimitar las sentencias *eclarar las ta%las, vistas # cursores a utili,ar *eclarar las varia%les de ost que se van a utili,ar con las sentencias "CL *eclarar el rea de comunicacin 6"CL('7 para manejar condiciones excepcionales <! (odificar las sentencias
AREA DE COMUNICACIN

&n programa (?:?L que contiene sentencias "CL de%e incluir una o am%as de las siguientes varia%les : "CL(?*E , declarada como 0)( "K6K7 :)$'RA, 0)( "K6K7 (?103; o 0)( "K6K7 (?10! "CL".'.E , declarada como 0)( @6<7 ? en su lugar, "CL(', la cual contiene am%as varia%les! "e puede codificar el rea de comunicacin directamente o usando la sentencia )$(L&*E 6+nicamente si la opcin de precompilacin ".*"CL es AE"7! La declaracin es la siguiente : E.EC %)L INCL-DE %)LCA END-E.EC. *:> actuali,a el valor de "CL(?*E # "CL".'.E despus de ejecutar cada una de las sentencias "CL! El programa puede c equear el valor de estas varia%les para determinar si la sentencia se ejecut satisfactoriamente! .odas las sentencias "CL en el programa de%en estar dentro del alcance de la declaracin de estas varia%les!

SENTENCIAS S ! DENTRO DE UN "ROGRAMA COBO!.

El sitio apropiado donde se de%en incluir las sentencias "CL dentro de un programa (?:?L, se muestra en la siguiente ta%la : %ENTENCIA %)L :E4)$ *E(L'RE "E(.)?$ E$* *E(L'RE "E(.)?$ )$(L&*E "CL(' )$(L&*E nom%re3arc ivo *E(L'RE .':LE *E(L'RE (&R"?R (ualquier otra %ECCION DEL 'RO#RAMA L?RE)$4 ".?R'4E "E(.)?$ o L)$E'4E "E(.)?$ L?RE)$4 ".?R'4E "E(.)?$ o L)$E'4E "E(.)?$ 0R?(E*&RE *)-)")?$ o *'.' *)-)")?$ M *'.' *)-)")?$ o 0R?(E*&RE *)-)")?$ 0R?(E*&RE *)-)")?$

La forma de codificar cualquier sentencia "CL en un programa es la siguiente : E.EC %)L sentencia-%)L END-E.EC La forma de incluir lneas de comentario # de continuar cadenas en la siguiente lnea es similar a la utili,ada en la programacin normal! Declaraci!n de tablas y vistas / El programa (?:?L de%e incluir la sentencia *E(L'RE .':LE para descri%ir cada ta%la # vista que el programa accese! $o es necesaria la declaracin, pero acerlo tiene sus ventajas : &na de ellas es la documentacin! 0or ejemplo, la sentencia *E(L'RE especifica la estructura de la ta%la o vista con la que se est tra%ajando con el tipo de dato de cada columna! ?tra ventaja es que el precompilador de *:> usa las declaraciones para asegurarse de que se a usado correctamente los nom%res de columnas # los tipos de datos en las sentencias! El precompilador de *:> retorna en mensaje de Harning cuando aqullos no corresponden! "e puede usar el generador de declaraciones 6*(L4E$7 para construir las sentencias *E(L'RE .':LE # entonces incluir los miem%ros generados en la *'.' *)-)")?$! Incluir c!di0o desde un miembro / 0ara incluir sentencias "CL o declaraciones de varia%les de ost (?:?L, desde un miem%ro de un arc ivo particionado, se de%e usar la siguiente sentencia "CL en el cdigo fuente donde se desea :

E.EC %)L INCL-DE nombre-miembro END-E.EC $o se puede anidar sentencias "CL! $o se de%e usar ver%os (?:?L para incluir sentencias "CL o declaraciones de varia%les, o usar la sentencia "CL )$(L&*E para incluir cdigo relacionado con el preprocesador ()("! En general, sta +ltima solo de%e usarse para cdigo relacionado con "CL! M1r0enes / "e de%e codificar las sentencias entre las columnas 5> # N> inclusive! "i =E@E( "CLD comien,a con antes de la margen i,quierda especificada, el precompilador de *:> no reconoce la sentencia "CL! La opcin 1'R4)$" del precompilador permite modificar los valores mencionados! Nombres / "e puede usar cualquier nom%re (?:?L valido para una varia%le de ost! $o se de%en usar nom%res de entrada externos o nom%res de plan de acceso que comiencen con O*"$P # nom%res de varia%les que comiencen son O"CLP! Estos nom%res son reservados para *:>! N2meros de secuencia / Las sentencias fuente que el precompilador de *:> genera no inclu#en n+meros de secuencia! Eti3uetas / "e puede preceder sentencias "CL ejuecuta%les en la 0R?(E*&RE *)-)")?$ con un nom%re o etiqueta!
USO DE #ARIAB!ES DE $OST

&na variable de 4ost es un tem de dato declarado en el lenguaje para usar con una sentencia "CL! (on ellas se puede : Recuperar datos en la varia%le para usar en el programa (olocar datos en la varia%le para insertar en una ta%la o modificar el contenido de una fila! &sar los datos en la varia%le para evaluacin con una clusula LQERE ? Q'-)$4! 'signar el valor en la varia%le para un registro especial, tal como un (&RRE$. "CL)* # (&RRE$. *E4REE! )nsertar valores nulos en columnas que usan un indicador de varia%le ost que contiene un valor negativo! "e de%en declarar explcitamente en la L?RE)$43".?R'4E "E(.)?$ o L)$E'4E "E(.)?$! "e puede preceder las sentencias (?:?L que definen las varia%les de ost con la sentencia :E4)$ *E(L'RE "E(.)?$, # terminar la definicin con E$* *E(L'RE "E(.)?$ 6esto es o%ligatorio cuando se usa la opcin de precompilacin ".*"CL6AE"77! El sm%olo =:D de%e preceder a todas las varia%les de ost en una sentencia "CL!

&na sentencia "CL que utilice una varia%le de ost de%e estar dentro del alcance de la sentencia que declara la varia%le! El siguiente es un ejemplo de utili,acin de varia%les de datos :
E@E( "CL "ELE(. $?E10, $?1:RE, *E0.? )$.? :-$?E10, :-$?1:RE, :-*E0.? 9R?1 .':L'RE10L LQERE $?E10 B :-E10)* E$*3E@E(!

ost para recuperar

2unto con las varia%les se pueden usar indicadores! peque/os que pueden ser usados para :

Estos son enteros

)ndicar si los valores de las varia%les de ost asociadas son nulos -erificar que el valor de una cadena de caracteres recuperada no a sido truncado! )nsertar valores nulos desde varia%les de ost en las columnas de las ta%las! Esto se logra colocando el valor negativo 35 en el indicador de la varia%le que se utilice en la sentencia &0*'.E o )$"ER. ! La manera de utili,ar los indicadores se ilustra en el siguiente ejemplo:
E@E( "CL "ELE(. $?E10, $?1:RE, .ELE9 )$.? :-$?E10, :-$?1:RE, :-.ELE9 :)$*$&LL 9R?1 .':L'RE10L LQERE $?E10 B :-E10)* E$*3E@E(! E@E( "CL "ELE(. $?E10, $?1:RE, .ELE9 )$.? :-$?E10, :-$?1:RE )$*)('.?R :)$*.R&$(, :-.ELE9 9R?1 .':L'RE10L LQERE $?E10 B :-E10)* E$*3E@E(!

E UI#A!ENCIA DE TI"OS DE DATOS S ! % COBO!

La siguiente ta%la a#uda a definir las varia%les de ost que reci%irn la salida de la %ase de datos! "e puede usar la ta%la para determinar el tipo de dato (?:?L que es equivalente a un tipo de dato "CL dado!
TI'O DATO %)L
"1'LL)$. )$.E4ER *E()1'L6p,s7 o $&1ER)(6p,s7 RE'L o 9L?'.6n7 *?&:LE 0RE()")?$, *?&:LE o 9L?'.6n7 (Q'R6n7 -'R(Q'R6n7 4R'0Q)(6n7 -'R4R'0Q)(6n7 *'.E .)1E .)1E".'10

TI'O DATO CO$OL


"K6;7 (?103; o :)$'ARA "K6K7 (?103; o :)$'ARA "i pS5K: "K6p3s7-K6s7 (?1038 (?1035 (?103>

NOTA%
p 3 precisinF s 3 escala "i pT5U no a# un equivalente exacto, usar (?103> 5 n >5 >> n <8

cadena de caracteres de longitud fija 5 n ><; cadena de caracteres de longitud varia%le cadena grfica de longitud fija n 3 caracteres de > %#tes 5 n 5>N cadena grfica de longitud varia%le n 3 caracteres de > %#tes cadena de caracteres de longitud fija n n 5J cadena de caracteres de longitud fija n n G n U 3 para incluir segundos cadena de caracteres de longitud fija n 5K n B>G 3 para incluir microsegundos

?verfloH: El overfloH puede producirse al tratar de recuperar una columna cu#o tipo de datos es )$.E4ER en una varia%le 0)( "K6;7 # el valor de la columna es ms grande que 8>NGN o ms peque/o que 38>NGU! "e o%tiene entonces un mensaje de Harning o de error, dependiendo de si usa o no una varia%le indicador! .runcamieno: 'l recuperar el valor de una columna (Q'R en una varia%le cu#a longitud es ms peque/a, la parte de ms a la derec a es truncada! La recuperacin del valor de una columna de punto flotante de do%le precisin o decimal en un varia%le 0)( "K6U7 (?10 remueve cualquier parte fraccional del valor! *e manera semejante, la recuperacin de un n+mero *E()1'L *:> en una varia%le equivalente (?:?L puede truncar el valor! Esto puede pasar porque un valor *E()1'L *:> puede tener asta 85 dgitos # un n+mero decimal (?:?L puede slo tener asta 5U dgitos!

Compatibilidad de tipos de dato %)L y CO$OL Las varia%les de ost usadas en las sentencias "CL de%e ser de un tipo compati%le con las columnas con las cuales se intenta usar: Los tipos de datos numricos son compati%les con cada uno de los otros: &na columna "1'LL)$., )$.E4ER, *E()1'L, RE'L o *?&:LE 0RE()")?$ es compati%le con una varia%le ost (?:?L de 0)(.&RE "K6;7, 0)(.&RE "K6K7, (?1038, (?1035, (?103;, o (?103>, :)$'RA o 0'(EE* *E()1'L! Los tipos de datos de caracter son compati%les con cada uno de los otros: &na columna (Q'R o -'R(Q'R es compati%le con una varia%le (?:?L caracter de longitud fija o longitud varia%le! .ipos de datos grfico son compati%les con cada uno de los otros:! .ipos de datos fec a # ora son compati%les con varia%les de ost tipo caracter! (uando sea necesario, *:> automticamente convierte una cadena de longitud fija a una cadena de longitud varia%le, o viceversa! Indicadores Los indicadores son enteros de > %#tes 60)( "K6;7 &"'4E :)$'RA7! La manera en que se declaran es similar a la declaracin de varia%les ost # en el orden en que se considere correcto! "e pueden definir los indicadores como una estructura o como un arreglo utili,ando la clusula ?((&R"!

'LANNIN# 'ARA 'RECOM'ILAR 5 $IND


Los programas de aplicacin *:> de%en pasar por un proceso de precompilacin para que se puedan transormar las sentencias "CL en un lenguaje reconocido por el compilador o assem%ler! El precompilador entonces: Reempla,a las sentencias "CL de los programas en cdigo compila%le (rea un mdulo de requerimento para la %ase de datos 6*:R17, el cual comunica los requerimentos "CL con *:> durante el proceso de %ind! *espus de precompilar el programa fuente, se crea un mdulo de carga 6load module7, posi%lemente uno o ms paquetes, # un plan de aplicacin! $o importa cul se aga primero! La creacin de un mdulo de carga es similar a la compilacin # la linIedicin 6linI3editing7 de cualquier aplicacin sin sentencias "CL! La creacin de un paquete o un plan de aplicacin, un proceso propio de *:>, implica acer %ind de un o ms *:R1s! 'laneaci!n para bind El proceso de %ind consiste en encontrar antes de la ejecucin del programa el camino de acceso a los datos, que *:> utili,ar para cada una de las sentencias "CL que se encuentran dentro del programa, con el o%jetivo de no repetir este procedimiento varias veces en tiempo de ejecucin 6lo cual consume muc o recurso del sistema7! *e esta manera el camino de acceso es encontrado en tiempo de :)$* o RE:)$*! *ependiendo del dise/o, exl %ind se puede reali,ar a todos los *:R1s en una sola operacin creando +nicamente un plan de aplicacin sencillo, o a alguno o todos los *:R1s en operaciones de pacIages separados! El %ind de un plan se de%e reali,ar antes de que la aplicacin corra! paquetes # planes se %loquean cuando se ace el %ind! 9ormas de acer el %ind a los *:R1s: :ind con una lista de paquetes 6pacIage list7 9cil mantenimiento *esarrollo incremental del programa 1anejo de versiones :ind para todos los *:R1s de un plan "i se modifica uno se tiene que acer %ind a todo el plan 1e,cla de los dos Los

0R?4R'1' 9&E$.E 6dsname7

()(")$ 6outname7

0RE(?10)L'*?R *:> *:R1 6outnmae7

D$RM 6outname7 ()(" command .raslator


"i el programa no es ()("

0rograma fuente modificado

:)$* 0'(E'4E 6*"$ su%command

:)$* 0L'$ 6*"$ su%command7

(ompilador (atlogo *:>: 0'(E'4E (atlogo *:>: 0L'$

0rograma o%jeto

LinIedicin

1dulo carga%le

0R?(E"? *E 0RE0'R'()?$ *E 0R?4R'1'"! "e necesita *:> para acer %ind # para correr el programa pero no para precompilar!

Cambios 3ue re3uieren bind o rebind

(uando se cam%ia el programa pro%a%lemente se invalide el pacIage para un plan entero 6.am%in puede quedar invlido cuando se a %orrado alg+n ndice que sea usado por el camino de acceso7! 'lgunos cam%ios necesitan una operacin %ind pero otros slo una operacin re%ind:
CAMBIO $EC$O *rop o recreacin de una ta%la, ndice u otro o%jeto Revocar la autori,acin para usar un o%jeto "e corre R&$".'." 'dicionar un ndice (am%io de las opciones de %ind ACCION RE UERIDA *:> ace automticamente el re%ind en la siguiente corrida *:> ace automticamente el re%ind en la siguiente corrida

"e ace necesario un RE:)$* "e ace necesario un RE:)$* Re%ind, aunque puede ser necesario :)$* con '(.)?$6RE0L'(E7 si la opcin no est disponi%le para RE:)$* (am%ios ec os en el programa # 0recompilacin, compilacin # encadenamiento del programa! sentencias "CL :)$* con '(.)?$6RE0L'(E7!

CONCURRENCIA
La concurrencia es la posi%ilidad de que uno o ms procesos o aplicaciones puedan acceder a los mismos datos casi al mismo tiempo! *e%e ser controlada para prevenir: prdida de actuali,aciones, acceso a datos a los que no se les a ec o commit 6uncommitted data7 # lecturas diferentes del mismo registro! 0ara prevenir la ocurrencia de estas situaciones, a menos que estn permitidas especficamente, *:> usa locIs para controlar la concurrencia! &n locI se asocia como un recurso de *:> a una aplicacin de tal manera que afecta a otros procesos que pueden accesar el mismo recurso! El proceso asociado con el recurso es llamado = oldD o =oHnD 6propietario7 del loocI! 's, *:> no permite a ning+n proceso, acceder a los datos que an sido cam%iados pero a+n no an sido cometidos 6committed7! El %loqueo 6locI7 por *:> produce algunos efectos que se desean minimi,ar: "uspensin: &n proceso es suspendido temporalmente cuando requiere el recurso de %loqueo que mantiene otro proceso! Este requerimento es encolado! .imeout: "e dice que un proceso est en timeout cuando a sido terminado porque a sido suspendido durante muc o tiempo! *:> termina el proceso # retorna el cdigo "CL(?*E B 3K55 o 3K58! *eadlocI: (uando dos o ms procesos cada uno con recurso de %loqueo que el otro necesita # sin el cual ellos no pueden proceder! *:> espera a que uno de los procesos entre en timeout para que el otro prosiga!

#E%TION DE %I%TEMA% DE $A%E% DE DATO% RELACIONALE%


5! *E9)$)()?$ *E *'.?" 6**L7 5!5 "E$.E$()' (RE'.E .':LE! El *:> utili,a la sentencia (RE'.E So%jeto *:>T, para crear un =o%jetoD dentro del sistema! Los o%jetos que se crean con ma#or frecuencia son ta%las e ndices! La sentencia (RE'.E .':LE reali,a lo siguiente: Esta%lece una nueva ta%la # le asigna un nom%re 'signa un nom%re a todas las columnas de la ta%la Especifica el tipo de datos de cada columna Especifica la secuencia u orden de columnas por defecto Especifica qu columnas no pueden aceptar valores nulos Especifica la clave primaria Especifica las claves secundarias 'ctuali,ar el catlogo del sistema La siguiente es la estructura de la sentencia (RE'.E .':LE: (RE'.E .':LE nom%re3de3ta%la $om3col5 tipo3datos V$?. $&LL VL).Q *E9'&L.WW $om3col> tipo3datos V$?. $&LL VL).Q *E9'&L.WW ! ! ! $om3coln tipo3datos V$?. $&LL VL).Q *E9'&L.WW (lusula clave primaria: 0R)1'RA EEA 6columna 5 Vcolumna >,!!!, columna $W7 (lusula clave secundaria: 9?RE)4$ EEA 6columna 5 Vcolumna >,!!!, columna $W7 RE9ERE$(E" 6nom%re3de3ta%la7 V?$ *ELE.E XRE".R)(., "E. $&LL, ('"('*EY W

El siguiente es un ejemplo de utili,acin de la sentencia: (RE'.E .':LE (&R"? 6(?$ (Q'R 687 $?. $&LL, ($?1:RE -'R(Q'R6>>7 $?. $&LL L).Q *E9'&L., (*E"(0 -'R(Q'R6><7 $?. $&LL L).Q *E9'&L., (RE* "1'LL)$., (.'R)9' *E()1'L 6<,>7, (*E0. (Q'R 6;7 $?. $&LL, 0R)1'RA EEA 9?RE)4$ EEA 6(?$7, 6(*E0.7 RE9ERE$(E" *E0.? 6?$ *ELE.E RE".R)(.7

En el ejemplo, se ace referencia a la ta%la de cursos que pueden dictarse en una universidad! *E0.? es el nom%re de la ta%la de departamentos! .)0?" *E *'.?" E$ "CL!

$?1:RE (Q'R 6n7 o (Q'R'(.ER 6n7 -'R(Q'R 6n7

*E"(R)0()?$ (adenas de caracteres de longitud fija representadas usando el cdigo E:(*)(! n puede ir de 5 a ><; # su valor por defecto es 5! (adenas de longitud varia%le, representadas usando E:(*)(! n es ma#or que J # menor que un n+mero determinado por el tama/o de pgina instalado 6normalmente ; E7! Las cadenas de caracteres de longitud varia%le, representadas usando E:(*)(! La longitud mxima la determina el sistema!

L?$4 -'R(Q'R

4R'0Q)( 6n7

Las cadenas de caracteres de longitud fija que contienen datos *:("! 'qu, n es el rango de 5 a 5>N, e indica el n+mero de caracteres en la cadena! (adenas de longitud varia%le que contienen datos *:("! Esta ve,, n es ma#or que J, # menor que un n+mero determinado por el tama/o de pgina de la instalacin! (adenas de grficos de longitud varia%le que contienen datos *:("! La longitud mxima est determinada por el sistema! Entero %inario de 5G %its! Entero %inario de 8> %its R'$4? *E -'L?RE" 38>NGU asta Z8>NGU 3>5;N;U8G;U asta Z>5;N;U8G;N

-'R4R'0Q)( 6n7

L?$4 -'R4R'0 Q)( "1'LL)$. )$.E4ER o )$. 9L?'. 6n7 o RE'L

$+mero de punto flotante de Rango de magnitud: precisin simple n <!;E3NK a N!>EZN< en el rango de 5 a >5! "i n se omite, la columna tiene precisin do%le! El n+mero se define usando 8> %its!

9L?'.

6n7 o $+mero de punto flotante n Rango de magnitud es: *?&:LE est en el rango de <!;E3NK a N!>E ZN< 0RE()")?$ >> a <8 6el valor por defecto es <87! El n+mero se define usando G; %its! $+mero decimal con 3KKKKKKKKKKKKKKK precisin p # escala a s! La precisin es el ZKKKKKKKKKKKKKKK n+mero total de dgitos # de%e estar entre 5 # 5<! La escala es el n+mero de dgitos en la parte fraccional # de%e estar entre J # el n+mero de precisin! "i se omite s, entonces p puede omitirse # en este caso se asume un valor de <!

*E()1'L 6p,s7 o *E( 6p,s7

5!8 "E$.E$()' (RE'.E )$*E@! "e usa para crear un o%jeto ndice en la %ase de datos! 'lgunas de las ventajas de los ndices radican en que pueden aumentar la eficacia en diversas circunstancias! Estas son: 'cceso directo a un registro especificado evitando la exploracin para locali,ar registros identificados por una clusula LQERE! ?rdenacin: El sistema puede usar un ndice para recuperar registros de una ta%la en secuencia! En ausencia del ndice, el sistema inicia una rutina de ordenacin interna que puede ser costosa, especialmente para un gran n+mero de registros! Las versiones actuales de *:>, considerarn el uso de un ndice, siempre que la sentencia "ELE(. contenga cualquiera de las siguientes pala%ras clave: ?R*ER :A, 4R?&0 :A, *)".)$(. o &$)?$! Los ndices pueden reducir el costo de una operacin join! $o a# lmite en el n+mero de ndices que se pueden crear para una ta%la dada, sin em%argo, existe un costo asociado con cada ndice pues conlleva utili,acin de espacio en disco # demora en el proceso de actuali,acin! El optimi,ador puede decidir no usar un ndice en casos tales como aqul cuando la ta%la es mu# peque/a o cuando el ndice no es lo suficientemente selectivo, casos en los cuales es mejor explorar la ta%la # extraer los registros deseados! La estructura general de la sentencia (RE'.E )$*E@ es:

(RE'.E V&$)C&EW )$*E@ nom%re3indice ?$ nom%re3ta%la 6nom%re3columna5 V'"([*E"(,W nom%re3columna> V'"([*E"(,W ! ! ! nom%re3columna$ V'"([*E"(W7 V(L&".ERW "E$.E$()' 'L.ER! La sentencia 'L.ER puede usarse para a/adir una o ms columnas nuevas a una ta%la existente! La estructura de la sentencia es: 'L.ER nom%re ta%la '** nom%re3columna5 tipo3dato, '** nom%re3columna> tipo3dato, ! ! ! '** nom%re3columna$ tipo3datoF

>! "ELE(()\$ *E *'.?" *E &$' .':L' ")10LE! >!5 L' "E$.E$()' "ELE(. Esta sentencia se utili,a para recuperar datos de la %ase de datos, organi,ados en una ta%la resultado o consulta! "u estructura general es la siguiente: "ELE(. nom%re3columna5,nom%re3columna>,!!!,nom%re3columna$ 9R?1 nom%re ta%la VLQERE condicinW La consulta se formula de las siguientes formas: )dentificando la ta%la que contiene los datos deseados! El nom%re de ta%la se coloca en la clusula 9R?1! )dentificando las columnas que van a ser visuali,adas! Los nom%res de columna se colocan en la clusula "ELE(. 6="ELE(. M = visuali,ar todas las columnas7! (odificando una condicin en la clusula LQERE que especifica los criterios de seleccin de filas! "u ausencia implica que todas las filas sern seleccionadas! "i utili,amos la pala%ra clave *)".)$(. 6"ELE(. *)".)$(.7 se eliminarn del resultado las filas duplicadas! ?R*E$'()?$ *E L' .':L' RE"&L.'*? La ta%la resultado puede ser ordenada en cualquier columna que pueda ser denominada por el nom%re o por el n+mero de columna! La secuencia de ordenacin por defecto es ascendente 6'"(7! &na secuencia descendente puede ser esta%lecida mediante el uso del parmetro *E"(! La estructura de la sentencia quedara entonces: "ELE(. nom%re3columna5,nom%re3columna>,!!!,nom%re3columna$ 9R?1 nom%re ta%la VLQERE condicinW V?R*ER :A nom%re3de3columna[num3de3columnaW V'"([*E"(W La clusula ?R*ER :A requiere, normalmente, que el sistema realice ms tra%ajo! Este podra ser ms significativo si el n+mero de columnas es grande!

(?$E(.?RE" :??LE'$?" '$*3?R3$?.! La siguiente es la forma de utili,acin de los conectores %ooleanos '$*, ?R # $?. en las condiciones de las consultas: LQERE cond5 '$* cond> &na fila determinada slo es seleccionada si las dos condiciones cond5 # cond> se cumplen! LQERE cond5 ?R cond> &na fila determinada es seleccionada si una o am%as condiciones se cumplen! LQERE $?. cond &na fila determinada se selecciona si la condicin cond se cumple! (uando una clusula compleja LQERE contenga ms de dos condiciones individuales, es recomenda%le usar parntesis para acer ms explcito el orden de evaluacin! En caso contrario, se aplica la jerarqua tradicional de evaluacin! Esto significa que los $?. se eval+an primero, seguidos de los '$* # despus los ?R! Existen adems otros dos operadores %astante utili,adosF ellos son :E.LEE$ e )$! LQERE col :E.LEE$ val5 '$* val> &na fila determinada se selecciona si su valor de columna est dentro del rango especificado por val5 # val>! LQERE col $?. :E.LEE$ val5 '$* val> &na fila determinada se selecciona si su valor de columna no est dentro del rango especificado por val5 # val>! LQERE col )$ 6val5, val>, !!!, valn7 &na fila determinada se selecciona si su valor de columna es igual a cualquiera de los valores especificados! LQERE col $?. )$ 6val5, val>, !!!, valn7 &na fila determinada se selecciona si su valor de columna $? es igual a ninguno de los valores especificados!

>!; (?)$()*E$()' *E 1?*EL?"! La clusula LQERE puede contener la pala%ra clave L)EE, para %uscar un modelo en una cadena de caracteres! El formato general es: LQERE nom%re3columna V$?.W L)EE modelo

El modelo se encierra entre comillas # puede contener dos caracteres comodn especiales! El signo =]D representa cualquier cadena de cualquier longitud! El sm%olo de su%ra#ado =RD representa exactamente un carcter! >!< E@0RE")?$E" 'R).1E.)('"! Las expresiones tienen una sintaxis similar a las expresiones alge%raicas, descritas en un li%ro tpico de lge%ra! "in em%argo, en el "CL a# que tener cuidado con el tipo de datos de las columnas, #a que pueden afectar la precisin decimal del resultado # causar, pro%a%lemente un des%ordamiento! "e inclu#en en la sentencia "ELE(. en el conjunto de columnas, de la siguiente manera: "ELE(. nom%re3columna5,!!!!,Vexpr3aritmetica5W,!!!! 9R?1 !!! La =expr3aritmetica5D puede contener operaciones de columnas con valores fijos o entre columnas! (ada expresin aritmtica de%e estar separada por comas lo cual "ELE(. generar una columna en la salida por cada una de ellas! "iempre que el sistema encuentre una expresin aritmtica con operandos de diferentes tipos de datos, de%e determinar el tipo de datos del resultado del clculo! Lo ace de la siguiente manera: "1'LL)$. )$.E4ER *E()1'L "1'LL)$. )$.E4ER )$.E4ER *E()1'L )$.E4ER )$.E4ER )$.E4ER *E()1'L *E()1'L *E()1'L *E()1'L *E()1'L

El resultado de un clculo nunca tiene el tipo de datos "1'LL)$.! "iempre que apare,can dos enteros en un clculo, el resultado ser un tipo entero! "iempre que me,clemos valores enteros 6"1'LL)$. o )$.E4ER7 con valores *E()1'LE", el resultado ser del tipo *E()1'L! "u precisin se limita a 5< dgitos! Aa que en una expresin aritmtica pueden ir involucrados ms de un operador aritmtico, es necesario definir la secuencia con la que se van a reali,ar las operaciones! La jerarqua de los operadores aritmticos se define como sigue: Las operaciones de multiplicacin # divisin se eval+an, primero, en orden de i,quierda a derec a de la expresin! ' continuacin, se eval+an las operaciones de suma # la resta de i,quierda a derec a de la expresin! El orden de evaluacin puede modificarse encerrando una expresin, o parte de ella, entre parntesis! Las expresiones que se inclu#en entre parntesis se eval+an primero, de acuerdo al orden de operadores que aca%amos de mencionar! *espus de la evaluacin de las expresiones entre parntesis, se eval+an los operadores que aparecen por fuera! (ondiciones de des%ordamiento 6?verfloH7 0uede suceder que el valor de una operacin exceda el rango de valores permitidos para un tipo de datos! (uando ocurre tal situacin, se produce una =condicin de des%ordamientoD! El sistema responde con un mensaje de aviso que informa de lo ocurrido! Qa# que tener en cuenta que el resultado se pierde, #a que no puede ser representado! "e puede evitar, normalmente, aciendo que el sistema cam%ie el tipo de datos de la representacin interna del resultado! 0or ejemplo, si se van a manejar dos enteros de valor grande, de forma que va#a a producir un resultado ms grande que el rango de valores permitido para un valor entero, podemos convertir el resultado en un n+mero decimal! El resultado est determinado, dependiendo de los tipos de datos de los operandos! 0ara influir en el resultado, es necesario, simplemente, incluir un operando decimal en la expresin aritmtica, de forma que no afecte al valor del resultado! Esto se puede lograr multiplicando por 5!J o sumando J!J! (ondiciones calculadas

Las expresiones aritmticas tam%in pueden darse en una clusula LQERE! El o%jetivo es o%tener una determinada fila visuali,ada, slo si cumple los criterios determinados por alg+n clculo! >!G 9&$()?$E" )$(?R0?R'*'"! Las funciones predefinidas suministran al usuario de "CL a#udas de clculo # diferentes erramientas para la manipulacin de los datos! "e pueden dividir en dos categoras: 9unciones de columna, en las que se opera so%re un grupo de filas para o%tener como resultado un +nico valor! 9unciones escalares, que operan so%re una +nica fila! "e pueden su%dividir en funciones de conversin de tipo, funciones de tratamiento de caracteres # funciones de tratamiento de datos de tipo fec a # ora! La siguiente ta%la muestra todas las funciones:
&-NCIONE% DE COL-MN A CON#ERSION DE TI"O 1)$ 1'@ (?&$. "&1 '-4 *E()1'L )$.E4ER 9L?'. *)4)." QE@ &-NCIONE% E%CALARE% TRATAMIENTO DE CAR&CTER. LE$4.Q "&:".R TRATAMIENTO DE 'EC % $ORA *'.E *'A *'A" 1?$.Q AE'R .)1E .)1E".'10 1)(R?"E(?$* "E(?$* 1)$&.E Q?&R (Q'R

8! 1'$)0&L'()?$ *E *'.?"

La manipulacin de datos del "CL, que se usan para almacenar registros en una ta%la #, posteriormente, modificar # %orrar estos registros! Estas sentencias son )$"ER., &0*'.E # *ELE.E! 8!5 L' "E$.E$()' )$"ER. La sentencia )$"ER. se utili,a para insertar un nuevo dato en una ta%la o para insertar datos existentes de una ta%la en una o en otras ta%las! La estructura de la sentencia es:

9ormato 5: )$"ER. )$.? nom%re3ta%la V 6nom%re3columnas7W -'L&E" 6constante valor [$&LL[registro3especial7 9ormato >: $om%re3ta%la V6nom%res columnas7W "entencia 3su%select

8!> L' "E$.E$()' &0*'.E La sentencia &0*'.E puede usarse para cam%iar cualquier valor en una ta%la! *e%e contener una clusula que identifique que columnas van a ser modificadas! A puede incluir una clusula LQERE para identificar los registros que se van a modificar! La sentencia tiene la siguiente estructura!

&0*'.E "E.

nom%re ta%la nom%re3columna35 B expresin35, nom%re3columna3> B expresin3>, ! ! nom%re3columna3n B expresin3n

89:ERE condici!n de b2s3ueda;

;! 1'", '(ER(' *E "CL

;!5 "E$.E$()' (RE'.E -)EL (omo se a%a comentado en temas anteriores "CL permite la creacin de vistas, con los propsitos de facilitar a los usuarios acceder a alguna informacin de la ta%la #, la seguridad de la misma! La estructura de la sentencia es la siguiente!

(RE'.E -)EL '"

nom%re3vista 6col5,col>,!!!!!7

"ELE(.RRRRRRRRRRRRRRRRRRRRRRRRRRRRR 9R?1 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

LQERERRRRRRRRRRRRRRRRRRRRRRRRRRRR

Resumen de restricciones de <ista a7 La sentencia (R'.E -)EL no puede contener ?R*ER :A o &$)?$! %7 &na vista es denominada vista =slo de lecturaD, lo que significa que las sentencias )$"ER. # *ELE.E no pueden aplicarse a la vista, si su definicin contiene alguna de estas caractersticas: c7 &na columna de funciones constructoras 6por ejemplo "&1, 1'@, etc7! d7 e7 f7 g7 *)".)$(.! 4R?&0 :A! Q'-)$4! -arias ta%las referenciadas en la clusula 9R?1!

7 (uando una vista contiene una columna de valores derivados de una columna de funciones constructoras, una consulta no puede referenciar la columna derivada en una clusula LQERE o Q'-)$4!

=. O'ERACION >OIN La operacin join permite que una consulta especifique la fusin 6merging7 de columnas de ms de una ta%la, # relacione los valores que encuentre en las columnas de cada ta%la! El 2?)$ *E *?" .':L'" es la concatenacin de filas de las dos ta%las, en donde valores de una columna de la primera ta%la coinciden con valores de una columna de la segunda ta%la! El resultado de la operacin join es una nueva ta%la que tiene una fila por cada valor coincidente que resulte de las dos ta%las originales! Las ta%las originales permanecen invaria%les! Ejemplo: "uponer que las columnas join son (8 # (' C,
' : ( * E 9 4 Q

TA$LA , C(
''' ::: ((( *** EEE 999 444 QQQ

TA$LA ( C?
5J ;< << >J >J KJ 5< KJ

CA
8< 5J G< >J KJ KJ N< KJ 8<

C$
R " . & L @ A ^

4eneralmente, una clave ajena en una ta%la, # su correspondiente clave primaria en otra ta%la, son especificadas como las columnas join! "inem%argo, como muestra el ejemplo, esto no es necesario! (ualquier columna con tipos de datos compara%les se puede especificar como columna join! La sentencia select que producira el resultado join es la siguiente: "ELE(. M 9R?1 .':L'5, .':L'> LQERE (8 B ('F C,
' * E 9 9 9 Q Q Q

.':L' RE"&L.'*? C( C? CA C$
''' *** EEE 999 999 999 QQQ QQQ QQQ 5J >J >J KJ KJ KJ KJ KJ KJ 5J >J >J KJ KJ KJ KJ KJ KJ " & & L A L A

"e de%e tener en cuenta que los valores nulos de las columnas que se unen no coinciden con ning+n otro valor, inclusive con otro valor nulo, as que no se tendrn en cuenta en la ta%la resultado! Join de una tabla consigo misma. La tcnica "CL implica la utili,acin de un =aliasD para un nom%re de ta%la! La estructura general es la siguiente:
"ELE(. Sespecif de columnas ta%la T 9R?1 nom%re3ta%la alias5, nom%re3ta%la alias> LQERE alias5!nom%re3columna5 B alias>!nom%re3columna5

Theta join! "CL permite que sea formulada una condicin join con cualquiera de los operandos estndar de comparacin! El trmino .QE.'32?)$ se usa para indicar esta posi%ilidad ms general en donde .QE.' representa un operador de comparacin dado!
"ELE(. Sespecif de columnas ta%la 5T, Sespecif de columnas ta%la >T 9R?1 nom%re3ta%la5, nom%re3ta%la> LQERE nom%re3columna5 Sconcatenador t etaT nom%re3columna>

+. %-$CON%-LTA%. "e refiere a la tcnica de anidar una sentencia "ELE(. dentro de otra! Estos se utili,an para recuperar informacin de una ta%la a partir d los resultado o%tenidos de otra 6o de la misma7 que a priori son desconocidos! *e forma simplificada, la sintaxis de los select anidados se puede expresar como sigue:
"ELE(. V*)".)$(.W Sespecif de columnasT 9R?1 nom%re3ta%la5 LQERE nom%re3columna5 SconcatenadorT 6"ELE(. V*)".)$(.W Snom%re3columna> 9R?1 nom%re3ta%la> LQERE condicion>

El tipo de la columna 5 de la ta%la 5 de%e ser compati%le con el tipo de la columna > de la ta%la >! "e pueden anidar selects asta un n+mero de < niveles! El "4:*R ir resolviendo las select siempre desde la ms interna asta la ms externa!

You might also like