Está en la página 1de 212

Fundamentos de Base de Datos

Unidad Temas Subtemas


1 Introduccin a los
sistemas de bases de
datos.
1.1 Sistemas de informacin y bases de
datos.
1.1.1 Concepto de sistema de
informacin.
1.1.2 Sistemas de informacin para
la gestin y para la ayuda en
la toma de decisiones.
1.2 Sistemas de informacin para la
gestin y para la ayuda en la toma
de decisiones.
1.3 Sistemas de bases de datos y sus
aplicaciones.
1.4 Sistemas de bases de datos frente a
los sistemas de archivos.
1.5 os distintitos niveles de
abstraccin de una base de datos.
1.! Usuarios y administradores de la
base de datos.
1." Componentes de los sistemas de
bases de datos.
1.# $r%uitectura de los sistemas de
bases de datos.
& 'odelo entidad
relacin.
&.1 Conceptos b(sicos.
&.1.1 )ntidad.
&.1.& *elacin.
&.& +ia,ramas entidad-relacin .)*/.
&.3 +ise0o de un es%uema de base
datos.
&.4 en,ua1e de 'odelado Unificado
U' .'odelo Conceptual/.
3 'odelo *elacional.
3.1 )l modelo relacional .
3.& 2l,ebra relacional.
4 Introduccin a S3. 4.1 Introduccin.
4.& )structura b(sica .S))CT4
56)*)/.
4.3 7unciones de a,re,acin .8*9U:
;<4 6$=I>8/.
4.4 Consultas sobre m?ltiples tablas.
4.4.1 Subconsultas.
4.4.& 9peradores @9I>.
4.5 'anipulacin de la base de
datos
.I>S)*T4U:+$T)4+))T)/.
5 +ise0o de bases de
datos relacionales.
5.1+ise0o de es%uemas relacionales de
bases de datos.
5.1.1 +ependencias funcionales.
5.1.2 Anomalas.
5.1.3 +escomposicin.
5.1.4 7ormas normales.
5.&'odelo )* y la normaliAacin.
5.3Reduccin de un esquema ER a
tablas.
5.An!lisis de un caso pr!ctico.
! ;ases de datos
relacionales orientadas
a ob1etos.
".1Relaciones anidadas.
!.&Tipos comple1os.
!.36erencia.
!.4Tipos de referencia.
!.5Consultas con tipos comple1os.
"."#omparacin entre las bases de datos
orientadas a ob$etos y las bases de
datos relacionales orientadas a
ob$etos.
" B'. ".1$ntecedentes.
".&)structura de los datos B'.
".3)s%uema de los documentos B'.
".3.1 +efinicin de tipos de
documento .+T+/.
".3.& )s%uemas de B'.
".4Consulta y transformacin.
".4.1 Bpath.
".4.& B%uery.
".4.3 BST.
".5$lmacenamiento de datos B'.
".!$plicaciones.
Unidad 1. Introduccin a los sistemas de
bases de datos.
1.C Sistemas de informacin y bases de datos.
1.C.1 Concepto de sistema de informacin.
%n sistema de informacin es un con$unto de elementos que interact&an entre s con el fin de apoyar las
acti'idades de una empresa o negocio.
El equipo computacional( el )ard*are necesario para que el sistema de informacin pueda operar.
El recurso )umano que interact&a con el Sistema de +nformacin, el cual est! formado por las personas
que utili-an el sistema.
%n sistema de informacin reali-a cuatro acti'idades b!sicas( entrada, almacenamiento, procesamiento y
salida de informacin.
)ntrada de InformacinD Es el proceso mediante el cual el Sistema de +nformacin toma los datos que
requiere para procesar la informacin. .as entradas pueden ser manuales o autom!ticas. .as manuales
son aquellas que se proporcionan en forma directa por el usuario, mientras que las autom!ticas son datos
o informacin que pro'ienen o son tomados de otros sistemas o mdulos. Esto &ltimo se denomina
interfases autom!ticas.
.as unidades tpicas de entrada de datos a las computadoras son las terminales, las cintas magn/ticas,
las unidades de dis0ette, los cdigos de barras, los esc!ners, la 'o-, los monitores sensibles al tacto, el
teclado y el mouse, entre otras.
$lmacenamiento de informacinD El almacenamiento es una de las acti'idades o capacidades m!s
importantes que tiene una computadora, ya que a tra'/s de esta propiedad el sistema puede recordar la
informacin guardada en la seccin o proceso anterior. Esta informacin suele ser almacenada en
estructuras de informacin denominadas arc)i'os. .a unidad tpica de almacenamiento son los discos
magn/ticos o discos duros, los discos fle1ibles o dis0ettes y los discos compactos 2#34R567.
:rocesamiento de InformacinD Es la capacidad del Sistema de +nformacin para efectuar c!lculos de
acuerdo con una secuencia de operaciones preestablecida. Estos c!lculos pueden efectuarse con datos
introducidos recientemente en el sistema o bien con datos que est!n almacenados. Esta caracterstica de
los sistemas permite la transformacin de datos fuente en informacin que puede ser utili-ada para la
toma de decisiones, lo que )ace posible, entre otras cosas, que un tomador de decisiones genere una
proyeccin financiera a partir de los datos que contiene un estado de resultados o un balance general de
un a8o base.
Salida de InformacinD .a salida es la capacidad de un Sistema de +nformacin para sacar la
informacin procesada o bien datos de entrada al e1terior. .as unidades tpicas de salida son las
impresoras, terminales, dis0ettes, cintas magn/ticas, la 'o-, los graficadores y los plotters, entre otros. Es
importante aclarar que la salida de un Sistema de +nformacin puede constituir la entrada a otro Sistema
de +nformacin o mdulo. En este caso, tambi/n e1iste una interfase autom!tica de salida. 9or e$emplo,
el Sistema de #ontrol de #lientes tiene una interfase autom!tica de salida con el Sistema de
#ontabilidad, ya que genera las pli-as contables de los mo'imientos procesales de los clientes.
A continuacin se muestran las diferentes acti'idades que puede reali-ar un Sistema de +nformacin de
#ontrol de #lientes(
$ctividades %ue realiAa un Sistema de InformacinD
)ntradasD
3atos generales del cliente( nombre, direccin, tipo de cliente, etc.
9olticas de cr/ditos( lmite de cr/dito, pla-o de pago, etc.
:acturas 2interfase autom!tico7.
9agos, depuraciones, etc.

:rocesoD
#!lculo de antig;edad de saldos.
#!lculo de intereses moratorios.
#!lculo del saldo de un cliente.
$lmacenamientoD
6o'imientos del mes 2pagos, depuraciones7.
#at!logo de clientes.
:acturas.

SalidasD
Reporte de pagos.
Estados de cuenta.
9li-as contables 2interfase autom!tica7
#onsultas de saldos en pantalla de una terminal.
.as diferentes acti'idades que reali-a un Sistema de +nformacin se pueden obser'ar en el dise8o
conceptual ilustrado en la en la figura 1.2.
Tipos y Usos de los Sistemas de Informacin
3urante los pr1imos a8os, los Sistemas de +nformacin cumplir!n tres ob$eti'os b!sicos dentro de las
organi-aciones(
1. Automati-acin de procesos operati'os.
2. 9roporcionar informacin que sir'a de apoyo al proceso de toma de decisiones.
3. .ograr
'enta$as competiti'as a tra'/s de su implantacin y uso.

.os Sistemas de +nformacin que logran la automati-acin de procesos operati'os dentro de una
organi-acin, son llamados frecuentemente Sistemas <ransaccionales, ya que su funcin primordial
consiste en procesar transacciones tales como pagos, cobros, pli-as, entradas, salidas, etc. 9or otra
parte, los Sistemas de +nformacin que apoyan el proceso de toma de decisiones son los Sistemas de
Soporte a la <oma de 3ecisiones, Sistemas para la <oma de 3ecisin de =rupo, Sistemas E1pertos de
Soporte a la <oma de 3ecisiones y Sistema de +nformacin para E$ecuti'os. El tercer tipo de sistema, de
acuerdo con su uso u ob$eti'os que cumplen, es el de los Sistemas Estrat/gicos, los cuales se
desarrollan en las organi-aciones con el fin de lograr 'enta$as competiti'as, a tra'/s del uso de la
tecnologa de informacin.
.os tipos y usos de los Sistemas de +nformacin se muestran en la figura 1.3.
A continuacin se mencionan las principales caractersticas de estos tipos de Sistemas de +nformacin.
Sistemas Transaccionales. Sus principales caractersticas son(
A tra'/s de /stos suelen lograrse a)orros significati'os de mano de obra, debido a que
automati-an tareas operati'as de la organi-acin.
#on frecuencia son el primer tipo de Sistemas de +nformacin que se implanta en las
organi-aciones. Se empie-a apoyando las tareas a ni'el operati'o de la organi-acin.
Son intensi'os en entrada y salid de informacin> sus c!lculos y procesos suelen ser simples y
poco sofisticados.
<ienen la propiedad de ser recolectores de informacin, es decir, a tra'/s de estos sistemas se
cargan las grandes bases de informacin para su e1plotacin posterior.
Son f!ciles de $ustificar ante la direccin general, ya que sus beneficios son 'isibles y palpables.
Sistemas de $poyo de las +ecisiones. .as principales caractersticas de estos son(
Suelen introducirse despu/s de )aber implantado los Sistemas <ransaccionales m!s rele'antes
de la empresa, ya que estos &ltimos constituyen su plataforma de informacin.
.a informacin que generan sir'e de apoyo a los mandos intermedios y a la alta administracin
en el proceso de toma de decisiones.
Suelen ser intensi'os en c!lculos y escasos en entradas y salidas de informacin. As, por
e$emplo, un modelo de planeacin financiera requiere poca informacin de entrada, genera poca
informacin como resultado, pero puede reali-ar muc)os c!lculos durante su proceso.
?o suelen a)orrar mano de obra. 3ebido a ello, la $ustificacin econmica para el desarrollo de
estos sistemas es difcil, ya que no se conocen los ingresos del proyecto de in'ersin.
Suelen ser Sistemas de +nformacin interacti'os y amigables, con altos est!ndares de dise8o
gr!fico y 'isual, ya que est!n dirigidos al usuario final.
Apoyan la toma de decisiones que, por su misma naturale-a son repetiti'os y de decisiones no
estructuradas que no suelen repetirse. 9or e$emplo, un Sistema de #ompra de 6ateriales que indique
cu!ndo debe )acerse un pedido al pro'eedor o un Sistema de Simulacin de ?egocios que apoye la
decisin de introducir un nue'o producto al mercado.
Estos sistemas pueden ser desarrollados directamente por el usuario final sin la participacin
operati'a de los analistas y programadores del !rea de inform!tica.
Este tipo de sistemas puede incluir la programacin de la produccin, compra de materiales, flu$o de
fondos, proyecciones financieras, modelos de simulacin de negocios, modelos de in'entarios, etc.
Sistemas )stratE,icos. Sus principales caractersticas son(
Su funcin primordial no es apoyar la automati-acin de procesos operati'os ni proporcionar
informacin para apoyar la toma de decisiones.
Suelen desarrollarse in )ouse, es decir, dentro de la organi-acin, por lo tanto no pueden
adaptarse f!cilmente a paquetes disponibles en el mercado.
<picamente su forma de desarrollo es a base de incrementos y a tra'/s de su e'olucin dentro
de la organi-acin. Se inicia con un proceso o funcin en particular y a partir de a) se 'an agregando
nue'as funciones o procesos.
Su funcin es lograr 'enta$as que los competidores no posean, tales como 'enta$as en costos y
ser'icios diferenciados con clientes y pro'eedores. En este conte1to, los Sistema Estrat/gicos son
creadores de barreras de entrada al negocio. 9or e$emplo, el uso de ca$eros autom!ticos en los bancos
en un Sistema Estrat/gico, ya que brinda 'enta$a sobre un banco que no posee tal ser'icio. Si un banco
nue'o decide abrir sus puerta al p&blico, tendr! que dar este ser'icio para tener un ni'el similar al de sus
competidores.
Apoyan el proceso de inno'acin de productos y proceso dentro de la empresa debido a que
buscan 'enta$as respecto a los competidores y una forma de )acerlo en inno'ando o creando productos y
procesos.
%n e$emplo de estos Sistemas de +nformacin dentro de la empresa puede ser un sistema 6R9
26anufacturing Resoure 9lanning7 enfocado a reducir sustancialmente el desperdicio en el proceso
producti'o, o bien, un #entro de +nformacin que proporcione todo tipo de informacin> como situacin de
cr/ditos, embarques, tiempos de entrega, etc. En este conte1to los e$emplos anteriores constituyen un
Sistema de +nformacin Estrat/gico si y slo s, apoyan o dan forma a la estructura competiti'a de la
empresa.
9or &ltimo, es importante aclarar que algunos autores consideran un cuarto tipo de sistemas de
informacin denominado Sistemas 9ersonales de +nformacin, el cual est! enfocado a incrementar la
producti'idad de sus usuarios.
)volucin de los Sistemas de Informacin
3e la seccin anterior se desprende la e'olucin que tienen los Sistemas de +nformacin en las
organi-aciones. #on frecuencia se implantan en forma inicial los Sistemas <ransaccionales y,
posteriormente, se introducen los Sistemas de Apoyo a las 3ecisiones. 9or &ltimo, se desarrollan los
Sistemas Estrat/gicos que dan forma a la estructura competiti'a de la empresa.
En la d/cada de los setenta, Ric)ard ?olan, un conocido autor y profesor de la Escuela de ?egocios de
@ar'ard, desarroll una teora que impact el proceso de planeacin de los recursos y las acti'idades de
la inform!tica.
Seg&n ?olan, la funcin de la +nform!tica en las organi-aciones e'oluciona a tra'/s de ciertas etapas de
crecimiento, las cuales se e1plican a continuacin(
#omien-a con la adquisicin de la primera computadora y normalmente se $ustifica por el a)orro
de mano de obra y el e1ceso de papeles.
.as aplicaciones tpicas que se implantan son los Sistemas <ransaccionales tales como nminas
o contabilidad.
El peque8o 3epartamento de Sistemas depende en la mayora de los casos del !rea de
contabilidad.
El tipo de administracin empleada es escaso y la funcin de los sistemas suele ser mane$ada
por un administrador que no posee una preparacin formal en el !rea de computacin.
El personal que labora en este peque8o departamento consta a lo sumo de un operador yAo un
programador. Este &ltimo podr! estar ba$o el r/gimen de )onorarios, o bien, puede recibirse el soporte de
alg&n fabricante local de programas de aplicacin.
En esta etapa es importante estar consciente de la resistencia al cambio del personal y usuario
2ciberfobia7 que est!n in'olucrados en los primeros sistemas que se desarrollan, ya que estos sistemas
son importantes en el a)orro de mano de obra.
Esta etapa termina con la implantacin e1itosa del primer Sistema de +nformacin. #abe recalcar
que algunas organi-aciones pueden 'i'ir 'arias etapas de inicio en las que la resistencia al cambio por
parte de los primeros usuarios in'olucrados aborta el intento de introducir la computador a la empresa.
Etapa de contagio o e1pansin. .os aspectos sobresalientes que permiten diagnosticar r!pido que una
empresa se encuentra en esta etapa son(
Se inicia con la implantacin e1itosa del primer Sistema de +nformacin en la organi-acin. #omo
consecuencia de lo anterior, el primer e$ecuti'o usuario se transforma en el paradigma o persona que se
)abr! que imitar.
.as aplicaciones que con frecuencia se implantan en esta etapa son el resto de los Sistemas
<ransaccionales no desarrollados en la etapa de inicio, tales como facturacin, in'entarios, control de
pedidos de clientes y pro'eedores, c)eques, etc.
El peque8o departamento es promo'ido a una categora superior, donde depende de la =erencia
Administrati'a o #ontralora.
El tipo de administracin empleado est! orientado )acia la 'enta de aplicaciones a todos los
usuarios de la organi-acin> en este punto suele contratarse a un especialista de la funcin con
preparacin acad/mica en el !rea de sistemas.
Se inicia la contratacin de personal especiali-ado y nacen puestos tales como analista de
sistemas, analista4programador, programador de sistemas, $efe de desarrollo, $efe de soporte t/cnico, etc.
.as aplicaciones desarrolladas carecen de interfases autom!ticas entre ellas, de tal forma que las
salidas que produce un sistema se tienen que alimentar en forma manual a otro sistema, con la
consecuente irritacin de los usuarios.
.os gastos por concepto de sistemas empie-an a crecer en forma importante, lo que marca la
pauta para iniciar la racionali-acin en el uso de los recursos computacionales dentro de la empresa.
Este problema y el inicio de su solucin marcan el paso a la siguiente etapa.
Etapa de control o formali-acin. 9ara identificar a una empresa que transita por esta etapa es necesario
considerar los siguientes elementos(
Esta etapa de e'olucin de la +nform!tica dentro de las empresas se inicia con la necesidad de
controlar el uso de los recursos computacionales a tra'/s de las t/cnicas de presupuestacin base cero
2partiendo de que no se tienen nada7 y la implantacin de sistemas de cargos a usuarios 2por el ser'icio
que se presta7.
.as aplicaciones est!n orientadas a facilitar el control de las operaciones del negocio para
)acerlas m!s eficaces, tales como sistemas para control de flu$o de fondos, control de rdenes de
compra a pro'eedores, control de in'entarios, control y mane$o de proyectos, etc.
El departamento de sistemas de la empresa suele ubicarse en una posicin gerencial,
dependiendo del organigrama de la 3ireccin de Administracin o :inan-as.
El tipo de administracin empleado dentro del !rea de +nform!tica se orienta al control
administrati'o y a la $ustificacin econmica de las aplicaciones a desarrollar. ?ace la necesidad de
establecer criterios para las prioridades en el desarrollo de nue'as aplicaciones. .a cartera de
aplicaciones pendientes por desarrollar empie-a a crecer.
En esta etapa se inician el desarrollo y la implantacin de est!ndares de traba$o dentro del
departamento, tales como( est!ndares de documentacin, control de proyectos, desarrollo y dise8o de
sistemas, auditora de sistemas y programacin.
Se integra a la organi-acin del departamento de sistemas, personal con )abilidades
administrati'as y preparado t/cnicamente.
Se inicia el desarrollo de interfases autom!ticas entre los diferentes sistemas.
Etapa de integracin. .as caractersticas de esta etapa son las siguientes(
.a integracin de los datos y de los sistemas surge como un resultado directo de la centrali-acin
del departamento de sistemas ba$o una sola estructura administrati'a.
.as nue'as tecnologas relacionadas con base de datos, sistemas administradores de bases de
datos y lengua$es de cuarta generacin, )icieron posible la integracin.
En esta etapa surge la primera )o$a electrnica de c!lculo comercial y los usuarios inician
)aciendo sus propias aplicaciones. Esta )erramienta ayud muc)o a que los usuarios )icieran su propio
traba$o y no tu'ieran que esperar a que sus propuestas de sistemas fueran cumplidas.
El costo del equipo y del soft*are disminuy por lo cual estu'o al alcance de m!s usuarios.
En forma paralela a los cambios tecnolgicos, cambi el rol del usuario y del departamento de
Sistemas de +nformacin. El departamento de sistemas e'olucion )acia una estructura descentrali-ada,
permitiendo al usuario utili-ar )erramientas para el desarrollo de sistemas.
.os usuarios y el departamento de sistema iniciaron el desarrollo de nue'os sistemas,
reempla-ando los sistemas antiguos, en beneficio de la organi-acin.
Etapa de administracin de datos. Entre las caractersticas que destacan en esta etapa est!n las
siguientes(
El departamento de Sistemas de +nformacin reconoce que la informacin es un recurso muy
'alioso que debe estar accesible para todos los usuarios.
9ara poder cumplir con lo anterior resulta necesario administrar los datos en forma apropiada, es
decir, almacenarlos y mantenerlos en forma adecuada para que los usuarios puedan utili-ar y compartir
este recurso.
El usuario de la informacin adquiere la responsabilidad de la integridad de la misma y debe
mane$ar ni'eles de acceso diferentes.
Etapa de madure-. Entre los aspectos sobresalientes que indican que una empresa se encuentra en esta
etapa, se incluyen los siguientes(
Al llegar a esta etapa, la +nform!tica dentro de la organi-acin se encuentra definida como una
funcin b!sica y se ubica en los primeros ni'eles del organigrama 2direccin7.
.os sistemas que se desarrollan son Sistemas de 6anufactura +ntegrados por #omputadora,
Sistemas Basados en el #onocimiento y Sistemas E1pertos, Sistemas de Soporte a las 3ecisiones,
Sistemas Estrat/gicos y, en general, aplicaciones que proporcionan informacin para las decisiones de
alta administracin y aplicaciones de car!cter estrat/gico.
En esta etapa se tienen las aplicaciones desarrolladas en la tecnologa de base de datos y se
logra la integracin de redes de comunicaciones con terminales en lugares remotos, a tra'/s del uso de
recursos computacionales.
)ttp(AA***.monografias.comAtraba$osCAsisinfAsisinf.s)tml
Ciclo de vida de los sistemas de informacin
Un sistema de informacin es el conjunto de recursos que permiten recoger, gestionar, controlar y
difundir la informacin de toda una empresa u organizacin.
Desde los aos setenta, los sistemas de bases de datos han ido reemplazando a los sistemas de
ficheros en los sistemas de informacin de las empresas. Al mismo tiempo, se ha ido
reconociendo la gran importancia que tienen los datos que stas manejan, conirtindose en uno
de sus recursos m!s importantes. "sto ha hecho que muchas empresas tengan departamentos que
se encarguen de gestionar toda su informacin, que estar! almacenada en una base de datos.
Aparecen los papeles de administrador de datos y administrador de la base de datos, que son las
personas encargadas de superisar y controlar todas las actiidades relacionadas con los datos de
la empresa y con el ciclo de ida de las aplicaciones de bases de datos, respectiamente.
Un sistema de informacin est! formado por los siguientes componentes#
$a base de datos.
"l %&'D.
$os programas de aplicacin.
$os dispositios f(sicos )ordenadores, dispositios de almacenamiento, etc.*.
"l personal que utiliza y que desarrolla el sistema.
$a base de datos es un componente fundamental de un sistema de informacin. "l ciclo de ida
de un sistema de informacin est! ligado al ciclo de ida del sistema de base de datos sobre el
que se apoya. Al ciclo de ida de los sistemas de informacin tambin se le denomina ciclo de
vida de desarrollo del software. $as etapas t(picas del ciclo de ida de desarrollo del soft+are
son# planificacin, recoleccin y an!lisis de los requisitos, diseo )incluyendo el diseo de la base
de datos*, creacin de prototipos, implementacin, prueba, conersin y mantenimiento. "ste
ciclo de ida hace nfasis en la identificacin de las funciones que realiza la empresa y en el
desarrollo de las aplicaciones que lleen a cabo estas funciones. %e dice que el ciclo de ida de
desarrollo del soft+are sigue un enfoque orientado a funciones, ya que los sistemas se en desde
el punto de ista de las funciones que llean a cabo. ,or esta razn, el an!lisis estructurado hace
nfasis en los diagramas de flujo de datos, siguiendo el moimiento de los datos a tras de una
secuencia de transformaciones, y refinando stas a tras de una serie de nieles. $o mismo
ocurre en el diseo estructurado, que e a un sistema como una funcin que se descompone
sucesiamente en nieles o subfunciones.
-oncentr!ndose en las funciones se infraaloran los datos y, en especial, la estructura de los
datos que son manipulados por las funciones. "l resultado es que estos sistemas tienen alor
durante poco tiempo en relacin con las necesidades de los usuarios a largo plazo. "sto sucede
debido a que al poco tiempo de haber instalado un sistema, las funciones implementadas son en
realidad un subconjunto de las funciones que los usuarios realmente desean. -asi
inmediatamente, los usuarios descubren una gran ariedad de sericios adicionales que quisieran
incorporar al sistema. "stas necesidades causan problemas a los sistemas obtenidos con un diseo
orientado a funciones, puesto que este diseo puede requerir una reisin importante para
acomodar las funciones adicionales.
"n contraste, el enfoque orientado a datos centra el foco de atencin en el an!lisis de los datos
utilizados por las funciones. "sto tiene dos entajas. $a primera es que los datos son una parte
considerablemente m!s estable que las funciones. $a segunda entaja es que la propia estructura
de un esquema de base de datos requiere de un an!lisis sofisticado de los datos y de sus
relaciones. Una ez que se haya construido un esquema para la base de datos que sea lgico,
podr(an disearse tantas funciones como fuera necesario para sacar proecho del mismo. %in
embargo, sin un esquema tal, la base de datos slo podr(a ser .til para una .nica aplicacin. ,or
lo tanto, el enfoque orientado a funciones puede ser bueno para el desarrollo a corto plazo, pero
pierde su alor real a largo plazo. Usando un enfoque orientado a datos, los datos pasan a ser los
cimientos sobre los cuales se puede construir una gran ariedad de funciones diferentes.
,or lo tanto, en este cap(tulo se an a estudiar cada una de las etapas del ciclo de ida de
desarrollo del soft+are desde la perspectia del desarrollo de una aplicacin de bases de datos,
siguiendo un enfoque orientado a datos.
)ttp(AA***3.u$i.esADmmarquesAfCAapunAnode"".)tml
Ciclo de vida de las aplicaciones de bases de
datos
$as etapas del ciclo de ida de una aplicacin de bases de datos son las siguientes#
/. ,lanificacin del proyecto.
0. Definicin del sistema.
1. 2ecoleccin y an!lisis de los requisitos.
3. Diseo de la base de datos.
4. %eleccin del %&'D.
5. Diseo de la aplicacin.
6. ,rototipado.
7. 8mplementacin.
9. -onersin y carga de datos.
/:. ,rueba.
//. ;antenimiento.
"stas etapas no son estrictamente secuenciales. De hecho hay que repetir algunas de las etapas
arias eces, haciendo lo que se conocen como ciclos de realimentacin. ,or ejemplo, los
problemas que se encuentran en la etapa del diseo de la base de datos pueden requerir una
recoleccin de requisitos adicional y su posterior an!lisis.
A continuacin, se muestran las tareas m!s importantes que se realizan en cada etapa.
1. Planificacin del proyecto
"sta etapa conllea la planificacin de cmo se pueden llear a cabo las etapas del ciclo de ida
de la manera m!s eficiente. <ay tres componentes principales# el trabajo que se ha de realizar, los
recursos para llearlo a cabo y el dinero para pagar por todo ello. -omo apoyo a esta etapa, se
necesitar! un modelo de datos corporativo en donde se muestren las entidades principales de la
empresa y sus relaciones, y en donde se identifiquen las principales !reas funcionales.
=ormalmente, este modelo de datos se representa mediante un diagrama entidad>relacin. "n este
modelo se tiene que mostrar tambin qu datos comparten las distintas !reas funcionales de la
empresa.
$a planificacin de la base de datos tambin incluye el desarrollo de est!ndares que especifiquen
cmo realizar la recoleccin de datos, cmo especificar su formato, qu documentacin ser!
necesaria y cmo se a a llear a cabo el diseo y la implementacin. "l desarrollo y el
mantenimiento de los est!ndares puede llear bastante tiempo, pero si est!n bien diseados, son
una base para el personal inform!tico en formacin y para medir la calidad, adem!s, garantizan
que el trabajo se ajusta a unos patrones, independientemente de las habilidades y la e?periencia
del diseador. ,or ejemplo, se pueden establecer reglas sobre cmo dar nombres a los datos, lo
que eitar! redundancias e inconsistencias. %e deben documentar todos los aspectos legales sobre
los datos y los establecidos por la empresa como, por ejemplo, qu datos deben tratarse de modo
confidencial.
2. Definicin del sistema
"n esta etapa se especifica el !mbito y los l(mites de la aplicacin de bases de datos, as( como
con qu otros sistemas interact.a. @ambin hay que determinar quienes son los usuarios y las
!reas de aplicacin.
3. Recoleccin y anlisis de los requisitos
"n esta etapa se recogen y analizan los requerimientos de los usuarios y de las !reas de
aplicacin. "sta informacin se puede recoger de arias formas#
"ntreistando al personal de la empresa, concretamente, a aquellos que son considerados
e?pertos en las !reas de inters.
Abserando el funcionamiento de la empresa.
"?aminando documentos, sobre todo aquellos que se utilizan para recoger o isualizar
informacin.
Utilizando cuestionarios para recoger informacin de grandes grupos de usuarios.
Utilizando la e?periencia adquirida en el diseo de sistemas similares.
$a informacin recogida debe incluir las principales !reas de aplicacin y los grupos de usuarios,
la documentacin utilizada o generada por estas !reas de aplicacin o grupos de usuarios, las
transacciones requeridas por cada !rea de aplicacin o grupo de usuarios y una lista priorizada de
los requerimientos de cada !rea de aplicacin o grupo de usuarios.
"sta etapa tiene como resultado un conjunto de documentos con las especificaciones de requisitos
de los usuarios, en donde se describen las operaciones que se realizan en la empresa desde
distintos puntos de ista.
$a informacin recogida se debe estructurar utilizando tcnicas de especificacin de requisitos,
como por ejemplo tcnicas de an!lisis y diseo estructurado y diagramas de flujo de datos.
@ambin las herramientas -A%" ) Computer-Aided Software Engineering* pueden proporcionar
una asistencia automatizada que garantice que los requisitos son completos y consistentes.
4. Diseo de la base de datos
"sta etapa consta de tres fases# diseo conceptual, diseo lgico y diseo f(sico de la base de
datos. $a primera fase consiste en la produccin de un esquema conceptual, que es independiente
de todas las consideraciones f(sicas. "ste modelo se refina despus en un esquema lgico
eliminando las construcciones que no se pueden representar en el modelo de base de datos
escogido )relacional, orientado a objetos, etc.*. "n la tercera fase, el esquema lgico se traduce en
un esquema f(sico para el %&'D escogido. $a fase de diseo f(sico considera las estructuras de
almacenamiento y los mtodos de acceso necesarios para proporcionar un acceso eficiente a la
base de datos en memoria secundaria.
$os objetios del diseo de la base de datos son#
2epresentar los datos que requieren las principales !reas de aplicacin y los grupos de
usuarios, y representar las relaciones entre dichos datos.
,roporcionar un modelo de datos que soporte las transacciones que se ayan a realizar
sobre los datos.
"specificar un esquema que alcance las prestaciones requeridas para el sistema.
<ay arias estrategias a seguir para realizar el diseo# de abajo a arriba, de arriba a abajo, de
dentro a fuera y la estrategia mi?ta. $a estrategia de abajo a arriba parte de todos los atributos y
los a agrupando en entidades y relaciones. "s apropiada cuando la base de datos es simple, con
pocos atributos. $a estrategia de arriba a abajo es m!s apropiada cuando se trata de bases de
datos complejas. %e comienza con un esquema con entidades de alto niel, que se an refinando
para obtener entidades de bajo niel, atributos y relaciones. $a estrategia de dentro a fuera es
similar a la estrategia de abajo a arriba, pero difiere en que se parte de los conceptos principales y
se a e?tendiendo el esquema para considerar tambin otros conceptos, asociados con los que se
han identificado en primer lugar. $a estrategia mixta utiliza ambas estrategias, de abajo a arriba y
de arriba a abajo, con un esquema de diide y encer!s. %e obtiene un esquema inicial de alto
niel, se diide en partes, y de cada parte se obtiene un subesquema. "stos subesquemas se
integran despus para obtener el modelo final.
!. "eleccin del "#$D
%i no se dispone de un %&'D, o el que hay se encuentra obsoleto, se debe escoger un %&'D que
sea adecuado para el sistema de informacin. "sta eleccin se debe hacer en cualquier momento
antes del diseo lgico.
%. Diseo de la aplicacin
"n esta etapa se disean los programas de aplicacin que usar!n y procesar!n la base de datos.
"sta etapa y el diseo de la base de datos, son paralelas. "n la mayor parte de los casos no se
puede finalizar el diseo de las aplicaciones hasta que se ha terminado con el diseo de la base de
datos. ,or otro lado, la base de datos e?iste para dar soporte a las aplicaciones, por lo que habr!
una realimentacin desde el diseo de las aplicaciones al diseo de la base de datos.
"n esta etapa hay que asegurarse de que toda la funcionalidad especificada en los requisitos de
usuario se encuentra en el diseo de la aplicacin. <abr! algunos programas que utilicen y
procesen los datos de la base de datos.
Adem!s, habr! que disear las interfaces de usuario, aspecto muy importante que se suele
ignorar. "l sistema debe ser f!cil de aprender, f!cil de usar, ser directo y estar BBdispuesto a
perdonarCC. %i la interface no tiene estas caracter(sticas, el sistema dar! problemas, sin lugar a
dudas.
&. Prototipado
"sta etapa, que es opcional, es para construir prototipos de la aplicacin que permitan a los
diseadores y a los usuarios probar el sistema. Un prototipo es un modelo de trabajo de las
aplicaciones del sistema. "l prototipo no tiene toda la funcionalidad del sistema final, pero es
suficiente para que los usuarios puedan utilizar el sistema e identificar qu aspectos est!n bien y
cu!les no son adecuados, adem!s de poder sugerir mejoras o la inclusin de nueos elementos.
"ste proceso permite que quienes disean e implementan el sistema sepan si han interpretado
correctamente los requisitos de los usuarios. Atra entaja de los prototipos es que se construyen
r!pidamente.
"sta etapa es imprescindible cuando el sistema que se a a implementar tiene un gran coste, alto
riesgo o utiliza nueas tecnolog(as.
'. (mplementacin
"n esta etapa se crean las definiciones de la base de datos a niel conceptual, e?terno e interno,
as( como los programas de aplicacin. $a implementacin de la base de datos se realiza mediante
las sentencias del lenguaje de definicin de datos )$DD* del %&'D escogido. "stas sentencias se
encargan de crear el esquema de la base de datos, los ficheros en donde se almacenar!n los datos
y las istas de los usuarios.
$os programas de aplicacin se implementan utilizando lenguajes de tercera o cuarta generacin.
,artes de estas aplicaciones son transacciones sobre la base de datos, que se implementan
mediante el lenguaje de manejo de datos )$;D* del %&'D. $as sentencias de este lenguaje se
pueden embeber en un lenguaje de programacin anfitrin como Disual 'asic, Delphi, -, -EE,
Faa, -A'A$, Gortran, Ada o ,ascal. "n esta etapa, tambin se implementan los men.s, los
formularios para la introduccin de datos y los informes de isualizacin de datos. ,ara ello, el
%&'D puede disponer de lenguajes de cuarta generacin que permiten el desarrollo r!pido de
aplicaciones mediante lenguajes de consultas no procedurales, generadores de informes,
generadores de formularios, generadores de gr!ficos y generadores de aplicaciones.
@ambin se implementan en esta etapa todos los controles de seguridad e integridad. Algunos de
estos controles se pueden implementar mediante el $DD y otros puede que haya que
implementarlos mediante utilidades del %&'D o mediante programas de aplicacin.
). Conversin y car*a de datos
"sta etapa es necesaria cuando se est! reemplazando un sistema antiguo por uno nueo. $os datos
se cargan desde el sistema iejo al nueo directamente o, si es necesario, se conierten al formato
que requiera el nueo %&'D y luego se cargan. %i es posible, los programas de aplicacin del
sistema antiguo tambin se conierten para que se puedan utilizar en el sistema nueo.
1+. Prueba
"n esta etapa se prueba y alida el sistema con los requisitos especificados por los usuarios. ,ara
ello, se debe disear una bater(a de tests con datos reales, que se deben llear a cabo de manera
metdica y rigurosa. "s importante darse cuenta de que la fase de prueba no sire para demostrar
que no hay fallos, sire para encontrarlos. %i la fase de prueba se llea a cabo correctamente,
descubrir! los errores en los programas de aplicacin y en la estructura de la base de datos.
Adem!s, demostrar! que los programas BBparecenCC trabajar tal y como se especificaba en los
requisitos y que las prestaciones deseadas BBparecenCC obtenerse. ,or .ltimo, en las pruebas se
podr! hacer una medida de la fiabilidad y la calidad del soft+are desarrollado.
11. ,antenimiento
Una ez que el sistema est! completamente implementado y probado, se pone en marcha. "l
sistema est! ahora en la fase de mantenimiento en la que se llean a cabo las siguientes tareas#
;onitorizacin de las prestaciones del sistema. %i las prestaciones caen por debajo de un
determinado niel, puede ser necesario reorganizar la base de datos.
;antenimiento y actualizacin del sistema. -uando sea necesario, los nueos requisitos
que ayan surgiendo se incorporar!n al sistema, siguiendo de nueo las etapas del ciclo de
ida que se acaban de presentar.
)ttp(AA***3.u$i.esADmmarquesAfCAapunAnode"C.)tml
1.C.& Sistemas de informacin para la ,estin y para la
ayuda en la toma de decisiones.
1.1FSistemas de informacin para la ,estin y para la ayuda
en la toma de decisiones.
1.11Sistemas de bases de datos y sus aplicaciones.
Los sistemas de base de datos se disean para manejar grandes cantidades de
informacin, la manipulacin de los datos involucra tanto la defnicin de
estructuras para el almacenamiento de la informacin como la provisin de
mecanismos para la manipulacin de la informacin, adems un sistema de
base de datos debe de tener implementados mecanismos de seguridad que
garanticen la integridad de la informacin, a pesar de cadas del sistema o
intentos de accesos no autorizados.
Un objetivo principal de un sistema de base de datos es proporcionar a los
usuarios fnales una visin abstracta de los datos, esto se logra escondiendo
ciertos detalles de como se almacenan y mantienen los datos.
Objetivos de los sistemas de bases de datos.
Los objetivos principales de un sistema de base de datos es disminuir los
siguientes aspectos:
Redundancia e inconsistencia de datos.
Puesto que los archivos que mantienen almacenada la informacin son
creados por diferentes tipos de programas de aplicacin existe la posibilidad de
que si no se controla detalladamente el almacenamiento, se pueda originar un
duplicado de informacin, es decir que la misma informacin sea ms de una
vez en un dispositivo de almacenamiento. Esto aumenta los costos de
almacenamiento y acceso a los datos, adems de que puede originar la
inconsistencia de los datos - es decir diversas copias de un mismo dato no
concuerdan entre si -, por ejemplo: que se actualiza la direccin de un cliente
en un archivo y que en otros archivos permanezca la anterior.
Dificultad para tener acceso a los datos.
Un sistema de base de datos debe contemplar un entorno de datos que le
facilite al usuario el manejo de los mismos. Supngase un banco, y que uno de
los gerentes necesita averiguar los nombres de todos los clientes que viven
dentro del cdigo postal 78733 de la ciudad. El gerente pide al departamento de
procesamiento de datos que genere la lista correspondiente. Puesto que esta
situacin no fue prevista en el diseo del sistema, no existe ninguna aplicacin
de consulta que permita este tipo de solicitud, esto ocasiona una defciencia del
sistema.
-islamiento de los datos.
Puesto que los datos estn repartidos en varios archivos, y estos no pueden
tener diferentes formatos, es difcil escribir nuevos programas de aplicacin
para obtener los datos apropiados.
-nomal.as del acceso concurrente.
Para mejorar el funcionamiento global del sistema y obtener un tiempo de
respuesta ms rpido, muchos sistemas permiten que mltiples usuarios
actualicen los datos simultneamente. En un entorno as la interaccin de
actualizaciones concurrentes puede dar por resultado datos inconsistentes.
Para prevenir esta posibilidad debe mantenerse alguna forma de supervisin en
el sistema.
Problemas de se*uridad.
La informacin de toda empresa es importante, aunque unos datos lo son
ms que otros, por tal motivo se debe considerar el control de acceso a los
mismos, no todos los usuarios pueden visualizar alguna informacin, por tal
motivo para que un sistema de base de datos sea confable debe mantener un
grado de seguridad que garantice la autentifcacin y proteccin de los datos.
En un banco por ejemplo, el personal de nminas slo necesita ver la parte de
la base de datos que tiene informacin acerca de los distintos empleados del
banco y no a otro tipo de informacin.
Problemas de inte*ridad.
Los valores de datos almacenados en la base de datos deben satisfacer cierto
tipo de restricciones de consistencia. Estas restricciones se hacen cumplir en el
sistema aadiendocdigos apropiados en los diversos programas de aplicacin.
httpDGGHHH.itlp.edu.mIGpublicaGtutorialesGbasedat1Gtema1J&.htm
"istemas de bases de datos
$os inconenientes de los sistemas de ficheros se pueden atribuir a dos factores#
$a definicin de los datos se encuentra codificada dentro de los programas de aplicacin,
en lugar de estar almacenada aparte y de forma independiente.
=o hay control sobre el acceso y la manipulacin de los datos m!s all! de lo impuesto por
los programas de aplicacin.
,ara trabajar de un modo m!s efectio, surgieron las bases de datos y los sistemas de gestin de
bases de datos (S!"#.
Una base de datos es un conjunto de datos almacenados entre los que e?isten relaciones lgicas y
ha sido diseada para satisfacer los requerimientos de informacin de una empresa u
organizacin. "n una base de datos, adem!s de los datos, tambin se almacena su descripcin.
$a base de datos es un gran almacn de datos que se define una sola ez y que se utiliza al mismo
tiempo por muchos departamentos y usuarios. "n lugar de trabajar con ficheros desconectados e
informacin redundante, todos los datos se integran con una m(nima cantidad de duplicidad. $a
base de datos no pertenece a un departamento, se comparte por toda la organizacin. Adem!s, la
base de datos no slo contiene los datos de la organizacin, tambin almacena una descripcin de
dichos datos. "sta descripcin es lo que se denomina metadatos, se almacena en el diccionario de
datos o cat!logo y es lo que permite que e?ista independencia de datos lgica>f(sica.
"l modelo seguido con los sistemas de bases de datos, en donde se separa la definicin de los
datos de los programas de aplicacin, es muy similar al modelo que se sigue en la actualidad para
el desarrollo de programas, en donde se da una definicin interna de un objeto y una definicin
e?terna separada. $os usuarios del objeto slo en la definicin e?terna y no se deben preocupar
de cmo se define internamente el objeto y cmo funciona. Una entaja de este modelo, conocido
como abstraccin de datos, es que se puede cambiar la definicin interna de un objeto sin afectar
a sus usuarios ya que la definicin e?terna no se e alterada. Del mismo modo, los sistemas de
bases de datos separan la definicin de la estructura de los datos, de los programas de aplicacin
y almacenan esta definicin en la base de datos. %i se aaden nueas estructuras de datos o se
modifican las ya e?istentes, los programas de aplicacin no se en afectados ya que no dependen
directamente de aquello que se ha modificado.
"l sistema de gestin de la base de datos (S!"# es una aplicacin que permite a los usuarios
definir, crear y mantener la base de datos, y proporciona acceso controlado a la misma.
"l %&'D es la aplicacin que interacciona con los usuarios de los programas de aplicacin y la
base de datos. "n general, un %&'D proporciona los siguientes sericios#
,ermite la definicin de la base de datos mediante el lenguaje de definicin de datos. "ste
lenguaje permite especificar la estructura y el tipo de los datos, as( como las restricciones
sobre los datos. @odo esto se almacenar! en la base de datos.
,ermite la insercin, actualizacin, eliminacin y consulta de datos mediante el lenguaje
de manejo de datos. "l hecho de disponer de un lenguaje para realizar consultas reduce el
problema de los sistemas de ficheros, en los que el usuario tiene que trabajar con un
conjunto fijo de consultas, o bien, dispone de un gran n.mero de programas de aplicacin
costosos de gestionar.
<ay dos tipos de lenguajes de manejo de datos# los procedurales y los no procedurales.
"stos dos tipos se distinguen por el modo en que acceden a los datos. $os lenguajes
procedurales manipulan la base de datos registro a registro, mientras que los no
procedurales operan sobre conjuntos de registros. "n los lenguajes procedurales se
especifica qu operaciones se deben realizar para obtener los datos resultado, mientras
que en los lenguajes no procedurales se especifica qu datos deben obtenerse sin decir
cmo hacerlo. "l lenguaje no procedural m!s utilizado es el %H$ )%tructured Huery
$anguage* que, de hecho, es un est!ndar y es el lenguaje de los %&'D relacionales.
,roporciona un acceso controlado a la base de datos mediante#
o un sistema de seguridad, de modo que los usuarios no autorizados no puedan
acceder a la base de datosI
o un sistema de integridad que mantiene la integridad y la consistencia de los datosI
o un sistema de control de concurrencia que permite el acceso compartido a la base
de datosI
o un sistema de control de recuperacin que restablece la base de datos despus de
que se produzca un fallo del $ardware o del softwareI
o un diccionario de datos o cat!logo accesible por el usuario que contiene la
descripcin de los datos de la base de datos.
A diferencia de los sistemas de ficheros, el %&'D gestiona la estructura f(sica de los datos y su
almacenamiento. -on esta funcionalidad, el %&'D se conierte en una herramienta de gran
utilidad. %in embargo, desde el punto de ista del usuario, se podr(a discutir que los %&'D han
hecho las cosas m!s complicadas, ya que ahora los usuarios en m!s datos de los que realmente
quieren o necesitan, puesto que en la base de datos completa. -onscientes de este problema, los
%&'D proporcionan un mecanismo de vistas que permite que cada usuario tenga su propia ista
o isin de la base de datos. "l lenguaje de definicin de datos permite definir istas como
subconjuntos de la base de datos.
$as istas, adem!s de reducir la complejidad permitiendo que cada usuario ea slo la parte de la
base de datos que necesita, tienen otras entajas#
$as istas proporcionan un niel de seguridad, ya que permiten e?cluir datos para que
ciertos usuarios no los ean.
$as istas proporcionan un mecanismo para que los usuarios ean los datos en el formato
que deseen.
Una ista representa una imagen consistente y permanente de la base de datos, incluso si
la base de datos cambia su estructura.
@odos los %&'D no presentan la misma funcionalidad, depende de cada producto. "n general, los
grandes %&'D multiusuario ofrecen todas las funciones que se acaban de citar y muchas m!s.
$os sistemas modernos son conjuntos de programas e?tremadamente complejos y sofisticados,
con millones de l(neas de cdigo y con una documentacin consistente en arios ol.menes. $o
que se pretende es proporcionar un sistema que permita gestionar cualquier tipo de requisitos y
que tenga un /::J de fiabilidad ante cualquier fallo $ardware o software. $os %&'D est!n en
continua eolucin, tratando de satisfacer los requerimientos de todo tipo de usuarios. ,or
ejemplo, muchas aplicaciones de hoy en d(a necesitan almacenar im!genes, (deo, sonido, etc.
,ara satisfacer a este mercado, los %&'D deben cambiar. -onforme aya pasando el tiempo ir!n
surgiendo nueos requisitos, por lo que los %&'D nunca permanecer!n est!ticos.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode4.html
1.1&Sistemas de bases de datos frente a los sistemas de
archivos.
Ventajas de las bases de datos frente a los fcheros clsicos.
Las principales ventajas de las bases de datos sobre los fcheros clsicos son las siguientes:
Compacidad.
Rapidez de acceso a la informacin.
Facilidad de trabajo.
ctualizacin.
Control centralizado! ostentado por el administrador de la base de datos.
Reduccin de redundancias.
"liminar inconsistencias.
Los datos pueden compartirse.
Los estndares se mantienen.
#a$or seguridad.
#a$or facilidad en el che%ueo de errores.
"%uilibrado de re%uerimientos opuestos.
/ttp011/tml.rincondelva*o.com1bases2de2datos31'./tml
4enta5as e inconvenientes de los sistemas de
bases de datos
$os sistemas de bases de datos presentan numerosas entajas que se pueden diidir en dos
grupos# las que se deben a la integracin de datos y las que se deben a la interface com.n que
proporciona el %&'D.
4enta5as por la inte*racin de datos
Control sobre la redundancia de datos% $os sistemas de ficheros almacenan arias copias
de los mismos datos en ficheros distintos. "sto hace que se desperdicie espacio de
almacenamiento, adem!s de proocar la falta de consistencia de datos. "n los sistemas de
bases de datos todos estos ficheros est!n integrados, por lo que no se almacenan arias
copias de los mismos datos. %in embargo, en una base de datos no se puede eliminar la
redundancia completamente, ya que en ocasiones es necesaria para modelar las relaciones
entre los datos, o bien es necesaria para mejorar las prestaciones.
Consistencia de datos% "liminando o controlando las redundancias de datos se reduce en
gran medida el riesgo de que haya inconsistencias. %i un dato est! almacenado una sola
ez, cualquier actualizacin se debe realizar slo una ez, y est! disponible para todos los
usuarios inmediatamente. %i un dato est! duplicado y el sistema conoce esta redundancia,
el propio sistema puede encargarse de garantizar que todas las copias se mantienen
consistentes. Desgraciadamente, no todos los %&'D de hoy en d(a se encargan de
mantener autom!ticamente la consistencia.
&'s informacin sobre la misma cantidad de datos% Al estar todos los datos integrados, se
puede e?traer informacin adicional sobre los mismos.
Comparticin de datos% "n los sistemas de ficheros, los ficheros pertenecen a las personas
o a los departamentos que los utilizan. ,ero en los sistemas de bases de datos, la base de
datos pertenece a la empresa y puede ser compartida por todos los usuarios que estn
autorizados. Adem!s, las nueas aplicaciones que se ayan creando pueden utilizar los
datos de la base de datos e?istente.
&antenimiento de est'ndares% &racias a la integracin es m!s f!cil respetar los est!ndares
necesarios, tanto los establecidos a niel de la empresa como los nacionales e
internacionales. "stos est!ndares pueden establecerse sobre el formato de los datos para
facilitar su intercambio, pueden ser est!ndares de documentacin, procedimientos de
actualizacin y tambin reglas de acceso.
4enta5as por la e6istencia del "#$D
&ejora en la integridad de datos% $a integridad de la base de datos se refiere a la alidez
y la consistencia de los datos almacenados. =ormalmente, la integridad se e?presa
mediante restricciones o reglas que no se pueden iolar. "stas restricciones se pueden
aplicar tanto a los datos, como a sus relaciones, y es el %&'D quien se debe encargar de
mantenerlas.
&ejora en la seguridad% $a seguridad de la base de datos es la proteccin de la base de
datos frente a usuarios no autorizados. %in unas buenas medidas de seguridad, la
integracin de datos en los sistemas de bases de datos hace que stos sean m!s
ulnerables que en los sistemas de ficheros. %in embargo, los %&'D permiten mantener la
seguridad mediante el establecimiento de claes para identificar al personal autorizado a
utilizar la base de datos. $as autorizaciones se pueden realizar a niel de operaciones, de
modo que un usuario puede estar autorizado a consultar ciertos datos pero no a
actualizarlos, por ejemplo.
&ejora en la accesibilidad a los datos% ;uchos %&'D proporcionan lenguajes de
consultas o generadores de informes que permiten al usuario hacer cualquier tipo de
consulta sobre los datos, sin que sea necesario que un programador escriba una aplicacin
que realice tal tarea.
&ejora en la productividad% "l %&'D proporciona muchas de las funciones est!ndar que
el programador necesita escribir en un sistema de ficheros. A niel b!sico, el %&'D
proporciona todas las rutinas de manejo de ficheros t(picas de los programas de
aplicacin. "l hecho de disponer de estas funciones permite al programador centrarse
mejor en la funcin espec(fica requerida por los usuarios, sin tener que preocuparse de los
detalles de implementacin de bajo niel. ;uchos %&'D tambin proporcionan un
entorno de cuarta generacin consistente en un conjunto de herramientas que simplifican,
en gran medida, el desarrollo de las aplicaciones que acceden a la base de datos. &racias a
estas herramientas, el programador puede ofrecer una mayor productiidad en un tiempo
menor.
&ejora en el mantenimiento gracias a la independencia de datos% "n los sistemas de
ficheros, las descripciones de los datos se encuentran inmersas en los programas de
aplicacin que los manejan. "sto hace que los programas sean dependientes de los datos,
de modo que un cambio en su estructura, o un cambio en el modo en que se almacena en
disco, requiere cambios importantes en los programas cuyos datos se en afectados. %in
embargo, los %&'D separan las descripciones de los datos de las aplicaciones. "sto es lo
que se conoce como independencia de datos, gracias a la cual se simplifica el
mantenimiento de las aplicaciones que acceden a la base de datos.
Aumento de la concurrencia% "n algunos sistemas de ficheros, si hay arios usuarios que
pueden acceder simult!neamente a un mismo fichero, es posible que el acceso interfiera
entre ellos de modo que se pierda informacin o, incluso, que se pierda la integridad. $a
mayor(a de los %&'D gestionan el acceso concurrente a la base de datos y garantizan que
no ocurran problemas de este tipo.
&ejora en los servicios de copias de seguridad ( de recuperacin ante fallos% ;uchos
sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias
para proteger los datos ante fallos en el sistema o en las aplicaciones. $os usuarios tienen
que hacer copias de seguridad cada d(a, y si se produce alg.n fallo, utilizar estas copias
para restaurarlos. "n este caso, todo el trabajo realizado sobre los datos desde que se hizo
la .ltima copia de seguridad se pierde y se tiene que oler a realizar. %in embargo, los
%&'D actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando
se produce un fallo.
(nconvenientes de los sistemas de bases de datos
Complejidad% $os %&'D son conjuntos de programas muy complejos con una gran
funcionalidad. "s preciso comprender muy bien esta funcionalidad para poder sacar un
buen partido de ellos.
)ama*o% $os %&'D son programas complejos y muy e?tensos que requieren una gran
cantidad de espacio en disco y de memoria para trabajar de forma eficiente.
Coste econmico del S!"% "l coste de un %&'D ar(a dependiendo del entorno y de la
funcionalidad que ofrece. ,or ejemplo, un %&'D para un ordenador personal puede costar
4:: euros, mientras que un %&'D para un sistema multiusuario que d sericio a cientos
de usuarios puede costar entre /:.::: y /::.::: euros. Adem!s, hay que pagar una cuota
anual de mantenimiento que suele ser un porcentaje del precio del %&'D.
Coste del equipamiento adicional% @anto el %&'D, como la propia base de datos, pueden
hacer que sea necesario adquirir m!s espacio de almacenamiento. Adem!s, para alcanzar
las prestaciones deseadas, es posible que sea necesario adquirir una m!quina m!s grande
o una m!quina que se dedique solamente al %&'D. @odo esto har! que la implantacin de
un sistema de bases de datos sea m!s cara.
Coste de la conversin% "n algunas ocasiones, el coste del %&'D y el coste del equipo
inform!tico que sea necesario adquirir para su buen funcionamiento, es insignificante
comparado al coste de conertir la aplicacin actual en un sistema de bases de datos. "ste
coste incluye el coste de ensear a la plantilla a utilizar estos sistemas y, probablemente,
el coste del personal especializado para ayudar a realizar la conersin y poner en marcha
el sistema. "ste coste es una de las razones principales por las que algunas empresas y
organizaciones se resisten a cambiar su sistema actual de ficheros por un sistema de bases
de datos.
+restaciones% Un sistema de ficheros est! escrito para una aplicacin espec(fica, por lo
que sus prestaciones suelen ser muy buenas. %in embargo, los %&'D est!n escritos para
ser m!s generales y ser .tiles en muchas aplicaciones, lo que puede hacer que algunas de
ellas no sean tan r!pidas como antes.
,ulnerable a los fallos% "l hecho de que todo est centralizado en el %&'D hace que el
sistema sea m!s ulnerable ante los fallos que puedan producirse.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode".html
1.13os distintitos niveles de abstraccin de una base de
datos.
Abstraccin de la informacin.
%na base de datos es en esencia una coleccin de arc)i'os relacionados entre s, de la cual los
usuarios pueden e1traer informacin sin considerar las fronteras de los arc)i'os.
%n ob$eti'o importante de un sistema de base de datos es proporcionar a los usuarios una 'isin
abstracta de los datos, es decir, el sistema esconde ciertos detalles de cmo se almacenan y mantienen
los datos. Sin embargo para que el sistema sea mane$able, los datos se deben e1traer eficientemente.
E1isten diferentes ni'eles de abstraccin para simplificar la interaccin de los usuarios con el sistema>
+nterno, conceptual y e1terno, especficamente el de almacenamiento fsico, el del usuario y el del
programador.
>ivel fLsico.
Es la representacin del ni'el m!s ba$o de abstraccin, en /ste se describe en detalle la forma en
como de almacenan los datos en los dispositi'os de almacenamiento2por e$emplo, mediante se8aladores
o ndices para el acceso aleatorio a los datos7.
>ivel conceptual.
El siguiente ni'el m!s alto de abstraccin, describe que datos son almacenados realmente en la base
de datos y las relaciones que e1isten entre los mismos, describe la base de datos completa en t/rminos
de su estructura de dise8o. El ni'el conceptual de abstraccin lo usan los administradores de bases de
datos, quienes deben decidir qu/ informacin se 'a a guardar en la base de datos.
#onsta de las siguientes definiciones(
1. Definicin de los datosD Se describen el tipo de datos y la longitud de campo todos los
elementos direccionables en la base. .os elementos por definir incluyen artculos elementales
2atributos7, totales de datos y registros conceptuales 2entidades7.
2. Relaciones entre datosD Se definen las relaciones entre datos para enla-ar tipos de registros
relacionados para el procesamiento de arc)i'os m&ltiples.
En el ni'el conceptual la base de datos aparece como una coleccin de registros lgicos, sin
descriptores de almacenamiento. En realidad los arc)i'os conceptuales no e1isten fsicamente. .a
transformacin de registros conceptuales a registros fsicos para el almacenamiento se lle'a a cabo por el
sistema y es transparente al usuario.
>ivel de visin.
?i'el m!s alto de abstraccin, es lo que el usuario final puede 'isuali-ar del sistema terminado,
describe slo una parte de la base de datos al usuario acreditado para 'erla. El sistema puede
proporcionar muc)as 'isiones para la misma base de datos.
.a interrelacin entre estos tres ni'eles de abstraccin se ilustra en la siguiente figura.

httpDGGHHH.itlp.edu.mIGpublicaGtutorialesGbasedat1Gtema1J3.htm
1.14Usuarios y administradores de la base de datos.
Administrador de Bases de Datos
3enominado por sus siglas como( 3BA, 3atabase Administrator.
Es la persona encargada y que tiene el control total sobre el sistema de base de datos, sus funciones
principales son(
+efinicin de es%uema.
Es el esquema original de la base de datos se crea escribiendo un con$unto de definiciones que son
traducidas por el compilador de 33. a un con$unto de tablas que son almacenadas permanentemente en
el diccionario de datos.
+efinicin de la estructura de almacenamiento del mEtodo de acceso.
Estructuras de almacenamiento y de acceso adecuados se crean escribiendo un con$unto de
definiciones que son traducidas por e compilador del lengua$e de almacenamiento y definicin de datos.
Concesin de autoriAacin para el acceso a los datos.
9ermite al administrador de la base de datos regular las partes de las bases de datos que 'an a ser
accedidas por 'arios usuarios.
)specificacin de lLmitantes de inte,ridad.
Es una serie de restricciones que se encuentran almacenados en una estructura especial del sistema
que es consultada por el gestor de base de datos cada 'e- que se realice una actuali-acin al sistema.
Usuarios de las bases de datos.
9odemos definir a los usuarios como toda persona que tenga todo tipo de contacto con el sistema de
base de datos desde que este se dise8a, elabora, termina y se usa.
.os usuarios que accesan una base de datos pueden clasificarse como(
:ro,ramadores de aplicaciones.
.os profesionales en computacin que interactuan con el sistema por medio de llamadas en 36.
2.engua$e de 6anipulacin de 3atos7, las cuales est!n incorporadas en un programa escrito en un
lengua$e de programacin 29or e$emplo, #5B5., 9.A+, 9ascal, #, etc.7
Usuarios sofisticados.
.os usuarios sofisticados interactuan con el sistema sin escribir programas. En cambio escriben sus
preguntas en un lengua$e de consultas de base de datos.
Usuarios especialiAados.
Algunos usuarios sofisticados escriben aplicaciones de base de datos especiali-adas que no enca$an
en el marco tradicional de procesamiento de datos.
Usuarios in,enuos.
.os usuarios no sofisticados interactuan con el sistema in'ocando a uno de los programas de
aplicacin permanentes que se )an escrito anteriormente en el sistema de base de datos, podemos
mencionar al usuario ingenuo como el usuario final que utili-a el sistema de base de datos sin saber nada
del dise8o interno del mismo por e$emplo( un ca$ero.
httpDGGHHH.itlp.edu.mIGpublicaGtutorialesGbasedat1Gtema1J1F.htm
1.15Componentes de los sistemas de bases de datos.
Estructura general del sistema.
%n sistema de base de datos se encuentra di'idido en mdulos cada uno de los cuales controla una
parte de la responsabilidad total de sistema. En la mayora de los casos, el sistema operati'o proporciona
&nicamente los ser'icios m!s b!sicos y el sistema de la base de datos debe partir de esa base y controlar
adem!s el mane$o correcto de los datos. As el dise8o de un sistema de base de datos debe incluir la
interfa- entre el sistema de base de datos y el sistema operati'o.
.os componentes funcionales de un sistema de base de datos, son(
8estor de archivos.
=estiona la asignacin de espacio en la memoria del disco y de las estructuras de datos usadas
para representar informacin.
'ane1ador de base de datos.
Sir'e de interfa- entre los datos y los programas de aplicacin.
:rocesador de consultas.
<raduce las proposiciones en lengua$es de consulta a instrucciones de ba$o ni'el. Adem!s
con'ierte la solicitud del usuario en una forma m!s eficiente.
Compilador de ++.
#on'ierte las proposiciones 33. en un con$unto de tablas que contienen metadatos, estas se
almacenan en el diccionario de datos.
$rchivo de datos.
En /l se encuentran almacenados fsicamente los datos de una organi-acin.
+iccionario de datos.
#ontiene la informacin referente a la estructura de la base de datos.
Indices.
9ermiten un r!pido acceso a registros que contienen 'alores especficos.
%na forma gr!fica de representar los componentes antes mencionados y la relacin que e1iste entre
ellos sera la siguiente.
httpDGGHHH.itlp.edu.mIGpublicaGtutorialesGbasedat1Gtema1J1&.htm
1.1!$r%uitectura de los sistemas de bases de datos.
-rquitectura de los sistemas de bases de
datos
<ay tres caracter(sticas importantes inherentes a los sistemas de bases de datos# la separacin
entre los programas de aplicacin y los datos, el manejo de m.ltiples istas por parte de los
usuarios y el uso de un cat!logo para almacenar el esquema de la base de datos. "n /964, el
comit A=%8>%,A2- )American =ational %tandard 8nstitute > %tandards ,lanning and
2equirements -ommittee* propuso una arquitectura de tres nieles para los sistemas de bases de
datos, que resulta muy .til a la hora de conseguir estas tres caracter(sticas.
"l objetio de la arquitectura de tres nieles es el de separar los programas de aplicacin de la
base de datos f(sica. "n esta arquitectura, el esquema de una base de datos se define en tres
nieles de abstraccin distintos#
/. "n el nivel interno se describe la estructura f(sica de la base de datos mediante un
esquema interno. "ste esquema se especifica mediante un modelo f(sico y describe todos
los detalles para el almacenamiento de la base de datos, as( como los mtodos de acceso.
0. "n el nivel conceptual se describe la estructura de toda la base de datos para una
comunidad de usuarios )todos los de una empresa u organizacin*, mediante un esquema
conceptual. "ste esquema oculta los detalles de las estructuras de almacenamiento y se
concentra en describir entidades, atributos, relaciones, operaciones de los usuarios y
restricciones. "n este niel se puede utilizar un modelo conceptual o un modelo lgico
para especificar el esquema.
1. "n el nivel externo se describen arios esquemas externos o vistas de usuario. -ada
esquema e?terno describe la parte de la base de datos que interesa a un grupo de usuarios
determinado y oculta a ese grupo el resto de la base de datos. "n este niel se puede
utilizar un modelo conceptual o un modelo lgico para especificar los esquemas.
$a mayor(a de los %&'D no distinguen del todo los tres nieles. Algunos incluyen detalles del
niel f(sico en el esquema conceptual. "n casi todos los %&'D que se manejan istas de usuario,
los esquemas e?ternos se especifican con el mismo modelo de datos que describe la informacin
a niel conceptual, aunque en algunos se pueden utilizar diferentes modelos de datos en los
nieles conceptual y e?terno.
<ay que destacar que los tres esquemas no son m!s que descripciones de los mismos datos pero
con distintos nieles de abstraccin. $os .nicos datos que e?isten realmente est!n a niel f(sico,
almacenados en un dispositio como puede ser un disco. "n un %&'D basado en la arquitectura
de tres nieles, cada grupo de usuarios hace referencia e?clusiamente a su propio esquema
e?terno. ,or lo tanto, el %&'D debe transformar cualquier peticin e?presada en trminos de un
esquema e?terno a una peticin e?presada en trminos del esquema conceptual, y luego, a una
peticin en el esquema interno, que se procesar! sobre la base de datos almacenada. %i la peticin
es de una obtencin )consulta* de datos, ser! preciso modificar el formato de la informacin
e?tra(da de la base de datos almacenada, para que coincida con la ista e?terna del usuario. "l
proceso de transformar peticiones y resultados de un niel a otro se denomina correspondencia o
transformacin. "stas correspondencias pueden requerir bastante tiempo, por lo que algunos
%&'D no cuentan con istas e?ternas.
$a arquitectura de tres nieles es .til para e?plicar el concepto de independencia de datos que
podemos definir como la capacidad para modificar el esquema en un niel del sistema sin tener
que modificar el esquema del niel inmediato superior. %e pueden definir dos tipos de
independencia de datos#
$a independencia lgica es la capacidad de modificar el esquema conceptual sin tener que
alterar los esquemas e?ternos ni los programas de aplicacin. %e puede modificar el
esquema conceptual para ampliar la base de datos o para reducirla. %i, por ejemplo, se
reduce la base de datos eliminando una entidad, los esquemas e?ternos que no se refieran
a ella no deber!n erse afectados.
$a independencia f-sica es la capacidad de modificar el esquema interno sin tener que
alterar el esquema conceptual )o los e?ternos*. ,or ejemplo, puede ser necesario
reorganizar ciertos ficheros f(sicos con el fin de mejorar el rendimiento de las operaciones
de consulta o de actualizacin de datos. Dado que la independencia f(sica se refiere slo a
la separacin entre las aplicaciones y las estructuras f(sicas de almacenamiento, es m!s
f!cil de conseguir que la independencia lgica.
"n los %&'D que tienen la arquitectura de arios nieles es necesario ampliar el cat!logo o
diccionario, de modo que incluya informacin sobre cmo establecer la correspondencia entre las
peticiones de los usuarios y los datos, entre los diersos nieles. "l %&'D utiliza una serie de
procedimientos adicionales para realizar estas correspondencias haciendo referencia a la
informacin de correspondencia que se encuentra en el cat!logo. $a independencia de datos se
consigue porque al modificarse el esquema en alg.n niel, el esquema del niel inmediato
superior permanece sin cambios, slo se modifica la correspondencia entre los dos nieles. =o es
preciso modificar los programas de aplicacin que hacen referencia al esquema del niel superior.
,or lo tanto, la arquitectura de tres nieles puede facilitar la obtencin de la erdadera
independencia de datos, tanto f(sica como lgica. %in embargo, los dos nieles de
correspondencia implican un gasto e?tra durante la ejecucin de una consulta o de un programa,
lo cual reduce la eficiencia del %&'D. "s por esto que muy pocos %&'D han implementado esta
arquitectura completa.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode33.html
Unidad 2. Modelo entidad relacin.
El modelo E4R se basa en una percepcin del mundo real, la cual esta formada por ob$etos b!sicos
llamados entidades y las relaciones entre estos ob$etos as como las caractersticas de estos ob$etos
llamados atributos.
&.5 Conceptos b(sicos.M
7l modelo entidad2relacin
"l modelo entidad>relacin es el modelo conceptual m!s utilizado para el diseo conceptual de
bases de datos. Gue introducido por ,eter -hen en /965. "l modelo entidad>relacin est! formado
por un conjunto de conceptos que permiten describir la realidad mediante un conjunto de
representaciones gr!ficas y lingK(sticas.
Ariginalmente, el modelo entidad>relacin slo inclu(a los conceptos de entidad, relacin y
atributo. ;!s tarde, se aadieron otros conceptos, como los atributos compuestos y las jerarqu(as
de generalizacin, en lo que se ha denominado modelo entidad-relacin extendido.
8i*ura %.10 Conceptos del modelo entidad-relacin extendido%
7ntidad
-ualquier tipo de objeto o concepto sobre el que se recoge informacin# cosa, persona, concepto
abstracto o suceso. ,or ejemplo# coches, casas, empleados, clientes, empresas, oficios, diseos de
productos, conciertos, e?cursiones, etc. $as entidades se representan gr!ficamente mediante
rect!ngulos y su nombre aparece en el interior. Un nombre de entidad slo puede aparecer una
ez en el esquema conceptual.
<ay dos tipos de entidades# fuertes y dbiles. Una entidad dbil es una entidad cuya e?istencia
depende de la e?istencia de otra entidad. Una entidad fuerte es una entidad que no es dbil.
Relacin 9interrelacin:
"s una correspondencia o asociacin entre dos o m!s entidades. -ada relacin tiene un nombre
que describe su funcin. $as relaciones se representan gr!ficamente mediante rombos y su
nombre aparece en el interior.
$as entidades que est!n inolucradas en una determinada relacin se denominan entidades
participantes. "l n.mero de participantes en una relacin es lo que se denomina grado de la
relacin. ,or lo tanto, una relacin en la que participan dos entidades es una relacin binariaI si
son tres las entidades participantes, la relacin es ternariaI etc.
Una relacin recursiva es una relacin donde la misma entidad participa m!s de una ez en la
relacin con distintos papeles. "l nombre de estos papeles es importante para determinar la
funcin de cada participacin.
$a cardinalidad con la que una entidad participa en una relacin especifica el n.mero m(nimo y
el n.mero m!?imo de correspondencias en las que puede tomar parte cada ocurrencia de dicha
entidad. $a participacin de una entidad en una relacin es obligatoria (total# si la e?istencia de
cada una de sus ocurrencias requiere la e?istencia de, al menos, una ocurrencia de la otra entidad
participante. %i no, la participacin es opcional (parcial#. $as reglas que definen la cardinalidad
de las relaciones son las reglas de negocio.
A eces, surgen problemas cuando se est! diseado un esquema conceptual. "stos problemas,
denominados trampas, suelen producirse a causa de una mala interpretacin en el significado de
alguna relacin, por lo que es importante comprobar que el esquema conceptual carece de dichas
trampas. "n general, para encontrar las trampas, hay que asegurarse de que se entiende
completamente el significado de cada relacin. %i no se entienden las relaciones, se puede crear
un esquema que no represente fielmente la realidad.
Una de las trampas que pueden encontrarse ocurre cuando el esquema representa una relacin
entre entidades, pero el camino entre algunas de sus ocurrencias es ambiguo. "l modo de
resolerla es reestructurando el esquema para representar la asociacin entre las entidades
correctamente.
Atra de las trampas sucede cuando un esquema sugiere la e?istencia de una relacin entre
entidades, pero el camino entre una y otra no e?iste para algunas de sus ocurrencias. "n este caso,
se produce una prdida de informacin que se puede subsanar introduciendo la relacin que
suger(a el esquema y que no estaba representada.
-tributo
"s una caracter(stica de inters o un hecho sobre una entidad o sobre una relacin. $os atributos
representan las propiedades b!sicas de las entidades y de las relaciones. @oda la informacin
e?tensia es portada por los atributos. &r!ficamente, se representan mediante bolitas que cuelgan
de las entidades o relaciones a las que pertenecen.
-ada atributo tiene un conjunto de alores asociados denominado dominio. "l dominio define
todos los alores posibles que puede tomar un atributo. ,uede haber arios atributos definidos
sobre un mismo dominio.
$os atributos pueden ser simples o compuestos. Un atributo simple es un atributo que tiene un
solo componente, que no se puede diidir en partes m!s pequeas que tengan un significado
propio. Un atributo compuesto es un atributo con arios componentes, cada uno con un
significado por s( mismo. Un grupo de atributos se representa mediante un atributo compuesto
cuando tienen afinidad en cuanto a su significado, o en cuanto a su uso. Un atributo compuesto se
representa gr!ficamente mediante un alo.
$os atributos tambin pueden clasificarse en monoalentes o polialentes. Un atributo
monovalente es aquel que tiene un solo alor para cada ocurrencia de la entidad o relacin a la
que pertenece. Un atributo polivalente es aquel que tiene arios alores para cada ocurrencia de
la entidad o relacin a la que pertenece. A estos atributos tambin se les denomina multivaluados,
y pueden tener un n.mero m!?imo y un n.mero m(nimo de alores. $a cardinalidad de un
atributo indica el n.mero m(nimo y el n.mero m!?imo de alores que puede tomar para cada
ocurrencia de la entidad o relacin a la que pertenece. "l alor por omisin es .
,or .ltimo, los atributos pueden ser deriados. Un atributo derivado es aquel que representa un
alor que se puede obtener a partir del alor de uno o arios atributos, que no necesariamente
deben pertenecer a la misma entidad o relacin.
(dentificador
Un identificador de una entidad es un atributo o conjunto de atributos que determina de modo
.nico cada ocurrencia de esa entidad. Un identificador de una entidad debe cumplir dos
condiciones#
/. =o pueden e?istir dos ocurrencias de la entidad con el mismo alor del identificador.
0. %i se omite cualquier atributo del identificador, la condicin anterior deja de cumplirse.
@oda entidad tiene al menos un identificador y puede tener arios identificadores alternatios.
$as relaciones no tienen identificadores.
;erarqu.a de *enerali<acin
Una entidad E es una generalizacin de un grupo de entidades E . E . %%% E , si cada ocurrencia
de cada una de esas entidades es tambin una ocurrencia de E. @odas las propiedades de la
entidad genrica E son heredadas por las subentidades.
-ada jerarqu(a es total o parcial, y e?clusia o superpuesta. Una jerarqu(a es total si cada
ocurrencia de la entidad genrica corresponde al menos con una ocurrencia de alguna subentidad.
"s parcial si e?iste alguna ocurrencia de la entidad genrica que no corresponde con ninguna
ocurrencia de ninguna subentidad. Una jerarqu(a es exclusiva si cada ocurrencia de la entidad
genrica corresponde, como mucho, con una ocurrencia de una sola de las subentidades. "s
superpuesta si e?iste alguna ocurrencia de la entidad genrica que corresponde a ocurrencias de
dos o m!s subentidades diferentes.
Un subconjunto es un caso particular de generalizacin con una sola entidad como subentidad.
Un subconjunto siempre es una jerarqu(a parcial y e?clusia.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode#3.html
&.5.1 )ntidad.
Entidades y conjunto de entidades
%na entidad es un ob$eto que e1iste y se distingue de otros ob$etos de acuerdo a sus caractersticas
llamadas atributos . .as entidades pueden ser concretas como una persona o abstractas como una fec)a.
%n conjunto de entidades es un grupo de entidades del mismo tipo. 9or e$emplo el con$unto de
entidades #%E?<A, podra representar al con$unto de cuentas de un banco E, o A.%6?5 representa a
un con$unto de entidades de todos los alumnos que e1isten en una institucin.
%na entidad se caracteri-a y distingue de otra por los atributos, en ocasiones llamadas propiedades,
que representan las caractersticas de una entidad. .os atributos de una entidad pueden tomar un
con$unto de 'alores permitidos al que se le conoce como dominio del atributo. As cada entidad se
describe por medio de un con$unto de pare$as formadas por el atributo y el 'alor de dato. @abr! una
pare$a para cada atributo del con$unto de entidades.
)1emploD
@acer una descripcin en pare$a para la entidad alumno con los atributos No_control, Nombre y
Especialidad.
>ombreJatributo4 =alor
No_control , F"31G1H
Nombre , S!nc)e- 5suna Ana
Esp , .+
5 considerando el e$emplo del Iendedor cuyos aributos son( R:#, ?ombre, Salario.
Nombre_atributo, Valor
R:# , #563C11G1J@R
?ombre , 3aniel #oln 6orales
Salario , 3GGG
&.5.& *elacin.
Relaciones y conjunto de relaciones.
%na relacin es la asociacin que e1iste entre dos a m!s entidades.
%n conjunto de relaciones es un grupo de relaciones del mismo tipo.
.a cantidad de entidades en una relacin determina el grado de la relacin, por e$emplo la relacin
A.%6?546A<ER+A es de grado 2, ya que inter'ienen la entidad A.%6?5 y la entidad 6A<ER+A, la
relacin 9A3RES, puede ser de grado 3, ya que in'olucra las entidades 9A3RE, 6A3RE e @+K5.
Aunque el modelo E4R permite relaciones de cualquier grado, la mayora de las aplicaciones del
modelo slo consideran relaciones del grado 2. #uando son de tal tipo, se denominan relaciones binarias.
.a funcin que tiene una relacin se llama ael, generalmente no se especifican los papeles o roles,
a menos que se quiera aclarar el significado de una relacin.
3iagrama E4R 2sin considerar los atributos, slo las entidades7 para los modelos e$emplificados(
!imitantes de maeo.
E1isten tipos de relaciones que pueden establecerse entre entidades, las cuales establecen con
cuantas entidades de tipo B se pueden relacionar una entidad de tipo A(
Tipos de relacionesD
Relacin uno a uno.
Se presenta cuando e1iste una relacin como su nombre lo indica uno a uno, denominado tambi/n
relacin de matrimonio. %na entidad del tipo A solo se puede relacionar con una entidad del tipo B, y
'ice'ersa>
9or e$emplo( la relacin asignacin de automvil que contiene a las entidades E69.EA35, A%<5, es
una relacin 1 a 1, ya que asocia a un empleado con un &nico autom'il por lo tanto ning&n empleado
posee m!s de un autom'il asignado, y ning&n 'e)culo se asigna a m!s de un traba$ador.
Es representado gr!ficamente de la siguiente manera(

$D Representa a una entidad de cualquier tipo diferente
a una entidad ;.
*D en el diagrama representa a la relacin que e1iste entre las entidades.
El e1tremo de la flec)a que se encuentra punteada indica el uno de la relacin, en este caso, una entidad
A ligada a una entidad B.
Relacin uno a muc"os.
Significa que una entidad del tipo A puede relacionarse con cualquier cantidad de entidades del tipo B,
y una entidad del tipo B solo puede estar relacionada con una entidad del tipo A.
Su representacin gr!fica es la siguiente(

?tese en este caso que el e1tremo punteado de la flec)a de la relacin de A y B, indica una entidad A
conectada a muc)as entidades B.
#uc"os a uno.
+ndica que una entidad del tipo B puede relacionarse con cualquier cantidad de entidades del tipo A,
mientras que cada entidad del tipo A solo puede relacionarse con solo una entidad del tipo B.
#uc"as a muc"as.
Establece que cualquier cantidad de entidades del tipo A pueden estar relacionados con cualquier
cantidad de entidades del tipo B.

A los tipos de relaciones antes descritos, tambi/n se le conoce como cardinalidad.
.a cardinalidad nos especifica los tipos de relaciones que e1isten entre las entidades en el modelo E4
R y establecer con esto las 'alidaciones necesarias para conseguir que los datos de la instancia 2'alor
&nico en un momento dado de una base de datos7 correspondan con la realidad.
Algunos e$emplos de cardinalidades de la 'ida com&n pueden ser(
Uno a uno.
El no'ia-go, el R:# de cada persona, El #%R9 personal, El acta de nacimiento, ya que solo e1iste un
solo documento de este tipo para cada una de las diferentes personas.
Uno a muc"os.
#liente L #uenta en un banco, 9adre4@i$os, #amin49asa$eros, -oologico4 animales, !rbol L )o$as.
#uc"os a muc"os.
Arquitecto L proyectos, fiesta L personas, estudiante L materias.
#abe mencionar que la cardinalidad para cada con$unto de entidades depende del punto de 'ista que
se le de al modelo en estudio, claro esta, su$et!ndose a la realidad.
5tra clase de limitantes lo constituye la deendencia de e$istencia.
Refiri/ndonos a las mismas entidades A y B, decimos que si la entidad A depende de la e1istencia de la
entidad B, entonces A es dependiente de e1istencia por B, si eliminamos a B tendramos que eliminar por
consecuente la entidad A, en este caso B es la entidad Dominante y A es la entidad subordinada.
&.! +ia,ramas entidad-relacin .)*/.
Diagrama Entidad%Relacin
3enominado por sus siglas como( E4R> Este modelo representa a la realidad a tra'/s de un esquema
gr!fico empleando los terminologa de entidades, que son ob$etos que e1isten y son los elementos
principales que se identifican en el problema a resol'er con el diagramado y se distinguen de otros por
sus caractersticas particulares denominadas atributos4 el enlace que que rige la unin de las entidades
esta representada por la relacin del modelo.
Recordemos que un rect!ngulo nos representa a las entidades> una elipse a los atributos de las
entidades, y una etiqueta dentro de un rombo nos indica la relacin que e1iste entre las entidades,
destacando con lneas las uniones de estas y que la lla'e primaria de una entidad es aquel atributo que
se encuentra subrayado.
A continuacin mostraremos algunos e$emplos de modelos E4R, considerando las cardinalidades que
e1isten entre ellos(
Relacin Uno a Uno.
:roblemaD
3ise8ar el modelo E4R, para la relacin Registro de autom'il que consiste en obtener la tar$eta de
circulacin de un autom'il con los siguientes datos(4 Autom'il4 6odelo, 9lacas, #olor 4 <ar$eta de
circulacin 49ropietario, ?oMserie, <ipo.



+ndicamos con este e$emplo que e1iste una relacin de pertenencia de uno a uno, ya que e1iste una
tar$eta de circulacin registrada por cada autom'il.
En este e$emplo, representamos que e1iste un solo presidente para cada pas.

Relacin muc"os a muc"os.
El siguiente e$emplo indica que un cliente puede tener muc)as cuentas, pero que una cuenta
puede llegar a pertenecer a un solo cliente 23ecimos puede, ya que e1isten cuentas registradas a fa'or
de m!s de una persona7.

Reduccin de diagramas E%R a tablas
%n diagrama E4R, puede ser representado tambi/n a tra'/s de una coleccin de tablas. 9ara cada una
de las entidades y relaciones e1iste una tabla &nica a la que se le asigna como nombre el del con$unto
de entidades y de las relaciones respecti'amente, cada tabla tiene un n&mero de columnas que son
definidas por la cantidad de atributos y las cuales tienen el nombre del atributo.
.a transformacin de nuestro e$emplo Ienta en la que inter'ienen las entidades de Iendedor con los
atributos R:#, nombre, puesto, salario y Artculo con los atributos #la'e, descripcin, costo.
#uyo diagrama E4R es el siguiente(
Entonces las tablas resultantes siguiendo la descripcin anterior son(
Tabla )mpleado
>ombre :uesto Salario *7C
<efilo
Iendedor
2GGG <EA<CG121GEJN
#esar
Au1iliar
'entas
12GG #5IC112GAB#
Tabla artLculo
Clave +escripcin Costo
A1GG Abanico "G
#2"G
#olc)a
matrimonial
12GG
Tabla =enta
*7C Clave
<EA<CG121GEJN #2"G
#5IC112GAB# A1GG
?tese que en la tabla de relacin 4 Ienta 4, contiene como atributos a las lla'es primarias de las
entidades que inter'ienen en dic)a relacin, en caso de que e1ista un atributo en las relaciones, este
atributo es ane1ado como una fila m!s de la tabla>
9or e$emplo si ane1amos el atributo fec)a a la relacin 'enta, la tabla que se originaria sera la
siguiente(
*7C Clave 7echa
<EA<CG121GEJN #2"G 1GA12AF"
#5IC112GAB# A1GG 11A12AF"
+I$8*$'$S +) )>TI+$+ - *)$CIN>
%on esquemas que nos permitan representar conjunto de entidades y sus relaciones mediante la
siguiente simbolog(a.

L -onjunto de entidades o relacin con sus atributos
L -onjunto entidades con relaciones
L -ada elemento debe etiquetarse con su nombre.

&ARD'NA!'DAD DE !A( RE!A&')NE(
=otas0
a* $as entidades dbiles se sealan como rect!ngulos de doble pared
b* $os papeles se indican etiquetando las l(neas que conectan a los rect!ngulos con los rombos.
"jercicios#
2epresente mediante Diagramas ">2 las siguientes situaciones#
>> Un (deo club mantiene el control de sus clientes utilizando los siguientes datos# numero de
credencial, nombre, direccin y telfonoI l catalogo de pel(culas contiene para cada cassette los
datos clae, titulo, clasificacin y costo de renta.
A fin de imprimir los pagares y mantener un control de rentas, se registran tambin las fechas de
renta y la cantidad de d(as que el cliente mantendr! la pel(cula.


&)N*UN+) DE RE!A&')NE( &)N DER'VA&',N #-!+'.!E
,uede darse el caso de que una relacin sea binaria# es decir, que asocie a mas de dos conjunto
de entidades. "n estos casos la .nica ariacin para representar el modelo consiste en que se
establecer! -A2D8=A$8DAD para cada pareja de conjuntos de entidades.


>> "n un almacn se llea el control de los art(culos que son endidos y facturados. "l objetio
primordial adem!s de mantener la informacin almacenada consisten en proceso de facturacin.
$os datos que se registran# 2G- del cliente, nombre del cliente, domicilio, clae del articulo,
descripcin, costo unitario, numero de factura, fecha, cantidad de art(culos endidos )de cada
uno*.


http#MM+++.itlp.edu.m?MpublicaMtutorialesMbasedat0Minde?.htm
&." +ise0o de un es%uema de base datos.
Diseo de un esquema de bases de datos Entidad - Relacin.
&ara un dise'o de un es%uema de base de datos ha$ cuatro fases:
Especifcacin de requisitos del usuario.- Consiste en obtener las necesidades de
datos de los usuarios de la base de datos! esto es! sonsacarle al usuario toda la informacin
%ue se desea plasmar en la base de datos. "sta es la fase %ue se dar en el e(amen.
Diseo conceptual (Entidad - Relacin).
Especifcacin de requisitos funcionales.- )amos a defnir las operaciones %ue se
harn sobre la base de datos *operaciones permitidas sobre la base de datos+
Especifcacin de requisitos funcionales., &rimero se procede a realizar el diseo
lgico! %ue consiste en adaptar el dise'o conceptual al sistema de gestin de la base de
datos! $ a continuacin se realiza el diseo fsico! %ue consiste en dar todas las
caracter-sticas de almacenamiento de la base de datos.
/ttp011/tml.rincondelva*o.com1bases2de2datos31'./tml
D("7>? D7 @= 7"A@7,- D7 $-"7 D7 D-B?" 72R
"l modelo de datos ",R proporciona un alto grado de .e(ibilidad en el dise'o de un es%uema
de base de datos para modelar una empresa.
/n dise'ador de base de datos puede elegir entre una amplia variedad de alternativas.
"ntre las decisiones a tomar se encuentran:
"l uso de una relacin ternaria o de un par de relaciones binarias.
0i un concepto de un mundo real se e(presa mejor mediante un conjunto de
entidades o por un conjunto de relaciones.
"l uso de un atributo o de un conjunto de entidades.
"l uso de un conjunto de entidades fuerte o d1bil.
La oportunidad de utilizar generalizacin.
La oportunidad de utilizar agregacin.


@"? D7 C?=;@=B?" D7 7=B(D-D7" ? D7 C?=;@=B?" D7 R7C-C(?=7"
La siguiente fgura representa un modelo alternativo en el %ue las cuentas se representan no
como entidades! sino como relaciones entre clientes $ sucursales con n2mero,cuenta $ saldo
como atributos descriptivos.
@"? D7 C-R-CB7R("B(C-" D7 72R -,PC(-D?
/n conjunto de entidades fuerte $ sus conjuntos de entidades d1biles dependientes
pueden ser considerados como un objeto 2nico en la base de datos.
La agregacin agrupa una parte de un diagrama ",R en un conjunto de entidades
2nicas.
La generalizacin contribu$e a la modularidad permitiendo %ue atributos comunes de
conjuntos de entidades similares sean representados una sola vez en un diagrama ",
R.
httpDGGmembers.fortunecity.comGcutbGhtmlGe-r.htmlO+isdees%uema
*)+UCCIN> +) +I$8*$'$S )-* $ T$;$S.
-on el objeto de obserar instancias de las bases de datos, los diagramas ">2 se conierten en
tablas, %e obtiene una tabla por cada conjunto de entidades o de relaciones.
"?isten reglas bien definidas para la conersin de los elementos de un diagrama ">2 a tablas#
a* "=@8DAD"% GU"2@"%.> %e crea una tabla con una columna para cada atributo del conjunto
de entidades.
b* "=@8DAD"% DN'8$"%.> %e crea una tabla que contiene una columna para los atributos que
forman la llae primaria de la entidad fuerte a la que se encuentra subordinada.
c* 2"$A-8O=.> se crea una tabla que contiene una columna para cada atributo descriptio de la
relacin y para cada atributo que conforma la llae primaria de las entidades que est!n
relacionadas.


-onierta a tablas y muestre instancias donde pueda obserarse la -A2D8=A$8DAD del
diagrama ">2 en el caso del (deo club.


8)>)*$IP$CIN> < )S:)CI$IP$CIN>
%on procesos que tienen por objeto la fusin o descomposicin de atributos que conforman
entidades. $a generalizacin persigue la minimizaron de redundancia en la base de datos de tal
manera que puedan ocultarse las diferencias entre entidades formando as( entidades comunes.
$a especializacin en el proceso inerso de la generalizacinI tiene por objeto reducir el
espacio de almacenamiento requerido por la base de datos en el medio f(sico. @rae como
consecuencia una redundancia necesaria, pero suprime el gasto de espacio en el medio secundario
para aquellas columnas que no almacenan informacin por entidades bien determinadas.
'N&)NVEN'EN+E( DE! #)DE!)
"ntre las limitaciones que presenta este modelo destacan dos#
>=o pueden presentarse relaciones entre conjunto de relaciones.
>=o pueden isualizarse instancias mediante los diagramas ">2.
$8*)8$CIN>
"s una tcnica que permite representar a un bloque de entidades relacionadas como si fueran
un solo conjunto de entidadesI permitiendo as( la relacin entre conjunto de relaciones.

&.# en,ua1e de 'odelado Unificado U' .'odelo
Conceptual/.
El .engua$e de 6odelado %nificado 2%6.7 es la sucesin de una serie de m/todos de an!lisis y dise8os
orientados a ob$etos que aparecen a fines de los HGOs y principios de los FGs. 3irectamente unifica los
m/todos de Booc), Rumbaug) 256<7, y Kacobson, y algo m!s.

%6. es llamado un lengua$e de modelado, no un m/todo. .os m/todos consisten de ambos de un
lengua$e de modelado y de un proceso.

El lengua$e de modelado es la notacin 2principalmente gr!fica7 que usan los m/todos para e1presar un
dise8o. El proceso indica los pasos que se deben seguir para llegar a un dise8o.

.a estandari-acin de un lengua$e de modelado es in'aluable, ya que es la parte principal de
comunicacin. Si se quiere discutir un dise8o con alguien m!s, ambos deben conocer el lengua$e de
modelado y no as el proceso que se sigui para obtenerlo.

%na de la metas principales de %6. es a'an-ar en el estado de la industria proporcionando )erramientas
de interoperabilidad para el modelado 'isual de ob$etos. Sin embargo para lograr un intercambio e1itoso
de modelos de informacin entre )erramientas, se requiri definirle una sem!ntica y una notacin.

.a notacin es la parte gr!fica que se 'e en los modelos y representa la sinta1is del lengua$e de
modelado. 9or e$emplo, la notacin del diagrama de clases define como se representan los elementos y
conceptos como son( una clase, una asociacin y una multiplicidad. PJ qu/ significa e1actamente una
asociacin o multiplicidad en una claseQ. %n metamodelo es la manera de definir /sto 2un diagrama,
usualmente de clases, que define la notacin7.

9ara que un pro'eedor diga que cumple con %6. debe cubrir con la sem!ntica y con la notacin.

%na )erramienta de %6. debe mantener la consistencia entre los diagramas en un mismo modelo. Ba$o
esta definicin una )erramienta que solo dibu$e, no puede cumplir con la notacin de %6..
)ttp(AA***.ultrasist.com.m1AtecnologiasAuml.)tm
) )>8U$@) U>I7IC$+9 +) '9+)$+9 .U'/
En todas las disciplinas de la +ngeniera se )ace e'idente la importancia de los modelos ya que describen
el aspecto y la conducta de RalgoR. Ese RalgoR puede e1istir, estar en un estado de desarrollo o estar,
toda'a, en un estado de planeacin. Es en este momento cuando los dise8adores del modelo deben
in'estigar los requerimientos del producto terminado y dic)os requerimientos pueden incluir !reas tales
como funcionalidad, performance y confiabilidad. Adem!s, a menudo, el modelo es di'idido en un n&mero
de 'istas, cada una de las cuales describe un aspecto especfico del producto o sistema en construccin.
El modelado sir'e no solamente para los grandes sistemas, aun en aplicaciones de peque8o tama8o se
obtienen beneficios de modelado, sin embargo es un )ec)o que entre m!s grande y m!s comple$o es el
sistema, m!s importante es el papel de que $uega el modelado por una simple ra-n( REl )ombre )ace
modelos de sistemas comple$os porque no puede entenderlos en su totalidadR.
%6. es una t/cnica para la especificacin sistemas en todas sus fases. ?aci en 1FF cubriendo los
aspectos principales de todos los m/todos de dise8o antecesores y, precisamente, los padres de %6.
son =rady Booc), autor del m/todo Booc)> Kames Rumbaug), autor del m/todo 56< e +'ar Kacobson,
autor de los m/todos 55SE y 5b$ectory. .a 'ersin 1.G de %6. fue liberada en Enero de 1FFC y )a sido
utili-ado con /1ito en sistemas construidos para toda clase de industrias alrededor del mundo( )ospitales,
bancos, comunicaciones, aeron!utica, finan-as, etc.
os principales beneficios de U' sonD
6e$ores tiempos totales de desarrollo 2de 5G S o m!s7.
6odelar sistemas 2y no slo de soft*are7 utili-ando conceptos orientados a ob$etos.
Establecer conceptos y artefactos e$ecutables.
Encaminar el desarrollo del escalamiento en sistemas comple$os de misin crtica.
#rear un lengua$e de modelado utili-ado tanto por )umanos como por m!quinas.
6e$or soporte a la planeacin y al control de proyectos.
Alta reutili-acin y minimi-acin de costos.
U'4 Q'Etodo o en,ua1e de 'odeladoR
%6. es un lengua$e para )acer modelos y es independiente de los m/todos de an!lisis y dise8o. E1isten
diferencias importantes entre un m/todo y un lengua$e de modelado. %n mtodo es una manera e1plcita
de estructurar el pensamiento y las acciones de cada indi'iduo. Adem!s, el m/todo le dice al usuario qu/
)acer, cmo )acerlo, cu!ndo )acerlo y por qu/ )acerlo> mientras que el lengua$e de modelado carece de
estas instrucciones. .os m/todos contienen modelos y esos modelos son utili-ados para describir algo y
comunicar los resultados del uso del m/todo.
%n modelo es e1presado en un lenguaje de modelado. %n lengua$e de modelado consiste de 'istas,
diagramas, elementos de modelo los smbolos utili-ados en los modelos y un con$unto de
mecanismos generales o reglas que indican cmo utili-ar los elementos. .as reglas son sint!cticas,
sem!nticas y pragm!ticas 2fi,ura 17.
fi,ura 1
=istas( .as 'istas muestran diferentes aspectos del sistema modelado. %na 'ista no es una gr!fica, pero
s una abstraccin que consiste en un n&mero de diagramas y todos esos diagramas $untos muestran una
RfotografaR completa del sistema. .as 'istas tambi/n ligan el lengua$e de modelado a los m/todos o
procesos elegidos para el desarrollo. .as diferentes 'istas que %6. tiene son(
Iista %se4#ase( %na 'ista que muestra la funcionalidad del sistema como la perciben los actores
e1ternos.
Iista .gica( 6uestra cmo se dise8a la funcionalidad dentro del sistema, en t/rminos de la
estructura est!tica y la conducta din!mica del sistema.
Iista de #omponentes( 6uestra la organi-acin de los componentes de cdigo.
Iista #oncurrente( 6uestra la concurrencia en el sistema, direccionando los problemas con la
comunicacin y sincroni-acin que est!n presentes en un sistema concurrente.
Iista de 3istribucin( muestra la distribucin del sistema en la arquitectura fsica con
computadoras y dispositi'os llamados nodos.

+ia,ramas( .os diagramas son las gr!ficas que describen el contenido de una 'ista. %6. tiene nue'e
tipos de diagramas que son utili-ados en combinacin para pro'eer todas las 'istas de un sistema(
diagramas de caso de uso, de clases, de ob$etos, de estados, de secuencia, de colaboracin, de
acti'idad, de componentes y de distribucin.
SLmbolos o )lementos de modelo( .os conceptos utili-ados en los diagramas son los elementos de
modelo que representan conceptos comunes orientados a ob$etos, tales como clases, ob$etos y
mensa$es, y las relaciones entre estos conceptos incluyendo la asociacin, dependencia y generali-acin.
%n elemento de modelo es utili-ado en 'arios diagramas diferentes, pero siempre tiene el mismo
significado y simbologa.
*e,las o 'ecanismos ,enerales( 9ro'een comentarios e1tras, informacin o sem!ntica acerca del
elemento de modelo> adem!s pro'een mecanismos de e1tensin para adaptar o e1tender %6. a un
m/todo o proceso especfico, organi-acin o usuario.
7$S)S +) +)S$**99 +) U> SIST)'$
.as fases del desarrollo de sistemas que soporta %6. son( Anlisis de reuerimientos, Anlisis, Dise!o,
"rogramacin y "ruebas.
$n(lisis de *e%uerimientos
%6. tiene casos de uso 2use4cases7 para capturar los requerimientos del cliente. A tra'/s del modelado
de casos de uso, los actores e1ternos que tienen inter/s en el sistema son modelados con la
funcionalidad que ellos requieren del sistema 2los casos de uso7. .os actores y los casos de uso son
modelados con relaciones y tienen asociaciones entre ellos o /stas son di'ididas en $erarquas. .os
actores y casos de uso son descritos en un diagrama use4case. #ada use4case es descrito en te1to y
especifica los requerimientos del cliente( lo que /l 2o ella7 espera del sistema sin considerar la
funcionalidad que se implementar!. %n an!lisis de requerimientos puede ser reali-ado tambi/n para
procesos de negocios, no solamente para sistemas de soft*are.
$n(lisis
.a fase de an!lisis abarca las abstracciones primarias 2clases y ob$etos7 y mecanismos que est!n
presentes en el dominio del problema. .as clases que se modelan son identificadas, con sus relaciones y
descritas en un diagrama de clases. .as colaboraciones entre las clases para e$ecutar los casos de uso
tambi/n se consideran en esta fase a tra'/s de los modelos din!micos en %6.. Es importante notar que
slo se consideran clases que est!n en el dominio del problema 2conceptos del mundo real7 y toda'a no
se consideran clases que definen detalles y soluciones en el sistema de soft*are, tales como clases para
interfaces de usuario, bases de datos, comunicaciones, concurrencia, etc.
+ise0o
En la fase de dise8o, el resultado del an!lisis es e1pandido a una solucin t/cnica. Se agregan nue'as
clases que pro'een de la infraestructura t/cnica( interfaces de usuario, mane$o de bases de datos para
almacenar ob$etos en una base de datos, comunicaciones con otros sistemas, etc. .as clases de dominio
del problema del an!lisis son agregadas en esta fase. El dise8o resulta en especificaciones detalladas
para la fase de programacin.
:ro,ramacin
En esta fase las clases del dise8o son con'ertidas a cdigo en un lengua$e de programacin orientado a
ob$etos. #uando se crean los modelos de an!lisis y dise8o en %6., lo m!s aconse$able es trasladar
mentalmente esos modelos a cdigo.
:ruebas
?ormalmente, un sistema es tratado en pruebas de unidades, pruebas de integracin, pruebas de
sistema, pruebas de aceptacin, etc. .as pruebas de unidades se reali-an a clases indi'iduales o a un
grupo de clases y son tpicamente e$ecutadas por el programador. .as pruebas de integracin integran
componentes y clases en orden para 'erificar que se e$ecutan como se especific. .as pruebas de
sistema 'en al sistema como una Rca$a negraR y 'alidan que el sistema tenga la funcionalidad final que le
usuario final espera. .as pruebas de aceptacin conducidas por el cliente 'erifican que el sistema
satisface los requerimientos y son similares a las pruebas de sistema.
)ttp(AA***.fi4b.unam.m1AppAprofesoresAcarlosAaydooAuml.)tml
Unidad 3. Modelo Relacional.
3.3 )l modelo relacional.
#odelo relacional
.a 'enta$a del modelo relacional es que los datos se almacenan, al menos
conceptualmente, de un modo en que los usuarios entienden con mayor facilidad. .os
datos se almacenan como tablas y las relaciones entre las filas y las tablas son 'isibles
en los datos. Este enfoque permite a los usuarios obtener informacin de la base de
datos sin asistencia de sistemas profesionales de administracin de informacin.
.as caractersticas m!s importantes de los modelos relacionales son(
a. Es importante saber que las entradas en la tabla tienen un solo 'alor 2son
atmicos7> no se admiten 'alores m&ltiples, por lo tanto la interseccin de un
rengln con una columna tiene un solo 'alor, nunca un con$unto de 'alores.
b. <odas las entradas de cualquier columna son de un solo tipo. 9or e$emplo, una
columna puede contener nombres de clientes, y en otra puede tener fec)as de
nacimiento. #ada columna posee un nombre &nico, el orden de las comunas no
es de importancia para la tabla, las columnas de una tabla se conocen como
atributos. #ada atributo tiene un dominio, que es una descripcin fsica y lgica
de 'alores permitidos.
c. ?o e1isten 2 filas en la tabla que sean id/nticas.
d. .a informacin en las bases de datos son representados como datos e1plcitos,
no e1isten apuntadores o ligas entre las tablas.
En el enfoque relacional es sustancialmente distinto de otros enfoques en t/rminos
de sus estructuras lgicas y del modo de las operaciones de entradaAsalida. En el
enfoque relacional, los datos se organi-an en tablas llamadas relaciones, cada una de
las cuales se implanta como un arc)i'o. En terminologa relacional una fila en una
relacin representa un registro o una entidad> #ada columna en una relacin representa
un campo o un atributo.
As, una relacin se compone de una coleccin de entidades2o registros7 cuyos
propietarios est!n descritos por cierto n&mero de atributos predeterminados
implantados como campos.
Estructura de las bases de datos relacionales
.a arquitectura relacional se puede e1presar en t/rminos de tres ni'eles de
abstraccin( ni'el interno, conceptual y de 'isin.
.a arquitectura relacional consta de los siguientes componentes(
1. 'odelo relacional de datosD
En el ni'el conceptual, el modelo relacional de datos est! representado por
una coleccin de relaciones almacenadas. #ada registro de tipo conceptual en
un modelo relacional de datos se implanta como un arc)i'o almacenado distinto.
2. Submodelo de datosD
.os esquemas e1ternos de un sistema relacional se llaman submodelos
relacionales de datos> cada uno consta de uno a m!s escenarios 2'istas7 para
describir los datos requeridos por una aplicacin dada. %n escenario puede
incluir datos de una o m!s tablas de datos. #ada programa de aplicacin est!
pro'isto de un buffer 2RArea de traba$o de usuarioR7 donde el 3B6S puede
depositar los datos recuperados de la base para su procesamiento, o puede
guardar temporalmente sus salidas antes de que el 3B6S las escriba en la base
de datos.
3. )s%uema de almacenamientoD
En el ni'el interno, cada tabla base se implanta como un arc)i'o almacenado.
9ara las recuperaciones sobre las cla'es principal o secundaria se pueden
establecer uno o m!s ndices para accesar un arc)i'o almacenado.
. Sublen,ua1e de datosD
Es un lengua$e de mane$o de datos para el sistema relacional, el !lgebra
relacional y c!lculo relacional, ambos lengua$es son Rrelacionalmente completosR,
esto es, cualquier relacin que pueda deri'arse de una o m!s tablas de datos,
tambi/n se puede deri'ar con u solo comando del sublengua$e. 9or tanto, el
modo de operacin de entradaASalida en un sistema relacional se puede
procesar en la forma( una tabla a la 'e- en lugar de( un registro a la 'e-> en otras
palabras, se puede recuperar una tabla en 'e- de un solo registro con la
e$ecucin de un comando del sublengua$e de datos.
7l modelo relacional
"n /96:, el modo en que se e(an las bases de datos cambi por completo cuando ". G. -odd
introdujo el modelo relacional. "n aquellos momentos, el enfoque e?istente para la estructura de
las bases de datos utilizaba punteros f(sicos )direcciones de disco* para relacionar registros de
distintos ficheros. %i, por ejemplo, se quer(a relacionar un registro con un registro , se deb(a
aadir al registro un campo conteniendo la direccin en disco del registro . "ste campo
aadido, un puntero f(sico, siempre sealar(a desde el registro al registro . -odd demostr
que estas bases de datos limitaban en gran medida los tipos de operaciones que los usuarios
pod(an realizar sobre los datos. Adem!s, estas bases de datos eran muy ulnerables a cambios en
el entorno f(sico. %i se aad(an los controladores de un nueo disco al sistema y los datos se
mo(an de una localizacin f(sica a otra, se requer(a una conersin de los ficheros de datos.
"stos sistemas se basaban en el modelo de red y el modelo jer!rquico, los dos modelos lgicos
que constituyeron la primera generacin de los %&'D.
"l modelo relacional representa la segunda generacin de los %&'D. "n l, todos los datos est!n
estructurados a niel lgico como tablas formadas por filas y columnas, aunque a niel f(sico
pueden tener una estructura completamente distinta. Un punto fuerte del modelo relacional es la
sencillez de su estructura lgica. ,ero detr!s de esa simple estructura hay un fundamento terico
importante del que carecen los %&'D de la primera generacin, lo que constituye otro punto a su
faor.
Dada la popularidad del modelo relacional, muchos sistemas de la primera generacin se han
modificado para proporcionar una interfaz de usuario relacional, con independencia del modelo
lgico que soportan )de red o jer!rquico*. ,or ejemplo, el sistema de red 8D;% ha eolucionado a
8D;%M2 e 8D;%M%H$, ofreciendo una isin relacional de los datos.
"n los .ltimos aos, se han propuesto algunas e?tensiones al modelo relacional para capturar
mejor el significado de los datos, para disponer de los conceptos de la orientacin a objetos y
para disponer de capacidad deductia.
"l modelo relacional, como todo modelo de datos, tiene que er con tres aspectos de los datos#
"structura de datos.
8ntegridad de datos.
;anejo de datos.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode45.html
Relaciones
Definiciones informales
"l modelo relacional se basa en el concepto matem!tico de relacin, que gr!ficamente se
representa mediante una tabla. -odd, que era un e?perto matem!tico, utiliz una terminolog(a
perteneciente a las matem!ticas, en concreto de la teor(a de conjuntos y de la lgica de
predicados.
/na relacin es una tabla con columnas ( filas% Un %&'D slo necesita que el usuario pueda
percibir la base de datos como un conjunto de tablas. "sta percepcin slo se aplica a la
estructura lgica de la base de datos )en el niel e?terno y conceptual de la arquitectura de tres
nieles A=%8>%,A2-*. =o se aplica a la estructura f(sica de la base de datos, que se puede
implementar con distintas estructuras de almacenamiento.
/n atributo es el nombre de una columna de una relacin% "n el modelo relacional, las relaciones
se utilizan para almacenar informacin sobre los objetos que se representan en la base de datos.
Una relacin se representa gr!ficamente como una tabla bidimensional en la que las filas
corresponden a registros indiiduales y las columnas corresponden a los campos o atributos de
esos registros. $os atributos pueden aparecer en la relacin en cualquier orden.
,or ejemplo, la informacin de las oficinas de la empresa inmobiliaria se representa mediante la
relacin OFICINA, que tiene columnas para los atributos Onum )n.mero de oficina*, Calle, Area,
Poblacin, Telfono y Fax. $a informacin sobre la plantilla se representa mediante la relacin
PLANTILLA, que tiene columnas para los atributos Enum )n.mero de empleado*, Nombre,
Apellido, Direccin, Telfono, Puesto, Fechanac, !alario, DNI, Onum )n.mero de la
oficina a la que pertenece el empleado*. A continuacin se muestra una instancia de la relacin
OFICINA y una instancia de la relacin PLANTILLA. -omo se puede obserar, cada columna
contiene alores de un solo atributo. ,or ejemplo, la columna Onum slo contiene n.meros de
oficinas que e?isten.
OFICINA
Onum Calle Area Poblacin Telfono Fax
O# Enmedio$ % Centro Castelln &'( )*+ )(* &'( )*+ ,(*
O- .o/ano$ s0n Centro Castelln &'( )+# -'* &'( )+# '-*
O, !an .i1uel$ + 2illarreal &'( #)* )#* &'( #)* )##
O( Trafal1ar$ ), 3rao Castelln &'( )%( ((* &'( )%( ()*
O) Cedre$ )' 2illarreal &'( #)# %+* &'( )#) %++
PLANTILLA
Enum Nombre Apellido Direccin Telfono Puesto Fechanac !alario DNI Onum
EL)+ Amelia Pastor
.a1allanes$
+#
&'( )%(
#'*
Director +)0+*0') ,**** ,&(,))+)E O#
Castelln
E3,- Pedro Cubedo 4a/arri$ ++
&'( #,#
'&*
!uper5isor )(0,0#- +%*** ,%-'''),6 O,
2illarreal
E3+( Luis Collado 4orriol$ ,# &'( #)) Administ7 &0#0-* +)*** )(,&+)),L O,
),*
2illarreal
EA& 8ita 8enau
Casalduch$
,)
&'( )#-
##*
!uper5isor +&0#0'* +%*** ,&),,+&*F O-
Castelln
E3# 9ulio Prats .elilla$ ),
&'( #)(
#&*
Director +&0+)0#* )(*** )#'((,*&6 O,
2illarreal
EL(+ Carlos 4ae:a ;errero$ #+
&'( )(-
)#*
!uper5isor )&0)0'- +%*** ,&##)+,,T O#
Castelln
/n dominio es el conjunto de valores legales de uno o varios atributos% $os dominios constituyen
una poderosa caracter(stica del modelo relacional. -ada atributo de una base de datos relacional
se define sobre un dominio, pudiendo haber arios atributos definidos sobre el mismo dominio.
$a siguiente tabla muestra los dominios de los atributos de la relacin OFICINA. =tese que en
esta relacin hay dos atributos que est!n definidos sobre el mismo dominio, Telfono y Fax.
Atributo 0ombre del "ominio "escripcin "efinicin
Onum N<.OFICINA ,osibles alores de n.mero de oficina 1 caracteresI
rango A/>A99
Calle NO.CALLE =ombres de calles de "spaa 04 caracteres
Area NO.A8EA =ombres de !reas de las poblaciones de "spaa 0: caracteres
Poblacin NO.PO4LACION =ombres de las poblaciones de "spaa /4 caracteres
Telfono N<.TELFA6 =.meros de telfono de "spaa 9 caracteres
Fax N<.TELFA6 =.meros de telfono de "spaa 9 caracteres
"l concepto de dominio es importante porque permite que el usuario defina, en un lugar com.n,
el significado y la fuente de los alores que los atributos pueden tomar. "sto hace que haya m!s
informacin disponible para el sistema cuando ste a a ejecutar una operacin relacional, de
modo que las operaciones que son sem!nticamente incorrectas, se pueden eitar. ,or ejemplo, no
tiene sentido comparar el nombre de una calle con un n.mero de telfono, aunque los dos
atributos sean cadenas de caracteres. %in embargo, el importe mensual del alquiler de un
inmueble no estar! definido sobre el mismo dominio que el n.mero de meses que dura el alquiler,
pero s( tiene sentido multiplicar los alores de ambos dominios para aeriguar el importe total al
que asciende el alquiler. $os %&'D relacionales no ofrecen un soporte completo de los dominios
ya que su implementacin es e?tremadamente compleja.
/na tupla es una fila de una relacin% $os elementos de una relacin son las tuplas o filas de la
tabla. "n la relacin OFICINA, cada tupla tiene seis alores, uno para cada atributo. $as tuplas de
una relacin no siguen ning.n orden.
El grado de una relacin es el n1mero de atributos que contiene% $a relacin OFICINA es de
grado seis porque tiene seis atributos. "sto quiere decir que cada fila de la tabla es una tupla con
seis alores. "l grado de una relacin no cambia con frecuencia.
2a cardinalidad de una relacin es el n1mero de tuplas que contiene% Pa que en las relaciones se
an insertando y borrando tuplas a menudo, la cardinalidad de las mismas ar(a constantemente.
/na base de datos relacional es un conjunto de relaciones normali3adas%
Definiciones formales
Una relacin definida sobre un conjunto de dominios consta de#
Cabecera4 conjunto fijo de pares atributo4dominio
donde cada atributo corresponde a un .nico dominio y todos los son distintos,
es decir, no hay dos atributos que se llamen igual. "l grado de la relacin es .
Cuerpo4 conjunto ariable de tuplas. -ada tupla es un conjunto de pares atributo4valor#
con , donde es la cardinalidad de la relacin . "n cada par
se tiene que .
$a relacin OFICINA tiene la siguiente cabecera#
Q =Onum>N<.OFICINA?$ =Calle>NO.CALLE?$ =Area>NO.A8EA?$
=Poblacin>NO.PO4LACION?$ =Telfono>N<.TELFA6?$ =Fax>N<.TELFA6?R.
%iendo la siguiente una de sus tuplas#
Q =Onum>O#?$ =Calle>Enmedio$%?$ =Area>Centro?$
=Poblacin>Castelln?$ =Telfono>&'( )*+ )(*?$ =Fax>&'( )*+ ,(*?R.
"ste conjunto de pares no est! ordenado, por lo que esta tupla y la siguiente, son la misma#
Q =Calle>Enmedio$%?$ =Fax>&'( )*+ ,(*?$ =Poblacin>Castelln?$
=Onum>O#?$ =Telfono>&'( )*+ )(*?$ =Area>Centro?R
&r!ficamente se suelen representar las relaciones mediante tablas. $os nombres de las columnas
corresponden a los nombres de los atributos y las filas son cada una de las tuplas de la relacin.
$os alores que aparecen en cada una de las columnas pertenecen al conjunto de alores del
dominio sobre el que est! definido el atributo correspondiente.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode4".html
.roiedades de las relaciones
$as relaciones tienen las siguientes caracter(sticas#
-ada relacin tiene un nombre y ste es distinto del nombre de todas las dem!s.
$os alores de los atributos son atmicos# en cada tupla, cada atributo toma un solo alor.
%e dice que las relaciones est!n normali3adas.
=o hay dos atributos que se llamen igual.
"l orden de los atributos no importa# los atributos no est!n ordenados.
-ada tupla es distinta de las dem!s# no hay tuplas duplicadas.
"l orden de las tuplas no importa# las tuplas no est!n ordenadas.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode4#.html
+ios de relaciones
"n un %&'D relacional pueden e?istir arios tipos de relaciones, aunque no todos manejan todos
los tipos.
5elaciones base% %on relaciones reales que tienen nombre y forman parte directa de la
base de datos almacenada )son autnomas*.
,istas% @ambin denominadas relaciones irtuales, son relaciones con nombre y deriadas#
se representan mediante su definicin en trminos de otras relaciones con nombre, no
poseen datos almacenados propios.
6nstant'neas% %on relaciones con nombre y deriadas. ,ero a diferencia de las istas, son
reales, no irtuales# est!n representadas no slo por su definicin en trminos de otras
relaciones con nombre, sino tambin por sus propios datos almacenados. %on relaciones
de slo de lectura y se refrescan peridicamente.
5esultados de consultas% %on las relaciones resultantes de alguna consulta especificada.
,ueden o no tener nombre y no persisten en la base de datos.
5esultados intermedios% %on las relaciones que contienen los resultados de las
subconsultas. =ormalmente no tienen nombre y tampoco persisten en la base de datos.
5esultados temporales% %on relaciones con nombre, similares a las relaciones base o a las
instant!neas, pero la diferencia es que se destruyen autom!ticamente en alg.n momento
apropiado.
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode4C.html
&la/es
Pa que en una relacin no hay tuplas repetidas, stas se pueden distinguir unas de otras, es decir,
se pueden identificar de modo .nico. $a forma de identificarlas es mediante los alores de sus
atributos.
Una superclave es un atributo o un conjunto de atributos que identifican de modo .nico las tuplas
de una relacin.
Una clave candidata es una superclae en la que ninguno de sus subconjuntos es una superclae
de la relacin. "l atributo o conjunto de atributos de la relacin es una clae candidata para
si y slo si satisface las siguientes propiedades#
/nicidad4 nunca hay dos tuplas en la relacin con el mismo alor de .
6rreducibilidad (minimalidad#4 ning.n subconjunto de tiene la propiedad de unicidad,
es decir, no se pueden eliminar componentes de sin destruir la unicidad.
-uando una clae candidata est! formada por m!s de un atributo, se dice que es una clave
compuesta. Una relacin puede tener arias claes candidatas. ,or ejemplo, en la relacin
OFICINA, el atributo Poblacin no es una clae candidata ya que puede haber arias oficinas en
una misma poblacin. %in embargo, ya que la empresa asigna un cdigo .nico a cada oficina, el
atributo Onum s( es una clae candidata de la relacin OFICINA. @ambin son claes candidatas de
esta relacin los atributos Telfono y Fax.
"n la base de datos de la inmobiliaria hay una relacin denominada 2I!ITA que contiene
informacin sobre las isitas que los clientes han realizado a los inmuebles. "sta relacin
contiene el n.mero del cliente @num, el n.mero del inmueble Inum, la fecha de la isita Fecha y
un comentario opcional. ,ara un determinado n.mero de cliente @num, se pueden encontrar arias
isitas a arios inmuebles. Del mismo modo, dado un n.mero de inmueble Inum, puede que haya
arios clientes que lo hayan isitado. ,or lo tanto, el atributo @num no es una clae candidata para
la relacin 2I!ITA, como tampoco lo es el atributo Inum. %in embargo, la combinacin de los dos
atributos s( identifica a una sola tupla, por lo que los dos juntos son una clae candidata de
2I!ITA. %i se desea considerar la posibilidad de que un mismo cliente pueda isitar un mismo
inmueble en arias ocasiones, habr(a que incluir el atributo Fecha para identificar las tuplas de
modo .nico )aunque ste no es el caso de la empresa que nos ocupa*.
,ara identificar las claes candidatas de una relacin no hay que fijarse en un estado o instancia
de la base de datos. "l hecho de que en un momento dado no haya duplicados para un atributo o
conjunto de atributos, no garantiza que los duplicados no sean posibles. %in embargo, la presencia
de duplicados en un estado de la base de datos s( es .til para demostrar que cierta combinacin de
atributos no es una clae candidata. "l .nico modo de identificar las claes candidatas es
conociendo el significado real de los atributos, ya que esto permite saber si es posible que
aparezcan duplicados. %lo usando esta informacin sem!ntica se puede saber con certeza si un
conjunto de atributos forman una clae candidata. ,or ejemplo, iendo la instancia anterior de la
relacin PLANTILLA se podr(a pensar que el atributo Apellido es una clae candidata. ,ero ya
que este atributo es el apellido de un empleado y es posible que haya dos empleados con el
mismo apellido, el atributo no es una clae candidata.
$a clave primaria de un relacin es aquella clae candidata que se escoge para identificar sus
tuplas de modo .nico. Pa que una relacin no tiene tuplas duplicadas, siempre hay una clae
candidata y, por lo tanto, la relacin siempre tiene clae primaria. "n el peor caso, la clae
primaria estar! formada por todos los atributos de la relacin, pero normalmente habr! un
pequeo subconjunto de los atributos que haga esta funcin.
$as claes candidatas que no son escogidas como clae primaria son denominadas claves
alternativas. ,or ejemplo, la clae primaria de la relacin OFICINA es el atributo Onum, siendo
Telfono y Fax dos claes alternatias. "n la relacin 2I!ITA slo hay una clae candidata
formada por los atributos @num e Inum, por lo que esta clae candidata es la clae primaria.
Una clave ajena es un atributo o un conjunto de atributos de una relacin cuyos alores coinciden
con los alores de la clae primaria de alguna otra relacin )puede ser la misma*. $as claes
ajenas representan relaciones entre datos. "l atributo Onum de PLANTILLA relaciona a cada
empleado con la oficina a la que pertenece. "ste atributo es una clae ajena cuyos alores hacen
referencia al atributo Onum, clae primaria de OFICINA. %e dice que un alor de clae ajena
representa una referencia a la tupla que contiene el mismo alor en su clae primaria ) tupla
referenciada*.
Es0uema de una base de datos relacional
Una base de datos relacional es un conjunto de relaciones normalizadas. ,ara representar el
esquema de una base de datos relacional se debe dar el nombre de sus relaciones, los atributos de
stas, los dominios sobre los que se definen estos atributos, las claes primarias y las claes
ajenas.
"l esquema de la base de datos de la empresa inmobiliaria es el siguiente#
OFICINA =Onum$ Calle$ Area$ Poblacin$ Telfono$ Fax?
PLANTILLA =Enum$ Nombre$ Apellido$ Direccin$ Telfono$ Puesto$ Fechanac$
!alario$ DNI$ Onum?
IN.<E4LE =Inum$ Calle$ Area$ Poblacin$ Tipo$ ;ab$ AlAuiler$ Pnum$ Enum$
Onum?
IN@<ILINO =@num$ Nombre$ Apellido$ Direccin$ Telfono$ Tipopref$
AlAuilermax?
P8OPIETA8IO =Pnum$ Nombre$ Apellido$ Direccin$ Telfono?
2I!ITA =@num$ Inum$ Fecha$ Comentario?
"n el esquema, los nombres de las relaciones aparecen seguidos de los nombres de los atributos
encerrados entre parntesis. $as claes primarias son los atributos subrayados. $as claes ajenas
se representan mediante los siguientes diagramas referenciales%
PLANTILLA OFICINA
# 7ficina a la que pertenece el empleado%
IN.<E4LE P8OPIETA8IO
# +ropietario del inmueble%
IN.<E4LE PLANTILLA
# Empleado encargado del inmueble%
IN.<E4LE OFICINA
# 7ficina a la que pertenece el inmueble%
2I!ITA IN@<ILINO
# 6nquilino que $a visitado el inmueble%
2I!ITA IN.<E4LE
# 6nmueble que $a sido visitado%
A continuacin se muestra un estado )instancia* de la base de datos cuyo esquema se acaba de
definir.
OFICINA
Onum Calle Area Poblacin Telfono Fax
O# Enmedio$ % Centro Castelln &'( )*+ )(* &'( )*+ ,(*
O- .o/ano$ s0n Centro Castelln &'( )+# -'* &'( )+# '-*
O, !an .i1uel$ + 2illarreal &'( #)* )#* &'( #)* )##
O( Trafal1ar$ ), 3rao Castelln &'( )%( ((* &'( )%( ()*
O) Cedre$ )' 2illarreal &'( #)# %+* &'( )#) %++
PLANTILLA
Enum Nombre Apellido Direccin Telfono Puesto Fechanac !alario DNI Onum
EL)+ Amelia Pastor
.a1allanes$
+#
&'( )%(
#'*
Director +)0+*0') ,**** ,&(,))+)E O#
Castelln
E3,- Pedro Cubedo 4a/arri$ ++
&'( #,#
'&*
!uper5isor )(0,0#- +%*** ,%-'''),6 O,
2illarreal
E3+( Luis Collado 4orriol$ ,#
&'( #))
),*
Administ7 &0#0-* +)*** )(,&+)),L O,
2illarreal
EA& 8ita 8enau
Casalduch$
,)
&'( )#-
##*
!uper5isor +&0#0'* +%*** ,&),,+&*F O-
Castelln
E3# 9ulio Prats .elilla$ ),
&'( #)(
#&*
Director +&0+)0#* )(*** )#'((,*&6 O,
2illarreal
EL(+ Carlos 4ae:a ;errero$ #+
&'( )(-
)#*
!uper5isor )&0)0'- +%*** ,&##)+,,T O#
Castelln
IN.<E4LE
Inum Calle Area Poblacin Tipo ;ab AlAuiler Pnum
IA+( Enmedio$ +)% Centro Castelln Casa ' '** P('
IL&( 8iu Ebre$ )( 8onda !ur Castelln Piso ( ,#* P%-
I3( !orell$ # 3rao Castelln Piso , ,** P(*
I3,' Alicante$+ !e1orbe Casa , ,)# P&,
I3)+ !an Francisco$ +* 2inaro: Piso # ##* P%-
I3+' Capuchinos$ +& 8afalafena Castelln Piso ( (** P&,
P8OPIETA8IO
Pnum Nombre Apellido Direccin Telfono
P(' Amparo Felip Asensi )($ Castelln &'( ),* '%*
P%- .anuel Obiol A57 Libertad +#$ 2inaro: &'( (#* -'*
P(* Alberto Estrada A57 del Puerto #)$ Castelln &'( )** -(*
P&, Bolanda 8obles PurCsima ($ !e1orbe &'( -+* (,*
IN@<ILINO
@num Nombre Apellido Direccin Telfono Tipo AlAuiler
@-' 9uan Felip 4arcel (-$ Castelln &'( )%) #(* Piso ,-#
@#' Ana 3ran1el !an 8afael (#$ Alma:ora &'( ##+ ++* Piso ,**
@-( Elena Abaso Na5arra -'$ Castelln &'( )*# #'* Casa -**
@') Alicia .ori Allo:a (#$ Castelln &'( ))& #%* Piso ##*
2I!ITA
@num Inum Fecha Comentario
@#' IA+( )(0++0&& mu/ peAueDo
@-' I3( )*0+*0&& mu/ leEos
@#' I3( )'0++0&&
@') IA+( +(0++0&& no tiene saln
@#' I3,' )%0+*0&&
httpDGGHHH3.u1i.esGKmmar%uesGf4"GapunGnode51.html
3.4 2l,ebra relacional.
1lgebra relacional
"l !lgebra relacional es un lenguaje formal con una serie de operadores que trabajan sobre una o
arias relaciones para obtener otra relacin resultado, sin que cambien las relaciones originales.
@anto los operandos como los resultados son relaciones, por lo que la salida de una operacin
puede ser la entrada de otra operacin. "sto permite anidar e?presiones del !lgebra, del mismo
modo que se pueden anidar las e?presiones aritmticas. A esta propiedad se le denomina
clausura# las relaciones son cerradas bajo el !lgebra, del mismo modo que los n.meros son
cerrados bajo las operaciones aritmticas.
"n este apartado se presentan los operadores del !lgebra relacional de un modo informal. $as
definiciones formales pueden encontrarse en la bibliograf(a que se comenta al final del cap(tulo.
,rimero se describen los ocho operadores originalmente propuestos por -odd y despus se
estudian algunos operadores adicionales que aaden potencia al lenguaje.
De los ocho operadores, slo hay cinco que son fundamentales# restriccin, pro(eccin, producto
cartesiano, unin y diferencia, que permiten realizar la mayor(a de las operaciones de obtencin
de datos. $os operadores no fundamentales son la concatenacin (join#, la interseccin y la
divisin, que se pueden e?presar a partir de los cinco operadores fundamentales.
$a restriccin y la proyeccin son operaciones unarias porque operan sobre una sola relacin. "l
resto de las operaciones son binarias porque trabajan sobre pares de relaciones. "n las
definiciones que se presentan a continuacin, se supone que 8 y ! son dos relaciones cuyos
atributos son AF=a $ a $ 777$ a ? y 4F=b $ b $ 777$ b ? respectiamente.
Restriccin
# 8 G;E8E condicin
$a restriccin, tambin denominada seleccin, opera sobre una sola relacin 8 y da como
resultado otra relacin cuyas tuplas son las tuplas de 8 que satisfacen la condicin
especificada. "sta condicin es una comparacin en la que aparece al menos un atributo
de 8, o una combinacin booleana de arias de estas comparaciones.
75emplo 4.1 Abtener todos los empleados con un salario anual superior a /4.::: euros.
PLANTILLA G;E8E salarioH+#***
Enum Nombre Apellido Direccin Telfono Puesto Fechanac !alario DNI Onum
EL)+ Amelia Pastor
.a1allanes$
+#
&'( )%(
#'*
Director +)0+*0') ,**** ,&(,))+)E O#
Castelln
E3,- Pedro Cubedo 4a/arri$ ++
&'( #,#
'&*
!uper5isor )(0,0#- +%*** ,%-'''),6 O,
2illarreal
EA& 8ita 8enau
Casalduch$
,)
&'( )#-
##*
!uper5isor +&0#0'* +%*** ,&),,+&*F O-
Castelln
E3# 9ulio Prats .elilla$ ),
&'( #)(
#&*
Director +&0+)0#* )(*** )#'((,*&6 O,
2illarreal
EL(+ Carlos 4ae:a ;errero$ #+
&'( )(-
)#*
!uper5isor )&0)0'- +%*** ,&##)+,,T O#
Castelln
75emplo 4.2 Abtener todos los inmuebles de -astelln con un alquiler mensual de hasta 14:
euros.
IN.<E4LE G;E8E poblacinFICastellnJ AND alAuilerKF,#*
Inum Calle Area Poblacin Tipo ;ab AlAuiler Pnum
IL&( 8iu Ebre$ )( 8onda !ur Castelln Piso ( ,#* P%-
I3( !orell$ # 3rao Castelln Piso , ,** P(*
I3,' Alicante$+ !e1orbe Piso , ,)# P&,
Proyeccin
# 8La $ 777$ a M
$a proyeccin opera sobre una sola relacin 8 y da como resultado otra relacin que
contiene un subconjunto ertical de 8, e?trayendo los alores de los atributos
especificados y eliminando duplicados.
75emplo 4.3 Abtener un listado de empleados mostrando su n.mero, nombre, apellido y salario.
PLANTILLA Lenum$nombre$apellido$salarioM
Enum Nombre Apellido !alario
EL)+ Amelia Pastor ,****
E3,- Pedro Cubedo +%***
E3+( Luis Collado +)***
EA& 8ita 8enau +%***
E3# 9ulio Prats )(***
EL(+ Carlos 4ae:a +%***
75emplo 4.4 Abtener los distintos puestos que pueden ocupar los empleados.
PLANTILLA LpuestoM
Puesto
Director
!uper5isor
Administ7
Producto cartesiano
# 8 TI.E! !
"l producto cartesiano obtiene una relacin cuyas tuplas est!n formadas por la
concatenacin de todas las tuplas de 8 con todas las tuplas de !.
$a restriccin y la proyeccin son operaciones que permiten e?traer informacin de una sola
relacin. <abr! casos en que sea necesario combinar la informacin de arias relaciones. "l
producto cartesiano BBmultiplicaS dos relaciones, definiendo una nuea relacin que tiene todos
los pares posibles de tuplas de las dos relaciones. %i la relacin 8 tiene tuplas y atributos y
la relacin ! tiene tuplas y atributos, la relacin resultado tendr! tuplas y
atributos. Pa que es posible que haya atributos con el mismo nombre en las dos relaciones, el
nombre de la relacin se antepondr! al del atributo en este caso para que los nombres de los
atributos sigan siendo .nicos en la relacin resultado.
75emplo 4.! Abtener los nombres de los inquilinos y los comentarios que stos han realizado
cuando han isto alg.n inmueble.
IN@<ILINOLAnum$nombre$apellidoM TI.E! 2I!ITALAnum$inum$comentarioM
IN@<ILINO7@num Nombre Apellido 2I!ITA7@num Inum Comentario
@-' 9uan Felip @#' IA+( mu/ peAueDo
@-' 9uan Felip @-' I3( mu/ leEos
@-' 9uan Felip @#' I3(
@-' 9uan Felip @') IA+( no tiene saln
@-' 9uan Felip @#' I3,'
@#' Ana 3ran1el @#' IA+( mu/ peAueDo
@#' Ana 3ran1el @-' I3( mu/ leEos
@#' Ana 3ran1el @#' I3(
@#' Ana 3ran1el @') IA+( no tiene saln
@#' Ana 3ran1el @#' I3,'
@-( Elena Abaso @#' IA+( mu/ peAueDo
@-( Elena Abaso @-' I3( mu/ leEos
@-( Elena Abaso @#' I3(
@-( Elena Abaso @') IA+( no tiene saln
@-( Elena Abaso @#' I3,'
@') Alicia .ori @#' IA+( mu/ peAueDo
@') Alicia .ori @-' I3( mu/ leEos
@') Alicia .ori @#' I3(
@') Alicia .ori @') IA+( no tiene saln
@') Alicia .ori @#' I3,'
-omo se puede obserar, la relacin resultado contiene m!s informacin de la que se necesita.
,or ejemplo, la primera tupla tiene distintos n.meros de inquilino# el comentario realizado en la
isita no corresponde al inquilino cuyo nombre y apellido se muestra. ,ara obtener el listado que
se pide en el ejemplo, es necesario realizar una restriccin para quedarse solamente con las tuplas
en donde IN@<ILINO7@num F 2I!ITA7@num.
=IN@<ILINOLAnum$nombre$apellidoM TI.E! 2I!ITALAnum$inum$comentarioM?
G;E8E inAuilino7AnumF5isita7Anum
"l resultado de esta operacin se muestra a continuacin.
IN@<ILINO7@num Nombre Apellido 2I!ITA7@num Inum Comentario
@-' 9uan Felip @-' I3( mu/ leEos
@#' Ana 3ran1el @#' IA+( mu/ peAueDo
@#' Ana 3ran1el @#' I3(
@#' Ana 3ran1el @#' I3,'
@') Alicia .ori @') IA+( no tiene saln
$a combinacin del producto cartesiano y la restriccin del modo en que se acaba de realizar, se
puede reducir a la operacin de concatenacin ) join* que se presenta m!s adelante.
@nin
# 8 <NION !
$a unin de dos relaciones 8 y !, con y tuplas respectiamente, es otra relacin que
tiene como mucho tuplas siendo stas las tuplas que se encuentran en 8 o en ! o
en ambas relaciones a la ez. ,ara poder realizar esta operacin, 8 y ! deben ser
compatibles para la unin.
%e dice que dos relaciones son compatibles para la unin si ambas tienen la misma cabecera, es
decir, si tienen el mismo n.mero de atributos y stos se encuentran definidos sobre los mismos
dominios. "n muchas ocasiones ser! necesario realizar proyecciones para hacer que dos
relaciones sean compatibles para la unin.
75emplo 4.% Abtener un listado de las !reas en las que hay oficinas o inmuebles para alquilar.
OFICINALNreaM <NION IN.<E4LELNreaM
Area
Centro
3rao
8onda !ur
8afalafena
Diferencia
# 8 .IN<! !
$a diferencia obtiene una relacin que tiene las tuplas que se encuentran en 8 y no se
encuentran en !. ,ara realizar esta operacin, 8 y ! deben ser compatibles para la unin.
75emplo 4.& Abtener un listado de todas las poblaciones en donde hay una oficina y no hay
inmuebles para alquilar.
OFICINALpoblacinM .IN<! IN.<E4LELpoblacinM
Poblacin
2illarreal
Concatenacin 9;oin:
# 8 9OIN !
$a concatenacin de dos relaciones 8 y ! obtiene como resultado una relacin cuyas
tuplas son todas las tuplas de 8 concatenadas con todas las tuplas de ! que en los atributos
comunes )que se llaman igual* tienen los mismos alores. "stos atributos comunes
aparecen una sola ez en el resultado.
75emplo 4.' Abtener los nombres y los comentarios que los inquilinos han realizado cuando
han isto alg.n inmueble.
IN@<ILINO 9OIN 2I!ITA
"sta e?presin obtiene el mismo resultado que la e?presin final del ejemplo 3.4, ya que la
concatenacin es, en realidad, un producto cartesiano y una restriccin de igualdad sobre los
atributos comunes.
Concatenacin e6terna 9?uter25oin:
# 8 9OIN ! =O?
$a concatenacin e?terna es una concatenacin en la que las tuplas de 8 que no tienen
alores en com.n con ninguna tupla de !, tambin aparecen en el resultado.
75emplo 4.) Abtener un listado de todos los inmuebles y las isitas que han tenido.
IN.<E4LE 9OIN 2I!ITA =O?
Inum Calle Poblacin @num Fecha Comentario
IA+( Enmedio$ +)% Castelln @#' )(0++0&& mu/ peAueDo
IA+( Enmedio$ +)% Castelln @') +(0++0&& no tiene saln
IL&( 8iu Ebre$ )( Castelln
I3( !orell$ # Castelln @-' )*0+*0&& mu/ leEos
I3( !orell$ # Castelln @#' )'0++0&&
I3,' Alicante$+ !e1orbe @#' )%0+*0&&
I3)+ !an Francisco$ +* 2inaro:
I3+' Capuchinos$ +& Castelln
$a e?presin ! =O? 9OIN 8 es equialente a 8 9OIN ! =O?. -uando en ambas relaciones hay
tuplas que no se pueden concatenar y se desea que en el resultado aparezcan tambin todas estas
tuplas )tanto las de una relacin como las de la otra*, se utiliza la concatenacin externa
completa# 8 =O? 9OIN ! =O?
(nterseccin
# 8 INTE8!ECT !
$a interseccin obtiene como resultado una relacin que contiene las tuplas de 8 que
tambin se encuentran en !. ,ara realizar esta operacin, 8 y ! deben ser compatibles para
la unin.
$a interseccin se puede e?presar en trminos de diferencias#
8 INTE8!ECT ! T 8 .IN<! =8 .IN<! !?
Divisin
# 8 DI2IDE4B !
%uponiendo que la cabecera de 8 es el conjunto de atributos A y que la cabecera de ! es el
conjunto de atributos 4, tales que 4 es un subconjunto de A, y si C T A > 4 )los atributos de
8 que no est!n en !*, la diisin obtiene una relacin cuya cabecera es el conjunto de
atributos C y que contiene las tuplas de 8 que est!n acompaadas de todas las tuplas de !.
75emplo 4.1+ Abtener los inquilinos que han isitado todos los inmuebles de tres habitaciones.
2I!ITALAnum$inumM DI2IDE4B =IN.<E4LE G;E8E habF,?LinumM
@num
@#'
Adem!s de las operaciones que -odd incluy en el !lgebra relacional, otros autores han aportado
otras operaciones para dar m!s potencia al lenguaje. "s de especial inters la agrupacin,
tambin denominada resumen, que aade capacidad computacional al !lgebra.
-*rupacin
# !<..A8IPE 8 38O<P4B=a $777$a ? ADD cNlculo A! atributo
"sta operacin agrupa las tuplas de 8 que tienen los mismos alores en los atributos
especificados y realiza un c!lculo sobre los grupos obtenidos. $a relacin resultado tiene
como cabecera los atributos por los que se ha agrupado y el c!lculo realizado, al que se da
el nombre especificado en atributo.
$os c!lculos que se pueden realizar sobre los grupos de filas son# suma de los alores de un
atributo ) !<.=a ?*, media de los alores de un atributo ) A23=a ?*, m!?imo y m(nimo de los
alores de un atributo ) .A6=a ?, .IN=a ?* y n.mero de tuplas en el grupo ) CO<NT=Q?*. $a
relacin resultado tendr! tantas filas como grupos se hayan obtenido.
75emplo 4.11 Abtener el salario total que se gasta en los empleados de cada oficina.
!<..A8IPE PLANTILLA 38O<P4B=oficina? ADD !<.=salario? A! salariototal
Oficina !alariototal
O# (%***
O, #(***
O- +%***
)ttp(AA***3.u$i.esADmmarquesAfCAapunAnode5H.)tml
&2lculo relacional
"l !lgebra relacional y el c!lculo relacional son formalismos diferentes que representan distintos
estilos de e?presin del manejo de datos en el !mbito del modelo relacional. "l !lgebra relacional
proporciona una serie de operaciones que se pueden usar para decir al sistema cmo construir la
relacin deseada a partir de las relaciones de la base de datos. "l c!lculo relacional proporciona
una notacin para formular la definicin de la relacin deseada en trminos de las relaciones de la
base de datos.
"l c!lculo relacional toma su nombre del c'lculo de predicados, que es una rama de la lgica.
<ay dos tipos de c!lculo relacional, el orientado a tuplas, propuesto por -odd, y el orientado a
dominios, propuesto por otros autores. "l estudio del c!lculo relacional se har! mediante
definiciones informales. $as definiciones formales se pueden encontrar en la bibliograf(a que se
comenta al final del cap(tulo.
"n el c!lculo de predicados )lgica de primer orden*, un predicado es una funcin con
argumentos que se puede ealuar a erdadero o falso. -uando los argumentos se sustituyen por
alores, la funcin llea a una e?presin denominada proposicin, que puede ser erdadera o
falsa. ,or ejemplo, las frases B-arlos 'aeza es un miembro de la plantillaC y B-arlos 'aeza gana
m!s que Amelia ,astorC son proposiciones, ya que se puede determinar si son erdaderas o falsas.
"n el primer caso, la funcin Bes un miembro de la plantillaC tiene un argumento )-arlos 'aeza* y
en el segundo caso, la funcin Bgana m!s queC tiene dos argumentos )-arlos 'aeza y Amelia
,astor*.
%i un predicado tiene una ariable, como en B x es un miembro de la plantillaC, esta ariable debe
tener un rango asociado. -uando la ariable se sustituye por alguno de los alores de su rango, la
proposicin puede ser ciertaI para otros alores puede ser falsa. ,or ejemplo, si el rango de x es el
conjunto de todas las personas y reemplazamos x por -arlos 'aeza, la proposicin B-arlos 'aeza
es un miembro de la plantillaC es cierta. ,ero si reemplazamos x por el nombre de una persona
que no es miembro de la plantilla, la proposicin es falsa.
%i F es un predicado, la siguiente e?presin corresponde al conjunto de todos los alores de x
para los que F es cierto#
x G;E8E F=x?
$os predicados se pueden conectar mediante A=D, A2 y =A@ para formar predicados
compuestos.
Clculo orientado a tuplas
"n el c!lculo relacional orientado a tuplas, lo que interesa es encontrar tuplas para las que se
cumple cierto predicado. "l c!lculo orientado a tuplas se basa en el uso de variables tupla. Una
ariable tupla es una ariable cuyo rango de alores son las tuplas de una relacin.
,or ejemplo, para especificar el rango de la ariable tupla P6 sobre la relacin PLANTILLA se
utiliza la siguiente e?presin#
8AN3E OF P6 I! PLANTILLA
,ara e?presar la consulta Bobtener todas las tuplas P6 para las que F=P6? es ciertoC, se escribe la
siguiente e?presin#
P6 G;E8E F=P6?
donde F es lo que se denomina una frmula bien formada (fbf#. ,or ejemplo, para e?presar la
consulta Bobtener todos los datos de los empleados que ganan m!s de /:.::: eurosC se puede
escribir#
8AN3E OF P6 I! PLANTILLA
P6 G;E8E P67salario H +****
P67salario se refiere al alor del atributo salario para la tupla P6. ,ara que se muestren
solamente algunos atributos, por ejemplo, apellido y salario, en lugar de todos los atributos
de la relacin, se escribe#
8AN3E OF P6 I! PLANTILLA
P67apellido$ P67salario G;E8E P67salario H +****
<ay dos cuantificadores que se utilizan en las frmulas bien formadas para decir a cu!ntas
instancias se aplica el predicado. "l cuantificador existencial )Be?isteC* se utiliza en las
frmulas bien formadas que deben ser ciertas para al menos una instancia.
8AN3E OF O6 I! OFICINA
O6 =O67onum F P67onum AND O67poblacin F ICastellnJ?
"sta frmula bien formada dice que Be?iste una oficina que tiene el mismo n.mero que el n.mero
de oficina de la tupla que ahora se encuentra en la ariable de PLANTILLA, P6, y que est! en
-astellnC. "l cuantificador universal )Bpara todoC* se utiliza en las frmulas bien formadas que
deben ser ciertas para todas las instancias.
P6 =P67poblacin ICastellnJ?
"sta frmula bien formada dice que Bpara todas las tuplas de PLANTILLA, la poblacin no es
-astellnC. Utilizando las reglas de las operaciones lgicas, esta frmula bien formada se puede
escribir tambin del siguiente modo#
NOT P6 =P67poblacin ICastellnJ?
que dice que Bno hay ning.n miembro de la plantilla cuya poblacin sea -astellnC.
$as ariables tupla que no est!n cuantificadas por o se denominan variables libres. %i est!n
cuantificadas, se denominan variables ligadas. "l c!lculo, al igual que cualquier lenguaje, tiene
una sinta?is que permite construir e?presiones !lidas. ,ara que una e?presin no sea ambigua y
tenga sentido, debe seguir esta sinta?is#
%i es una frmula bien formada >!ria )un predicado con argumentos* y
son constantes o ariables, entonces es tambin una
frmula bien formada.
%i y son constantes o ariables del mismo dominio y es un operador de
comparacin ) *, entonces es una frmula bien formada.
%i y son frmulas bien formadas, tambin lo son su conjuncin A0" , su
disyuncin 75 y la negacin 07) . Adem!s, si es una frmula bien formada
que tiene una ariable libre , entonces y tambin son frmulas bien
formadas.
75emplo 4.12 Abtener un listado de los empleados que llean inmuebles de Almazora.
8AN3E OF P6 I! PLANTILLA
8AN3E OF I6 I! IN.<E4LE
P6 G;E8E I6 =I67enum P67enum AND I67poblacin F IAlma:oraJ?
"sta peticin se puede escribir en trminos del c!lculo# Bun miembro de la plantilla debe salir en
el listado si e?iste una tupla en IN.<E4LE que tenga asignado a ese empleado y que est en
Almazora ) poblacin*C. =tese que formulando la consulta de este modo no se indica la
estrategia a seguir para ejecutarla, por lo que el %&'D tiene libertad para decidir qu operaciones
hacer y en qu orden. "n el !lgebra relacional se hubiera formulado as(# B<acer una restriccin
sobre IN.<E4LE para quedarse con las tuplas que tienen como poblacin Almazora, y hacer
despus una concatenacin con PLANTILLA.
75emplo 4.13 Abtener las oficinas cuyos empleados )todos* nacieron de /954 en adelante.
8AN3E OF P6 I! PLANTILLA
8AN3E OF O6 I! OFICINA
O6 G;E8E P6 =P67onum O67onum O8 P67fechanac HF I+0+0'#J?
$a e?presin anterior es equialente a esta otra#
O6 G;E8E NOT P6 =P67onum O67onum AND P67fechanac K I+0+0'#J?
Clculo orientado a dominios
"n el c!lculo relacional orientado a dominios las ariables toman sus alores en dominios, en
lugar de tomar alores de tuplas de relaciones. Atra diferencia con el c!lculo orientado a tuplas es
que en el c!lculo orientado a dominios hay un tipo de comparacin adicional, a la que se
denomina ser miembro de. "sta condicin tiene la forma#
8=a >5 $ a >5 $ 777?
donde los a son atributos de la relacin 8 y los 5 son ariables dominio o constantes. $a
condicin se eal.a a erdadero si e?iste alguna tupla en 8 que tiene los alores especificados en
los atributos especificados. ,or ejemplo, la siguiente condicin#
PLANTILLA=puesto>I!uper5isorJ$ onum>IO,J?
se ealuar! a erdadero si hay alg.n empleado que sea superisor en la oficina O,. P la condicin
PLANTILLA=puesto>px$ onum>ox?
ser! cierta si hay alguna tupla en PLANTILLA que tenga en puesto el alor actual de la ariable
dominio px y que tenga en onum el alor actual de la ariable dominio ox.
75emplo 4.14 Abtener los apellidos de los empleados que no siendo directores, tienen un salario
mayor de /:.::: euros.
ax G;E8E px sx =px IDirectorJ AND sx H +****
AND PLANTILLA=apellido>ax$ puesto>px$ salario>sx??
)ttp(AA***3.u$i.esADmmarquesAfCAapunAnode5F.)tml
Introduccin
3asta ahora se han distinguido dos aspectos de las bases de datos: La estructura $ el manejo.
&ara manejar las estructuras se siguen dos l-neas! %ue son el lgebra relacional $ el clculo relacional.
lgebra relacional.- "l lgebra relacional consiste en un conjunto de operadores de alto nivel %ue operan sobre
relaciones. Cada uno de estos operadores toma una o dos relaciones como entrada $ produce una nueva relacin
como salida.
Fue Codd %ui1n en el a'o 4567 dise' una serie de operadores %ue le permitieran trabajar con la estructura
relacional %ue el mismo hab-a defnido. "stos operadores son los siguientes:
!radicionales conjuntistas"
/nin .
8nterseccin.
9iferencia.
&roducto cartesiano.
Relacionales propios"
0eleccin
&ro$eccin.
Reunin.
9ivisin
Los operadores 4! :! 7! ;! 6 $ < son binarios! es decir! dadas dos relaciones se obtiene una $ los operadores = $ >
son #onarios! de una relacin obtienen otra.
Defnicin intuiti$a.
%nin: Constru$e una relacin formada por todas las tuplas %ue aparecen en cual%uiera de las dos relaciones
especifcadas. */?8@?+
&nterseccin: Constru$e una relacin formada por a%uellas tuplas %ue aparezcan en las dos relaciones
especifcadas! es decir! %ue tienen los mismos atributos. *8?A"R0"CA+
Diferencia: Constru$e una relacin formada por todas las tuplas de la primera relacin %ue no aparezcan en la
segunda de las dos relaciones especifcadas. *#8?/0+
'roducto cartesiano: partir de dos relaciones especifcadas! constru$e una relacin %ue contiene todas las
combinaciones posibles de tuplas! una de cada una de las dos relaciones. *A8#"0+
Eje#plo"
( B ) C
a 4 a 7
a 4 a ;
b : a 7
b : a ;
( B
a 4
b :
) C
a 7
a ;
*eleccin: "(trae las tuplas especifcadas de una relacin dada! o lo %ue es lo mismo! restringe la relacin slo
a las tuplas %ue satisfagan una condicin especifcada *0elecciona flas+.
'ro+eccin: "(trae los atributos especifcados de una relacin dada *0elecciona columnas+.
Reunin: partir de dos relaciones especifcadas! constru$e una relacin %ue contiene todas las posibles
combinaciones de tuplas! una de cada una de las dos relaciones! tales %ue las dos tuplas participantes en una
combinacin dada satisfagan alguna condicin especifcada. Las tuplas deben tener alg2n atributo en com2n. "s por
esto %ue las bases de datos deben estar normalizadas. *D@8?+
Eje#plo"
( C
a Rojo
b zul
c marillo
( , C
a 4 Rojo
b 4 zul
b : zul
b 7 zul
( B
a 4
b 4
b :
b 7
Di$isin: toma dos relaciones! una binaria $ una unaria! $ constru$e una relacin formada por todos los valores
de un atributo de la relacin binaria %ue concuerdan *en el otro atributo+ con todos los valores en la relacin.
Eje#plo"
B
4
:
7
E
b
( B
a 4
b 4
b :
b 7
0lo ha cogido a b por%ue tiene asociados a 4! : $ 7! todos los valores indicados en la tabla B
5..- !inta"is #ara el manejo de las e"#resiones relacionales.
&ara defnir una sinta(is para el manejo de las e(presiones relacionales vamos a utilizar la gramtica F?F. "sta
gramtica tiene una serie de valores:
)alores terminales: "l nombre de la relacin! el nombre del atributo $ los predicados. /n predicado es una
e(presin lgica entre atributos del mismo dominio $ %ue da como resultado verdadero o falso.
)a a haber operadores lgicos: *?9! @R! ?@A+.
Aambi1n habr operadores clsicos *G! GH !I! IH! H! GI+.
/na gramtica F?F para el lgebra relacional es la siguiente:
defJrel ::H 9"F8?" R"LC8@? nombreJrelacin KnombreJatributoL
defJalias ::H 9"F8?" L80 nombreJrelacin F@R nombreJrelacin
e(pr ::H seleccin M pro$eccin M e(presin infja
seleccin ::H primitiva C3"R" predicado
primitiva ::H nombre J relacin M *e(pr+
pro$eccin ::H primitiva M primitiva Kesp J atribL
esp J atrib ::H nombre J atributo M nombre J relacin nombre J atributo
e(pr J infja ::H pro$eccin op J infja pro$eccin
op J infja ::H /?8@?! 8?A"R0"CA! #8?/0! A8#"0! D@8?! 98)89" FB
5.$.- %os o#eradores tradicionales.
La unin! la interseccin $ la diferencia entre relaciones deben de cumplir la relacin de co#patibilidad. "sta
regla dice %ue dadas dos relaciones $ F son compatibles para la unin! interseccin $ diferencia si $ solo si
verifcan las dos siguientes condiciones:
"l grado de tiene %ue ser igual al grado de F. Nrado*+ H Nrado*F+
0i tiene atributos a4! a:! ...! an! $ F tiene atributos b4! b:! ...! bn! el dominio de cada uno de estos atributos
tienen %ue ser iguales. Ka4! a:! ...! anL $ FKb4! b:! ...! bnL 9om *i+ H 9om *Fi+.
"l producto cartesiano devuelve una relacin %ue es el resultado de la construccin de dos relaciones. La unin!
interseccin $ diferencia van a consistir en operar dos conjuntos %ue verif%uen la relacin de compatibilidad. Los
conjuntos %ue verif%uen esta relacin son iguales estructuralmente
Eje#plo: 9adas dos relaciones $ F.
4 : F F4 F:
E 4 E 4
E : B :
B 4 B 7
B : E ;
/?8@? F 8?A"R0"CA F #8?/0 F F #8?/0
E 4 E 4 E : E ;
E : B : B 4 B 7
E 4
B :
B 7
E ;
"l producto cartesiano *A8#"0+ es cerrado! con lo %ue obtenemos una relacin a partir de otras dos. 0iempre %ue se
hace el producto cartesiano para dos conjuntos con un atributo en com2n! se le pone sie#pre delante del nombre
del atributo el nombre de la relacin. A8#"0 F es una relacin O P t P ! r P F! *t! r+ P A8#"0 F. "l producto
cartesiano es asociativo $ conmutativo.
Eje#plo:
0& 0Q &Q CA9 0 0Q ?oms "stado
04 &4 7RR 04 0ala :R
0: &4 7RR 0: Dara 4R
0; &= ;RR 0; lda 7R
0& A8#"0 0
0&.0Q &Q CA9 0.0Q ?oms "stado
04 &4 7RR 04 0ala :R
04 &4 7RR 0: Dara 4R
04 &4 7RR 0; lda 7R
0: &4 7RR 04 0ala :R
0: &4 7RR 0: Dara 4R
0: &4 7RR 0; lda 7R
0; &= ;RR 04 0ala :R
0; &= ;RR 0: Dara 4R
0; &= ;RR 0; lda 7R
"l producto cartesiano tiene un problema cuando se defne un producto cartesiano del mismo conjunto $a %ue se
repetir-an el nombre de los atributos! $ estos deben de ser 2nicos. "sto se soluciona defniendo un alias para la
relacin.
Eje#plo:
9"F8?" L80 0& F@R
0& A8#"0
0&.0Q 0&.&Q 0&.CA9 .0Q .&Q .CA9
0iempre %ue se pide buscar parejas de algo ha$ %ue hacer el producto cartesiano de una relacin por s- misma.
5.&.- %os o#eradores relacionales t'#icos.
-.ERE (seleccin).- 0i & es un predicado %ue se puede construir con los atributos de una relacin R! entonces R
C3"R" &! es la seleccin seg2n el predicado &! es decir! se %ueda con las tuplas de la relacin %ue hacen cierto el
predicado &. ** -.ERE '+. "l predicado & puede ser compuesto mediante los operadores ?9! @R! G !...! $
devuelve verdadero o falso.
'ro+eccin.- 0i se tiene una relacin R con atributos 4! :!...! m! se dice %ue se ha pro$ectado R sobre el
conjunto de atributos 4! :!...! m cuando se eliminan de R todas las columnas %ue no estn en el conjunto $
se eliminan las tuplas repetidas %ue puedan aparecer.
Eje#plo"
0& 0Q &Q CA9 K0Q! CA9L 0Q CA9
04 &4 7RR 04 7RR
0: &4 7RR 0: 7RR
04 &: 7RR 04 7RR S se eliminan tuplas repetidas.
/0&1 (Reunin).- 0ean $ F dos relaciones $ & un predicado %ue conecta atributos de las dos. 0e llama reunin al
resultado de * A8#"0 F+ C3"R" &. "sto recibe el nombre de Reunin *D@8?+.
Eje#plo"
0& 0Q &Q CA9 0Q "stado 0& D@8? F 0Q &Q CA9 "stado
04 &4 4RR 04 4R 04 &4 4RR 4R
04 &: :RR 04 &: :RR 4R
04 &7 4RR 04 &7 4RR 4R
0: &4 4RR
La reunin elimina campos en comparacin de igualdad de atributos.
D&2&DE 3, (Di$isin).- 0ea una relacin de grado m T n $ F otra relacin de grado n. "l operador divisin
produce una nueva relacin de grado m! donde el *m T i+,esimo atributo de $ el i,esimo atributo de F *i en el
rango de 4 a n+ deben estar defnidos sobre el mismo dominio.
"jemplo: &roveedores %ue suministran todas las piezas.
0& K0Q! &QL 98)89" FB 0K&QL
0&K0Q! &QL 0Q &Q 98)89" FB 0K&QL &Q H &Q
04 &4 &4 &4
04 &: &:
0: &7
"ncontrar todas las piezas de color rosa:
0&K0Q! &QL 98)89" FB **& C3"R" Color H Rosa+K&QL +
)ttp(AA)tml.rincondel'ago.comAbases4de4datosM1H.)tml
Unidad 4. Introduccin a SQL.
4.! Introduccin.
%n lengua$e de consulta comercial proporciona una interfa- m!s amigable al usuario. %n e$emplo de este
tipo de lengua$e es el ST., 2Structured Tuery .angua$e, .engua$e de #onsulta Estructurado7.
.as partes m!s importantes del ST. son(
33.( .engua$e de definicin de datos 2que nos permite crear las estructuras7
36.( .engua$e de manipulacin de datos 2que nos permite tener acceso a las estructuras para
suprimir, modificar e insertar7
1. Introduccin
El lengua$e de consulta estructurado 2S37 es un lengua$e de base de datos
normali-ado, utili-ado por el motor de base de datos de 6icrosoft Ket. S3 se utili-a
para crear ob$etos Tuery3ef, como el argumento de origen del m/todo 5penRecordSet
y como la propiedad RecordSource del control de datos. <ambi/n se puede utili-ar con
el m/todo E1ecute para crear y manipular directamente las bases de datos Ket y crear
consultas S3 de paso a tra'/s para manipular bases de datos remotas cliente 4
ser'idor.
1.1. Componentes del S3
El lengua$e S3 est! compuesto por comandos, cl!usulas, operadores y funciones de
agregado. Estos elementos se combinan en las instrucciones para crear, actuali-ar y
manipular las bases de datos.
1.& Comandos
E1isten dos tipos de comandos S3(
.os 3.. que permiten crear y definir nue'as bases de datos, campos e ndices.
.os 36. que permiten generar consultas para ordenar, filtrar y e1traer datos de la base de datos.
Comandos +
Comando +escripcin
C*)$T) %tili-ado para crear nue'as tablas, campos e ndices
+*9: Empleado para eliminar tablas e ndices
$T)*
%tili-ado para modificar las tablas agregando campos o cambiando
la definicin de los campos.
Comandos +'
Comando +escripcin
S))CT
%tili-ado para consultar registros de la base de datos que satisfagan
un criterio determinado
I>S)*T
%tili-ado para cargar lotes de datos en la base de datos en una
&nica operacin.
U:+$T)
%tili-ado para modificar los 'alores de los campos y registros
especificados
+))T) %tili-ado para eliminar registros de una tabla de una base de datos
1.3 Cl(usulas
.as cl!usulas son condiciones de modificacin utili-adas para definir los datos que
desea seleccionar o manipular.
Comando +escripcin
7*9'
%tili-ada para especificar la tabla de la cual se 'an a seleccionar los
registros
56)*)
%tili-ada para especificar las condiciones que deben reunir los
registros que se 'an a seleccionar
8*9U:
;<
%tili-ada para separar los registros seleccionados en grupos
especficos
6$=I>8 %tili-ada para e1presar la condicin que debe satisfacer cada grupo
9*+)*
;<
%tili-ada para ordenar los registros seleccionados de acuerdo con un
orden especfico
1.4 9peradores ,icos
9perador Uso
$>+
Es el RyR lgico. E'al&a dos condiciones y de'uel'e un 'alor de
'erdad slo si ambas son ciertas.
9*
Es el RoR lgico. E'al&a dos condiciones y de'uel'e un 'alor de
'erdad si alguna de las dos es cierta.
>9T ?egacin lgica. 3e'uel'e el 'alor contrario de la e1presin.
1.5 9peradores de Comparacin
9perador Uso
S 6enor que
T 6ayor que
ST 3istinto de
SU 6enor +gual que
TU 6ayor +gual que
;)T5))> %tili-ado para especificar un inter'alo de 'alores.
IV) %tili-ado en la comparacin de un modelo
In %tili-ado para especificar registros de una base de datos
1.! 7unciones de $,re,ado
.as funciones de agregado se usan dentro de una cl!usula S))CT en grupos de
registros para de'ol'er un &nico 'alor que se aplica a un grupo de registros.
Comando +escripcin
$=8
%tili-ada para calcular el promedio de los 'alores de un campo
determinado
C9U>T %tili-ada para de'ol'er el n&mero de registros de la seleccin
SU'
%tili-ada para de'ol'er la suma de todos los 'alores de un campo
determinado
'$B %tili-ada para de'ol'er el 'alor m!s alto de un campo especificado
'I> %tili-ada para de'ol'er el 'alor m!s ba$o de un campo especificado
httpDGGHHH.maestrosdelHeb.comGeditorialGtuts%l1G
4." )structura b(sica .S))CT4 56)*)/.
.a estructura b!sica de una e1presin en ST. contiene 3 partes, Select, :rom y U)ere.
.a cl!usula (elect se usa para listar los atributos que se desean en el resultado de una consulta.
3rom, .ista las relaciones que se 'an a e1aminar en la e'aluacin de la e1presin.
4"ere, es la definicin de las condiciones a las que puede estar su$eta una consulta.
.a consulta tpica de ST. tiene la siguiente forma(
(elect A1,A2,A3...An
3rom r1,r2,r3...rm
4"ere #ondicin2es7
3onde(
A1,A2,A3...An( Representan a cada atributo2s7 o campos de las
tablas de la base de datos relacional.
R1,r2,r3...rm( Representan a la2s7 tabla2s7 in'olucradas en la consulta.
#ondicin( Es el enunciado que rige el resultado de la consulta.
Si se omite la cl!usula U)ere, la condicin es considerada como 'erdadera, la lista de atributos
2A1,A2..An7 puede sustituirse por un asterisco 2V7, para seleccionar todos los atributos de todas las tablas
que aparecen en la cl!usula :rom.
7uncionamiento del S3.
El ST. forma el producto cartesiano de las tablas in'olucradas en la cl!usula :rom, cumpliendo con la
condicin establecida en la orden U)ere y despu/s proyecta el resultado con la orden select.
9ara nuestros e$emplos consideremos una tabla llamada #%RS5, que contiene los siguientes campos(
>ombre del campo +escripcin
?um# ?&mero del curso, &nico para identificar cada curso
?ombre# ?ombre del curso, tambi/n es &nico
3esc# 3escripcin del curso
#reditos #r/ditos, n&mero de estos que gana al estudiante al
cursarlo
#osto #osto del curso.
3epto 3epartamento acad/mico que ofrece el curso.
3atos contenidos en la tabla #%RS5
>umC >ombreC +escC Creditos Costo +epto
AG1 .idera-go 9ara p&blico
=eneral
1G 1GG.GG Admn.
SG1 +ntroduccin a la inteligencia artificial 9ara +S# y .+ 1G FG.GG Sistemas.
#G1 #onstruccin de torres 9ara +# y
Arquitectura
H G.GG #iencias
BG1 Situacin actual y perspecti'as de la
alimentacin y la nutricin
9ara +B H HG.GG Bioqumica
EG1 @istoria presente y futuro de la energa solar +E e ++ 1G 1GG.GG Electromec!nica.
SG2 <ecnologa 5.A9 9ara +S# y .+ H 1GG.GG Sistemas
#G2 <ecnologa del concreto y de las Estructuras 9ara +# 1G 1GG.GG #iencias
BG2 6etabolismo de lpidos en el camarn 9ara +B 1G G.GG Bioqumica
EG2 .os sistemas el/ctricos de potencia 9ara +E 1G 1GG.GG Electromec!nica
SG3 Estructura de datos 9ara +S# y .+ H G.GG Sistemas
AG1
3ise8o bioclim!tico 9ara
Arquitectura
1G G.GG
Arquitectura
#G3 6atem!ticas discretas =eneral H G.GG #iencias
SG #ircuitos digitales 9ara +S# 1G G.GG Sistemas
SG5 Arquitectura de #omputadoras 9ara +S# 1G 5G.GG Sistemas
+G1 Base de 3atos Relacionales 9ara +S# y .+ 1G 15G.GG +nform!tica
E$emplos de consultas(
5B<E?#+W? 3E %?A <AB.A E?<ERA
5btener toda la informacin disponible sobre un curso donde #osto sea G.
SE.E#< V
:R56 #%RS5
U@ERE #ostoXG.GG
Resultado de la consulta anterior.
>umC >ombreC +escC Creditos Costo +epto
#G1 #onstruccin de torres 9ara +# y
Arquitectura
H G.GG #iencias
BG2 6etabolismo de lpidos en el camarn 9ara +B 1G G.GG Bioqumica
SG3 Estructura de datos 9ara +S# y .+ H G.GG Sistemas
AG1
3ise8o bioclim!tico 9ara
Arquitectura
1G G.GG
Arquitectura
#G3 6atem!ticas discretas =eneral H G.GG #iencias
#olocamos un V debido a que no nos limitan la informacin de la tabla, es decir nos piden que
mostremos todos los datos atributo de la tabla #%RS5.
#omo la &nica condicin en la sentencia U@ERE es que la tarifa del curso sea igual a G, esta consulta
regresa todas las tuplas donde se encuentre que #osto X G.GG.
3ebido a que #osto es un campo num/rico, la condicin solo puede comparar con campos del mismo
tipo. 9ara representar 'alores negati'os se antepone a la i-quierda el signo 247, en este e$emplo se
considera solo el signo 2X7 para establecer la condicin, sin embargo otros operadores que se pueden
utili-ar son(
6enor que Y
6ayor que Z
6enor o igual que YX
6ayor o igual que ZX
3iferente YZ
Adem!s de los operadores booleanos A?3, ?5<, 5R.
#abe se8alar que en la sentencia U)ere cuando se requiere establecer condiciones con cadenas,
estas son delimitadas por apstrofos 2[\7. .as e1presiones de cadenas son comparadas car!cter por
car!cter, dos cadenas son iguales solo si coinciden todos los caracteres de las mismas.
E$emplos de consultas con cadenas(
5btener toda la informacin sobre cualquier curso que ofre-ca el departamento de #iencias.
SE.E#< V
:R56 #%RS5
U@ERE 3epto X O#ienciasO>
Resultado de la consulta.
>umC >ombreC +escC Creditos Costo +epto
#G1 #onstruccin de torres 9ara +# y
Arquitectura
H G.GG #iencias
#G2 <ecnologa del concreto y de las
Estructuras
9ara +# 1G 1GG.GG #iencias
SG #ircuitos digitales 9ara +S# 1G G.GG Sistemas
I+S%A.+NA#+W? 3E #5.%6?AS ES9E#+:+#A3AS.
En los e$emplos anteriores obtenamos toda la tabla completa, a)ora 'eremos como mostrar solo
algunos atributos especficos de una tabla.
5btener los 'alores ?um#,?ombre# y 3epto, en este orden de toda la tabla curso.
SE.E#< ?um#, ?ombre#, 3epto
:R56 #%RS5>
Resultado de la consulta(
>umC >ombreC +epto
AG1 .idera-go Admn.
SG1 +ntroduccin a la inteligencia artificial Sistemas.
#G1 #onstruccin de torres #iencias
BG1 Situacin actual y perspecti'as de la alimentacin y la
nutricin
Bioqumica
EG1 @istoria presente y futuro de la energa solar Electromec!nica.
SG2 <ecnologa 5.A9 Sistemas
#G2 <ecnologa del concreto y de las Estructuras #iencias
BG2 6etabolismo de lpidos en el camarn Bioqumica
EG2 .os sistemas el/ctricos de potencia Electromec!nica
SG3 Estructura de datos Sistemas
AG1
3ise8o bioclim!tico
Arquitectura
#G3 6atem!ticas discretas #iencias
SG #ircuitos digitales Sistemas
SG5 Arquitectura de #omputadoras Sistemas
+G1 Base de 3atos Relacionales +nform!tica
5bser'amos que en este caso no se tiene la sentencia U)ere, no e1iste condicin, por lo tanto, todas
las filas de la tabla #%RS5 se recuperan, pero solo se 'isuali-aran las tres columnas especificadas.
As mismo, empleamos la 2,7 para separar los campos que deseamos 'isuali-ar.

I+S%A.+NA#+W? 3E %? S%B#5?K%?<5 3E :+.AS J #5.%6?AS
Seleccionar los 'alores ?um#, 3epto y #osto para todos los cursos que tengan un #osto inferior
a ]1GG
SE.E#< ?um#, 3epto, #osto
:R56 #%RS5
U@ERE #osto Y 1GG.GG
#omo resultado de esta consulta se obtendr!n todas aquellas tuplas que tengan un costo en #<AR+:A
menor que 1GG, y se 'isuali-aran solo los campos de ?um#, 3epto,#osto.
9odemos obser'ar que este e$emplo cubre el formato general de una consulta ST..
.a palabra cla'e +ISTI>CT
3+S<+?#<, es una palabra reser'ada que elimina las filas que duplicadas en el resultado de una
consulta.
Iisuali-ar todos los departamentos acad/micos que ofre-can cursos, rec)a-ando los 'alores
duplicados.
SE.E#< +ISTI>CT 3epto
:R56 #%RS5>
Resultado de la consulta
+epto
Administracin
Sistemas
#iencias
Bioqumica
electromec!nica
Arquitectura
+nform!tica
.a palabra 3+S<+?#< 'a estrictamente despu/s de la palabra SE.E#<.
3e no )aberse utili-ado la palabra 3+S<+?#<, el resultado )ubiera mostrado todas las tuplas del
atributo 3epto que se encontraran, es decir, se )ubiera 'isuali-ado la columna de 3epto completamente.
E69.E5 3E .5S #5?E#<5RES B55.EA?5S 2A?3, 5R, ?5<7
9ara emplear las condiciones m&ltiples dentro de la sentencia U@ERE, utili-amos los conectores
lgicos.
El conector $>+.
Este conector pide al sistema que seleccione una sola columna &nicamente si ambas condiciones se
cumplen.
5btener toda la informacin sobre todos los cursos que ofrece el departamento Sistemas que
tengan una tarifa igual a G.
SE.E#< V
:R56 #%RS5
U@ERE 3eptoX\Sistemas\ A?3 #ostoXG.GG>
El resultado de esta consulta sera todas aquellas tuplas que cumplan e1actamente con las dos
condiciones establecidas.
El conector 9*.
Este conector al igual que el A?3 permite conectar condiciones m&ltiples en la sentencia U@ERE, a
diferencia del conector A?3, el 5R permite la seleccin de filas que cumplan con una sola de las
condiciones establecidas a tra'/s de este conector.
5btener toda la informacin e1istente sobre cualquier curso ofrecido por los departamentos
Arquitectura o Bioqumica.
SE.E#< V
:R56 #%RS5
U@ERE 3epto X [Arquitectura\ 9* 3eptoX [Bioqumica\>
El resultado de esta consulta ser! la de 'isuali-ar todas aquellas tuplas donde se cumpla cualquiera de
las 2 condiciones, es decir mostrara todas las tuplas que tengan en el atributo 3eptoXArquitectura o
Bioqumica.
El conector >9T
Este nos permite marcar aquellas tuplas que por alguna ra-n no deseamos 'isuali-ar.
5btener el nombre del curso y del departamento de todos los cursos que no sean ofrecidos por
el departamento Sistemas.
SE.E#< ?ombre#, 3epto
:R56 #%RS5
U@ERE >9T .3eptoX\Sistemas\/W
KERART%+A 3E 59ERA35RES B55.EA?5S.
En orden descendente 2de mayor a menor prioridad7
?5<
A?3
5R
E1isten dos formas para reali-ar consultas( Koin de Tuerys y Subquerys.
#uando en la sentencia 7rom colocamos los nombres de las tablas separados por comas se dice que
efectuamos una consulta de la forma @oin de 3uerys, en este caso se requiere anteponer el nombre de
la tabla y un punto al nombre del atributo. En el Koin de Tuerys el resultado que se produce con las tablas
que inter'ienen en la consulta es la concatenacin de las tablas, en donde los 'alores de una columna de
la primera tabla coinciden con los 'alores de una segunda tabla, la tabla de resultado tiene una fila por
cada 'alor coincidente que resulte de las dos tablas originales.
9ara e$emplificar esto, consideremos 2 tablas( <abla1 y <abla2, entonces(
C1 C& C3

C$ C;
A AAA 1G

35 R
B BBB 5

1G S
# ### 55

"5 <
3 333 2G

2G %
E EEE 2G

FG I
: ::: FG

FG U
= === 15

C5 E
@ @@@ FG

FG J

35 N
Resultado de la operacin Koin(
C1 C& C3 C$ C;
A AAA 1G 1G S
3 333 2G 2G %
E EEE 2G 2G %
: ::: FG FG I
: ::: FG FG U
: ::: FG FG J
@ @@@ FG FG I
@ @@@ FG FG U
@ @@@ FG FG J
#omo podemos obser'ar, la comparacin se efectu por las columnas #3 y #A, que son donde se
encontraron 'alores iguales, el resultado muestra una tupla por cada coincidencia encontrada.
#uando las consultas se anidan se conoce como Sub%uerys o subconsultas. Este tipo de consulta
obtiene resultados parciales reduciendo el espacio requerido para reali-ar una consulta.
>otaD <odas las consultas que se resuel'en con subquerys pueden resol'erse con Koin de Tuerys, pero
no todas las consultas )ec)as con Koin de Tuerys pueden resol'erse utili-ando Subquerys.
9ara e$emplificar lo anterior consideremos el e$emplo
A.%6?5 4 cursa 4 6A<ER+A, que tienen los siguientes atributos(
?#ontrol ?#ontrol #la'e
?ombreA #la'e ?ombre6
Especialidad #alif #reditos
3ireccin
Representando en tablas a los atributos quedaran de la siguiente forma(
<abla alumno(
>Control >ombre$ )specialidad +ireccin

<abla cursa(
>Control Clave Calif

<abla materia(
Clave >ombre' Creditos

5btener el nombre de la materia que cursa el alumno con n&mero de control FC31G211 con
cr/ditos igual a oc)o.
SE.E#< ?ombreA
:R56 6ateria
U@ERE creditosX\H\ and cla'e in2SE.E#< cla'e
:R56 cursa
U@ERE ?#ontrolX\FC31G211\>
5btener el n&mero de control del alumno que tenga alguna calificacin igual a 1GG
SE.E#< 3+S<+?#2?#ontrol7
:R56 #ursa
U@ERE #alifX\1GG\>
5btener el nombre de las materias que cursa el alumno Sal'ador #)!'e-.
SE.E#< ?ombre6
:R56 6ateria
U@ERE #la'e in 2SE.E#< 3+S<+?# 2#la'e7
:R56 #ursa
U@ERE ?#ontrol in 2SE.E#< ?#ontrol7
:R56 Alumno
U@ERE ?ombreAX\Sal'ador
#)!'e-\77>
:%?#+5?ES AIA?NA3AS A9.+#AB.ES A #5?S%.<AS
E1isten funciones que permiten la agili-acin de consultas similares a una )o$a de c!lculo, ya que
traba$an en base a renglones y columnas.
#5%?< 2 7( #uenta el n&mero de tuplas en la columna establecida
6+? 2 7( .ocali-a el 'alor mnimo de la columna establecida
6AE 2 7( .ocali-a el 'alor m!1imo de la columna establecida.
AI= 2 7( 5btiene el promedio de 'alores de la columna establecida
S%6 2 7( 5btiene el 'alor total que implican los 'alores obtenidos en la columna establecida.
E$emplos(
5btener el n&mero de alumnos que e1isten en la carrera de +ngeniera en Sistemas
#omputacionales.
SE.E#< Count 2V7
:R56 Alumno
U@ERE especialidadX\+S#\>
5btener la m!1imo calificacin que )a obtenido K.6. #adena.
SE.E#< 'aI2#alif7
:R56 #ursa
U@ERE ?#ontrol +? 2SE.E#< ?#ontrol
:R56 Alumno
U@ERE ?ombreAX [K.6. #adena \7>
5btener el promedio de calificaciones de Sal'ador #)!'e-.
SE.E#< $v, 2#alif7
:R56 #ursa
U@ERE ?#otrol +? 2SE.E#< ?#ontrol
:R56 Alumno
U@ERE ?ombreAX\Sal'ador #)!'e-\7>
5btener la suma total de las calificaciones obtenidas por 3aniel #oln.
SE.E#< Sum 2#alif7
:R56 #ursa
U@ERE ?#ontrol +? 2SE.E#< ?#ontrol
:R56 Alumno
U@ERE ?ombreAX\3aniel #oln\7>
@asta aqu )emos 'isto el mane$o sencillo de reali-ar consultas con ST., )ay que destacar que en la
reali-acin de consultas anidadas se tiene que poner cuidando a la prioridad de los operadores, teniendo
cuidado tambi/n al momento de agrupar los par/ntesis que in'olucran las condiciones con los
operadores.
.a estructura b!sica de una e1presin para consulta ST. consta de tres cl!usulas(
SE.E#<
:R56
U@ERE
.a cl!usula SE.E#< se usa para listar los atributos que se desean en el resultado de una consulta.
.a cl!usula :R56 lista las relaciones que se 'an a e1aminar en la e'aluacin de la e1presin
.a cl!usula U@ERE costa de un predicado que implica atributos de las relaciones que aparecen en la
cl!usula :R56.
%na consulta b!sica en ST. tiene la forma(
SE.E#< A1,A2,...,An
:R56 r1,r2,...,rn
U@ERE 9
3onde Ai X atributo 2 #ampo de la tabla 7
ri X relacin 2 <abla 7
9 X predicado 2 condicin 7
E$emplo 2.1 ( Seleccionar todos los nombres de las personas que tengan el apellido 6ART%ES+ de la
tabla persona
SE.E#< nombre
:R56 persona
U@ERE apellido X R 6ART%ES+R
A?SUER ?56BRE
1 6AR<+?
2 9AB.5
El resultado de una consulta es por supuesto otra relacin. Si se omite la cl!usula U@ERE, el predicado
9 es 'erdadero. .a lista A1, A2,..., An puede sustituirse por un asterisco 2V7 para seleccionar todos los
atributos de todas las relaciones que aparecen en la cl!usula :R56, aunque no es con'eniente elegir
esta ultima opcin sal'o que sea necesario pues desperdiciamos muc)o tiempo en obtenerlo
Alias
Es posible renombrar los atributos y las relaciones, a 'eces por con'eniencia y otras 'eces por ser
necesario, para esto usamos la clausula AS como en el siguiente e$emplo.
E$emplo 2.2
SE.E#< 9.nombre AS ^9R+6ER ?56BRE_
:R56 persona 9
U@ERE apellido X R6ART%ES+R
A?SUER 9R+6ER ?56BRE
1 6AR<+?
2 9AB.5

En este e$emplo cabe destacar un par de cosas. #uando nos referimos a un atributo como es el caso de
nombre, podemos referirnos a este usando la relacin 2 o el alias en este e$emplo 7 a la que pertenece el
atributo seguido de un punto seguido del atributo Y9.nombreZ, a 'eces esta notacin ser! necesaria para
eliminar ambig;edades. .os corc)etes los usamos cuando usamos espacios en blancos o el carat/r 2L7
en el nombre de atributo o alias.
%sar alias en los atributos nos permite cambiar el nombre de los atributos de la respuesta a la consulta.
#uando asociamos un alias con una relacin decimos que creamos una 'ariable de tupla. Estas 'ariables
de tuplas se definen en la cl!usula :R56 despu/s del nombre de la relacin.
En las consultas que contienen subconsultas, se aplica una regla de !mbito a las 'ariables de tupla. En
una subconsulta esta permitido usar solo 'ariables de tupla definidas en la misma subconsulta o en
cualquier consulta que tenga la subconsulta.
httpDGGHHH.mono,rafias.comGtraba1os11Gpros%Gpros%.shtmlOes
Consultas de Seleccin
.as consultas de seleccin se utili-an para indicar al motor de datos que de'uel'a
informacin de las bases de datos, esta informacin es de'uelta en forma de con$unto
de registros que se pueden almacenar en un ob$eto recordset. Este con$unto de
registros es modificable.
&.1 Consultas b(sicas
.a sinta1is b!sica de una consulta de seleccin es la siguiente(
!ELECT Campos F8O. TablaR
En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de
los mismos, por e$emplo(
!ELECT Nombre$ Telefono F8O. ClientesR
Esta consulta de'uel'e un recordset con el campo nombre y tel/fono de la tabla
clientes.
&.& 9rdenar los re,istros
Adicionalmente se puede especificar el orden en que se desean recuperar los registros
de las tablas mediante la cla&sula 5R3ER BJ .ista de #ampos. En donde .ista de
campos representa los campos a ordenar. E$emplo(
!ELECT Codi1oPostal$ Nombre$ Telefono F8O. Clientes O8DE8 4B NombreR
Esta consulta de'uel'e los campos #odigo9ostal, ?ombre, <elefono de la tabla #lientes
ordenados por el campo ?ombre.
Se pueden ordenar los registros por mas de un campo, como por e$emplo(
!ELECT Codi1oPostal$ Nombre$ Telefono F8O. Clientes O8DE8 4B
Codi1oPostal$ NombreR
+ncluso se puede especificar el orden de los registros( ascendente mediante la cla&sula
2$SC 4se toma este 'alor por defecto7 descendente 2+)SC7
!ELECT Codi1oPostal$ Nombre$ Telefono F8O. Clientes O8DE8 4B
Codi1oPostal DE!C $ Nombre A!CR
&.3 Consultas con :redicado
El predicado se incluye entre la cla&sula y el primer nombre del campo a recuperar, los
posibles predicados son(
:redicado +escripcin
$ 3e'uel'e todos los campos de la tabla
T9: 3e'uel'e un determinado n&mero de registros de la tabla
+ISTI>CT 5mite los registros cuyos campos seleccionados coincidan
totalmente
+ISTI>C*95
5mite los registros duplicados basandose en la totalidad del
registro y no slo en los campos seleccionados.
$D
Si no se incluye ninguno de los predicados se asume $. El 6otor de base de datos
selecciona todos los registros que cumplen las condiciones de la instruccin ST.. ?o
se con'eniente abusar de este predicado ya que obligamos al motor de la base de
datos a anali-ar la estructura de la tabla para a'eriguar los campos que contiene, es
muc)o m!s r!pido indicar el listado de campos deseados.
!ELECT ALL F8O. EmpleadosR
!ELECT Q F8O. EmpleadosR
T9:D
3e'uel'e un cierto n&mero de registros que entran entre al principio o al final de un
rango especificado por una cl!usula 9*+)* ;<. Supongamos que queremos
recuperar los nombres de los 25 primeros estudiantes del curso 1FF(
!ELECT TOP )# Nombre$ Apellido F8O. Estudiantes
O8DE8 4B Nota DE!CR
Si no se incluye la cl!usula 9*+)* ;<, la consulta de'ol'er! un con$unto arbitrario de
25 registros de la tabla Estudiantes .El predicado T9: no elige entre 'alores iguales. En
el e$emplo anterior, si la nota media n&mero 25 y la 2" son iguales, la consulta
de'ol'er! 2" registros. Se puede utili-ar la palabra reser'ada :)*C)>T para de'ol'er
un cierto porcenta$e de registros que caen al principio o al final de un rango
especificado por la cl!usula 9*+)* ;<. Supongamos que en lugar de los 25 primeros
estudiantes deseamos el 1G por ciento del curso(
!ELECT TOP +* PE8CENT Nombre$ Apellido F8O. Estudiantes
O8DE8 4B Nota DE!CR
El 'alor que 'a a continuacin de <59 debe ser un +nteger sin signo.<59 no afecta a la
posible actuali-acin de la consulta.
+ISTI>CTD
5mite los registros que contienen datos duplicados en los campos seleccionados. 9ara
que los 'alores de cada campo listado en la instruccin S))CT se incluyan en la
consulta deben ser &nicos.
9or e$emplo, 'arios empleados listados en la tabla Empleados pueden tener el mismo
apellido. Si dos registros contienen .pe- en el campo Apellido, la siguiente instruccin
ST. de'uel'e un &nico registro(
!ELECT DI!TINCT Apellido F8O. EmpleadosR
#on otras palabras el predicado +ISTI>CT de'uel'e aquellos registros cuyos campos
indicados en la cl!usula S))CT posean un contenido diferente. El resultado de una
consulta que utili-a +ISTI>CT no es actuali-able y no refle$a los cambios subsiguientes
reali-ados por otros usuarios.
+ISTI>CT*95D
3e'uel'e los registros diferentes de una tabla> a diferencia del predicado anterior que
slo se fi$aba en el contenido de los campos seleccionados, /ste lo )ace en el
contenido del registro completo independientemente de los campo indicados en la
cl!usula S))CT.
!ELECT DI!TINCT8OG Apellido F8O. EmpleadosR
Si la tabla empleados contiene dos registros( Antonio .pe- y 6arta .pe- el e$emplo
del predicado +ISTI>CT de'ule'e un &nico registro con el 'alor .pe- en el campo
Apellido ya que busca no duplicados en dic)o campo. Este &ltimo e$emplo de'uel'e dos
registros con el 'alor .pe- en el apellido ya que se buscan no duplicados en el registro
completo.
&.4 $lias
En determinadas circunstancias es necesario asignar un nombre a alguna columna
determinada de un con$unto de'uelto, otras 'eces por simple capric)o o por otras
circunstancias. 9ara resol'er todas ellas tenemos la palabra reser'ada AS que se
encarga de asignar el nombre que deseamos a la columna deseada. <omado como
referencia el e$emplo anterior podemos )acer que la columna de'uelta por la consulta,
en lugar de llamarse apellido 2igual que el campo de'uelto7 se llame Empleado. En este
caso procederamos de la siguiente forma(
!ELECT DI!TINCT8OG Apellido A! Empleado F8O. EmpleadosR
&.5 *ecuperar Informacin de una base de +atos )Iterna
9ara concluir este captulo se debe )acer referencia a la recuperacin de registros de
bases de datos e1terna. Es ocasiones es necesario la recuperacin de informacin que
se encuentra contenida en una tabla que no se encuentra en la base de datos que
e$ecutar! la consulta o que en ese momento no se encuentra abierta, esta situacin la
podemos sal'ar con la palabra reser'ada +? de la siguiente forma(
!ELECT DI!TINCT8OG Apellido A! Empleado F8O. Empleados
IN Jc>SdatabasesS1estion7mdbJR
En donde c(`databases`gestion.mdb es la base de datos que contiene la tabla
Empleados.
httpDGGHHH.maestrosdelHeb.comGeditorialGtuts%l3G
3. Criterios de Seleccin
En el captulo anterior se 'io la forma de recuperar los registros de las tablas, las
formas empleadas de'ol'an todos los registros de la mencionada tabla. A lo largo de
este captulo se estudiar!n las posibilidades de filtrar los registros con el fin de
recuperar solamente aquellos que cumplan unas condiciones preestablecidas.
Antes de comen-ar el desarrollo de este captulo )ay que recalcar tres detalles de 'ital
importancia. El primero de ellos es que cada 'e- que se desee establecer una
condicin referida a un campo de te1to la condicin de b&squeda debe ir encerrada
entre comillas simples> la segunda es que no se posible establecer condiciones de
b&squeda en los campos memo y> la tercera y &ltima )ace referencia a las fec)as. .as
fec)as se deben escribir siempre en formato mm4dd4aa en donde mm representa el
mes, dd el da y aa el a8o, )ay que prestar atencin a los separadores 4no sir'e la
separacin )abitual de la barra 2A7, )ay que utili-ar el guin 247 y adem!s la fec)a debe ir
encerrada entre almo)adillas 2a7. 9or e$emplo si deseamos referirnos al da 3 de
Septiembre de 1FF5 deberemos )acerlo de la siguiente forma> aGF4G34F5a aF434F5a.
3.1 9peradores ,icos
.os operadores lgicos soportados por S3 son( $>+, 9*4 B9*, )%v, Imp, Is y >ot. A
e1cepcin de los dos &ltimos todos poseen la siguiente sinta1is(
SeIpresin1T operador SeIpresin&T
En donde eIpresin1 y eIpresin& son las condiciones a e'aluar, el resultado de la
operacin 'ara en funcin del operador lgico. .a tabla ad$unta muestra los diferentes
posibles resultados(
SeIpresin1T 9perador SeIpresin&T *esultado
Ierdad $>+ :also :also
Ierdad $>+ Ierdad Ierdad
:also $>+ Ierdad :also
:also $>+ :also :also
Ierdad 9* :also Ierdad
Ierdad 9* Ierdad Ierdad
:also 9* Ierdad Ierdad
:also 9* :also :also
Ierdad B9* Ierdad :also
Ierdad B9* :also Ierdad
:also B9* Ierdad Ierdad
:also B9* :also :also
Ierdad )%v Ierdad Ierdad
Ierdad )%v :also :also
:also )%v Ierdad :also
:also )%v :also Ierdad
Ierdad Imp Ierdad Ierdad
Ierdad Imp :also :also
Ierdad Imp ?ull ?ull
:also Imp Ierdad Ierdad
:also Imp :also Ierdad
:also Imp ?ull Ierdad
?ull Imp Ierdad Ierdad
?ull Imp :also ?ull
?ull Imp ?ull ?ull
Si a cualquiera de las anteriores condiciones le anteponemos el operador >9T el
resultado de la operacin ser! el contrario al de'uelto sin el operador >9T.
El &ltimo operador denominado Is se emplea para comparar dos 'ariables de tipo ob$eto
S9b1eto1T Is S9b1eto&T. Este operador de'uel'e 'erdad si los dos ob$etos son
iguales.
!ELECT Q F8O. Empleados G;E8E Edad H )# AND Edad K #*R
!ELECT Q F8O. Empleados G;E8E =Edad H )# AND Edad K #*? O8 !ueldo F +**R
!ELECT Q F8O. Empleados G;E8E NOT Estado F J!olteroJR
!ELECT Q F8O. Empleados G;E8E =!ueldo H +** AND !ueldo K #**? O8
=Pro5incia F J.adridJ AND Estado F JCasadoJ?R
3.& Intervalos de =alores
9ara indicar que deseamos recuperar los registros seg&n el inter'alo de 'alores de un
campo emplearemos el operador ;etHeen cuya sinta1is es(
.campo X>otY ;etHeen valor1 $nd valor& .la condicin >ot es opcional/
En este caso la consulta de'ol'era los registros que contengan en ZcampoZ un 'alor
incluido en el inter'alo valor14 valor& 2ambos inclusi'e7. Si anteponemos la condicin
>ot de'ol'er! aquellos 'alores no incluidos en el inter'alo.
!ELECT Q F8O. Pedidos G;E8E CodPostal 4etTeen )%*** And )%&&&R
=De5uel5e los pedidos reali:ados en la pro5incia de .adrid?
!ELECT IIf=CodPostal 4etTeen )%*** And )%&&&$ JPro5incialJ$ JNacionalJ?
F8O. EditoresR
=De5uel5e el 5alor JPro5incialJ si el cdi1o postal se encuentra en el
inter5alo$
JNacionalJ en caso contrario?
3.3 )l 9perador i[e
Se utili-a para comparar una e1presin de cadena con un modelo en una e1presin
ST.. Su sinta1is es(
eIpresin i[e modelo
En donde eIpresin es una cadena modelo o campo contra el que se compara
e1presin. Se puede utili-ar el operador i[e para encontrar 'alores en los campos que
coincidan con el modelo especificado. 9or modelo puede especificar un 'alor completo
2Ana 6ara7, o se pueden utili-ar caracteres comodn como los reconocidos por el
sistema operati'o para encontrar un rango de 'alores 2.i0e AnV7.
El operador i[e se puede utili-ar en una e1presin para comparar un 'alor de un
campo con una e1presin de cadena. 9or e$emplo, si introduce i[e C\ en una consulta
S3, la consulta de'uel'e todos los 'alores de campo que comiencen por la letra #. En
una consulta con par!metros, puede )acer que el usuario escriba el modelo que se 'a a
utili-ar.
El e$emplo siguiente de'uel'e los datos que comien-an con la letra 9 seguido de
cualquier letra entre A y : y de tres dgitos(
i[e ]:X$-7YOOO]
Este e$emplo de'uel'e los campos cuyo contenido empiece con una letra de la A a la 3
seguidas de cualquier cadena.
i[e ]X$-+Y\]
En la tabla siguiente se muestra cmo utili-ar el operador i[e para comprobar
e1presiones con diferentes modelos.
Tipo de coincidencia 'odelo :lanteado Coincide >o Coincide
Iarios caracteres OaVaO OaaO, OaBaO, OaBBBaO OaB#O
#ar!cter especial Oa^V_aO OaVaO OaaaO
Iarios caracteres OabVO OabcdefgO, OabcO OcabO, OaabO
%n solo car!cter OaQaO OaaaO, Oa3aO, OaBaO OaBBBaO
%n solo dgito OaaaO OaGaO, Oa1aO, Oa2aO OaaaO, Oa1GaO
Rango de caracteres O^a4-_O OfO, OpO, O$O O2O, ObO
:uera de un rango O^ca4-_O OFO, ObO, OSO ObO, OaO
3istinto de un dgito O^cG4F_O OAO, OaO, ObO, ODO OGO, O1O, OFO
#ombinada Oa^cb4m_aO OAnFO, Oa-GO, OaFFO OabcO, Oa$GO
3.4 )l 9perador In
Este operador de'uel'e aquellos registros cuyo campo indicado coincide con alguno de
los indicados en una lista. Su sinta1is es(
eIpresin X>otY In.valor14 valor&4 . . ./
!ELECT Q F8O. Pedidos G;E8E Pro5incia In =J.adridJ$ J4arcelonaJ$
J!e5illaJ?R
3.5 a cl(usula 56)*)
.a cl!usula 56)*) puede usarse para determinar qu/ registros de las tablas
enumeradas en la cl!usula 7*9' aparecer!n en los resultados de la instruccin
S))CT. 3espu/s de escribir esta cl!usula se deben especificar las condiciones
e1puestas en los apartados 3.1 y 3.2. Si no se emplea esta cl!usula, la consulta
de'ol'er! todas las filas de la tabla. 56)*) es opcional, pero cuando aparece debe ir
a continuacin de 7*9'.
!ELECT Apellidos$ !alario F8O. Empleados G;E8E !alario H )+***R
!ELECT IdProducto$ Existencias F8O. Productos
G;E8E Existencias KF Nue5oPedidoR
!ELECT Q F8O. Pedidos G;E8E FechaEn5io F U#0+*0&(UR
!ELECT Apellidos$ Nombre F8O. Empleados G;E8E Apellidos F JVin1JR
!ELECT Apellidos$ Nombre F8O. Empleados G;E8E Apellidos LiWe J!QJR
!ELECT Apellidos$ !alario F8O. Empleados G;E8E !alario 4etTeen )** And
,**R
!ELECT Apellidos$ !alario F8O. Empl G;E8E Apellidos 4etTeen JLonJ And
JTolJR
!ELECT IdPedido$ FechaPedido F8O. Pedidos G;E8E FechaPedido
4etTeen U+X+X&(U And U,*X'X&(UR
!ELECT Apellidos$ Nombre$ Ciudad F8O. Empleados G;E8E Ciudad
In =J!e5illaJ$ JLos An1elesJ$ J4arcelonaJ?R
httpDGGHHH.maestrosdelHeb.comGeditorialGtuts%l3G
4.# 7unciones de a,re,acin .8*9U: ;<4 6$=I>8/.
$,rupamiento de *e,istros
4.1 8*9U: ;<
#ombina los registros con 'alores id/nticos, en la lista de campos especificados, en un
&nico registro. 9ara cada registro se crea un 'alor sumario si se incluye una funcin
ST. agregada, como por e$emplo Sum o #ount, en la instruccin S))CT. Su sinta1is
es(
!ELECT campos F8O. tabla G;E8E criterio 38O<P 4B campos del 1rupo
8*9U: ;< es opcional. .os 'alores de resumen se omiten si no e1iste una funcin
S3 agregada en la instruccin S))CT. .os 'alores >ull en los campos 8*9U: ;<
se agrupan y no se omiten. ?o obstante, los 'alores >ull no se e'al&an en ninguna de
las funciones S3 agregadas.
Se utili-a la cl!usula 56)*) para e1cluir aquellas filas que no desea agrupar, y la
cl!usula 6$=I>8 para filtrar los registros una 'e- agrupados.
A menos que contenga un dato 6emo u 5b$eto 5.E , un campo de la lista de campos
8*9U: ;< puede referirse a cualquier campo de las tablas que aparecen en la
cl!usula 7*9', incluso si el campo no esta incluido en la instruccin S))CT, siempre
y cuando la instruccin S))CT incluya al menos una funcin S3 agregada.
<odos los campos de la lista de campos de S))CT deben o bien incluirse en la
cl!usula 8*9U: ;< o como argumentos de una funcin S3 agregada.
!ELECT IdFamilia$ !um=!tocW? F8O. Productos 38O<P 4B IdFamiliaR
%na 'e- que 8*9U: ;< )a combinado los registros, 6$=I>8 muestra cualquier
registro agrupado por la cl!usula 8*9U: ;< que satisfaga las condiciones de la
cl!usula 6$=I>8.
6$=I>8 es similar a 56)*), determina qu/ registros se seleccionan. %na 'e- que los
registros se )an agrupado utili-ando 8*9U: ;<, 6$=I>8 determina cuales de ellos se
'an a mostrar.
!ELECT IdFamilia !um=!tocW? F8O. Productos 38O<P 4B IdFamilia
;A2IN3 !um=!tocW? H +** AND NombreProducto LiWe 4O!QR
4.& $=8
#alcula la media aritm/tica de un con$unto de 'alores contenidos en un campo
especificado de una consulta. Su sinta1is es la siguiente
$v,.eIpr/
En donde eIpr representa el campo que contiene los datos num/ricos para los que se
desea calcular la media o una e1presin que reali-a un c!lculo utili-ando los datos de
dic)o campo. .a media calculada por $v, es la media aritm/tica 2la suma de los
'alores di'idido por el n&mero de 'alores7. .a funcin $v, no incluye ning&n campo
>ull en el c!lculo.
!ELECT A51=3astos? A! Promedio F8O. Pedidos G;E8E 3astos H +**R
4.3 Count
#alcula el n&mero de registros de'ueltos por una consulta. Su sinta1is es la siguiente
Count.eIpr/
En donde eIpr contiene el nombre del campo que desea contar. .os operandos de
eIpr pueden incluir el nombre de un campo de una tabla, una constante o una funcin
2la cual puede ser intrnseca o definida por el usuario pero no otras de las funciones
agregadas de S37. 9uede contar cualquier tipo de datos incluso te1to.
Aunque eIpr puede reali-ar un c!lculo sobre un campo, Count simplemente cuenta el
n&mero de registros sin tener en cuenta qu/ 'alores se almacenan en los registros. .a
funcin Count no cuenta los registros que tienen campos null a menos que eIpr sea el
car!cter comodn asterisco .\/. Si utili-a un asterisco, Count calcula el n&mero total de
registros, incluyendo aquellos que contienen campos null. Count.\/ es
considerablemente m!s r!pida que Count.Campo/. ?o se debe poner el asterisco
entre dobles comillas .]\]/.
!ELECT Count=Q? A! Total F8O. PedidosR
Si eIpr identifica a m&ltiples campos, la funcin Count cuenta un registro slo si al
menos uno de los campos no es >ull. Si todos los campos especificados son >ull, no
se cuenta el registro. @ay que separar los nombres de los campos con ampersand .^/.
!ELECT Count=FechaEn5Co Y Transporte? A! Total F8O. PedidosR
4.4 'aI4 'in
3e'uel'en el mnimo o el m!1imo de un con$unto de 'alores contenidos en un campo
especifico de una consulta. Su sinta1is es(
'in.eIpr/
'aI.eIpr/
En donde eIpr es el campo sobre el que se desea reali-ar el c!lculo. )Ipr pueden
incluir el nombre de un campo de una tabla, una constante o una funcin 2la cual puede
ser intrnseca o definida por el usuario pero no otras de las funciones agregadas de
S37.
!ELECT .in=3astos? A! El.in F8O. Pedidos G;E8E Pais F JEspaDaJR
!ELECT .ax=3astos? A! El.ax F8O. Pedidos G;E8E Pais F JEspaDaJR
4.5 St+ev4 St+ev:
3e'uel'e estimaciones de la des'iacin est!ndar para la poblacin 2el total de los
registros de la tabla7 o una muestra de la poblacin representada 2muestra aleatoria7 .
Su sinta1is es(
St+ev.eIpr/
St+ev:.eIpr/
En donde eIpr representa el nombre del campo que contiene los datos que desean
e'aluarse o una e1presin que reali-a un c!lculo utili-ando los datos de dic)os campos.
.os operandos de eIpr pueden incluir el nombre de un campo de una tabla, una
constante o una funcin 2la cual puede ser intrnseca o definida por el usuario pero no
otras de las funciones agregadas de S37
St+ev: e'al&a una poblacin, y St+ev e'al&a una muestra de la poblacin. Si la
consulta contiene menos de dos registros 2o ning&n registro para St+ev:7, estas
funciones de'uel'en un 'alor >ull 2el cual indica que la des'iacin est!ndar no puede
calcularse7.
!ELECT !tDe5=3astos? A! Des5iacion F8O. Pedidos G;E8E Pais F JEspaDaJR
!ELECT !tDe5P=3astos? A! Des5iacion F8O. Pedidos G;E8E PaisF JEspaDaJR
4.! Sum
3e'uel'e la suma del con$unto de 'alores contenido en un campo especifico de una
consulta. Su sinta1is es(
Sum:.eIpr/
En donde eIpr representa el nombre del campo que contiene los datos que desean
sumarse o una e1presin que reali-a un c!lculo utili-ando los datos de dic)os campos.
.os operandos de eIpr pueden incluir el nombre de un campo de una tabla, una
constante o una funcin 2la cual puede ser intrnseca o definida por el usuario pero no
otras de las funciones agregadas de S37.
!ELECT !um=Precio<nidad Q Cantidad? A! Total F8O. DetallePedidoR
4." =ar4 =ar:
3e'uel'e una estimacin de la 'arian-a de una poblacin 2sobre el total de los
registros7 o una muestra de la poblacin 2muestra aleatoria de registros7 sobre los
'alores de un campo. Su sinta1is es(
=ar.eIpr/
=ar:.eIpr/
=ar: e'al&a una poblacin, y Iar e'al&a una muestra de la poblacin. )Ipr el nombre
del campo que contiene los datos que desean e'aluarse o una e1presin que reali-a un
c!lculo utili-ando los datos de dic)os campos. .os operandos de e1pr pueden incluir el
nombre de un campo de una tabla, una constante o una funcin 2la cual puede ser
intrnseca o definida por el usuario pero no otras de las funciones agregadas de S37
Si la consulta contiene menos de dos registros, =ar y =ar: de'uel'en >ull 2esto indica
que la 'arian-a no puede calcularse7. 9uede utili-ar =ar y =ar: en una e1presin de
consulta o en una +nstruccin S3.
!ELECT 2ar=3astos? A! 2arian:a F8O. Pedidos G;E8E Pais F JEspaDaJR
!ELECT 2arP=3astos? A! 2arian:a F8O. Pedidos G;E8E Pais F JEspaDaJR
httpDGGHHH.maestrosdelHeb.comGeditorialGtuts%l4G
Cl(usula 8*9U: ;<
.a cl!usula =R5%9 BJ especifica una consulta sumaria. En 'e- de producir un fila de
resultados por cada fila de datos de la base de datos, una consulta sumaria agrupa
todas las filas similares y luego produce una fila sumaria de resultados para cada grupo.
Seguido de la cl!usula =R5%9 BJ se especifican los nombres de uno o m!s campos
cuyos resultados se desean agrupados. <iene la forma(
=R5%9 BJ e#presin_columna
e#presin_columna debe coincidir con la e1presin de columna utili-ada en la cl!usula
SE.E#<. 9uede ser uno o m!s nombres de campo de una tabla, separados por coma o
una o m!s e1presiones separadas por comas.
SE.E#< R%BR5M#.AIE, #5%?<2V7 :R56 A#<+I5S U@ERE <+95 X O#ompraO
=R5%9 BJ R%BR5M#.AIE
Esta sentencia nos de'ol'er! una fila por cada area R%BR5M#.AIE, y el numero de
'eces de cada uno.


Cl(usula 6$=I>8
.a cl!usula @AI+?= dice a ST. que incluya solo ciertos grupos producidos por la
cl!usula =R5%9 BJ en los resultados de la consulta. Al igual que la cl!usula U@ERE,
utili-a una condicin de b&squeda para especificar los grupos deseados. En otras
palabras, especifica la condicin que deben de cumplir los grupos. Slo es '!lida si
pre'iamente se )a especificado la cl!usula =R5%9 BJ. .a cl!usula @AI+?= tiene la
forma(
@AI+?= e#presin$ operador e#presin%
e#presin$ y e#presin% pueden ser nombres de campos, 'alores constantes o
e1presiones y estas deben coincidir con una e1presin de columna en la cl!usula
SE.E#<.
operador es un operador relacional que une las dos e1presiones. 6!s tarde se 'er!n
los distintos operadores que se pueden utili-ar.
.a sentencia siguiente nos mostrar! el n&mero de R%BR5M#.AIE, y el numero de los
mismos en cada R%BR5M#.AIE cuyo numero supera el 1(

SE.E#< R%BR5M#.AIE, #5%?<2V7 :R56 A#<+I5S U@ERE <+95 X O#ompraO
=R5%9 BJ R%BR5M#.AIE @AI+?= R%BR5M#.AIE Z 1
httpDGGHHH.lania.mIGbibliotecaGseminariosGbasedatosGs%l.htmlOc,roupby
4.C Consultas sobre m?ltiples tablas.
4.C.1 Subconsultas.
SubConsultas
%na subconsulta es una instruccin S))CT anidada dentro de una instruccin S))CT4
S))CT...I>T94 I>S)*T...I>T94 +))T)4 o U:+$T) o dentro de otra subconsulta.
9uede utili-ar tres formas de sinta1is para crear una subconsulta(
comparacin LANB Z ALL Z !O.EM =instruccin sAl?
expresin LNOTM IN =instruccin sAl?
LNOTM E6I!T! =instruccin sAl?
En donde(
comparacinD Es una e1presin y un operador de comparacin que compara la e1presin con
el resultado de la subconsulta.
eIpresinD Es una e1presin por la que se busca el con$unto resultante de la subconsulta.
instruccin s%l D Es una instruccin S))CT, que sigue el mismo formato y reglas que
cualquier otra instruccin S))CT. 3ebe ir entre par/ntesis.
Se puede utili-ar una subconsulta en lugar de una e1presin en la lista de campos de una
instruccin S))CT o en una cl!usula 56)*) o 6$=I>8. En una subconsulta, se utili-a una
instruccin S))CT para proporcionar un con$unto de uno o m!s 'alores especificados para
e'aluar en la e1presin de la cl!usula 56)*) o 6$=I>8.
Se puede utili-ar el predicado $>< o S9'), los cuales son sinnimos, para recuperar registros
de la consulta principal, que satisfagan la comparacin con cualquier otro registro recuperado
en la subconsulta. El e$emplo siguiente de'uel'e todos los productos cuyo precio unitario es
mayor que el de cualquier producto 'endido con un descuento igual o mayor al 25 por ciento.(
!ELECT Q F8O. Productos G;E8E Precio<nidad H ANB
=!ELECT Precio<nidad F8O. DetallePedido G;E8E Descuento HF * 7)#?R
El predicado $ se utili-a para recuperar &nicamente aquellos registros de la consulta
principal que satisfacen la comparacin con todos los registros recuperados en la subconsulta.
Si se cambia $>< por $ en el e$emplo anterior, la consulta de'ol'er! &nicamente aquellos
productos cuyo precio unitario sea mayor que el de todos los productos 'endidos con un
descuento igual o mayor al 25 por ciento. Esto es muc)o m!s restricti'o.
El predicado I> se emplea para recuperar &nicamente aquellos registros de la consulta principal
para los que algunos registros de la subconsulta contienen un 'alor igual. El e$emplo siguiente
de'uel'e todos los productos 'endidos con un descuento igual o mayor al 25 por ciento.(
!ELECT Q F8O. Productos G;E8E IDProducto IN
=!ELECT IDProducto F8O. DetallePedido G;E8E Descuento HF *7)#?R
+n'ersamente se puede utili-ar >9T I> para recuperar &nicamente aquellos registros de la
consulta principal para los que no )ay ning&n registro de la subconsulta que contenga un 'alor
igual. El predicado )BISTS 2con la palabra reser'ada >9T opcional7 se utili-a en
comparaciones de 'erdadAfalso para determinar si la subconsulta de'uel'e alg&n registro.
Se puede utili-ar tambi/n alias del nombre de la tabla en una subconsulta para referirse a
tablas listadas en la cl!usula 7*9' fuera de la subconsulta. El e$emplo siguiente de'uel'e los
nombres de los empleados cuyo salario es igual o mayor que el salario medio de todos los
empleados con el mismo ttulo. A la tabla )mpleados se le )a dado el alias T1((
!ELECT Apellido$ Nombre$ Titulo$ !alario F8O. Empleados A! T+
G;E8E !alario HF =!ELECT A51=!alario? F8O. Empleados
G;E8E T+7Titulo F Empleados7Titulo? O8DE8 4B TituloR
En el e$emplo anterior , la palabra reser'ada $S es opcional.
!ELECT Apellidos$ Nombre$ Car1o$ !alario F8O. Empleados
G;E8E Car1o LIVE [A1ente 2enQ[ AND !alario H ALL =!ELECT !alario F8O.
Empleados G;E8E =Car1o LIVE [Q9efeQ[? O8 =Car1o LIVE [QDirectorQ[??R
&btiene una lista con el nombre, cargo y salario de todos los agentes de ventas cuyo salario es
mayor ue el de todos los jefes y directores.
!ELECT DI!TINCT8OG NombreProducto$ Precio<nidad F8O. Productos
G;E8E =Precio<nidad F =!ELECT Precio<nidad F8O. Productos G;E8E
NombreProducto F [AlmCbar anisado[?R
&btiene una lista con el nombre y el precio unitario de todos los productos con el mismo precio
ue el alm'bar anisado.
!ELECT DI!TINCT8OG NombreContacto$ NombreCompaDia$ Car1oContacto$
Telefono F8O. Clientes G;E8E =IDCliente IN =!ELECT DI!TINCT8OG
IDCliente F8O. Pedidos G;E8E FechaPedido HF U*(0+0&,U KU*-0+0&,U?R
&btiene una lista de las compa!'as y los contactos de todos los clientes ue (an reali)ado un
pedido en el segundo trimestre de $**+.
!ELECT Nombre$ Apellidos F8O. Empleados A! E G;E8E E6I!T!
=!ELECT Q F8O. Pedidos A! O G;E8E O7IDEmpleado F E7IDEmpleado?R
,elecciona el nombre de todos los empleados ue (an reservado al menos un pedido.
!ELECT DI!TINCT8OG Pedidos7IdProducto$ Pedidos7Cantidad$
=!ELECT DI!TINCT8OG Productos7Nombre F8O. Productos G;E8E
Productos7IdProducto F Pedidos7IdProducto? A! ElProducto F8O.
Pedidos G;E8E Pedidos7Cantidad H +#* O8DE8 4B Pedidos7IdProductoR
-ecupera el .digo del "roducto y la .antidad pedida de la tabla pedidos, e#trayendo el
nombre del producto de la tabla de productos.
)ttp(AA***.maestrosdel*eb.comAeditorialAtutsqlCA
4.C.& 9peradores @9I>.
/. ,ara las siguientes relaciones
computar
/.
0.
1.
3.
4.
5.
6.
?peradores ;oin2CiDe
"?isten arios operadores del estilo del join que son proistos por bases de datos comerciales.
o "l semijoin de las relaciones y , es el multiconjunto de tuplas tal que
hay al menos una tupla en que concuerda con en todos los atributos comunes
de y .
o "l antisemijoin , es la bolsa de tuplas en que no concuerdan con ninguna
tupla de en los atributos .
o "l outerjoin se forma con m!s el agregado de las dangling tuples de
o , donde una tupla est! colgando si esta no se junta con ninguna de la otra
relacin. $as tuplas agregadas se rellenan con el s(mbolo de indefinido o nulo ,
en aquellos atributos que la tupla colgante no posee pero que si aparecen en la
relacin resultante.
o "l leftouterjoin es como el outerjoin, pero solo las tuplas colgantes de
son rellenadas con y agregadas al resultado.
o "l rig$touterjoin tambin es como el outerjoin, pero esta ez el argumento
que genera las dangling tuples es el derecho.
)7 Dar e?presiones para los cinco operadores definidos en el p!rrafo anterior usando
solamente los operadores standard del !lgebra relacional. ,ara las ariantes BBouterjoinCC
puede usar una relacin nula que consiste de una .nica tupla con en
cada componente.
,7 Un operador unario es idempotente si, . ,ara cada uno de los
operadores , e?plique por que son idempotentes o muestre un
contraejemplo.
(7 -uando es posible empujar una seleccin en los dos argumentos de un operador binario,
es necesario decidir si hacerlo o no. U-mo afectar(a la e?istencia de (ndices en uno de los
argumentosV. -onsidere, por ejemplo, una e?presin , donde se tiene un (ndice
sobre .
#7 Dar ejemplos donde se muestre que la eliminacin de duplicados no puede ser empujada
por debajo de la unin o diferencia de multiconjuntos.
'7 $os operadores similares al join del ejercicio 0 obedecen algunas reglas comunes y otras
no. ,ara cada caso pruebe o de un contraejemplo para las siguientes leyes.
o
o
o
o
-7 2eemplace los join naturales en las e?presiones siguientes por theta>joins y proyecciones.
Diga cuando los theta>join resultantes forman un grupo asociatio y conmutatio.
/.
0.
1.
0. Dar reglas para conertir cada una de las siguientes formas de condicin en !lgebra
relacional. Asuma que las condiciones se aplican a una relacin y no est!n
correlacionadas a ella. @enga especial cuidado para no introducir o eliminar duplicados
respecto a la definicion formal de %H$.
o
o , donde es un atributo de
o , donde es un atributo de
)7 @ransforme la siguiente query en un plan lgico y trate de mejorarlo aplicando leyes
algebraicas.
,7
(7 !ELECT starName
#7 F8O. Actor+&&'
'7 G;E8E studioNameF[Paramount[R
donde hay dos istas definidas
C8EATE 2IEG Actor+&&' A!
!ELECT starName$ studioName
F8O. .o5iesOf+&&' NAT<8AL 9OIN starsInR
C8EATE 2IEG .o5ieOf+&&' A!
!ELECT Q
F8O. .o5ie
G;E8E /earF+&&'R
/ los esAuemas son
.o5ie=title$/ear$len1th$inColor$studioName$producerCU?
!tarsIn=title$/ear$starName?

httpDGGhal.famaf.unc.edu.arGKbddG:ractico!G
*)'N 5unir6
$a sentencia FA8=, si es proeida, nombra una funcin de estimacin selectia join para el
operador )nota que esto es un nombre de una funcin, no un nombre de un operador*. $as
sentencias FA8= solamente tienen sentido para operadores binarios que retorna alores
bouleanos. $a idea detr!s de un estimador selectio join es suponer que fraccin de las filas de un
par de tablas satisfacer!n la condicin de la sentencia W<"2" del formulario
table+7field+ OP table)7field)

para el operador corriente. -omo la sentencia 2"%@28-@, esta ayuda al optimizador muy
sustancialmente permitiendole deducir cual de las posibles secuencias join es probable que tome
el menor trabajo.
como antes, este cap(tulo no procurar! e?plicar como escribir una funcin estimadora selectia
join, pero solamente sugeriremos que tu uses uno de los estimadores estandars si alguna es
aplicable#
eAEoinsel for F
neAEoinsel for KH
scalarltEoinselfor K or KF
scalar1tEoinselfor H or HF
areaEoinsel for )D areaXbased comparisons
positionEoinselfor )D positionXbased comparisons
contEoinsel for )D containmentXbased comparisons

httpDGGes.tldp.or,G:ost,res%l-esGHebGnave,ableGtodopost,res%lGIoper.html
4.5 'anipulacin de la base de datos .I>S)*T4 U:+$T)4
+))T)/.
Consultas de $ctualiAacin
.as consultas de actuali-acin son aquellas que no de'uel'en ning&n registro, son las
encargadas de acciones como a8adir y borrar y modificar registros.
5.1 +))T)
#rea una consulta de eliminacin que elimina los registros de una o m!s de las tablas
listadas en la cl!usula 7*9' que satisfagan la cl!usula 56)*). Esta consulta elimina
los registros completos, no es posible eliminar el contenido de alg&n campo en
concreto. Su sinta1is es(
DELETE Tabla7Q F8O. Tabla G;E8E criterio
+))T) es especialmente &til cuando se desea eliminar 'arios registros. En una
instruccin +))T) con m&ltiples tablas, debe incluir el nombre de tabla 2<abla.V7. Si
especifica m!s de una tabla desde la que eliminar registros, todas deben ser tablas de
muc)os a uno. Si desea eliminar todos los registros de una tabla, eliminar la propia
tabla es m!s eficiente que e$ecutar una consulta de borrado.
Se puede utili-ar +))T) para eliminar registros de una &nica tabla o desde 'arios
lados de una relacin uno a muc)os. .as operaciones de eliminacin en cascada en
una consulta &nicamente eliminan desde 'arios lados de una relacin. 9or e$emplo, en
la relacin entre las tablas #lientes y 9edidos, la tabla 9edidos es la parte de muc)os
por lo que las operaciones en cascada solo afectaran a la tabla 9edidos. %na consulta
de borrado elimina los registros completos, no &nicamente los datos en campos
especficos. Si desea eliminar 'alores en un campo especificado, crear una consulta de
actuali-acin que cambie los 'alores a >ull.
%na 'e- que se )an eliminado los registros utili-ando una consulta de borrado, no
puede des)acer la operacin. Si desea saber qu/ registros se eliminar!n, primero
e1amine los resultados de una consulta de seleccin que utilice el mismo criterio y
despu/s e$ecute la consulta de borrado. 6antenga copias de seguridad de sus datos en
todo momento. Si elimina los registros equi'ocados podr! recuperarlos desde las
copias de seguridad.
DELETE Q F8O. Empleados G;E8E Car1o F J2endedorJR
5.& I>S)*T I>T9
Agrega un registro en una tabla. Se la conoce como una consulta de datos a8adidos.
Esta consulta puede ser de dos tipos( +nsertar un &nico registro +nsertar en una tabla
los registros contenidos en otra tabla.
5.&.1 :ara insertar un ?nico *e,istroD
En este caso la sinta1is es la siguiente(
IN!E8T INTO Tabla =campo+$ campo)$ 77$ campoN?
2AL<E! =5alor+$ 5alor)$ 777$ 5alorN?
Esta consulta graba en el campo1 el 'alor1, en el campo2 y 'alor2 y as sucesi'amente.
@ay que prestar especial atencin a acotar entre comillas simples 2O7 los 'alores literales
2cadenas de caracteres7 y las fec)as indicarlas en formato mm4dd4aa y entre caracteres
de almo)adillas 2a7.
5.&.& :ara insertar *e,istros de otra TablaD
En este caso la sinta1is es(
IN!E8T INTO Tabla LIN baseexternaM =campo+$ campo)$ 777$ campoN?
!ELECT TablaOri1en7campo+$ TablaOri1en7campo)$ 777$ TablaOri1en7campoN
F8O. TablaOri1en
En este caso se seleccionar!n los campos 1,2, ..., n de la tabla origen y se grabar!n en
los campos 1,2,.., n de la <abla. .a condicin S))CT puede incluir la cl!usula 56)*)
para filtrar los registros a copiar. Si <abla y <abla5rigen poseen la misma estructura
podemos simplificar la sinta1is a(
IN!E8T INTO Tabla !ELECT TablaOri1en7Q F8O. TablaOri1en
3e esta forma los campos de Tabla9ri,en se grabar!n en Tabla, para reali-ar esta
operacin es necesario que todos los campos de Tabla9ri,en est/n contenidos con
igual nombre en Tabla. #on otras palabras que Tabla posea todos los campos de
Tabla9ri,en 2igual nombre e igual tipo7.
En este tipo de consulta )ay que tener especial atencin con los campos contadores o
autonum/ricos puesto que al insertar un 'alor en un campo de este tipo se escribe el
'alor que contenga su campo )omlogo en la tabla origen, no increment!ndose como le
corresponde.
Se puede utili-ar la instruccin I>S)*T I>T9 para agregar un registro &nico a una
tabla, utili-ando la sinta1is de la consulta de adicin de registro &nico tal y como se
mostr anteriormente. En este caso, su cdigo especfica el nombre y el 'alor de cada
campo del registro. 3ebe especificar cada uno de los campos del registro al que se le
'a a asignar un 'alor as como el 'alor para dic)o campo. #uando no se especifica
dic)o campo, se inserta el 'alor predeterminado o >ull. .os registros se agregan al final
de la tabla.
<ambi/n se puede utili-ar I>S)*T I>T9 para agregar un con$unto de registros
pertenecientes a otra tabla o consulta utili-ando la cl!usula S))CT ... 7*9' como se
mostr anteriormente en la sinta1is de la consulta de adicin de m&ltiples registros. En
este caso la cl!usula S))CT especifica los campos que se 'an a agregar en la tabla
destino especificada.
.a tabla destino u origen puede especificar una tabla o una consulta.
Si la tabla destino contiene una cla'e principal, )ay que asegurarse que es &nica, y con
'alores no->ull > si no es as, no se agregar!n los registros. Si se agregan registros a
una tabla con un campo #ontador, no se debe incluir el campo #ontador en la consulta.
Se puede emplear la cl!usula I> para agregar registros a una tabla en otra base de
datos.
Se pueden a'eriguar los registros que se agregar!n en la consulta e$ecutando primero
una consulta de seleccin que utilice el mismo criterio de seleccin y 'er el resultado.
%na consulta de adicin copia los registros de una o m!s tablas en otra. .as tablas que
contienen los registros que se 'an a agregar no se 'er!n afectadas por la consulta de
adicin. En lugar de agregar registros e1istentes en otra tabla, se puede especificar los
'alores de cada campo en un nue'o registro utili-ando la cl!usula =$U)S. Si se omite
la lista de campos, la cl!usula =$U)S debe incluir un 'alor para cada campo de la
tabla, de otra forma fallar! I>S)*T.
IN!E8T INTO Clientes !ELECT Clientes2ieEos7Q F8O. ClientesNue5osR
IN!E8T INTO Empleados =Nombre$ Apellido$ Car1o?
2AL<E! =JLuisJ$ J!Nnche:J$ J4ecarioJ?R
IN!E8T INTO Empleados !ELECT 2endedores7Q F8O. 2endedores
G;E8E FechaContratacion K NoT=? X ,*R
5.3 U:+$T)
#rea una consulta de actuali-acin que cambia los 'alores de los campos de una tabla
especificada bas!ndose en un criterio especfico. Su sinta1is es(
<PDATE Tabla !ET Campo+F2alor+$ Campo)F2alor)$ 777 CampoNF2alorN
G;E8E CriterioR
U:+$T) es especialmente &til cuando se desea cambiar un gran n&mero de registros o
cuando /stos se encuentran en m&ltiples tablas. 9uede cambiar 'arios campos a la 'e-.
El e$emplo siguiente incrementa los 'alores Cantidad pedidos en un 1G por ciento y los
'alores Transporte en un 3 por ciento para aquellos que se )ayan en'iado al *eino
Unido.(
<PDATE Pedidos !ET Pedido F Pedidos Q +7+$ Transporte F Transporte Q +7*,
G;E8E PaisEn5Co F JE!JR
U:+$T) no genera ning&n resultado. 9ara saber qu/ registros se 'an a cambiar, )ay
que e1aminar primero el resultado de una consulta de seleccin que utilice el mismo
criterio y despu/s e$ecutar la consulta de actuali-acin.
<PDATE Empleados !ET 3rado F # G;E8E 3rado F )R
<PDATE Productos !ET Precio F Precio Q +7+ G;E8E Pro5eedor F % AND Familia
F ,R
Si en una consulta de actuali-acin suprimimos la cl!usula 56)*) todos los registros
de la tabla se8alada ser!n actuali-ados.
<PDATE Empleados !ET !alario F !alario Q +7+
)ttp(AA***.maestrosdel*eb.comAeditorialAtutsql5A
Sentencia I>S)*T
.a sentencia de +?SER< se utili-a para a8adir registros a las tablas de la base de
datos. El formato de la sentencia es(
+?SER< +?<5 nombre_tabla ^2nombre_columna, ...7_ IA.%ES 2e#pr, ...7
nombre_tabla puede ser &nicamente el nombre de la tabla.
nombre_columna es una lista opcional de nombres de campo en los que se insertar!n
'alores en el mismo n&mero y orden que se especificar!n en la cl!usula IA.%ES. Si no
se especifica la lista de campos, los 'alores de e#pr en la cl!usula IA.%ES deben ser
tantos como campos tenga la tabla y en el mismo orden que se definieron al crear la
tabla.
e#pr es una lista de e1presiones o 'alores constantes, separados por comas, para dar
'alor a los distintos campos del registro que se a8adir! a la tabla. .as cadenas de
caracteres deber!n estar encerradas entre comillas _.
E$emplo para a8adir un registro a una tabla(
+?SER< +?<5 R%BR5S 2#.AIE, ?56BRE7 IA.%ES F, O5trosO7>
#ada sentencia +?SER< a8ade un &nico registro a la tabla. En el e$emplo solo se )an
especificado 2 campos con sus respecti'os 'alores, el resto de campos quedaran a
nulo. %n 'alor nulo ?%.. no significa blancos o ceros sino simplemente que el campo
nunca )a tenido un 'alor.


Sentencia U:+$T)
.a sentencia %93A<E se utili-a para cambiar el contenido de los registros de una tabla
de la base de datos. Su formato es(
%93A<E nombre_tabla SE< nombre_columna X e#pr, ...
^U@ERE d condicin e_
nombre_tabla puede ser &nicamente el nombre de la tabla.
nombre_columna es el nombre de columna o campo cuyo 'alor se desea cambiar.
En una misma sentencia %93A<E pueden actuali-arse 'arios campos de cada registro
de la tabla.
e#pr es el nue'o 'alor que se desea asignar al campo que le precede. .a e1presin
puede ser un 'alor constante o una subconsulta. .as cadenas de caracteres deber!n
estar encerradas entre comillas _ . .as subconsultas entre par/ntesis.
.a cl!usula U@ERE sigue el mismo formato que la 'ista en la sentencia SE.E#< y
determina que registros se modificar!n.
9or e$emplo, cambiar los nombres de los de la tabla R%BR5S de aquellos de aquelos
cuya cla'e sea mayor que 2, sera(
%93A<E R%BR5S SE< ?56BRE X O?ue'oO U@ERE #.AIE X F,


Sentencia +))T)
.a sentencia 3E.E<E se utili-a para borrar registros de una tabla de la base de datos.
El formato de la sentencia es(
3E.E<E :R56 nombre_tabla ^U@ERE d condicin e_
nombre_tabla puede ser &nicamente el nombre de la tabla.
.a cl!usula U@ERE sigue el mismo formato que la 'ista en la sentencia SE.E#< y
determina que registros se borrar!n.
#ada sentencia 3E.E<E borra los registros que cumplen la condicin impuesta o todos
si no se indica cl!usula U@ERE.
3E.E<E :R56 R%BR5S U@ERE #.AIE X F
#on el e$emplo anterior se borraran todos los registros de la tabla rubros cuya cla'e
sea igual a 2.
http#MM+++.lania.m?MbibliotecaMseminariosMbasedatosMsql.htmlXcgroupby
ST., cuenta con mdulos 33., para la definicin de datos que nos permite crear o modificar la estructura
de las tablas.
.as instrucciones para reali-ar estas operaciones son(
C*)$T) T$;)( ?os permite crear una tabla de datos 'aca.
I>S)*TD 9ermite almacenar registros en una tabla creada.
U:+$T)D 9ermite modificar datos de registros almacenados en la tabla.
+))T)D Borra un registro entero o grupo de registros de una tabla.
C*)$T) I>+)BD #rea un ndice que nos puede au1iliar para las consultas.
+*9: T$;)D 9ermite borrar una tabla.
+*9: I>+)BD Borra el ndice indicado.
9ara e$emplificar las instrucciones anteriores consideremos el e$emplo
A.%6?5 4 cursa 4 6A<ER+A, que tienen los siguientes atributos(
?#ontrol ?#ontrol #la'e
?ombreA #la'e ?ombre6
Especialidad #alif #reditos
3ireccin
V Estructura de la sentencia #REA<E <AB.E.
C*)$T) T$;) Y?ombre de la tablaZ
2
Atributo1( tipo de dato longitud 4
Atributo2( tipo de dato longitud 4
Atributo3( tipo de dato longitud 4
D
D
Atributon( tipo de dato longitud 4
:*I'$*< V)< 25pcional7 7 W
.os campos pueden definirse como ?5< ?%.. de manera opcional e1cepto en la lla'e primaria para lo
cual es obligatorio. Adem!s al definir la lla'e primaria se genera autom!ticamente un ndice con respecto
al campo lla'e> para definir la lla'e la denotamos dentro de los par/ntesis de 9R+6ARJ fEJ.
Ejemlo7
#rear la tabla alumno con los atributos antes descritos, tomando como lla'e el numero de control.
C*)$T) T$;) Alumno
2
?#ontrol c)ar2H7 ?5< ?%..,
?ombreA c)ar22G7,
Especialidad c)ar237,
3ireccin c)ar23G7,
:*I'$*< V)< 2?#ontrol7 7>
<abla Alumno(
>Control >ombre$ )specialidad +ireccin

9ueden e1istir m!s de una lla'e primaria, esto es si se requiere, se crear!n tantos ndices como lla'es
primarias se estable-can.
9ueden e1istir tantos campos ?ot ?ull 2?o nulos7 como se requieran> En si estructurar la creacin de
una tabla es siempre parecida al e$emplo anterior.
V Estructura de la sentencia +?SER<
I>S)*T
+?<5 ?ombre de la tabla a la que se le 'a a insertar el registro
IA.%ES 2#on$unto de 'alores del registro 7 W
Ejemlo7
+nsertar en la tabla Alumno, antes creada los datos del alumno 3aniel coln, con numero de control
F531G51H de la especialidad de +ngeniera ci'il, con domicilio Abasolo ?orte a5.
+?SER<
+?<5 Alumno
IA.%ES2RF531G51HR,R3aniel #olnR,R+#R,RAbasolo ?orte a5R7 W
?tese que la insercin de los datos se reali-a conforme la estructura que se implanto en la tabla, es
decir en el orden en que se creo dic)a tabla. En caso de querer omitir un dato que no sean no nulos
solamente se ponen las comillas indicando el 'aco de la cadena.
V Estructura de la Sentencia #REA<E +?3EE
C*)$T) I>+)B ?ombre que se le asignara al ndice.
9> ?ombre de la taba a la cual se le creara el ndice 2#ampo2s7 por el cual se creara el ndice7>
Ejemlo7
#rear un ndice de la tabla Alumno por el campo Especialidad.
C*)$T) I>+)B +ndice1
5? Alumno2Especialidad7>
Este ndice contendr! a todos los alumnos ordenados por el campo especialidad.
#REA<E +?3EE U>I3U) +?3EE +ndice2
5? Alumno 2Especialidad7>
En la creacin de este ndice utili-amos la sentencia %?+T%E, es un indicador para permitir que se
cree un ndice &nico por especialidad, esta sentencia siempre se coloca antes de #REA<E +?3EE. En
este e$emplo se creara un ndice que contenga un alumno por especialidad e1istente.
V Estructura de la sentencia %93A<E
U:+$T) ?ombre de la tabla en donde se modificaran los datos.
S)T Ialores
56)*) 2#ondicin7>
Ejemlo7
6odificar el n&mero de control del registro de 3aniel #oln de la <abla alumno por el n&mero F"31G51H.
%93A<E Alumno
SE< ?#ontrol [F"31G51H\
U@ERE ?ombreAX\3aniel #oln\>
V Estructura de la sentencia 3R59 <AB.E
+*9: T$;) ?ombre de la tabla a borrar >
Ejemlo7
Borrar la tabla Alumno creada anteriormente.
3R59 <AB.E Alumno>
V Estructura de la sentencia 3R59 +?3EE
+*9: I>+)B ?ombre del ndice a borrar>
Ejemlo7
Borrar el ndice +ndice1 creado anteriormente.
3R59 +?3EE +ndice1>
V Estructura de la sentencia 3E.E<E
+))T)
:R56 ?ombre de la tabla
U@ERE #ondicin>
Ejemlos7
4 Borrar el registro cuyo n&mero de control es F531G3H".
3E.E<E
:R56 Alumno
U@ERE #ontrolX\F531G3H"\>
4 Borrar todos los registros de la tabla alumno.
3E.E<E
:R56 Alumno>
En el primer e$emplo, se borrara todo el registro2todos los datos7, del alumno con n&mero de control X
F531G3H".
En el segundo e$emplo se borraran todos los registros de la tabla alumno, pero sin borrar la estructura
de la tabla, ya que la orden 3elete solo borra registros, la sentencia 3rop <able es la que borra toda la
estructura de la tabla $unto con los registros de la misma.
Unidad . Dise!o de bases de datos
relacionales.
5.5 +ise0o de es%uemas relacionales de bases de datos.
%no de los retos en el dise8o de la base de datos es el de obtener una estructura estable y lgica tal que(
1. El sistema de base de datos no sufra de anomalas de almacenamiento.
2. El modelo lgico pueda modificarse f!cilmente para admitir nue'os requerimientos.
%na base de datos implantada sobre un modelo bien dise8ado tiene mayor esperan-a de 'ida aun en
un ambiente din!mico, que una base de datos con un dise8o pobre. En promedio, una base de datos
e1perimenta una reorgani-acin general cada seis a8os, dependiendo de lo din!mico de los
requerimientos de los usuarios. %na base de datos bien dise8ada tendr! un buen desempe8o aunque
aumente su tama8o, y ser! lo suficientemente fle1ible para incorporar nue'os requerimientos o
caractersticas adicionales.
E1isten di'ersos riesgos en el dise8o de las bases de datos relacionales que afecten la funcionalidad
de la misma, los riesgos generalmente son la redundancia de informacin y la inconsistencia de datos.
.a normali-acin es el proceso de simplificar la relacin entre los campos de un registro.
9or medio de la normali-acin un con$unto de datos en un registro se reempla-a por 'arios registros que
son m!s simples y predecibles y, por lo tanto, m!s mane$ables. .a normali-acin se lle'a a cabo por
cuatro ra-ones(
Estructurar los datos de forma que se puedan representar las relaciones pertinentes entre los
datos.
9ermitir la recuperacin sencilla de los datos en respuesta a las solicitudes de consultas y
reportes.
Simplificar el mantenimiento de los datos actuali-!ndolos, insert!ndolos y borr!ndolos.
Reducir la necesidad de reestructurar o reorgani-ar los datos cuando sur$an nue'as aplicaciones.
5.5.1 +ependencias funcionales.
D7P7=D7=C(-" 8@=C(?=-C7"
$as dependencias funcionales son una restriccin al conjunto de relaciones legales. =os
permiten e?presar hechos acerca de la empresa que estamos modelando con la base de datos.
%uperclae se puede definir como sigue, sea 2 un esquema de relaciones. Un subconjunto Y de
2 es una superclae de 2 s(, en cualquier relacin legal r)2*, para todos los pares t/ y t0 de tuplas
de r tales que t/ &1; t
2
, t
1
^f_&1; t
2
^f_. "s decir, dos tuplas en cualquier relacin legal
r)2* no pueden tener el mismo alor en el conjunto de atributos Y.
$a nocin de dependencia funcional generaliza la definicin de superclae. %ea &; R
y R. $a dependencia funcional &; se cumple en 2 si en cualquier relacin legal
r)2*, para todos los pares de tuplas t/ yt0 en r tales que t
1
^&; _Xt
2
^&; _, tambin se
cumple que t
1
^ _Xt
2
^ _.
Utilizando la notacin de la dependencia funcional, decimos que Y es una superclae de 2 si
Y2. "s decir, Y es una superclase s( siempre que t/ZY[Tt0ZY[. , tambin se cumpla que
t/Z2[Tt0Z2[ )es decir, t/ T t07.
$as dependencias funcionales nos permite e?presar restricciones que no pueden e?presarse por
medio de superclaes. -onsidrese el esquema siguiente#
"squema > prstamo T nombre > sucursal, numero > prstamo, nombre > cliente, cantidad.
"jemplo# si un prstamo se hace a mas de un cliente en este caso a maridoMmujer, entonces no
esperar(amos que el atributo numero > prstamo fuera una superclae.
APLICACIONES
$as dependencias funcionales se usan de dos formas#
/. > ,ara especificar restricciones en el conjunto deceleraciones legales. A sea solo se interesa por
las relaciones que satisfagan un conjunto dado de dependencias funcionales. %i queremos
limitarnos a las relaciones de esquema 2 que satisfacen G, decimos que G se cumple en 2.
0. > ,ara probar si una relacin es legal bajo un conjunto dado de dependencias funcionales. %i
una relacin r es legal bajo un conjunto G de dependencias funcionales, decimos que r satisface a
G.
-onsidrese la relacin r de la siguiente figura y eamos que dependencias funcionales se
satisfacen. Absrese que A- se satisface. <ay dos tuplas que tienen el alor de a/ en A. "stas
tuplas tienen el mismo alor en -, c/
\acuteI
. De manera similar, las dos tuplas con alor a0 en A
tienen el mismo alor en -, c0
\acuteI
. =o e?isten otros pares de tuplas distintos que tengan el
mismo alor en A. %in embargo, no se satisface la dependencia funcional -A. ,ara er esto
considrense las tuplas t/ T ) a0 ,b1 ,c0 , d1* y t0 T ) a1 ,b1 ,c0 , d3*. "stas dos tuplas tienen el mismo
alor en -, c0
\acuteI
y distintos alores en A, a0 y a1
\acuteI
respectiamente. As( hemos encontrado un
par de tuplas t/ y t0 tales que t/Z-[Tt0Z-[ pero t/ZA[\sup/I t0ZA[
&'ERRE DE UN &)N*UN+) DE DE.ENDEN&'A( 3UN&')NA!E(
=o es suficiente considerar un conjunto dado de dependencias funcionales. Adem!s
necesitamos considerar todas las dependencias funcionales que se cumplen. Deremos que, dado
un conjunto G de dependencias funcionales, podemos probar que se cumplen otras ciertas
dependencias funcionales. %e dice que G implica lgicamente dichas dependencias funcionales.
%upngase que nos dan un esquema de relaciones 2 T )A, ', -, &, <, 8* y el conjunto de
dependencias funcionales
A'
A-
-&<
-&8
'<
$a dependencia funcional
A<
%e implica lgicamente. "s decir, podemos demostrar que siempre que se cumpla el conjunto
dado de dependencias, A< tambin debe cumplirse.
+8&N'&A( .ARA DEDU&'R DE.ENDEN&'A( 3UN&')NA!E(
.a primera t/cnica se basa en tres a1iomas o reglas de inferencia para dependencias
funcionales. Aplicando estas reglas repetidamente, podemos encontrar :
g
completo
dado :. En las reglas siguientes, adoptamos el con'enio de usar letras griegas 2&;
, , ...7 para con$untos adoptamos el con'enio de usar letras romanas may&sculas
desde el principio del alfabeto para atributos indi'iduales. %samos &; para
representar &; .
RE=.AS 3E RE:.EE+I+3A3 . %i &; es un con$unto de atributos y &;
entonces se cumple &; .
RE=.A 3E A%6E?<5 . %i se cumple &; y es un con$unto de atributos,
entonces se cumple &; .
RE=.A 3E <RA?S+<+I+3A3 . %i se cumple &; , y se cumple , entonces se
cumple &; .
Estas reglas son seguras porque no generan dependencias funcionales incorrectas.
.as reglas son completas porque para un con$unto dado : de dependencias
funcionales, nos permiten generar :
g
completo. Esta coleccin de reglas se llama
a1iomas de A.
9ara simplificar mas esta tarea, se listan a continuacin algunas reglas adicionales.
Es posible utili-ar los a1iomas de Armstrong para probar que estas reglas son
correctas.
RE=.A 3E %?+W? .%i se cumplen &; y &; entonces se cumple
&; .
RE=.A 3E 3ES#5695S+#+W? . %i se cumple &; , entonces se cumplen
&; y &; .
RE=.A 3E 9SE%35<RA?S+<+I+3A3 . %i se cumplen &; y , entonces se
cumple &; .

httpDGGHHH.itlp.edu.mIGpublicaGtutorialesGbasedat&Ghcuatro4J&.htm
8?R,- =?R,-C D7 D?,(=(?2CC-47
$a forma norma de dominio>clae esta basada en tres nociones#
3E#.ARA#+W? 3E 356+?+5 . %ea A un atributo, sea do+n un conjunto de alores. $a
declaracin de dominio A do*n requiere que el 'alor de A de todas las tuplas sean
'alores en do*n.3E#.ARA#+W? 3E #.AIE. %ea 2 un esquema de relaciones en que Y
R. .a declaracin de cla'e 0ey 2f7 sea una supercla'e del esquema R es decir f R.
5bs/r'ese que todas las declaraciones funcionales pero no todas las dependencias
funcionales son declaraciones de cla'e.
RES<R+##+W? =E?ERA. . Una restriccin general es un predicado en el conjunto de todas las
relaciones de un esquema dado.
E$ercicios (
3ise8e los modelos que considere mas eficientes para cada uno de los siguientes
casos(
a7 una empresa desea automati-ar su proceso de facturacin las facturas contienen un
numero de folio, la fec)a, los datos del cliente 2R:#, nombre, direccin7 y de los
productos que la factura ampara 2cla'e, descripcin, cantidad costo unitario e importe.7
Iersin 1
9R5B.E6AS
V Se repetiran nombre, R:#, dom.
V En una misma factura se repetiran 2fec)a, numero de factura7.
V ?o )ace falta guardar el importe.
Iersin 2
9R5B.E6AS
V Repetir datos del cliente por cada factura
V Repite campo R:# y ?%6:5.
V ?o es necesario guardar el importe
Iersin 3
9R5B.E6AS
V Se repiten datos innecesariamente para cada articulo :E#@A y R:#.
Iersin
9R5B.E6AS
V Se graba importe que es innecesario
V Se repetiran para cada factura.
Iersin 5
9R5B.E6AS
V Se repite fec)a y R:#
Iersin "
9R5B.E6AS
V ?o se sabra en que factura 'a la 'enta.
Iersin C
9R5B.E6AS
V Se repiten #.AIE, 3ES#R+9 y 9%?+< para cada 'enta de ese articulo.
653E.5 59<+65.
Iersin H
V?5<A#+W?
E J 2J depende de E7
b73ado una relacin R, el atributo J de R es funcionalmente dependiente del atributo E
de R si y solo siempre que dos tuplas de R coincidan en sus 'alores de E tambi/n
coincidan en sus 'alores de J.
E$emplo(
A.!'&A&',N DE !A( Dfs
"?isten b!sicamente tres aplicaciones para las dependencias funcionales#
/.> Determinar si una relacin es legal bajo un conjunto dado de dependencias funcionales. %i una
relacin 2 es legal bajo un conjunto G de dependencias funcionales, se dice que 2 satisface a G.
2T "quipos
G/TQ/,0,1,3,4,5R 2 no satisface a G/
G0TQ0,3R 2 si satisface a G0
0.> "specificar las limitaciones del conjunto de relaciones legalesI de esta manera, se manejaran
solamente las relaciones que satisfagan a un conjunto de dependencias funcionales.
1 .> &eneracin de descomposiciones sin perdida mediante la aplicacin de diersos postulados
preestablecidos para este fin.
"jemplo#
E 2J,N7 3escomposicin
E J sin perdida con perdida
E N 2EJN7 2EJN7

2EJ7 2EN7 2EJ7 2JN7
Se dice que una dependencia funcional es tri'ial cuando todas las relaciones la
satisfacen. En general, una dependencia funcional de la forma E J es tri'ial si E es un
subcon$unto impropio de J 2E y J se forman de los mismos atributos7
)1emploD de dependencias funcionales triviales.
?# ?#
2?#,?567 2?#,?567
%na dependencia funcional de la forma E J es completa si J depende
funcionalmente de E y no depende funcionalmente de ning&n subcon$unto propio de E.
2E,J7 J
E N
E J
)1emploD
2?#,?567 #ARR ES +?#569.E<A
?# #ARR
?# ?56 ES #569.E<A
2?#,#.AIE6A<ER+A,9ER+5357 #A. ES #569.E<A
+E)R9A DE DE.ENDEN&'A( 3UN&')NA!E(
Si se tiene un con$unto de dependencias funcionales, estas pueden implicar que
e1istan otras que tambi/n se cumplan.
Sea : un con$unto de dependencias funcionales :
g
es el con$unto cerrado de : que
contiene a todas las dependencias funcionales que : implica lgicamente. 3ado :
podemos obtener :
g
> el grado de comple$idad para obtener :
g
'aria en funcin del
tama8o de :.
)1emploD
:Xd ?# ?56, ?# #ARR, #ARR ES9,...e
:
g
d ?# ES9,...e
+8&N'&A( .ARA DEDU&'R DE.ENDEN&'A( 3UN&')NA!E(
$BI9'$S +) $*'ST*9>8
1.4 RE=.A 3E RE:.EE+B+3A3. si E es un con$unto de atributos y J es un subcon$unto
impropio de E 2J E7, entonces se cumple que E J.
2.4 RE=.A 3E A69.+:+#A#+W?.4 si se cumple que E y entonces debe cumplirse que
UE UJ si U es un con$unto de atributos 'alido en la relacin.
3.4 RE=.A 3E <RA?S+<+I+3A3. si se cumple que E J y J N, entonces se cumple
que E N.
Se dice que estas reglas son 'alidas porque no se generan dependencias
funcionales incorrectas. .as reglas son completas porque no dado un con$unto : de
dependencias funcionales permiten obtener la totalidad de :
g
. 5casionalmente su
aplicacin puede darse en forma directa para calculas :
g
> en estos casos se ocurre al
uso de las siguientes reglas(
1.4RE=.A 3E %?+W?. si se cumple E J y E N, entonces se cumple que E JN.
2.4 RE=.A 3E 3ES#5695S+#+W?. si se cumple que E JN, entonces se cumple que
E J y E N.
3.4 RE=.A 3E 9SE%35<RA?S+<+I+3A3. si se cumple E J y UJ N, entonces se
cumple UE N.

httpDGGHHH.itlp.edu.mIGpublicaGtutorialesGbasedat&Ghcuatro4J4.htm
5.5.& $nomalLas.
5.5.3 +escomposicin.
Propiedades deseables de una descomposicin0 sea 2 un esquema de relacin, G un conjunto
de dependencias funcionales de 2, y sean 2/ y 20 una descomposicin de 2. "sta
descomposicin es una descomposicin de reunin sin prdida si al menos una de las siguientes
dependencias est! en GE# 2/20 2/ o 2/20 20.
-uando se realiza una actualizacin, el sistema debe ser capaz de comprobar que la actualizacin
no crea una relacin ilegal. ,ara comprobar las actualizaciones eficientemente, se deben disear
unos esquemas de bases de datos relacional que permiten alidar la actualizacin sin tener que
calcular las reuniones. %ea G un conjunto de dependencias funcionales en el esquema 2 y sean
2/,20,],2n una descomposicin de 2. $a restriccin de G en 2i es el conjunto Gi que contiene
todas las dependencias funcionales de GE que incluyen solamente atributos de 2i. @omando
GCTG/G0]Gn, una descomposicin que tenga la propiedad GCE T GE se dice que es una
descomposicin que consera las dependencias.
$a ausencia de redundancia en una descomposicin es claramente deseable. $as etapas por las
cuales se alcanza esta ausencia de redundancia se representa por arias formas normales, que se
discuten a continuacin.
httpDGGtusapuntes.iespana.esGtusapuntesGunedGintroduccionbd
d.html
5.5.4 7ormas normales.
3)R#A N)R#A!
Se dice que una forma normal particular si satisface cierto con$unto especifico de
restricciones> por e$emplo, se dice que una relacin esta en primera forma normal si y
solo si satisface la restriccin de contener &nicamente 'alores atmicos .
A continuacin se mencionan las formas normales que e1isten.

79*'$ >9*'$ ;9<C)-C9++
%na de las formas normales m!s deseables que podemos obtener es la forma
normal Boyce4codd 2B#?:7. %n esquema de relaciones R esta B#?: con respecto a un
con$unto : de dependencias funcionales si para todas las dependencias funcionales en
:
g
de la forma &; , donde &; R y R, por lo menos se cumple de las
siguientes condiciones(
&; es una dependencia funcional tri'ial 2es decir, &; 7.
&; es una supercla'e del esquema R.
%n dise8o de base de datos esta en B#?: si cada una de los miembros del con$unto
de los esquemas de relacin que comprende el dise8o esta en B#?:.
:*I')*$ 79*'$ >9*'$
%na relacin R esta en primera forma normal 21?:7 y si y solo si todos los dominios
subyacentes solo contienen 'alores atmicos.
%n dominio es atmico si los elementos del dominio se consideran unidades
in'isibles.
Esta definicin trata de decirnos que cualquier relacin normali-ada esta en 1?:. %na
relacin que tan solo esta en primera forma normal es decir, una relacin en 1?: que,
adem!s no esta 2?: y, por tanto, tampoco no esta en 3?: se dice que tiene una
estructura indeseable.

S)8U>+$ 79*'$ >9*'$
%na relacin R esta en segunda forma normal 22?:7 si y solo si esta en 1?: y cada
atributo no es primo completamente dependiente de la primera lla'e primaria.
%n atributo es no primo si no participa en la lla'e primaria.

T)*C)*$ 79*'$ >9*'$
En aquellos casos en los que no pueden satisfacerse los tres criterios de dise8o,
abandonamos B#?: y aceptamos una forma normal m!s d/bil llamada <ER#ERA
:5R6A ?5R6A. 23?:7. Ieremos que siempre es posible encontrar una
descomposicin de producto sin perdida que conser'e las dependencias que est/n en
3?:.
B#?: requiere que todas las dependencias no tri'iales sean de la forma
&; , donde &; es una supercla'e.
3?: )ace un poco menos estricta esta restriccin permitiendo las dependencias
funcionales no tri'iales cuyo lado i-quierdo no sea una supercla'e.
%n esquema de relaciones R esta en 3?: con respecto a un con$unto : de
dependencias funcionales si para todas las dependencias funcionales en :
g
de la forma
&; , donde &; R R, por lo menos se cumple una de las condiciones
siguientes.
&; es una dependencia funcional tri'ial.
&; es una supercla'e R
#ada atributo A en &34;&; esta contenido en una cla'e candidata de R.
.a definicin 3?: permite ciertas dependencias funcionales que nos permiten en
B#?:. %na dependencia &; que satisface solo la tercera condicin de la
definicin de 3?: no se permite en B#?:, aunque si se permite en 3?:.

CU$*T$ 79*'$ >9*'$
%n esquema de relaciones R esta en ?: con respecto a un con$unto 3 de
dependencias funcionales si para todas las dependencias multi'aluadas de 3
g
de la
forma &; , donde &; R y R, se cumple por lo menos una de las
siguientes condiciones(
V&; es una dependencia multi'aluada tri'ial.
V&; es una supercla'e del esquema R.
%n dise8o de bases de datos esta en ?: si cada miembro del con$unto de esquema
de relaciones que comprende el dise8o esta en ?:.
.a analoga entre ?: y B#?: se aplica al algoritmo para descomponer un esquema
en ?:. .a siguiente figura muestra un algoritmo de descomposicin en ?:.
resultado (X dRe>
listo(Xfalso>
calcular :
g
>
*)ile 2not listo 7 do
if 2e1iste un esquema R
i
en resultado que no esta en ?: 7
t)en begin
sea &; una dependencia multi'aluada no tri'ial que se cumple en R
i
tal que
&; R
i
no esta :
g
, y
&;= >
resultado(X2resultado 4 R
i
7 ( R
i
)(&;,) >
end>
else listo(X'erdadero>
@emos 'isto que si nos dan un con$unto de dependencias funcionales y multi'aluadas,
resulta pro'ec)oso encontrar un dise8o de bases de datos que se a$uste a los tres
criterios siguientes(
V ?:
V conser'acin de las dependencias
V 9roducto sin perdida.
Si todo lo que tenemos son dependencias funcionales, el primer criterio es $usto el de
B#?:.
Es posible que no se logran los tres criterios antes mencionados, y es aun donde se
abandona ?:, y aceptamos B#?: o incluso 3?:, si es necesario para asegurar la
conser'acin de las dependencias.
)ttp(AA***.itlp.edu.m1ApublicaAtutorialesAbasedat2A)cuatroM2.)tm
79*'$ >9*'$ :*9<)CT9 -:*9+UCT9.
$a forma normal de proyecto > producto se define de manera similar a '-=G y 3=G, e?cepto
que se usan dependencias de interseccin. Un esquema de relaciones 2 esta en forma normal de
proyecto>producto ),F=G* con respecto aun conjunto D de dependencias funcionales
multialuadas y de interseccin si para todas las dependencias en D
E
de la formaL)2/ , 20 ...2 n*
donde cada 2i 2 y 2/ 20
... 2n
\acuteI
se cumple por lo menos una de las siguientes
condiciones#
L)2/ , 20 ...2 n* es una dependencia de producto triial.
-ada 2i es una superclae de 2.
Un diseo de base de datos esta en ,F=G si cada miembro del conjunto de esquema de
relaciones que comprende el diseo esta en ,F=G. ,F=G se llama quinta forma normal )4=G*.
)ttp(AA***.itlp.edu.m1ApublicaAtutorialesAbasedat2A)cuatroM3.)tm
3)R#A( N)R#A!E(
.a ra-n de ser de las formas normales consiste en la estandari-acin de los
conceptos relacionados al dise8o eficiente de las estructuras y esquemas de una base
de datos.
3urante muc)o tiempo se )a dependido en e1tremo de la e1periencia y capacidad de
los analistas y dise8adores de bases de datos. #omo es ob'io, e1istir!n discrepancias
entre los m/todos que estos aplican para obtener un modelo eficiente. .as formas
normales permitir!n la aplicacin de un est!ndar de eficiencia en ni'eles ascendentes
mediante la aplicacin de las mencionadas formas normales.
Se dice que una relacin 2tabla7 esta en una forma normal determinada si satisface
cierto con$unto especifico de restricciones.
UN'VER() DE RE!A&')NE(.
9ara a'an-ar de una forma normal a otra deben 'erificarse las restricciones de la
actual y la nue'a forma normal. %na de las )erramientas mas utili-adas para alcan-ar
una nue'a forma normal es la 3ES#5695S+#+W? esta debe presentar las siguientes
caractersticas(
V 3ebe reali-arse sin perdida
V 3eben mantenerse las dependencias funcionales
V Se debe e'itar o reducir )asta donde sea posible la redundancia.
C$S9 :*$CTIC9 :$*$ >9*'$IP$*.
%n con$unto de pro'eedores distribuyen artculos en ciudades especificas. .as
ciudades se encuentran agrupadas por regiones, pero un pro'eedor solo puede cubrir
una ciudad. #ada pro'eedor es capa- de distribuir artculos que est!n numerados
consecuti'amente.
.a siguiente tabla muestra la distribucin de los artculos que son distribuidos por
cada pro'eedor y las e1istencias actuales de estos.
:*I')*$ 79*'$ >9*'$
Una relacin esta en primera forma normal si y solo si los dominios de sus atributos solo
contienen alores atmicos )no as a dejar ning.n casillero c(o*.

S)8U>+$ 79*'$ >9*'$
%na relacin esta en segunda forma normal si y solo si esta en primera forma normal
y cada atributo no primo
V
es completamente dependiente de la lla'e primaria.
VA@28'U@A ,28;A# es aquel que forma parte de la llae primaria.

T)*C)*$ 79*'$ >9*'$
Una relacin esta en tercera forma normal si y solo si esta en segunda forma normal y todo
atributo no primo es dependiente no transitiamente de la llae primaria.
=o se cumple la tercera forma normal porque hay transitiidad de un proeedor a regin.
$lae
),2AD, A2@*
$lae),2
AD*

Se considera que un esquema que alcan-a tercera forma normal es eficiente. ?o
obstante, se )a propuesto una me$ora que permitir! obtener un modelo m!s eficiente
con la 'enta$a de que no depende de formas normales anteriores 2aunque se
recomienda ampliamente alcan-ar tercera forma normal antes de su aplicacin7.


;9<C)- C9++ .7>;C/
%na relacin esta en :?B# si y solo si todas las dependencias funcionales son
completas y todos los atributos determinantes son lla'es candidatos.
)1emploD
Se desea el registro de alumnos> materias y profesores que la imparte. supngase
que un profesor imparte solamente una materia.
>9T$SD
V %na relacin que esta en :?B# estar! siempre en 3:?> esta relacin no es reciproca.
V .a forma normal B5J#E4#533 2:?B#7 optimi-a casos en los que e1isten 'arias
lla'es candidato traslapadas. 2son aquellas que comparten atributos.7.
V <ericamente, es m!s simple puesto que no requiere de formas normales pre'ias.
)B*E+'V)( DE! D'(E:)
Se pueden plantear b!sicamente tres metas al reali-ar el dise8o de un esquema de
base de datos>
a7:?B#
b73ES#5695S+#+W? 3E 9R53%#<5 S+? 9ER3+3A
c7#5?SERIA#+W? 3E .AS 3E9E?3E?#+AS :%?#+5?A.ES.
?5<A(
C$S9S )S:)CI$)S
9uede ocurrir que en algunas situaciones se pierda n dependencias funcionales al
alcan-ar :?B#> esto trae como consecuencia una reduccin en el rendimiento del
esquema y pone en riesgo incluso la integridad de la base de datos. En estos casos
ser! preferible conser'ar el dise8o alcan-ado )asta 3:?.
+):)>+)>CI$S +) =$9*)S '`TI:)S
E1isten casos de relaciones en los que un atributo puede determinar a otro
restringiendo su rango de 'alores 'alidos. A este tipo de dependencias se les conoce
como dependencias multi'aluadas 236I7.
:5R6A<5(
E J
RE multidetermina a JR

6A<ER+A 9R5:ES5R
.as formas normales de ni'el mas alto 2fn y 5fn7 son aplicables para aquellos casos
en los que e1istan dependencias multi'aluadas yAo se presenta ciertas caractersticas
especiales de operacin.
CU$*T$ 79*'$ >9*'$
Siempre que en una relacin R e1ista una dependencia multi'aluada 236I7, la
relacin esta en fn si todos los atributos de R son funcionalmente dependientes del
multideterminador
Si(
R X dA,B,#,3e
A B # 3
B 3
R esta en :? Si
B A
B #
?5<AS(
V Si una relacin esta en :?, esta tambi/n en :?B#, la relacin no es reciproca
V #ualquier relacin puede descomponerse sin perdida en un con$unto de relaciones en
:?.
3UI>T$ 79*'$ >9*'$
%na relacin esta en 5:? si y solo si toda Vdependencia de reunin en R esta
implicando por las lla'es candidatos de R.

Si en(
R X dA,B,#,3,Ee
V Son lla'es candidato A y B
VSon dependencias de reunin
dA,B,#e
dA,#,3e
dB,Ee
R esta en 5:?
?5<A(
V .a quinta forma norma es aplicable com&nmente a aquellos casos en los que reali-an
descomposiciones )acia 3 o mas nue'as tablas.
)ttp(AA***.itlp.edu.m1ApublicaAtutorialesAbasedat2A)cuatroM.)tm
7ormas normales.
Son las t/cnicas para pre'enir las anomalas en las tablas. 3ependiendo de su estructura, una tabla
puede estar en primera forma normal, segunda forma normal o en cualquier otra.
Relacin entre las formas normales(
:rimera forma normal.
Definicin formal7
%na relacin R se encuentra en 1:? si y solo s por cada rengln columna contiene 'alores atmicos.
Abre'iada como 1:?, se considera que una relacin se encuentra en la primera forma normal cuando
cumple lo siguiente(
1. .as celdas de las tablas poseen 'alores simples y no se permiten grupos ni arreglos repetidos
como 'alores, es decir, contienen un solo 'alor por cada celda.
2. <odos los ingresos en cualquier columna2atributo7 deben ser del mismo tipo.
3. #ada columna debe tener un nombre &nico, el orden de las columnas en la tabla no es
importante.
. 3os filas o renglones de una misma tabla no deben ser id/nticas, aunque el orden de las filas no
es importante.
9or lo general la mayora de las relaciones cumplen con estas caractersticas, as que podemos decir
que la mayora de las relaciones se encuentran en la primera forma normal.
9ara e$emplificar como se representan gr!ficamente las relaciones en primera forma normal
consideremos la relacin alumno cursa materia cuyo diagrama E4R es el siguiente(
#omo esta relacin mane$a 'alores atmicos, es decir un solo 'alor por cada uno de los campos que
conforman a los atributos de las entidades, ya se encuentra en primera forma normal, gr!ficamente as
representamos a las relaciones en 1:?.
Se,unda forma normal.
9ara definir formalmente la segunda forma normal requerimos saber que es una dependencia funcionalD
#onsiste en edificar que atributos dependen de otro2s7 atributo2s7.
Definicin formal7
%na relacin R est! en 2:? si y solo si est! en 1:? y los atributos no primos dependen funcionalmente
de la lla'e primaria.
%na relacin se encuentra en segunda forma normal, cuando cumple con las reglas de la primera
forma normal y todos sus atributos que no son cla'es 2lla'es7 dependen por completo de la cla'e . 3e
acuerdo con est! definicin, cada tabla que tiene un atributo &nico como cla'e, esta en segunda forma
normal.
.a segunda forma normal se representa por dependencias funcionales como(
?tese que las lla'es primarias est!n representadas con doble cuadro, las flec)as nos indican que de
estos atributos se puede referenciar a los otros atributos que dependen funcionalmente de la lla'e
primaria.
9ara definir formalmente la 3:? necesitamos definir dependencia transitivaD En una afinidad 2tabla
bidimensional7 que tiene por lo menos 3 atributos 2A,B,#7 en donde A determina a B4 B determina a #
pero no determina a A.
Tercera forma normal.
Definicin formal7
%na relacin R est! en 3:? si y solo si esta en 2:? y todos sus atributos no primos dependen no
transiti'amente de la lla'e primaria.
#onsiste en eliminar la dependencia transiti'a que queda en una segunda forma normal, en pocas
palabras una relacin esta en tercera forma normal si est! en segunda forma normal y no e1isten
dependencias transiti'as entre los atributos, nos referimos a dependencias transiti'as cuando e1iste m!s
de una forma de llegar a referencias a un atributo de una relacin.
9or e$emplo, consideremos el siguiente caso(

<enemos la relacin alumno4cursa4materia mane$ada anteriormente, pero a)ora consideramos al
elemento maestro, gr!ficamente lo podemos representar de la siguiente manera(
9odemos darnos cuenta que se encuentra graficado en segunda forma normal, es decir que todos los
atributos lla'e est!n indicados en doble cuadro indicando los atributos que dependen de dic)as lla'es, sin
embargo en la lla'e ?econo tiene como dependientes a 3 atributos en el cual el nombre puede ser
referenciado por dos atributos( ?econo y R:# 2E1iste dependencia transiti'a7, podemos solucionar esto
aplicando la tercera forma normal que consiste en eliminar estas dependencias separando los atributos,
entonces tenemos(
7orma normal de ;oyce Codd.
+eterminanteD %no o m!s atributos que, de manera funcional, determinan otro atributo o atributos. En
la dependencia funcional 2A,B744Z#, 2A,B7 son los determinantes.
Definicin formal7
%na relacin R esta en :?B# si y solo si cada determinante es una lla'e candidato.
3enominada por sus siglas en ingles como B#?:> %na tabla se considera en esta forma si y slo s
cada determinante o atributo es una lla'e candidato.
#ontinuando con el e$emplo anterior, si consideramos que en la entidad alumno sus atributos control y
nombre nos puede )acer referencia al atributos esp., entonces decimos que dic)os atributos pueden ser
lla'es candidato.
=r!ficamente podemos representar la forma normal de Boyce #odd de la siguiente forma(

5bs/r'ese que a diferencia de la tercera forma normal, agrupamos todas las lla'es candidato para
formar una global 2representadas en el recuadro7 las cuales )acen referencia a los atributo que no son
lla'es candidato.
Cuarta forma normal.
Definicin formal7
%n esquema de relaciones R est! en :? con respecto a un con$unto 3 de dependencias funcionales y
de 'alores m&ltiples s, para todas las dependencias de 'alores m&ltiples en 3 de la forma E4Z4ZJ, donde
EYXR y JYXR, se cumple por lo menos una de estas condiciones(
V E4Z4ZJ es una dependencia de 'alores m&ltiples tri'ial.
V E es una superlla'e del esquema R.
9ara entender me$or a&n esto consideremos una afinidad 2tabla7 llamada estudiante que contiene los
siguientes atributos( #la'e, Especialidad, #urso tal y como se demuestra en la siguiente figura(
Clave )specialidad Curso
SG1 Sistemas ?atacin
SG1 Bioqumica 3an-a
SG1 Sistemas ?atacin
BG1 Bioqumica =uitarra
#G3 #i'il ?atacin
Suponemos que los estudiantes pueden inscribirse en 'arias especialidades y en di'ersos cursos. El
estudiante con cla'e SG1 tiene su especialidad en sistemas y Bioqumica y toma los cursos de ?atacin y
dan-a, el estudiante BG1 tiene la especialidad en Bioqumica y toma el curso de =uitarra, el estudiante
con cla'e #G3 tiene la especialidad de #i'il y toma el curso de natacin.
En esta tabla o relacin no e1iste dependencia funcional porque los estudiantes pueden tener distintas
especialidades, un 'alor &nico de cla'e puede poseer muc)os 'alores de especialidades al igual que de
'alores de cursos. 9or lo tanto e1iste dependencia de valores m?ltiples. Este tipo de dependencias
produce redundancia de datos, como se puede apreciar en la tabla anterior, en donde la cla'e SG1 tiene
tres registros para mantener la serie de datos en forma independiente lo cual ocasiona que al reali-arse
una actuali-acin se requiera de demasiadas operaciones para tal fin.
E1iste una dependencia de 'alores m&ltiples cuando una afinidad tiene por lo menos tres atributos, dos
de los cuales poseen 'alores m&ltiples y sus 'alores dependen solo del tercer atributo, en otras palabras
en la afinidad R 2A,B,#7 e1iste una dependencia de 'alores m&ltiples si A determina 'alores m&ltiples de
B, A determina 'alores m&ltiples de #, y B y # son independientes entre s.
En la tabla anterior #la'e determina 'alores m&ltiples de especialidad y cla'e determina 'alores
m&ltiples de curso, pero especialidad y curso son independientes entre s.
.as dependencias de 'alores m&ltiples se definen de la siguiente manera( #la'e 4Z4ZEspecialidad y
#la'e4Z4Z#urso> Esto se lee R#la'e multidetrmina a Especialidad, y cla'e multidetermina a #ursoR
9ara eliminar la redundancia de los datos, se deben eliminar las dependencias de 'alores m&ltiples.
Esto se logra construyendo dos tablas, donde cada una almacena datos para solamente uno de los
atributos de 'alores m&ltiples.
9ara nuestro e$emplo, las tablas correspondientes son(
<abla Eespecialidad
Clave )specialidad
SG1
Sistemas
BG1
Bioqumica
#G3
#i'il
<abla E#urso
Clave Curso
SG1 ?atacin
SG1 3an-a
BG1 =uitarra
#G3 ?atacin
3uinta forma normal.
Definicin formal7
%n esquema de relaciones R est! en 5:? con respecto a un con$unto 3 de dependencias funcionales,
de 'alores m&ltiples y de producto, si para todas las dependencias de productos en 3 se cumple por lo
menos una de estas condiciones(
V 2R1, R2, R3, ... Rn7 es una dependencia de producto tri'ial.
V <oda Ri es una superlla'e de R.
.a quinta forma normal se refiere a dependencias que son e1tra8as. <iene que 'er con tablas que
pueden di'idirse en subtablas, pero que no pueden reconstruirse.
5.! 'odelo )* y la normaliAacin.
En t/rminos m!s sencillos la normali-acin trata de simplificar el dise8o de una base de datos, esto a
tra'/s de la b&squeda de la me$or estructuracin que pueda utili-arse con las entidades in'olucradas en
ella.
9asos de la normali-acin(
1. 3escomponer todos los grupos de datos en registros bidimensionales.
2. Eliminar todas las relaciones en la que los datos no dependan completamente de la lla'e primaria
del registro.
3. Eliminar todas las relaciones que contengan dependencias transiti'as.
.a teora de normali-acin tiene como fundamento el concepto de formas normales> se dice que una
relacin est! en una determinada forma normal si satisface un con$unto de restricciones.
7l modelo 7ntidad2Relacin
'ntroduccin al dise;o de bases de datos
"s sencillo disear una base de datos, pero a menudo hay que reconsiderar posteriormente la
estructura de los datos, lo cual ocasiona retrasos y modificaciones. "s m!s lento la obtencin de
un diseo lo m!s ptimo posible, pero el tiempo inertido se recupera al no tener que oler atr!s
para replantearse el diseo de los datos. Un buen diseo es la clae para iniciar con buen pie el
desarrollo de una aplicacin basada en una base de datos o la implementacin de un sistema.
"s de destacar la importancia de un buen diseo. Un diseo apresurado o simplemente
bosquejado puede mostrarse inserible o muy mejorable cuando la aplicacin ya est!
parcialmente codificado, o el administrador de la base de datos ya tiene organizados el
mantenimiento y el control de acceso a los datos.
7squema# diseo general de la base de datos a niel lgico. 8ncluye el tipo de datos y las
relaciones entre ellos. "s de naturaleza fija y solo se altera e?cepcionalmente. "l esquema se
define y se mantiene utilizando el lenguaje de definicin de datos )DD$*.
(nstancia# contenido concreto de la base de datos en un momento dado. Dar(a con el tiempo, al
aadir, eliminar o modificar datos, utilizando el lenguaje de modificacin de datos )D;$*.
"l diseo de una base de datos se realiza a dos nieles. "l primero es el nivel conceptual, en la
cual se contempla una estructura abstracta y no implementable directamente con un %&'D. "l
segundo es el nivel f.sico, en el cual la base de datos es ya implementable. Detalladamente, las
fases del diseo de una base de datos son las siguientes#
/. Descripcin en lenguaje natural.
0. Dia*rama 7ntidad2Relacin 972R:. @ambin conocido como Sdiagrama de -henS. "stos
diagramas modelizan el problema mediante entidades asociadas por relaciones. Adoptan
la forma de grafos donde los datos se relacionan mediante flechas. "l diagrama ">2 no
depende del modelo de datos.
1. "leccin del modelo de datos )usualmente el relacional*
3. -onersin del diagrama ">2 al modelo relacional )tablas*
4. =ormali<acin )eliminar diersos defectos de diseo*.
5. ?ptimi<acin )seg.n criterios de almacenamiento interno, como el espacio en disco y el
tiempo medio de acceso*.
$as tres primeras fases pertenecen al niel conceptual del diseo de bases de datos mientras que
las tres .ltimas se relacionan con el niel f(sico.
'ntroduccin a los modelos de datos
,odelo de datos# estructura general de los datos y tcnicas de acceso proporcionadas por un
%&'D. Un %&'D usa siempre un .nico modelo de datos. <ay tres modelos de datos posibles#
Relacional. "s el m!s empleado. @odos los datos isibles al usuario est!n organizados
estrictamente como tablas de alores. @odas las operaciones sobre la base de datos operan
sobre esas tablas. -ada fila de una tabla es una instancia de los datos. -ada columna de
una tabla es un atributo )alor indiisible que tiene significado por s( solo*. "s el modelo
de datos m!s sencillo y cercano a la forma humana de organizar la informacin.
Red. @ambin denominado modelo -ADA%P$. Gue el primero en aparecer
comercialmente, a principios de los aos 6:. %e caracteriza por almacenar direcciones de
otros datos junto a la misma informacin. "s un modelo cercano al modo de
almacenamiento interno del ordenador. $os datos se e?presan como registros y las
relaciones entre datos como sets. Dos datos est!n unidos por una direccin de memoria
almacenada al lado de uno de ellos. "sa direccin es la del otro dato. $as direcciones son
propias del ordenador, y no tienen sentido lgico para las personas. "l tipo de registro es
equialente a una tabla en el modelo relacional, y se implementa f(sicamente mediante un
fichero.
;errquico. "s muy similar al modelo de datos en red, pero con la saledad de que los
registros se organizan con estructura de !rbol.
El modelo Entidad%Relacin 5E%R6
,ropuesto por -hen a mediados de los aos setenta como medio de representacin conceptual de
los problemas y para representar la isin de un sistema de forma global. G(sicamente adopta la
forma de un grafo escrito en papel al que se denomina dia*rama 7ntidad2Relacin. %us
elementos fundamentales son las entidades y las relaciones.
Una entidad caracteriza a un tipo de objeto, real o abstracto, del problema a modelizar. @oda
entidad tiene e?istencia propia, es distinguible del resto de las entidades, tiene nombre y posee
atributos definidos en un dominio determinado. Una entidad es todo aquello de lo que se desea
almacenar informacin. "n el diagrama ">2 las entidades se representan mediante rect!ngulos.
Una relacin es una asociacin o relacin matem!tica entre arias entidades. $as relaciones
tambin se nombran. %e representan en el diagrama ">2 mediante flechas y rombos. -ada
entidad interiene en una relacin con una determinada cardinalidad. $a cardinalidad )n.mero
de instancias o elementos de una entidad que pueden asociarse a un elemento de la otra entidad
relacionada* se representa mediante una pareja de datos, en min.sculas, de la forma
(cardinalidad m-nima. cardinalidad m'xima#, asociada a cada uno de las entidades que
interienen en la relacin. %on posibles las siguientes cardinalidades# (8.9#. (9.9#. (8.n#. (9.n#.
(m.n#. @ambin se informa de las cardinalidades m!?imas con las que interienen las entidades en
la relacin.
"l tipo de relacin se define tomando los m!?imos de las cardinalidades que interienen en la
relacin. <ay cuatro tipos posibles#
/. Una a una )/#/*. "n este tipo de relacin, una ez fijado un elemento de una entidad se
conoce la otra. "jemplo# nacin y capital.
0. Una a muchas )/#=*. "jemplo# cliente y pedidos.
1. ;uchas a una )=#/*. %imetr(a respecto al tipo anterior seg.n el punto de ista de una u
otra entidad.
3. ;uchas a muchas )=#=*. "jemplo# personas y iiendas.
@oda entidad debe ser un(ocamente identificada y distinguible mediante un conjunto de atributos
)quiz!s un solo atributo* denominado identificador o clave principal o primaria. ,uede haber
arios posibles identificadores para una misma entidad, en cuyo caso se ha de escoger uno de
ellos como identificador principal siendo el resto identificadores alternatios. "jemplo# dni y
n.mero de seguridad social de una persona.
<ay unas normas de sentido com.n a seguir cuando se dibuja un diagrama ">2. $a primera es
emplear preferentemente l(neas rectas en las relaciones y eitar en lo posible que estas l(neas se
crucen. %e suele usar nombres para describir las entidades y erbos para las relaciones. "sto es
lgico ya que las entidades se ponen en com.n cuando se realiza alguna accin. $os erbos
empleados no necesariamente tienen que ser siempre infinitios.
75emplo0# %e desea almacenar informacin sobre personas y los coches que eentualmente
posean. Una misma persona puede poseer arios coches aunque puede haber personas que no
posean ning.n coche. $os coches se identifican mediante su n.mero de matr(cula y las personas
mediante su documento nacional de identidad. @odo coche tiene un solo propietario. %e ha de
almacenar la fecha en que una determinada persona adquiri un determinado coche.
,roblemas de un esquema .nico que agrupe a todos los atributos de la entidad coche )matr(cula,
marca, modelo, etc.*, de la entidad persona )dni, nombre, direccion, etc* y de la relacin entre
ambas entidades )fecha de compra*.
/. ,ersonas sin coche )alores nulos y gasto de espacio de almacenamiento*.
0. ;ultiplicidad de almacenamiento )redundancia* de los atributos de una persona si sta es
propietaria de m!s de un coche.
1. ;odificacin del alor de un atributo de una persona en una sola de sus apariciones en la
instancia de la base de datos )inconsistencia*.
,ara eitar estos problemas se separa el esquema .nico de la base de datos en tres separados para
coche, persona y la relacin entre ambos, lo que ocasiona otra serie de problemas#
/. @oda matr(cula en una instancia concreta del esquema de la relacin entre coches y
personas debe aparecer en la instancia del esquema de la entidad coche.
0. @odo dni en una instancia concreta del esquema de la relacin entre coches y personas
debe aparecer en la instancia del esquema de la entidad persona.
1. ,roblemas con la modificacin del alor de una matr(cula en la instancia del esquema de
la entidad coche.
3. ,roblemas con la modificacin del alor de un dni en la instancia del esquema de la
entidad persona.
4. ,roblemas con el borrado de arios coches en la instancia concreta del esquema de la
entidad coche.
5. ,roblemas con el borrado de arias personas en la instancia concreta del esquema de la
entidad persona.
Una entidad del modelo ">2 puede ser fuerte o dbil. Una entidad fuerte e?iste por s( misma sin
depender la e?istencia de alguna otra entidad. ,or el contrario la e?istencia de una instancia de
una entidad dFbil depende de la e?istencia preia de otra entidad. %i la entidad dbil puede ser
identificada sin necesidad de identificar preiamente la entidad de cuya e?istencia depende,
diremos que la entidad dbil lo es por e6istencia .nicamente. %i la entidad dbil no puede ser
identificada independientemente, sino que preiamente es necesario identificar a la entidad de
cuya e?istencia depende, diremos que la entidad dbil lo es por identificacin.
,or e?tensin se considera que una relacin en la hay entidades dbiles tambin se dice dbil por
e?istencia o por identificacin seg.n sea el tipo de debilidad de las entidades que interengan en
la relacin. "jemplos#
%e desea almacenar informacin sobre buques petroleros y las refiner(as donde stos
realizan operaciones de descarga de crudo. Un buque puede descargar combustible en
cierta cantidad y en una determinada fecha en una de arias refiner(as. "n una misma
refiner(a pueden descargar arios buques. $os buques se identifican mediante una
matr(cula naal y las refiner(as mediante un cdigo.
%e desea almacenar informacin sobre empresas y sucursales de empresas. Una empresa
puede tener arias sucursales repartidas geogr!ficamente. Una sucursal determinada debe
pertenecer a una y solo una empresa. $as sucursales se numeran correlatiamente para
cada empresa.
%e desea almacenar informacin sobre personas y sus iiendas en propiedad.
%upondremos que una iienda tan solo puede pertenecer a una persona y que no toda
persona debe ser obligatoriamente propietaria de al menos una iienda.
8dea para el reconocimiento de entidades dbiles# ,ensar qu sucede cuando se borra una
instancia concreta de la entidad fuerte.
75emplo0 se desea disear una pequena base de datos para almacenar informacin relatia a los
estudios uniersitarios de un colectio de alumnos pertenecientes a una misma facultad. Un
alumno puede cursar a la ez arias asignaturas pertenecientes a cursos distintos. -ada curso se
compone de una serie de asignaturas que se imparten en aulas. $as asignaturas se agrupan en
!reas de conocimiento y los profesores que las imparten se agrupan en departamentos que
supondremos no guardan relacin con las !reas de conocimiento. =o hay asignaturas sin
alumnos. @odo profesor debe estar adscrito a un .nico departamento. Una asignatura puede ser
impartida por arios profesores siempre que stos pertenezcan al mismo departamento. ,uede
haber profesores que no impartan docencia.
Abserar que la restriccin de que una asignatura no pueda ser enseada por profesores de
departamentos distintos no es e?presable en el diagrama ">2. "n la realidad deber! ser indicada
utilizando el DD$ cuando se cree la base de datos.
"l aspecto b!sico para elaborar un diagrama ">2 es la determinacin de entidades para lo cual se
e?traen de la descripcin erbal del sistema los nombres comunes y entre ellos se escogen los que
claramente aporten informacin aliosa. -on el resto de nombres se utiliza el sentido com.n
descartando los in.tiles. "n caso de duda, es mejor incluir una entidad que posteriormente se
reele como innecesaria que perder informacin releante al problema.
Un atributo que lgicamente pueda estar en arias entidades se ubicar! finalmente en la entidad
en la que sea m!s fijo, es decir, en la que est m!s ligado al resto de atributos de esa entidad. ,or
sentido com.n pueden aadirse atributos que no aparezcan citados e?presamente en la
descripcin erbal del problema.
;uchas eces es posible simplificar el diagrama ">2 eliminando entidades innecesarias. ,or
ejemplo, si una entidad que interiene .nicamente en una relacin del tipo una a una )/#/* no
tiene como atributo m!s que su cdigo, este atributo puede incluirse en la entidad con la que est!
relacionada eliminar tanto la relacin como la entidad.
Bipos especiales de relacin
2elacin refle6iva o recursiva. 2elaciona una entidad consigo misma. "jemplo#
empleados que pueden ser jefes de otros empleados.
Dos relaciones entre las mismas dos entidades. ;uy .til en el caso de necesitar
almacenar informacin histrica completa. "jemplo# proyectos en los que trabaja
actualmente un empleado y proyectos en los que ha trabajado anteriormente.
Relacin ternaria. Asociacin de tres entidades. $a forma de hallar cardinalidades en las
relaciones ternarias es fijar una combinacin de elementos en dos de los e?tremos de la
relacin y obtener lgicamente las cardinalidades m(nima y m!?ima en el otro e?tremo
libre. "jemplo# el t(tulo de un libro, un autor y una editorial se relacionan las tres
mediante la accin de publicar el libro )en un ao concreto, con un 8%'= y con un
determinado n.mero de p!ginas en la edicin*. ,ara determinar las cardinalidades hay que
preguntarse por#
/. -u!ntos autores puede tener un determinado libro publicado en una determinada
editorial)cardinalidd en el e?tremo de la entidad autor*.
0. -u!ntos libros puede tener un determinado autor publicados en una determinada
editorial )cardinalidad en el e?tremo de la entidad libro*.
1. "n cu!ntas editoriales puede un determinado autor publicar un mismo libro
)cardinalidad en el e?tremo de la entidad editorial*.
2elacin de especiali<acin 97"2@=:. @ipificacin de una entidad en subtipos en n.mero
finito y conocido. -ada subtipo puede poseer atributos propios. $os subtipos heredan los
atributos que pudiera tener la entidad general. "ste tipo de relacin puede clasificarse de
dos maneras distintas. $a primera seg.n si una instancia o elemento concreto de la entidad
puede ser de m!s de un subtipo a la ez. "n caso afirmatio se dice que la relacin es
inclusiva o con solapamiento mientras que en caso contrario ser! e6clusiva o sin
solapamiento. $a segunda clasificacin se basa en si obligatoriamente cada instancia o
elemento concreto debe ser obligatoriamente de alguno de los subtipos especificados, es
decir, si no pueden e?istir elementos de la entidad que no pertenezcan a ninguno de los
subtipos. %i es as( la relacin se dice total y en caso contario parcial. $a situacin m!s
corriente en una relacin de especializacin es que sea e?clusia y total. "jemplos#
/. Una entidad persona tiene los subtipos hombre y mujer. Una misma persona no
puede ser hombre y mujer a la ez por lo que la relacin es e?clusia. =o puede
e?istir una persona que no sea hombre ni mujer, por lo que tambin es total.
0. %e coniene en que un eh(culo puede ser un coche, un camin o una moto. $a
relacin es claramente e?clusia )un eh(culo no puede ser coche y camin a la
ez, ni camin y moto, etc* y parcial pues puede haber eh(culos que no sean ni
coche ni camin ni moto.
1. $a entidad que representa a un uniersitario tiene los subtipos profesor y
estudiante. Un mismo uniersitario puede ser ambas cosas a la ez )p.e. un
profesor puede estar matriculado como alumno en alguna facultad* por lo que la
relacin es inclusia. =o puede e?istir un uniersitario que no sea ni profesor ni
estudiante, por lo que tambin es total.
3. "?presamos mediante una relacin de especializacin el que una funcin
matem!tica tiene asociados los subtipos continua y deriable. $a relacin es
inclusia pues una misma funcin puede ser ambas cosas a la ez, y parcial porque
e?isten funciones que no son continuas ni deriables.
%upongamos una entidad A que se especializa en dos subtipos A/ y A0. $a identificacin
del tipo de relacin )e?clusia, total, etc* puede hacerse atendiendo a la siguiente tabla de
erdad#
A/ A0 -aso posibleV
=o =o
%( >^ ,arcial
=o >^ @otal
=o %( %(
%( =o %(
%( %(
%( >^ 8nclusia
=o >^ "?clusia
$a cardinalidad en las relaciones de especializacin es siempre )/,/* en el e?tremo de la
entidad que se especializa en subtipos y ):,/* en el e?tremo de los subtipos si la relacin
es e?clusia o )Q:,/R,/* si es inclusia.
Una relacin de especializacin parcial puede f!cilmente conertirse en total aadiendo
un nueo subtipo SotrosS.
httpDGGHHH.cs.us.esGcursosGbd-&FF1GtemasGdiseno.html
5." *educcin de un es%uema )* a tablas.
5.# $n(lisis de un caso pr(ctico.
Unidad ". Bases de datos relacionales
orientadas a ob#etos.
!." *elaciones anidadas.
!.# Tipos comple1os.
$i%os com%le#os en es&uemas 'ML
Los tipos complejos son tipos de datos definidos por el usuario que pueden incluir otros elementos o atributos. Los
tipos complejos pueden contener elementos definidos como simples o complejos. Los tipos complejos tambin
pueden incluir atributos y grupos, mientras que los tipos simples slo pueden contener aspectos.
Los tipos complejos se definen mediante el elemento com%le($)%e y normalmente contienen combinaciones de
declaraciones de elementos, atributos y grupos, as como referencias a grupos y elementos declarados globalmente.
Un tipo complejo puede considerarse como un mini-esquema que define la estructura vlida y los datos contenidos
en un elemento especfico.
unque los tipos complejos pueden ser con nombre o sin nombre, en el ejemplo siguiente se muestran tipos
complejos con nombre. !ara obtener ms informacin acerca de los tipos sin nombre, vea "rupos y tipos con y sin
nombre.
Uso t<ico de un tio comlejo
Un escenario #abitual donde se utili$ara un tipo complejo es parte de un esquema que valida un pedido donde se
requiere una direccin de envo y una direccin de facturacin. !odra definir un tipo complejo que representa una
direccin y declarar los elementos s#ip%o y bill%o de ese tipo complejo.
&n el ejemplo siguiente se muestra cmo crear un tipo complejo denominado usAddress'
Kxs>complexT/pe nameF[usAddress[H
Kxs>seAuenceH
Kxs>element nameF[name[ t/peF[xs>strin1[ 0H
Kxs>element nameF[street[ t/peF[xs>strin1[ 0H
Kxs>element nameF[cit/[ t/peF[xs>strin1[ 0H
Kxs>element nameF[state[ t/peF[xs>strin1[ 0H
Kxs>element nameF[:ip[ t/peF[xs>strin1[ 0H
K0xs>seAuenceH
K0xs>complexT/peH
Un elemento declarado con el tipo usAddress podra ser como ste'
Kxs>element nameF[!hipTo[ t/peF[usAddress[ 0H
&n el ejemplo siguiente se muestra cmo declarar varios elementos utili$ando el tipo complejo definido.
Kxs>element nameF[customerInfo[H
Kxs>complexT/peH
Kxs>seAuenceH
Kxs>element nameF[Name[ t/peF[xs>strin1[ 0H
Kxs>element nameF[!hipTo[ t/peF[usAddress[ 0H
Kxs>element nameF[4illTo[ t/peF[usAddress[ 0H
K0xs>seAuenceH
K0xs>complexT/peH
K0xs>elementH
(sta es una representacin visual del cdigo anterior del )ise*ador +,L. -bserve el tipo complejo declarado
globalmente denominado usAddress de la parte inferior y cmo se definen los elementos !hipTo y 4illTo con el
tipo usAddress en el elemento customerInfo de la parte superior.
httpDGGmsdn.microsoft.comGlibraryGspaGdefault.aspR
urlUGlibraryGS:$GvbconGhtmlGvburfImlschemauserdefinedcompleItypes.asp
!.C 6erencia.
6erencia.
.as clases en un sistema orientado a ob$etos se representan en forma $er!rquica como en el diagrama
anterior, as que las propiedades o caractersticas del elemento persona las contendr!n 2)eredaran7 los
elementos alumno y maestro. 3ecimos que tanto la entidad Alumno y maestro son subclases de la clase
persona este concepto es similar al utili-ado en la de especiali-acin 2la relacin +SA7 del modelo E4R.
Se pueden crear muc)as agrupaciones 2clases7 para simplificar un modelo as que una $erarqua 2en
forma gr!fica7 puede quedar muy e1tensa, en estos casos tenemos que tener bien delimitados los
elementos que inter'ienen en una clase y aquellos ob$etos que las )eredan.
Gerencia0 frecuentemente, arias de las clases son parecidas entre s(. ,ara permitir la
representacin directa de los parecidos entre las clases, hay que ubicarlas en una jerarqu(a de
especializaciones. ,or ejemplo, los empleados y los clientes pueden presentarse mediante clases
que son especializaciones de la clase persona, pero cliente y empleado tienen sus ariables y
mtodos espec(ficos, mientras que las ariables y mtodos comunes se asocian a la clase persona.
$a palabra clae isa se utiliza para indicar que una clase es una especializacin de otra. $a
/erencia es la propiedad de que los objetos de una clase )una subclase* contengan las ariables
definidas en sus superclases.
@ambin se heredan igualmente los mtodos.
$a mayor parte de los sistemas orientados a objetos permiten que la especializacin sea parcialI
es decir, permiten objetos que pertenezcan a una clase, pero que no pertenezcan a ninguna de las
subclases de la misma.
Gerencia mHltiple0 en la mayor parte de los casos, una organizacin de clases con estructura de
!rbol resulta adecuada para describir las aplicaciones, aunque hay situaciones en que no se puede
representar bien una jerarqu(a de clases con estructura !rbol. ,or ejemplo, si dos subclases tienen
a su ez dos subclases iguales. "sta dificultad se resuele mediante el concepto de /erencia
mHltiple, que es la posibilidad que tienen las clases de heredar ariables y mtodos de arias
superclases. "sta relacin se representa mediante un *rafo ac.clico diri*ido 9#-D:, y se realiza
definiendo una clase temporal por cada subclase que se repite, y esta clase temporal tiene sus
propias ariables y mtodos.
)ttp(AAtusapuntes.iespana.esAtusapuntesAunedAintroduccionbdd.)tml
!.1FTipos de referencia.
$i%os de re*erencia
Las variables de tipos de referencia, conocidas como objetos, almacenan referencias a los datos reales. &sta seccin
presenta las palabras clave siguientes utili$adas para declarar tipos de referencia'
class
interface
delegate
&sta seccin tambin presenta los siguientes tipos de referencia integrados'
object
string
httpDGGmsdn.microsoft.comGlibraryGspaGdefault.aspR
urlUGlibraryGS:$GcsrefGhtmlGvcrefreferencetypes.asp
!.11Consultas con tipos comple1os.
!.1&Comparacin entre las bases de datos orientadas a
ob1etos y las bases de datos relacionales orientadas a
ob1etos.
Unidad +. 'ML.
"." $ntecedentes.
(ntercambio de (nformacin
"l intercambio de 8nformacin siempre ha sido un grae problema cuando se utilizan lenguajes y
sistemas operatios incongruentes, esto se ha dado desde los nieles de procesadores de palabras
)WP%8WP&* hasta la utilizacin de bases de datos que utilizan diferentes dialectos %H$.
"ste problema solo se agudizo con la aparicin de 8nternetI donde antes era posible limitar o
controlar la utilizacin de diferentes sistemas para intercambiar informacin, en 8nternet este no
es el caso, inclusie preia aparicin de 8nternet fueron creados mecanismos para lograr el
intercambio fluido de informacin entre diferentes sistemas, el primero mtodo fue
&;$,posteriormente %&;$ y actualmente _;$, todos estos mecanismos son llamados
lenguajes de marcacin o meta>lenguajes
#,C y "#,C
&;$ )S&eneral ;ar`up $anguageS* fue uno de los primeros lenguajes de marcacin que fue
diseado para componer estructuras de datos descriptias, esto es, un meta>lenguaje , estructuras
de datos describiendo otras estructuras de datos. &;$ eentualmente se conirti en %&;$
)S%tandard &eneralized ;ar`up $anguageS* y fue en /975 que fue adoptado como un S%tandard
8nternacional para el 8ntercambio y Almacenaje de 8nformacinS )8%A 7769*. Aunque %&;$ fue
adoptado y a.n es utilizado en arios proyectos por ser un lenguaje de marcacin muy poderoso ,
su forma es un tanto compleja y por ende costosa de desarrollar.
"ste lenguaje de marcacin )%&;$* ha encontrado uso en proyectos gubernamentales, industrias
manufactureras, publicistas...inclusie es utilizado todos los d(as por nuestro naegador
)S"?plorerS o S=etscapeS*.
(nternet 76plorer y =etscape utili<an "#,C IJ Como I
@oda informacin que recibe nuestro naegador como fue mencionado en aplicaciones de cliente
generalmente es <@;$ , el detalle es que <@;$ es parte de %&;$. $o siguiente es parte de un
documento <@;$#

KhtmlH
KheadH
KtitleH Documento 4Nsico en ;T.L
K0titleH
K0headH
Kbod/H
Kh)H Este es el Titulo K0h)H
K\XX Este es un comentario de
recordatorio Aue no aparecerN
desple1adoXXH
Ka
hrefFmailto>Tebmaster]osmosislatina7comH
En5iame un .ail K0aH
K0bod/H
K0htmlH
%i obsera detalladamente y como su nombre lo indica <@;$ tambin es un lenguaje de
marcacin # estructuras de datos describiendo otras estructuras de datos, los par!metros#
KtitleH Kh)H KhtmlH KheadH .. describen otras estructuras de datos# Documento
4Nsico en ;T.L$Este es el Titulo ...,sin embargo <@;$ proiene de algo m!s
global que es precisamente %&;$.
Donde esta la conexin entre SGML y HTML ?
@odo naegador )=etscape,"?plorer,YG;,...* contiene al menos 1 D@D )SData @ype DefinitionS*
para <@;$, omitiendo casi todos los detalles, estos D@D indican como debe ser desplegada la
informacin en el naegador, esto es, definen que KtitleH es el titulo del documento, Kh)H es
un encabezado..etc. "stos D@DCs forman parte primordial de %&;$ , y son estos D@D los que
realmente an conformando el est!ndar <@;$, el est!ndar <@;$ 3.: esta compuesto por ciertos
D@D que se encuentran en# http#MM+++.+1.orgM@2M2"->html3: .
8nclusie muchos naegadores est!n equipados con D@DCs propietarios, lo cual hace que ciertos
elementos de <@;$ sean incompatibles con otros naegadores, esto fue mencionado en
consideraciones de <@;$ .
Entonces SGML o XML ?
%i usted deseara intercambiar informacin con una empresa en -hile y otra en <olanda,
seguramente tendr(an que acordar en un est!ndar, no V ,ara asegurarse que esta informacin fuera
reutilizable independientemente del %istema Aperatio o Aplicacin seguramente utilizar(a un
est!ndar 8nternacional como %&;$. %in embargo, %&;$ es tan complejo de implementar que
seguramente en un trabajo pequeo sus costos e?ceder(an sus beneficios, es por esto que en /995
el SWorld Wide Web -onsortiumS inicio trabajos sobre _;$, un est!ndar m!s simplificado.
-/ora si0 E,C
Aunque se entro en arios detalles sobre %&;$ y <@;$ esto se hizo con la intencin de ilustrar
su complejidad y por lo tanto la necesidad de otro est!ndar m!s sencillo _;$.
$a atencin que ha generado _;$ es debido al lugar donde se facilita el intercambio de
informacin, ya que es posible utilizar este lenguaje de marcacin para generar as( como
distribuir informacin que sea utilizada por bases de datos , aplicaciones de seridor , aparatos
inal!mbricos , impresoras,etc. $a principal entaja que presenta este lenguaje es su independencia
de sistema operatio y aplicacin que ser! capaz de utilizarlo , esto es, se puede tener un
documento escrito en _;$ y este puede ser manipulado en los sistemas operatios# %un
%olaris,Windo+s,A8_ o en un ambiente Faa,D'%cript,,$M%H$. -abe aclarar que _;$ no es
una panacea para todo sistema de 8nformacin , por lo tanto es coneniente poner en conte?to su
utilizacin.
"n la gr!fica se muestra un documento _;$ que a tras de arias herramientas desarrolladas
para el lenguaje )DA;,%A_,D@D,_%$..entre otras m!s* puede ser utilizado para arios fines
)aparatos inal!mbricos, bases de datos, seridores>+eb*, las flechas bidireccionales indican que el
proceso puede ser lleado en cualquier sentido y a cualquier medio que soporte _;$ ."s esta
facilidad de 8ntercambio de 8nformacin por la que ha sido aclamado _;$ en desarrollos '0'
)'usiness to 'usiness*
Debido a que _;$ fue desarrollado a partir de %&;$ eliminando un gran n.mero de
funcionalidades que lo hac(an e?tremadamente complejo, _;$ aun mantiene una similitud con
%&;$, un ejemplo#

KproductoH
KnombreH 4ocinas K0nombreH
KmodeloH 69X)('(,) K0modeloH
KprecioH ^+),7)# K0precioH
KdisponibilidadH !i K0disponibilidadH
K0productoH
_;$ tambin utiliza tags como %&;$M<@;$, sin embargo, a diferencia de <@;$ que ya posee
D@DCs espec(ficos, en _;$ es posible describir informacin general como productos,
descripciones, nombres...etc, los cuales son denominados ocabularios.
<oy en d(a ya han sido definidos arios ocabularios )D@DCs* que definen este tipo de tags en
base a industrias, de manera que de la misma forma en que ya e?iste un est!ndar para tags de
presentacin )<@;$*, arias industrias han empezado a definir sus propios tags # 8ndustria
Hu(mica :&2 S-hemical ;ar`up $anguageS , 8ndustria $egal ;<"2 S"?tensible Gorms
Description $anguageS y otra gran gamma de 8ndustrias, una lista se encuentra en# +++.oasis>
open.orgMcoer
DBDKs en E,C I 7ntonces es lo mismo que "#,C..
Aunque _;$ aun contiene elementos como D@DCs, tendr! que tomar la palabra de este autor )o
leer las especificaciones de %&;$ y especificacin de _;$ * que el uso de _;$ es mucho m!s
f!cil y adoptado por la industria y por consiguiente reconocer que en los pr?imos aos es casi un
hecho que formar! una parte primordial del intercambio de 8nformacin en 8nternet.
Berminolo*.a en E,C
"sta es alguna de la @erminolog(a utilizada en _;$.
D$D,s .)ata %ype )efinition o )ocument %ype )efinition/'
)efinen como sern utili$ados e interpretados los elementos de un
documento +,L, esto es, si se utili$a un %" como KnombreH o
KapellidoH , los )%)0s definen entre otras cosas ' 1ue tan e2tenso
puede ser su valor, el tipo de carcter .U%3-4,U%3-56../, reglas que
deben cumplirse en la informacin .ser parte de otro %", valores
especficos.../,referencias a otros )%)0s.
su ve$ estos )%)0s son utili$ados al procesar un documento +,L .va
)-, 7 8+ 7 9)-, / para validar el contenido del mismo, esto es, si al
procesar .:parse:/ el documento se encuentra que este no coincide con
las definiciones del )%), se debe generar un error por parte del
:parser: )-, 7 8+ 7 9)-, /. Un ejemplo de esto es el prologo
utili$ado en aplicaciones inalmbricas que es empleado por el ;!
"ate<ay . =tese que los )%)0s #oy en da estn siendo suplantados
por prologo utili$ado en aplicaciones inalmbricas , ms sobre esto en
8c#emas,=amespaces y )%)0s
D-M .)ocument -bject ,odel/' &s una especificacin
desarrollada por el :;orld ;ide ;eb >onsortium: que define como
procesar .:parse:/ documentos en +,L? se debe #acer nfasis que
)-, es solo una especificacin, esto implica que e2isten diversas
implementaciones .com@nmente llamados .%arsers./ de )-,. los
:parsers: )-, tambin se les denomina :tree based parsers:, ms
sobre )-, en )-, 7 8+ 7 9)-,
/0'1 .9ava !A for +,L !rocessing/' &s una iniciativa de 8un
,icrosystems para uniformi$ar el desarrollo de aplicaciones 9ava con
+,L, es muy importante se*alar que 9+! no es un :parser:, sino que
9+! funciona en conjuncin con un :parser:.
Lo que se intenta lograr mediante 9+! es interoperabilidad entre los
diferentes :parsers: que e2isten en el mercado, esto es, debido a que
e2isten diversas implementaciones de :parsers: se suelen definir
ciertas funciones propietarias por :parser:, la utili$acin de 9+!
permite aislar la aplicacin 7 programa de estas funciones propietarias.
2ames%aces ' ,ediante :=amespaces: es posible me$clar
diversos elementos .vocabularios/ que pudieran prestarse a confusin ,
esto es, suponga que esta generando una aplicacin 7 programa para
la industria qumica y descubre que requiere utili$ar diversos )%)0s que
contienen distintas definiciones para el elemento llamado <papel> y
requiere utili$ar todas estas, mediante el uso de :=amespaces: y
8c#emas es posible eliminar la ambigBedad que pueda surgir al
referirse al elemento <papel> dentro del programa o aplicacin.
S0' .8imple !A for +,L/' l igual que )-, es solo una
especificacin, pero a diferencia de ste, 8+ ofrece mayor sencille$
.su nombre lo dice :8imple:/ para manipular 7 procesar informacin en
+,L, cabe se*alar que a los :parsers: 8+ tambin se les denomina
:event driven parser:, ms sobre 8+.%arsers. en )-, 7 8+ 7 9)-,
Sc3emas ' Can surgido como una alternativa a los )%)0s
utili$ados para validar informacin en +,L, a diferencia de )%)0s el
utili$ar 8c#emas permite definir los elementos de validacin en +,L
directamente .los )%)0s que se encuentran en EBNF Extended Backus
Naur Form / y la utili$acin de =amespaces , ms sobre sc#emas en
8c#emas, =amespaces y )%)0s
$r0' .%ransformation !A for +,L/' &s una especificacin muy
reciente que forma parte de 9+! .version 5.D/, en si %r+ e2tiende el
funcionamiento de 9+!. &2tensin E 9+! surgi como una solucin
para permitir interoperabilidad en las diversas implementaciones de
:parsers: en +,L , la intencin de %r+ es permitir la interoperabilidad
de los distintos :+8L engines:
'4$ML .:&2tensible Cyper%e2t ,arFup Language:/' La nueva
generacin del lenguaje de marcacin C%,L basado en +,L
'MI .+,L ,etadata Anterc#ange/' &s una especificacin muy
reciente utili$ada para intercambiar ,eta )atos entre #erramientas de
modelaje . U,L-Universal ,arFup Langauge / como' Rational Rose,
TogetherSoft y Poseidon
'SL 5 'SL$ .&2tensible 8tyles#eet Language/' &s un lenguaje
derivado de +,L que permite transformar manipular documentos en
+,L. %ransformar y manipular E )-, #ace esto, no E &fectivamente
)-, puede reali$ar eso, sin embargo, +8L lo permite a travs de
formatos !"stlesheets"#, permitiendo manipular documentos de +,L a
C%,L , ;,L , !)3 .$cro%at/..etc..Gea )esarrollo de 8itios para
diferentes >lientes para un ejemplo/.
+8L funciona con un :!arser: como )-,, 8+ o 9)-,, este soft<are
com@nmente llamado 'SL en6ine ya incluye un .1arser..como
+erces/ en su estructura. lgunos :+8L &ngines: son +alan y +% , ms
sobre +8L en +8L .
httpDGGHHH.osmosislatina.comGImlGbasico.htm
".# )structura de los datos B'.
Checar documentos en la dentro de la carpeta de la materia
".C )s%uema de los documentos B'.
Checar documentos en la dentro de la carpeta de la materia
".C.1 +efinicin de tipos de documento .+T+/.
Checar documentos en la dentro de la carpeta de la materia
".C.& )s%uemas de B'.
Checar documentos en la dentro de la carpeta de la materia
".1FConsulta y transformacin.
".1F.1 Bpath.
'ntroduccin
E9at) es el resultado de un esfuer-o para proporcionar una sinta1is y sem!ntica
comunes para funcionalidades compartidas entre ES. <ransformations ^ES.<_ y
E9ointer ^E9ointer_. El ob$eti'o principal de E9at) es direccionar partes de un
documento E6. ^E6._ . #omo soporte para este ob$eti'o principal, tambi/n
proporciona facilidades b!sicas para manipulacin de cadenas, n&meros y booleanos.
E9at) utili-a una sinta1is compacta y no4E6. para facilitar el uso de E9at) dentro de
%R+s y de 'alores de atributos E6.. E9at) opera sobre la estructura lgica abstracta
de un documento E6., m!s que en su sinta1is superficial. E9at) obtiene su
denominacin por el uso que )ace de una notacin de caminos, como en los %R.s,
para na'egar a tra'/s de la estructura $er!rquica de un documento E6..
Adem!s de su uso para direccionar, E9at) esta dise8ado tambi/n de modo que tiene
un subcon$unto natural que puede usarse para cote$ar 2comprobar si un nodo enca$a
con un patrn o no7> este uso de E9at) est! descrito en ES.<.
E9at) modela un documento E6. como un !rbol de nodos. @ay diferentes tipos de
nodos, incluyendo nodos elemento, nodos atributo y nodos te1to. E9at) define un
modo de calcular un 'alor de cadena para cada tipo de nodo. Algunos tipos de nodo
tambi/n tienen nombres. E9at) es totalmente compatible con E6.?amespaces ^E6.
?ames_. As, el nombre de un nodo se modela como un par consistente en una parte
local y un 2qui-! nulo7 %R+ de espacio de nombres> esto se llama un nombre
e1pandido. El modelo de datos est! descrito en detalle en ^5 'odelo de datos _.
.a construccin sint!ctica b!sica en E9at) es la e1presin. %na e1presin se a$usta a
la regla de produccin E1pr. .as e1presiones son e'aluadas para producir un ob$eto,
que tendr! uno de los siguientes cuatro tipos b!sicos(
#on$unto de nodos 2una coleccin desordenada de nodos sin duplicados7
booleano 2'erdadero o falso7
n&mero 2un n&mero en punto flotante7
cadena 2una secuencia de caracteres %#S7
.a e'aluacin de e1presiones tiene lugar respecto a un conte1to. ES.< y E9ointer
especifican como se determina el conte1to para las e1presiones E9at) usadas en
ES.< y E9ointer respecti'amente. El conte1to consiste en(
%n nodo 2el nodo conteItual 7
un par de enteros positi'os no nulos 2 la posicin conteItual y el tama0o
conteItual7
un con$unto de asignaciones de 'ariables
una biblioteca de funciones
el con$unto de declaraciones de espacios de nombres aplicables a la e1presin
.a posicin conte1tual es siempre menor o igual que el tama8o conte1tual.
.as asignaciones de 'ariables consisten en una correspondencia de nombres de
'ariable a 'alores de 'ariable. El 'alor de una 'ariable es un ob$eto, que puede ser de
cualquiera de los tipos posibles para el 'alor de una e1presin, y puede tambi/n ser de
tipos adicionales no especificados aqu.
.a biblioteca de funciones consiste en una correspondencia de nombres de funciones a
funciones. #ada funcin toma cero o m!s argumentos y de'uel'e un &nico resultado.
Este documento define una biblioteca b!sica de funciones que todas las
implementaciones de E9at) deben soportar 2'/ase ^4 ;iblioteca b(sica de
funciones _7.9ara las funciones de la biblioteca b!sica de funciones, los argumentos y
el resultado son de los cuatro tipos b!sicos. <anto ES.< como E9ointer e1tienden
E9at) mediante la definicin de funciones adicionales> algunas de esas funciones
operan sobre los cuatro tipos b!sicos> otras operan sobre tipos de datos adicionales
definidos por ES.< y E9ointer.
.as declaraciones de espacios de nombres consisten en una correspondencia de
prefi$os a %R+s de espacios de nombres.
.as asignaciones de 'ariables, biblioteca de funciones y declaraciones de espacios de
nombres utili-adas para e'aluar una sube1presin son siempre las mismas que las que
se emplean para e'aluar la e1presin que la contiene. E. nodo conte1tual, la posicin
conte1tual y el tama8o conte1tual utili-ados para e'aluar una sube1presin son a 'eces
diferentes de los que se emplean para e'aluar la e1presin que la contiene. Iarios tipos
de e1presiones cambian el nodo conte1tual> solo los predicados cambian la posicin
conte1tual y el tama8o conte1tual 2 '/ase ^&.4:redicados _7. Al describir la e'aluacin
de un tipo de e1presin, siempre se )ace constar e1plcitamente si el nodo conte1tual,
la posicin conte1tual y el tama8o conte1tual cambian para la e'aluacin de
sube1presiones> si nada se dice sobre el nodo conte1tual, la posicin conte1tual y el
tama8o conte1tual, permanecer!n inalterados en la e'aluacin de sube1presiones de
ese tipo de e1presin.
.as e1presiones E9at) a menudo aparecen en atributos E6.. .a gram!tica
especificada en esta seccin se aplica al 'alor del atributo tras la normali-acin
E6.1.G. As, por e$emplo, si la gram!tica usa el caracter Y, este no debe aparecer en
el cdigo fuente E6. como Y sino que debe ser tratado conforme a las reglas de E6.
1.G introduci/ndolo, por e$emplo, como YltR . 3entro de las e1presiones, las cadenas
literales se delimitan mediante comillas simples o dobles, las cuales se emplean
tambi/n para delimitar atributos E6.. 9ara e'itar que una marca de entrecomillado en
una e1presin sea interpretada por el procesador E6. como terminador del 'alor del
atributo, la marca de entrecomillado puede introducirse como una referencia de
caracter 2YAuotR o YaposR7. Alternati'amente, la e1presin puede usar comillas
simples si el atributo E6. se delimita con comillas dobles o 'ice'ersa.
%n tipo importante de e1presin es el camino de locali-acin. %n camino de locali-acin
selecciona un con$unto de nodos relati'o al nodo de conte1to. El resultado de e'aluar
una e1presin que sea un camino de locali-acin es el con$unto de nodos
seleccionados por el camino de locali-acin. .os caminos de locali-acin pueden
contener recursi'amente e1presiones utili-adas para filtrar con$untos de nodos. %n
camino de locali-acin se a$usta a la regla de produccin .ocation9at).
En la gram!tica que sigue, los no4terminales T?ame y ?#?ame se definen en ^E6.
?ames_, y S se define en^E6._. .a gram!tica usa la misma notacin EB?: que ^E6._
2sal'o que los smbolos gramaticales siempre tienen iniciales en may&sculas7.
.as e1presiones se anali-an di'idiendo primero la cadena de caracteres a anali-ar en
Rto0ensR y a continuacin anali-ando la secuencia de to0ens resultante. Se puede usar
libremente espacio en blanco entre to0ens. El proceso de Rto0eni-acinR se describe en
^3." )structura EIica _.
= &aminos de !ocali>acin
Aunque los caminos de locali-acin no son la construccin gramatical m!s general en
el lengua$e 2un .ocation9at) es un caso especial de E1pr 7, son la construccin m!s
importante y se describir!n por tanto en primer lugar.
<odo camino de locali-acin se puede e1presar utili-ando una sinta1is directa aunque
algo 'erbosa. @ay tambi/n ciertas abre'iaturas sint!cticas que permiten e1presar casos
frecuentes con concisin. Esta seccin e1plicar! la sem!ntica de los caminos de
locali-acin utili-ando la sinta1is no abre'iada. .a sinta1is abre'iada ser! entonces
e1plicada mostrando como se e1pande en la sinta1is no abre'iada 2'/ase ^&.5 SintaIis
abreviada _7.
@e aqu algunos e$emplos de caminos de locali-acin utili-ando la sinta1is no
abre'iada(
child>>para selecciona los elementos para )i$os del nodo conte1tual
child>>Q selecciona todos los elementos )i$os del nodo conte1tual
child>>text=? selecciona todos los nodos te1to )i$os del nodo conte1tual
child>>node=? selecciona todos los )i$os del nodo conte1tual, cualquiera que
sea su tipo de nodo
attribute>>name selecciona el atributo name del nodo conte1tual
attribute>>Q selecciona todos los atributos del nodo conte1tual
descendant>>para selecciona los elementos para descendientes del nodo
conte1tual
ancestor>>di5 selecciona todos los ancestros di5 del nodo conte1tual
ancestorXorXself>>di5 selecciona los ancestros di5 del nodo conte1tual
y, si el nodo conte1tual es un elemento di5 , el nodo conte1tual tambi/n
descendantXorXself>>para selecciona los elementos para
descendientes del nodo conte1tual y, si el nodo conte1tual es un elemento para ,
el nodo conte1tual tambi/n
self>>para selecciona el nodo conte1tual si este es un elemento para , en
otro caso no selecciona nada
child>>chapter0descendant>>para selecciona los elementos para
descendientes de los elementos chapter )i$os del nodo conte1tual
child>>Q0child>>para selecciona todos los nietos para del nodo
conte1tual
0 selecciona la ra- del documento 2que es siempre el padre del elemento de
documento7
0descendant>>para selecciona todos los elementos para en el mismo
documento que el nodo conte1tual
0descendant>>olist0child>>item selecciona todos los elementos item
que tienen un padre olist y que est/n en el mismo documento que el nodo
conte1tual
child>>paraLposition=?F+M selecciona el primer )i$o para del nodo
conte1tual
child>>paraLposition=?Flast=?M selecciona el &ltimo )i$o para del nodo
conte1tual
child>>paraLposition=?Flast=?X+M selecciona el pen&ltimo )i$o para
del nodo conte1tual
child>>paraLposition=?H+M selecciona todos los )i$os para del nodo
conte1tual sal'o el primero
folloTin1Xsiblin1>>chapterLposition=?F+M selecciona el siguiente
)ermano chapter del nodo conte1tual
precedin1Xsiblin1>>chapterLposition=?F+M selecciona el anterior
)ermano chapter del nodo conte1tual
0descendant>>fi1ureLposition=?F()M selecciona el cuadrag/simo
segundo elemento fi1ure en el documento
0
child>>doc0child>>chapterLposition=?F#M0child>>sectionLposit
ion=?F)M selecciona la segunda section del quinto chapter del elemento
de documento doc
child>>paraLattribute>>t/peF[Tarnin1[M selecciona todos los )i$os
para del nodo conte1tual que tengan un atributo t/pe con 'alor Tarnin1
child>>paraLattribute>>t/peFJTarnin1JMLposition=?F#M
selecciona el quinto )i$o para del nodo conte1tual que tenga un atributo t/pe
con 'alor Tarnin1
child>>paraLposition=?F#MLattribute>>t/peF[Tarnin1[M
selecciona el quinto )i$o para del nodo conte1tual si ese )i$o tiene un atributo
t/pe con 'alor Tarnin1
child>>chapterLchild>>titleFJIntroductionJM selecciona los )i$os
chapter del nodo conte1tual que tengan uno o m!s )i$os title con string4
'alue igual a Introduction
child>>chapterLchild>>titleM selecciona los )i$os chapter del nodo
conte1tual que tengan uno o m!s )i$os title
child>>QLself>>chapter or self>>appendixM selecciona los )i$os
chapter y appendix del nodo conte1tual
child>>QLself>>chapter or self>>appendixM
Lposition=?Flast=?M selecciona el &ltimo )i$o chapter o appendix del
nodo conte1tual
@ay dos tipos de caminos de locali-acin( caminos de locali-acin relati'os y caminos
de locali-acin absolutos.
%n camino de locali-acin relati'o consiste en una secuencia de uno o m!s pasos de
locali-acin separados por 0. .os pasos en un camino de locali-acin relati'o se
componen de i-quierda a derec)a. #ada paso selecciona un con$unto de nodos
relati'os a un nodo conte1tual. %na secuencia inicial de pasos se une al paso siguiente
de la siguiente forma. .a secuencia inicial de pasos selecciona un con$unto de nodos
relati'os a un nodo de conte1to. #ada nodo de ese con$unto se usa como nodo de
conte1to para el siguiente paso. .os distintos con$untos de nodos identificados por ese
paso se unen. El con$unto de nodos identificado por la composicin de pasos es dic)a
unin. 9or e$emplo, child>>di50child>>para selecciona los elementos para )i$os
de los elementos di5 )i$os del nodo conte1tual, o, en otras palabras, los elementos
para nietos que tengan padres di5.
%n camino de locali-acin absoluto consiste en 0 seguido opcionalmente por un
camino de locali-acin relati'o. %na 0 por si misma selecciona el nodo ra- del
documento que contiene al nodo conte1tual. Si es seguida por un camino de
locali-acin relati'o, entonces el camino de locali-acin selecciona el con$unto de
nodos que seleccionara el camino de locali-acin relati'o relati'o al nodo ra- del
documento que contiene al nodo conte1tual.
Location Pats
^1_ .ocation9at) ((X Relati'e.ocation9at)
h Absolute.ocation9at)
^2_ Absolute.ocation9at) ((X OAO Relati'e.ocation9at) Q
h Abbre'iatedAbsolute.ocation9at)
^3_ Relati'e.ocation9at) ((X Step
h Relati'e.ocation9at) OAO Step
h Abbre'iatedRelati'e.ocation9at)
&.1 :asos de localiAacin
%n paso de locali-acin tiene tres partes(
un e$e, que especifica la relacin $er!rquica entre los nodos seleccionados por el
paso de locali-acin y el nodo conte1tual,
una prueba de nodo, que especifica el tipo de nodo y el nombre4e1pandido de
los nodos seleccionados por el paso de locali-acin, y
cero o m!s predicados, que usan e1presiones arbitrarias para refinar a&n m!s el
con$unto de nodos seleccionado por el paso de locali-acin.
.a sinta1is del paso de locali-acin es el nombre de e$e y prueba de nodo separados
por dos caracteres de dos puntos, seguido de cero o m!s e1presiones, cada una entre
par/ntesis cuadrados. 9or e$emplo, en child>>paraLposition=?F+M , child es el
nombre del e$e, para es la prueba de nodo y Lposition=?F+M es un predicado.
El con$unto de nodos seleccionado por el paso de locali-acin es el que resulta de
generar un con$unto de nodos inicial a partir del e$e y prueba de nodo, y a continuacin
filtrar dic)o con$unto por cada uno de los predicados sucesi'amente.
El con$unto de nodos inicial se compone de los nodos que tengan la relacin con el
nodo conte1tual que se especifica en el e$e, y tengan el tipo de nodo y nombre4
e1pandido especificados por la prueba de nodo. 9or e$emplo, un paso de locali-acin
descendant>>para selecciona los elementos para descendientes del nodo
conte1tual( descendant especifica que cada nodo en el con$unto de nodos inicial debe
ser un descendiente del conte1to> para especifica que cada nodo en el con$unto de
nodos inicial debe ser un elemento llamado para . .os e$es disponibles se describen
en ^&.& )1es _ . .as pruebas de nodo disponibles se describen en ^&.3:ruebas de
nodos _. El significado de algunas pruebas de nodos depende del e$e.
El con$unto de nodos inicial se filtra por el primer predicado para generar un nue'o
con$unto de nodos> este nue'o con$unto de nodos es entonces filtrado usando el
segundo predicado, y as sucesi'amente. El con$unto de nodos final es el con$unto de
nodos seleccionado por el paso de locali-acin. El e$e afecta a la forma en que se
e'al&a la e1presin de cada predicado y, por tanto, la sem!ntica de un predicado se
define con respecto a un e$e. I/ase ^&.4 :redicados _.
Location Ste!s
^_ Step ((X A1isSpecifier ?ode<est 9redicateV
h Abbre'iatedStep
^5_ A1isSpecifier ((X A1is?ame O((O
h Abbre'iatedA1isSpecifier
&.& )1es
Est!n disponibles los siguientes e$es(
El e$e child contiene los )i$os del nodo conte1tual
El e$e descendant contiene los descendientes del nodo conte1tual> un
descendiente es un )i$o o el )i$o de un )i$o, etc> de este modo el e$e descendant
nunca contiene nodos atributo o espacio de nombres
El e$e parent contiene el padre del nodo conte1tual, si lo )ay
El e$e ancestor contiene los ancestros del nodo conte1tual> los ancestros del
nodo conte1tual consisten en el padre del nodo conte1tual y el padre del padre,
etc> as, el e$e ancestor siempre incluir! al nodo ra-, sal'o que el nodo
conte1tual sea el nodo ra-
El e$e folloTin1Xsiblin1 contiene todos los siguientes )ermanos del nodo
conte1tual> si el nodo conte1tual es un nodo atributo o un nodo espacio de
nombres, el e$e folloTin1Xsiblin1 est! 'aco
El e$e precedin1Xsiblin1 contiene todos los )ermanos precedentes del nodo
conte1tual> si el nodo conte1tual es un nodo atributo o un nodo espacio de
nombres, el e$e precedin1Xsiblin1 est! 'aco
El e$e folloTin1 contiene todos los nodos del mismo documento que el nodo
conte1tual que est!n despu/s de este seg&n el orden del documento,
e1cluyendo los descendientes y e1cluyendo nodos atributo y nodos espacio de
nombres
El e$e precedin1 contiene todos los nodos del mismo documento que el nodo
conte1tual que est!n antes de este seg&n el orden del documento, e1cluyendo
los ancestros y e1cluyendo nodos atributo y nodos espacio de nombres
El e$e attribute contiene los atributos del nodo conte1tual> el e$e estar! 'aco
a no ser que el nodo conte1tual sea un elemento
El e$e namespace contiene los nodos espacio de nombres del nodo conte1tual>
el e$e estar! 'aco a no ser que el nodo conte1tual sea un elemento
El e$e self contiene simplemente el propio nodo conte1tual
El e$e descendantXorXself contiene el nodo conte1tual y sus descendientes
El e$e ancestorXorXself contiene el nodo conte1tual y sus ancestros> as, el
e$e ancestor4or4self siempre incluir! el nodo ra-
>9T$D .os e$es ancestor, descendant,folloTin1, precedin1 y self particionan
un documento 2ignorando los nodos atributo y espacio de nombres7( no se superponen
y $untos contienen todos los nodos del documento.
Axes
^"_ A1is?ame ((X OancestorO
h Oancestor4or4selfO
h OattributeO
h Oc)ildO
h OdescendantO
h Odescendant4or4selfO
h Ofollo*ingO
h Ofollo*ing4siblingO
h OnamespaceO
h OparentO
h OprecedingO
h Opreceding4siblingO
h OselfO
&.3 :ruebas de nodo
#ada e$e tiene un tipo principal de nodo. Si un e$e puede contener elementos,
entonces el tipo principal de nodo es elemento> en otro caso, ser! el tipo de los nodos
que el e$e contiene. As,
9ara el e$e attribute, el tipo de nodo principal es atributo.
9ara el e$e namespace, el tipo de nodo principal es espacio de nombres.
9ara los dem!s e$es, el tipo de nodo principal es elemento.
%na prueba de nodo que sea un T?ame 2nombre calificado7 es 'erdadera si y slo si
el tipo del nodo 2'/ase ^5 'odelo de +atos _7 es el tipo principal de nodo y tiene un
nombre e1pandido igual al nombre e1pandido especificado por el T?ame . 9or
e$emplo, child>>para selecciona los elementos para )i$os del nodo conte1tual> si el
nodo conte1tual no tiene ning&n )i$o para , seleccionar! un con$unto de nodos 'aco.
attribute>>href selecciona el atributo href del nodo conte1tual> si el nodo
conte1tual no tiene atributo href, seleccionar! un con$unto de nodos 'aco.
%n T?ame en la prueba de nodo se e1pande en un nombre e1pandido utili-ando las
declaraciones de espacio de nombres del conte1to de la e1presin. Esta es la misma
forma en que se )ace la e1pansin para los nombres de tipos de elemento en las
etiquetas de inicio y fin sal'o que el espacio de nombres por defecto declarado con
xmlns no se utili-a( si el T?ame no tiene prefi$o, entonces el %R+ de espacio de
nombres es nulo 2esta es la misma forma en que se e1panden los nombres de
atributos7. Ser! un error que el T?ame tenga un prefi$o para el cual no )aya una
declaracin de espacio de nombres en el conte1to de la e1presin.
%na prueba de nodo Q es 'erdadera para cualquier nodo del tipo principal de nodo. 9or
e$emplo, child>>Q seleccionar! todo elemento )i$o del nodo conte1tual, y
attribute>>Q seleccionar! todos los atributos del nodo conte1tual.
%na prueba de nodo puede tener la forma ?#?ame>Q. En este caso, el prefi$o es
e1pandido de la misma forma que con un T?ame , utili-ando las declaraciones de
espacio de nombres del conte1to. Ser! un error que no )aya una declaracin de
espacio de nombres para el prefi$o en el conte1to de la e1presin. .a prueba de nodo
ser! 'erdadera para cualquier nodo del tipo principal cuyo e1panded4name tenga el %R+
de espacio de nombres al qu/ el prefi$o se e1pande, con independencia de la parte
local del nombre.
.a prueba de nodo text=? es 'erdadera para cualquier nodo de te1to. 9or e$emplo,
child>>text=? seleccionar! los nodos de te1to )i$os del nodo conte1tual.
An!logamente, la prueba de nodo comment=? es 'erdadera para cualquier nodo
comentario, y la prueba de nodo processin1Xinstruction=? es 'erdadera para
cualquier instruccin de procesamiento. .a prueba processin1Xinstruction=?
puede tener un argumento que sea .iteral> en este caso, ser! 'erdadera para cualquier
instruccin de procesamiento que tenga un nombre igual al 'alor del .iteral.
%na prueba de nodo node=? es 'erdadera para cualquier nodo de cualquier tipo que
sea.
^C_ ?ode<est ((X ?ame<est
h ?ode<ype O2O O7O
h Oprocessing4instructionO O2O .iteral O7O
&.4 :redicados
.os e$es est!n orientados )acia adelante o )acia atr!s. %n e$e que slo puede contener
el nodo conte1tual o nodos que est!n a continuacin del nodo conte1tual seg&n el
orden de documento es un e$e )acia adelante. %n e$e que slo puede contener el nodo
conte1tual o nodos que est!n antes del nodo conte1tual seg&n el orden de documento
es un e$e )acia atr!s. As, los e$es ancestor, ancestor4or4self, preceding, y preceding4
sibling son e$es )acia atr!s> todos los dem!s e$es son )acia adelante. 3ado que el e$e
self siempre tendr! a lo sumo un nodo, no supone ninguna diferencia que sea un e$e
)acia adelante o )acia atr!s. .a posicin de proIimidad de un miembro de un
con$unto de nodos con respecto a un e$e se define como la posicin del nodo en el
con$unto ordenado seg&n el orden de documento si el e$e es )acia adelante y seg&n el
orden in'erso de documento si el e$e es )acia atr!s. .a primera posicin es 1.
%n predicado filtra un con$unto de nodos con respecto a un e$e para producir un nue'o
con$unto de nodos. 9or cada nodo en el con$unto de nodos a filtrar, la 9redicateE1pr es
e'aluada con dic)o nodo como nodo conte1tual, con el n&mero de nodos en el con$unto
de nodos como tama8o conte1tual, y con la posicin de pro1imidad del nodo en el
con$unto de nodos respecto al e$e como posicin conte1tual> si 9redicateE1pr se e'al&a
como 'erdadera para ese nodo, el nodo se incluye en el nue'o con$unto de nodos> en
otro caso, no se incluye.
%na 9redicateE1pr se e'al&a e'aluando la E1pr y con'irtiendo el resultado en un
booleano. Si el resultado es un n&mero, se con'ertir! en 'erdadero si el n&mero es
igual a la posicin conte1tual y se con'ertir! en falso en otro caso> si el resultado no es
un n&mero, entonces el resultado se con'ertir! igual que con una llamada a la funcin
boolean. As un camino de locali-acin paraL,M es equi'alente a
paraLposition=?F,M .
Predicates
^H_ 9redicate ((X O^O 9redicateE1pr O_O
^F_ 9redicateE1pr ((X E1pr
&.5 SintaIis abreviada
@e aqu algunos e$emplos de caminos de locali-acin usando la sinta1is abre'iada(
para selecciona los elementos para )i$os del nodo conte1tual
Q selecciona todos los elementos )i$os del nodo conte1tual
text=? selecciona todos los nodos te1to )i$os del nodo conte1tual
]name selecciona el atributo name del nodo conte1tual
]Q selecciona todos los atributos del nodo conte1tual
paraL+M selecciona el primer )i$o para del nodo conte1tual
paraLlast=?M selecciona el &ltimo )i$o para del nodo conte1tual
Q0para selecciona todos los nietos para del nodo conte1tual
0doc0chapterL#M0sectionL)M selecciona la segunda section del quinto
chapter del doc
chapter00para selecciona los elementos para descendientes de los
elementos chapter )i$os del nodo conte1tual
00para selecciona todos los descendientes para de la ra- del documento y por
tanto selecciona todos los elementos para que est/n en el mismo documento
que el nodo conte1tual
00olist0item selecciona todos los elementos item que est/n en el mismo
documento que el nodo conte1tual y tengan un padre olist
7 selecciona el nodo conte1tual
700para selecciona los elementos para descendientes del nodo conte1tual
77 selecciona el padre del nodo conte1tual
770]lan1 selecciona el atributo lan1 del padre del nodo conte1tual
paraL]t/peF[Tarnin1[M selecciona todos los )i$os para del nodo conte1tual
que tengan un atributo t/pe con 'alor Tarnin1
paraL]t/peF[Tarnin1[ML#M selecciona el quinto )i$o para del nodo
conte1tual que tenga un atributo t/pe con 'alor Tarnin1
paraL#ML]t/peF[Tarnin1[M selecciona el quinto )i$o para del nodo
conte1tual si dic)o )i$o tiene un atributo t/pe con 'alor Tarnin1
chapterLtitleF[Introduction[M selecciona los )i$os chapter del nodo
conte1tual que tengan uno o m!s )i$os title con 'alor de cadena igual a
Introduction
chapterLtitleM selecciona los )i$os chapter del nodo conte1tual que tengan
uno o m!s )i$os title
emplo/eeL]secretar/ and ]assistantM selecciona todos los )i$os
emplo/ee del nodo conte1tual que tengan un atributo secretar/ y un atributo
assistant
.a abre'iatura m!s importante es que child>> puede ser omitida en un paso de
locali-acin. A efectos pr!cticos, child es el e$e por defecto. 9or e$emplo, un camino
de locali-acin di50para es abre'iatura de child>>di50child>>para.
@ay tambi/n una abre'iatura para atributos( attribute>> puede abre'iarse como ].
9or e$emplo, un camino de locali-acin paraL]t/peF[Tarnin1[M es abre'iatura de
child>>paraLattribute>>t/peF[Tarnin1[M y por tanto selecciona )i$os para
con un atributo t/pe con 'alor igual a Tarnin1.
00 es abre'iatura de 0descendantXorXself>>node=?0 . 9or e$emplo,00para es
abre'iatura de 0descendantXorXself>>node=?0child>>para y por tanto
seleccionar! cualquier elemento para en el documento 2incluso un elemento para que
sea el elemento de documento ser! seleccionado por 00para ya que el nodo elemento
de documento es )i$o del nodo ra-7> di500para es abre'iatura de
child>>di50descendantXorXself>>node=?0child>>para y por tanto
seleccionar! todos los descendientes para de )i$os di5.
>9T$D El camino de locali-acin 00paraL+M no significa lo mismo que el camino de
locali-acin 0descendant>>paraL+M . Este &ltimo selecciona el primer descendiente
elemento para> el primero selecciona todos los descendientes elementos para que
sean el primer )i$o para de sus padres.
%n paso de locali-acin 7 es abre'iatura de self>>node=?. Esto es particularmente
&til en con$uncin con 00. 9or e$emplo, el camino de locali-acin700para es
abre'iatura de
self>>node=?0descendantXorXself>>node=?0child>>para
y por tanto seleccionar! todos los descendientes elementos para del nodo conte1tual.
An!logamente, un paso de locali-acin 77 es abre'iatura de parent>>node=?. 9or
e$emplo, 770title es abre'iatura de parent>>node=?0child>>title y por tanto
seleccionar! los )i$os title del padre del nodo conte1tual.
A""re#iations
^1G_ Abbre'iatedAbsolute.ocation9at) ((X OAAO Relati'e.ocation9at)
^11_ Abbre'iatedRelati'e.ocation9at) ((X Relati'e.ocation9at) OAAO Step
^12_ Abbre'iatedStep ((X O.O
h O..O
^13_ Abbre'iatedA1isSpecifier ((X OiOQ
? E$resiones
3.1 7undamentos
%na IariableReference se e'al&a como el 'alor al cual el nombre de 'ariable est!
asignado en el con$unto de asignaciones de 'ariables en el conte1to. 5curre un error si
el nombre de 'ariable no est! asignado a ning&n 'alor en el con$unto de asignaciones
de 'ariables en el conte1to de la e1presin.
9ueden utili-arse par/ntesis para agrupar.
^1_ E1pr ((X 5rE1pr
^15_ 9rimaryE1pr ((X IariableReference
h O2O E1pr O7O
h .iteral
h ?umber
h :unction#all
3.& lamadas a funciones
%na e1presin :unction#all se e'al&a utili-ando el :unction?ame para identificarla en
la librera de funciones en el conte1to de e'aluacin de la e1presin, e'aluando cada
uno de los Arguments , con'irtiendo cada argumento al tipo requerido por la funcin, y
finalmente llamando a la funcin, pas!ndole los argumentos con'ertidos. 5curre un
error si el n&mero de argumentos es errneo o si un argumento no puede ser con'ertido
al tipo requerido. El resultado de la e1presin :unction#all es el resultado de'uelto por
la funcin.
.os argumentos se con'ierten al tipo cadena como si se aplicase la funcin strin,. .os
argumentos se con'ierten al tipo n&mero como si se aplicase la funcin number . .os
argumentos se con'ierten al tipo booleano como si se aplicase la funcin boolean . %n
argumento que no sea de tipo con$unto de nodos no puede ser con'ertido a con$unto de
nodos.
^1"_ :unction#all ((X :unction?ame O2O 2 Argument 2 O,O Argument 7V 7Q O7O
^1C_ Argument ((X E1pr
3.3 Con1untos de nodos
9uede usarse un camino de locali-acin como e1presin. .a e1presin de'uel'e el
con$unto de nodos seleccionados por el camino.
El operador Z calcula la unin de sus operandos, que deben ser con$untos de nodos.
Se utili-an 9redicates para filtrar e1presiones del mismo modo que se usan en los
caminos de locali-acin. 5curre un error si la e1presin a filtrar no se e'al&a en un
con$unto de nodos. El 9redicate filtra el con$unto de nodos con respecto al e$e c)ild.
>9T$D El significado de un 9redicate depende crucialmente de cual es el e$e aplicable.
9or e$emplo, precedin1>>fooL+M de'uel'e el primer elemento foo en orden
inverso de documento, porque el e$e que se aplica al predicado L+M es el e$e preceding>
por el contrario, =precedin1>>foo?L+M de'uel'e el primer elemento foo en orden
de documento, porque el e$e que se aplica al predicado L+M es el e$e c)ild.
.os operadores 0 y 00 componen una e1presin y un camino de locali-acin relati'o.
5curre un error si la e1presin no se e'al&a en un con$unto de nodos. El operador 0
compone del mismo modo que cuando 0 se utili-a en un camino de locali-acin. Al
igual que en los caminos de locali-acin, 00 es una abre'iatura de 0descendantXorX
self>>node=?0 .
?o )ay ning&n tipo de ob$eto que pueda ser con'ertido a con$unto de nodos.
^1H_ %nionE1pr ((X 9at)E1pr
h %nionE1pr OhO 9at)E1pr
^1F_ 9at)E1pr ((X .ocation9at)
h :ilterE1pr
h :ilterE1pr OAO Relati'e.ocation9at)
h :ilterE1pr OAAO Relati'e.ocation9at)
^2G_ :ilterE1pr ((X 9rimaryE1pr
h :ilterE1pr 9redicate
3.4 ;ooleanos
%n ob$eto de tipo booleano puede tener uno de dos 'alores, 'erdadero o falso.
%na e1presin or se e'al&a e'aluando cada operando y con'irtiendo su 'alor en
booleano como si se aplicase la funcin boolean. El resultado es 'erdadero si alguno
de los dos 'alores es 'erdadero y falso en otro caso. El operando de la derec)a no se
e'al&a si el operando de la i-quierda se e'al&a como 'erdadero.
%na e1presin and se e'al&a e'aluando cada operando y con'irtiendo su 'alor en
booleano como si se aplicase la funcin boolean. El resultado es 'erdadero si ambos
'alores son 'erdaderos y falso en otro caso. El operando de la derec)a no se e'al&a si
el operando de la i-quierda se e'al&a como falso.
%na EqualityE1pr 2que no sea simplemente una RelationalE1pr7 o una RelationalE1pr
2que no sea simplemente una Additi'eE1pr 7 se e'al&an comparando los ob$etos que
resultan de e'aluar los dos operandos. .a comparacin de los ob$etos resultantes se
define en los tres p!rrafos siguientes. 9rimero, las comparaciones que in'olucran
con$untos de nodos se definen en t/rminos de comparaciones que no los in'olucran>
esto se define uniformemente para F, \F, KF,K , HF y H. En segundo lugar, las
comparaciones que no in'olucran con$untos de nodos se definen para F y \F. En tercer
lugar, las comparaciones que no in'olucran con$untos de nodos se definen para KF ,K,
HF y H.
Si los dos ob$etos a comparar son con$untos de nodos, entonces la comparacin ser!
'erdadera si y slo si )ay un nodo en el primer con$unto de nodos y un nodo en el
segundo con$unto de nodos tales que el resultado de reali-ar la comparacin de los
'alores de cadena de los dos nodos es 'erdadero. Si uno de los ob$etos a comparar es
un con$unto de nodos y el otro es un n&mero, entonces la comparacin ser! 'erdadera
si y slo si )ay un nodo en el con$unto tal que el resultado de reali-ar la comparacin
entre el n&mero a comparar y el resultado de con'ertir el 'alor de cadena de dic)o nodo
en un n&mero utili-ando la funcin number es 'erdadero. Si un ob$eto a comparar es
un con$unto de nodos y el otro es una cadena, entonces la comparacin ser! 'erdadera
si y slo si )ay un nodo en el con$unto de nodos tal que el resultado de reali-ar la
comparacin entre el 'alor de cadena del nodo y la otra cadena es 'erdadero. Si un
ob$eto a comparar es un con$unto de nodos y el otro es un booleano, entonces la
comparacin ser! 'erdadera si y slo si el resultado de reali-ar la comparacin entre el
booleano y el resultado de con'ertir el con$unto de nodos en un booleano usando la
funcin boolean es 'erdadero.
#uando ninguno de los ob$etos a comparar es un con$unto de nodos y el operador es F
o \F, entonces los ob$etos se comparan con'irti/ndolos en un tipo com&n tal como
sigue y compar!ndolos a continuacin. Si al menos un ob$eto a comparar es booleano,
entonces ambos ob$etos a comparar se con'ierten en booleanos como si se aplicase la
funcin boolean . En otro caso, si al menos un ob$eto a comparar es un n&mero,
entonces ambos ob$etos a comparar se con'ierten en n&meros como si se aplicase la
funcin number . En otro caso, ambos ob$etos a comparar se con'ierten en cadenas
como si se aplicase la funcin strin, . .a comparacin F ser! 'erdadera si y slo si los
ob$etos son iguales> la comparacin \F ser! 'erdadera si y slo si los ob$etos no son
iguales. .os n&meros se comparan para la igualdad de acuerdo con +EEE C5 ^+EEE
C5_. 3os booleanos son iguales si ambos son 'erdaderos o ambos son falsos. 3os
cadenas son iguales si y slo si consisten en la misma secuencia de caracteres %#S.
>9T$D Si ^x est! asignada a un con$unto de nodos, entonces ^xF[foo[ no significa lo
mismo que not=^x\F[foo[? ( la primera es 'erdadera si y slo si alg/n nodo en ^x
tiene el 'alor de cadena foo> la segunda es 'erdadera si y slo si todos los nodos en
^x tienen el 'alor de cadena foo.
#uando ninguno de los ob$etos a comparar es un con$unto de nodos y el operador es
KF, K, HF o H, entonces los ob$etos se comparan con'irtiendo ambos ob$etos en
n&meros y comparando los n&meros de acuerdo con +EEE C5. .a comparacin K ser!
'erdadera si y slo si el primer n&mero es menor que el segundo. .a comparacin KF
ser! 'erdadera si y slo si el primer n&mero es menor o igual que el segundo. .a
comparacin H ser! 'erdadera si y slo si el primer n&mero es mayor que el segundo.
.a comparacin HF ser! 'erdadera si y slo si el primer n&mero es mayor o igual que el
segundo.
>9T$D #uando una e1presin E9at) aparece en un documento E6., cualquier
operador K o KF debe ser RescapadoR de acuerdo con las reglas de E6. 1.G usando,
por e$emplo,YltR y YltRF. En el siguiente e$emplo el 'alor del atributo test es una
e1presin E9at)(
Kxsl>if testF[]5alue YltR +*[H777K0xsl>ifH
^21_ 5rE1pr ((X AndE1pr
h 5rE1pr OorO AndE1pr
^22_ AndE1pr ((X EqualityE1pr
h AndE1pr OandO EqualityE1pr
^23_ EqualityE1pr ((X RelationalE1pr
h EqualityE1pr OXO RelationalE1pr
h EqualityE1pr OcXO RelationalE1pr
^2_ RelationalE1pr ((X Additi'eE1pr
h RelationalE1pr OYO Additi'eE1pr
h RelationalE1pr OZO Additi'eE1pr
h RelationalE1pr OYXO Additi'eE1pr
h RelationalE1pr OZXO Additi'eE1pr
>9T$D El efecto de la gram!tica de arriba es que el orden de precedencia sea 2de
menor a mayor precedencia7(
or
and
F, \F
KF, K, HF,H
y los operadores son todos asociati'os por la i-quierda. 9or e$emplo, , H ) H + es
equi'alente a =,H )? H +, que se e'al&a como falso.
3.5 >?meros
%n n&mero representa un n&mero de punto flotante. %n n&mero puede tener cualquier
'alor de doble precisin en formato de " bits +EEE C5 ^+EEE C5_. Estos incluyen un
'alor especial R?ot4a4?umberR 2?a?7, infinitos positi'o y negati'o, y ceros positi'o y
negati'o. I/ase la Section .2.3 de ^K.S_ para obtener un resumen de las reglas cla'e
del est!ndar +EEE C5.
.os operadores num/ricos con'ierten sus operandos en n&meros como si se aplicase
la funcin number .
El operador O reali-a la adicin.
El operador binario X reali-a la substraccin. El operador unario X reali-a el cambio de
signo. 3ebe notarse que X* se e'al&a como cero negati'o.
>9T$D 3ado que E6. permite X en nombres, el operador X necesitar! tpicamente ser
precedido por espacio en blanco. 9or eEemplo$ fooXbar se e'al&a como un con$unto
de nodos conteniendo los elementos )i$o llamados fooXbar> foo X bar se e'al&a
como la diferencia entre el resultado de con'ertir en n&mero el 'alor de cadena del
primer elemento )i$o foo y el resultado de con'ertir en n&mero el 'alor de cadena del
primer )i$o bar.
El operador V reali-a la multiplicacin en punto flotante de acuerdo con +EEE C5. 3ebe
notarse que, si el resultado no es ?a?, ser! positi'o si y slo si ambos operandos
tienen el mismo signo.
El operador di5 reali-a la di'isin en punto flotante de acuerdo con +EEE C5. 3ebe
notarse que, si el resultado no es ?a?, ser! positi'o si y slo si ambos operandos
tienen el mismo signo.
El operador mod de'uel'e el resto de una di'isin con truncamiento 2di'isin entera7.
9or e$emplo,
# mod ) de'uel'e +
# mod X) de'uel'e +
X# mod ) de'uel'e X+
X# mod X) de'uel'e X+
>9T$D Este operador es el mismo que el operador _ en Ka'a y E#6AScript.
>9T$D Esta operacin no es la misma que la operacin remainder de +EEE C5, la cual
de'uel'e el resto de una di'isin con redondeo.
N$%eric Ex!ressions
^25_ Additi'eE1pr ((X 6ultiplicati'eE1pr
h Additi'eE1pr OgO 6ultiplicati'eE1pr
h Additi'eE1pr O4O 6ultiplicati'eE1pr
^2"_ 6ultiplicati'eE1pr ((X %naryE1pr
h 6ultiplicati'eE1pr 6ultiply5perator %naryE1pr
h 6ultiplicati'eE1pr Odi'O %naryE1pr
h 6ultiplicati'eE1pr OmodO %naryE1pr
^2C_ %naryE1pr ((X %nionE1pr
h O4O %naryE1pr
3.! Cadenas
.as cadenas consisten en una secuencia de cero o m!s caracteres, donde los
caracteres se definen seg&n la Recomendacin E6. ^E6._. %n caracter indi'idual en
E9at) se corresponde pues con un &nico caracter abstracto %nicode con un &nico
'alor escalar %nicode correspondiente 2'/ase ^%nicode_7> esto no es lo mismo que un
'alor de cdigo %nicode de 1" bits( .a representacin codificada en %nicode de un
caracter abstracto con 'alor escalar %nicode mayor que %g:::: es un par de 'alores
de cdigo %nicode de 1" bits 2un par substituto7. En muc)os lengua$es de
programacin, una cadena se representa mediante una secuencia de 'alores de cdigo
%nicode de 1" bits> las implementaciones de E9at) en tales lengua$es deber!n
preocuparse de asegurar que un par substituto sea correctamente tratado como un
solo caracter E9at).
>9T$D En %nicode puede )aber dos cadenas que deberan ser tratadas como id/nticas
a pesar de consistir en distintas secuencias de caracteres abstractos %nicode. 9or
e$emplo, algunos caracteres acentuados se pueden representar tanto de forma
precompuesta como descompuesta. 9or consiguiente, las e1presiones E9at) pueden
de'ol'er resultados inesperados a no ser que los caracteres en la e1presin E9at) y en
el documento E6. se )ayan normali-ado a una forma cannica. I/ase ^#)aracter
6odel_.
3." )structura EIica
En la Rto0eni-acinR, siempre se de'uel'e el to0en m!s largo posible.
9ara facilitar la lectura, se pueden utili-ar espacios en blanco en las e1presiones
aunque no est/n e1plcitamente permitidos por la gram!tica> Se puede a8adir
libremente E1prU)itespace en las e1presiones antes o despu/s de cualquier
E1pr<o0en .
.as siguientes reglas especiales de Rto0eni-acinR se deben aplicar en el orden
especificado para romper la ambig;edad de la gram!tica de la e1presin E1pr<o0en (
Si e1iste un to0en anterior y este no es ], >>, = ,L, $ o un 5perator , entonces
un Q se deber! reconocer como un 6ultiply5perator y un ?#?ame se deber!
reconocer como un 5perator?ame .
Si el caracter que sigue a un T?ame 2qui-! tras la interposicin de
E1prU)itespace 7 es =, entonces el to0en se deber! reconocer como un
?ode<ype o un :unction?ame.
Si los dos caracteres siguientes a un ?#?ame 2qui-! tras la interposicin de
E1prU)itespace 7 son >>, entonces el to0en se deber! reconocer como un
A1is?ame.
En otro caso, el to0en no se deber! reconocer como un 6ultiply5perator, un
5perator?ame , un ?ode<ype, un :unction?ame , o un A1is?ame.
Ex!ression Lexical Str$ct$re
^2H_ E1pr<o0en ((X O2O h O7O h O^O h O_O h O.O h O..O h OiO h O,O h O((O
h ?ame<est
h ?ode<ype
h 5perator
h :unction?ame
h A1is?ame
h .iteral
h ?umber
h IariableReference
^2F_ .iteral ((X ORO ^jR_V ORO
h ROR ^jO_V ROR
^3G_ ?umber ((X 3igits 2O.O 3igitsQ7Q
h O.O 3igits
^31_ 3igits ((X ^G4F_g
^32_ 5perator ((X 5perator?ame
h 6ultiply5perator
h OAO h OAAO h OhO h OgO hO4O h OXO h OcXO h OYO h OYXO h OZO h OZXO
^33_ 5perator?ame ((X OandO h OorO h OmodO h Odi'O
^3_ 6ultiply5perator ((X OVO
^35_ :unction?ame ((X T?ame4 ?ode<ype
^3"_ IariableReference ((X O]O T?ame
^3C_ ?ame<est ((X OVO
h ?#?ame O(O OVO
h T?ame
^3H_ ?ode<ype ((X OcommentO
h Ote1tO
h Oprocessing4instructionO
h OnodeO
^3F_ E1prU)itespace ((X S
@ Biblioteca b2sica de funciones
En esta seccin se describen funciones que las implementaciones de E9at) deben
incluir siempre en la biblioteca de funciones que se usa para e'aluar e1presiones.
#ada funcin en la biblioteca se especifica utili-ando un prototipo de funcin, que da el
tipo de'uelto, el nombre de la funcin y el tipo de los argumentos. Si un tipo de
argumento es seguido por un signo de interrogacin, entonces el argumento es
opcional> en otro caso, el argumento es obligatorio.
4.1 7unciones de con1untos de nodos
7unctionD numberlast27
.a funcin last de'uel'e un n&mero igual al tama8o conte1tual del conte1to de
e'aluacin de la e1presin.
7unctionD numberposition27
.a funcin position de'uel'e un n&mero igual a la posicin conte1tual del conte1to de
e'aluacin de la e1presin.
7unctionD numbercount2node0set 7
.a funcin count de'uel'e el n&mero de nodos en el con$unto de nodos argumento.
7unctionD node0setid2object 7
.a funcin id selecciona elementos mediante su identificador &nico 2'/ase ^ 5.&.1
Identificadores ?nicos _7. #uando el argumento de id es de tipo con$unto de nodos,
entonces el resultado es la unin de los resultados de aplicar id a los 'alores de cadena
de cada uno de los nodos en el con$unto de nodos argumento. #uando el argumento de
id es de cualquier otro tipo, el argumento se con'ierte en cadena como si se aplicase la
funcin strin,> la cadena es di'idida en una lista de to0ens separados por espacios en
blanco 2el espacio en blanco es cualquier secuencia de caracteres que se a$uste a la
regla de produccin S7 > el resultado es un con$unto de nodos conteniendo los
elementos en el mismo documento que el nodo conte1tual que tengan un identificador
&nico igual a alguno de los to0ens de la lista.
id=[foo[? selecciona el elemento con identificador &nico foo
id=[foo[?0child>>paraLposition=?F#M selecciona el quinto )i$o para
del elemento con identificador &nico foo
7unctionD stringlocal-name2 node0setQ7
.a funcin local-name de'uel'e la parte local del nombre e1pandido del nodo, en el
con$unto de nodos argumento, que es el primero en orden de documento. Si el
con$unto de nodos argumento es 'aco o el primer nodo no tiene nombre e1pandido, se
de'uel'e una cadena 'aca. Si se omite el argumento, toma por defecto un con$unto de
nodos con el nodo conte1tual como &nico miembro.
7unctionD stringnamespace-uri2node0setQ7
.a funcin namespace-uri de'uel'e el %R+ del espacio de nombres del nombre
e1pandido del nodo, en el con$unto de nodos argumento, que es el primero en orden de
documento. Si el con$unto de nodos argumento es 'aco, el primer nodo no tiene
nombre e1pandido , o el %R+ del espacio de nombres del nombre e1pandido es nulo, se
de'uel'e una cadena 'aca. Si se omite el argumento, toma por defecto un con$unto de
nodos con el nodo conte1tual como &nico miembro.
>9T$D .a cadena de'uelta por la funcin namespace-uri ser! 'aca e1cepto para
nodos elemento y nodos atributo.
7unctionD stringname2node0set Q7
.a funcin name de'uel'e una cadena conteniendo un T?ame que representa el
nombre e1pandido del nodo, en el con$unto de nodos argumento, que es el primero en
orden de documento. El T?ame debe representar al nombre e1pandido con respecto a
las declaraciones de espacio de nombres con efecto sobre el nodo cuyo nombre
e1pandido se est! representando. Este ser!, tpicamente, el T?ame que apareca en
la fuente E6.. Esto no es necesariamente as si )ay declaraciones de espacio de
nombres, con efecto sobre el nodo, que asocien m&ltiples prefi$os con el mismo espacio
de nombres. Sin embargo, las implementaciones pueden incluir informacin sobre el
prefi$o original en su representacin de los nodos> en este caso, la implementacin
puede asegurarse de que la cadena de'uelta sea siempre la misma que el T?ame
utili-ado en la fuente E6.. Si el con$unto de nodos argumento es 'aco o el primer nodo
no tiene nombre e1pandido, se de'uel'e una cadena 'aca. Si se omite el argumento,
toma por defecto un con$unto de nodos con el nodo conte1tual como &nico miembro.
>9T$D .a cadena de'uelta por la funcin name ser! la misma que la cadena de'uelta
por la funcin local-name sal'o para nodos elemento y nodos atributo.
4.& 7unciones de cadenas
7unctionD stringstrin,2 objectQ7
.a funcin strin, con'ierte un ob$eto en cadena del siguiente modo(
%n con$unto de nodos se con'ierte en cadena de'ol'iendo el 'alor de cadena
del nodo, en el con$unto de nodos, que es el primero en orden de documento. Si
el con$unto de nodos es 'aco, se de'uel'e una cadena 'aca.
%n n&mero se con'ierte en cadena del siguiente modo
o ?a? se con'ierte en la cadena NaN
o el cero positi'o se con'ierte en la cadena *
o el cero negati'o se con'ierte en la cadena *
o el infinito positi'o se con'ierte en la cadena Infinit/
o el infinito negati'o se con'ierte en la cadena XInfinit/
o Si el n&mero es un entero, el n&mero se representa en forma decimal
como un ?umber sin punto decimal ni ceros a la i-quierda, precedido con
un signo menos 2 X7 si el n&mero es negati'o
o En otro caso, el n&mero se representa en forma decimal como un
?umber incluyendo el punto decimal con al menos un dgito antes del
punto decimal y al menos un dgito despu/s del punto decimal, precedido
por un signo menos 2X 7 si el n&mero es negati'o> no debe )aber ceros a
la i-quierda antes del punto decimal sal'o qui-! el dgito obligatorio
inmediatamente anterior al punto decimal> a continuacin del dgito
obligatorio tras el punto decimal deber! )aber tantos, pero slo tantos,
dgitos adicionales como sean necesarios para distinguir singularmente el
n&mero de todos los dem!s 'alores num/ricos en +EEE C5.
El 'alor falso booleano se con'ierte en la cadena false. El 'alor 'erdadero
booleano se con'ierte en la cadena true.
%n ob$eto de un tipo distinto de los cuatro tipos b!sicos se con'ierte en cadena
de una forma dependiente del tipo en cuestin.
Si se omite el argumento, toma por defecto un con$unto de nodos con el nodo
conte1tual como &nico miembro.
>9T$D .a funcin strin1 no est! pensada para con'ertir n&meros en cadenas para su
presentacin al usuario. .a funcin formatXnumber y el elemento xsl>number en
^ES.<_ proporcionan esta funcionalidad.
7unctionD stringconcat2string, string, stringV7
.a funcin concat de'uel'e la concatenacin de sus argumentos.
7unctionD booleanstarts-Hith2string, string 7
.a funcin starts-Hith de'uel'e 'erdadero si la primera cadena argumento empie-a
con la segunda cadena argumento, y de'uel'e falso en otro caso.
Si el segundo argumento es la cadena 'aca, entonces se de'uel'e 'erdadero.
7unctionD booleancontains2string, string7
.a funcin contains de'uel'e 'erdadero si la primera cadena argumento contiene a la
segunda cadena argumento, y de'uel'e falso en otro caso.
Si el segundo argumento es la cadena 'aca, entonces se de'uel'e 'erdadero.
7unctionD stringsubstrin,-before2string, string 7
.a funcin substrin,-before de'uel'e la subcadena de la primera cadena argumento
que precede a la primera aparicin de la segunda cadena argumento en la primera
cadena argumento, o la cadena 'aca si la primera cadena argumento no contiene a la
segunda cadena argumento. 9or e$emplo, substrin1X
before=[+&&&0*(0*+[$[0[? de'uel'e +&&&.
Si el segundo argumento es la cadena 'aca, entonces se de'uel'e la cadena 'aca.
7unctionD stringsubstrin,-after2string, string 7
.a funcin substrin,-after de'uel'e la subcadena de la primera cadena argumento que
sigue a la primera aparicin de la segunda cadena argumento en la primera cadena
argumento, o la cadena 'aca si la primera cadena argumento no contiene a la segunda
cadena argumento. 9or e$emplo, substrin1Xafter=[+&&&0*(0*+[$[0[? de'uel'e
*(0*+, y substrin1Xafter=[+&&&0*(0*+[$[+&[? de'uel'e &&0*(0*+.
Si el segundo argumento es la cadena 'aca, entonces se de'uel'e la primera cadena
argumento.
7unctionD stringsubstrin,2string, number, numberQ7
.a funcin substrin, de'uel'e la subcadena del primer argumento que comien-a en la
posicin especificada en el segundo argumento y tiene la longitud especificada en el
tercer argumento. 9or e$emplo, substrin1=[+),(#[$)$,? de'uel'e [),([. Si no se
especifica el tercer argumento, de'uel'e la subcadena que comien-a en la posicin
especificada en el segundo argumento y contin&a )asta el final de la cadena. 9or
e$emplo, substrin1=[+),(#[$)? de'uel'e [),(#[.
6!s e1actamente, se considera que cada caracter en la cadena 2'/ase ^3.! Strin,s _7
tiene una posicin num/rica( la posicin del primer caracter es 1, la posicin del
segundo caracter es 2 y as sucesi'amente.
>9T$D Esto difiere de Ka'a y E#6AScript, en donde el m/todo !trin17substrin1
trata la posicin del primer caracter como G.
.a subcadena de'uelta contiene aquellos caracteres cuya posicin es mayor o igual
que el 'alor redondeado del segundo argumento y, si se )a especificado un tercer
argumento, menor que la suma de los 'alores redondeados del segundo y tercer
argumento> las comparaciones y la suma utili-adas en lo anterior siguen las reglas del
est!ndar +EEEC5> el redondeo se reali-a como si se aplicase la funcin round. .os
siguientes e$emplos ilustran 'arios casos inusuales(
substrin1=[+),(#[$ +7#$ )7'? de'uel'e [),([
substrin1=[+),(#[$ *$ ,? de'uel'e [+)[
substrin1=[+),(#[$ * di5 *$ ,? de'uel'e [[
substrin1=[+),(#[$ +$ * di5 *? de'uel'e [[
substrin1=[+),(#[$ X()$ + di5 *? de'uel'e [+),(#[
substrin1=[+),(#[$ X+ di5 *$ + di5 *? de'uel'e [[
7unctionD numberstrin,-len,th2stringQ7
.a funcin strin,-len,th de'uel'e el n&mero de caracteres en la cadena 2'/ase ^3.!
Cadenas _7. Si se omite el argumento, toma por defecto el nodo conte1tual con'ertido
en cadena, es decir, el 'alor de cadena del nodo conte1tual.
7unctionD stringnormaliAe-space2stringQ7
.a funcin normaliAe-space de'uel'e la cadena argumento con el espacio en blanco
normali-ado mediante la eliminacin del que se encuentra al principio y al final y la
substitucin de secuencias de caracteres de espacio en blanco por un solo espacio. .os
caracteres de espacio en blanco son los mismos que se permiten en la regla de
produccin S de E6.. Si se omite el argumento, toma por defecto el nodo conte1tual
con'ertido en cadena es decir, el 'alor de cadena del nodo conte1tual.
7unctionD stringtranslate2string, string, string7
.a funcin translate de'uel'e la cadena primer argumento con las apariciones de
caracteres del segundo argumento substituidas por los caracteres en las posiciones
correspondientes de la tercera cadena argumento. 9or e$emplo,
translate=[bar[$[abc[$[A4C[? de'uel'e la cadena 4Ar. Si )ay un caracter en la
segunda cadena argumento sin caracter en la posicin correspondiente en la tercera
cadena argumento 2debido a que la segunda cadena argumento es m!s larga que la
tercera cadena argumento7, entonces las apariciones de dic)o caracter en la primera
cadena argumento son eliminadas. 9or e$emplo, translate=[XX
aaaXX[$[abcX[$[A4C[? de'uel'e [AAA[. Si un caracter aparece m!s de una 'e- en
la segunda cadena argumento, entonces la primera aparicin determina el caracter de
reempla-o. Si la cadena tercer argumento es m!s larga que la cadena segundo
argumento, entonces los caracteres e1tra son ignorados.
>9T$D .a funcin translate no es una solucin suficiente para la con'ersin entre
may&sculas y min&sculas en todos los idiomas. %na futura 'ersin de E9at) podra
aportar funciones adicionales para esa con'ersin.
4.3 7unciones ;ooleanas
7unctionD booleanboolean2object7
.a funcin boolean con'ierte su argumento en booleano como sigue(
un n&mero es 'erdadero si y slo si no es ni cero positi'o o negati'o ni ?a?
un con$unto de nodos es 'erdadero si y slo si es no 'aco
una cadena es 'erdadera si y slo si su longitud no es cero
un ob$eto de un tipo distinto a los cuatro tipos b!sicos se con'ierte en booleano
de una forma dependiente de dic)o tipo
7unctionD booleannot2boolean7
.a funcin not de'uel'e 'erdadero si su argumento es falso, y falso en otro caso.
7unctionD booleantrue27
.a funcin true de'uel'e 'erdadero.
7unctionD booleanfalse27
.a funcin false de'uel'e falso.
7unctionD booleanlan,2string7
.a funcin lan, de'uel'e 'erdadero o falso dependiendo de si el lengua$e del nodo
conte1tual tal como se especifica por los atributos xml>lan1 es el mismo que, o es un
sublengua$e de, el lengua$e especificado por la cadena argumento. El lengua$e del nodo
conte1tual se determina por el 'alor del atributo xml>lan1 en el nodo conte1tual, o, si
el nodo conte1tual no tiene atributo xml>lan1 , por el 'alor del atributo xml>lan1 en el
ancestro m!s cercano del nodo conte1tual que tenga atributo xml>lan1. Si no )ay tal
atributo, entonces lan, de'uel'e falso. Si )ay tal atributo, entonces lan, de'uel'e
'erdadero si el 'alor del atributo es igual al argumento ignorando may&sculas y
min&sculas, o si )ay alg&n sufi$o empe-ando con X tal que el 'alor del atributo es igual
al argumento ignorando dic)o sufi$o en el 'alor del atributo e ignorando may&sculas y
min&sculas. 9or e$emplo, lan1=[en[? de'ol'era 'erdadero si el nodo conte1tual
fuese alguno de estos cinco elementos(
Kpara xml>lan1F[en[0H
Kdi5 xml>lan1F[en[HKpara0HK0di5H
Kpara xml>lan1F[EN[0H
Kpara xml>lan1F[enXus[0H
4.4 7unciones numEricas
7unctionD numbernumber2objectQ7
.a funcin number con'ierte su argumento en un n&mero como sigue(
una cadena que consista en espacio en blanco opcional seguido de un signo
menos opcional seguido de un ?umber seguido de espacio en blanco se
con'ierte en el n&mero +EEE C5 que est/ m!s pr1imo 2seg&n la regla de
redondeo al mas cercano de +EEE C57 al 'alor matem!tico representado por la
cadena> cualquier otra cadena se con'ierte en ?a?
el 'alor booleano 'erdadero se con'ierte en 1> el 'alor booleano falso se
con'ierte en G
%n con$unto de nodos se con'ierte primero en cadena como si se aplicase la
funcin strin, y a continuacin se con'ierte de la misma forma que los
argumentos de tipo cadena
%n ob$eto de un tipo distinto de los cuatro tipos b!sicos se con'ierte en n&mero
de una forma dependiente de dic)o tipo
Si se omite el argumento, toma por defecto un con$unto de nodos con el nodo
conte1tual como &nico miembro.
>9T$D .a funcin number no debera ser usada para la con'ersin de datos
num/ricos que apare-can en un elemento de un documento E6. a no ser que el
elemento sea de un tipo que represente datos num/ricos en un formato independiente
de los lengua$es 2que sera tpicamente transformado en un formato especfico de un
lengua$e para su presentacin al usuario7. Adem!s, la funcin number no puede ser
usada sal'o que el formato independiente de los lengua$es que utili-a el elemento sea
consistente con la sinta1is de E9at) para ?umber.
7unctionD numbersum2node0set7
.a funcin sum de'uel'e la suma, a lo largo de todos los nodos del con$unto de nodos
argumento, del resultado de con'ertir los 'alores de cadena de los nodos en n&meros.
7unctionD numberfloor2number7
.a funcin floor de'uel'e el mayor 2m!s cercano al infinito positi'o7 n&mero que no sea
mayor que el argumento y que sea entero.
Si el argumento es ?a? entonces se de'uel'e ?a?. Si el argumento es el infinito
positi'o, entonces se de'uel'e el infinito positi'o. Si el argumento es el infinito negati'o,
entonces se de'uel'e el infinito negati'o. Si el argumento es el cero positi'o, entonces
se de'uel'e el cero positi'o. Si el argumento es el cero negati'o, entonces se de'uel'e
el cero negati'o. Si el argumento es mayor que cero, pero menor que 1, entonces se
de'uel'e el cero positi'o.
7unctionD numberceilin,2number7
.a funcin ceilin, de'uel'e el menor 2m!s cercano al infinito negati'o7 n&mero que no
sea menor que el argumento y que sea entero.
Si el argumento es ?a? entonces se de'uel'e ?a?. Si el argumento es el infinito
positi'o, entonces se de'uel'e el infinito positi'o. Si el argumento es el infinito negati'o,
entonces se de'uel'e el infinito negati'o. Si el argumento es el cero positi'o, entonces
se de'uel'e el cero positi'o. Si el argumento es el cero negati'o, entonces se de'uel'e
el cero negati'o. Si el argumento es menor que cero, pero mayor que 41, entonces se
de'uel'e el cero negati'o.
7unctionD numberround2number7
.a funcin round de'uel'e el n&mero que est/ m!s pr1imo al argumento y que sea
entero. Si )ay dos n&meros en esas condiciones, entonces de'uel'e el m!s cercano al
infinito positi'o. Si el argumento es ?a?, entonces se de'uel'e ?a?. Si el argumento es
el infinito positi'o, entonces se de'uel'e el infinito positi'o. Si el argumento es el infinito
negati'o, entonces se de'uel'e el infinito negati'o. Si el argumento es el cero positi'o,
entonces se de'uel'e el cero positi'o. Si el argumento es el cero negati'o, entonces se
de'uel'e el cero negati'o. Si el argumento es menor que cero, pero mayor o igual que
4G.5, entonces se de'uel'e el cero negati'o.
>9T$D 9ara estos dos &ltimos caso, el resultado de llamar a la funcin round no es el
mismo que el resultado de a8adir G.5 y a continuacin llamar a la funcin floor.
A #odelo de datos
E9at) opera sobre un documento E6. consider!ndolo como un !rbol. Esta seccin
describe la forma en que E9at) modela un documento E6. como un !rbol. Este
modelo es solamente conceptual y no impone ninguna implementacin en particular. .a
relacin entre este modelo y el #on$unto de +nformacin E6. ^E6. +nfoset_ se describe
en ^; B' Information Set 'appin, _.
.os documentos E6. sobre los que opera E9at) deben ser acordes con la
Recomendacin de Espacios de ?ombres E6. ^E6. ?ames_.
El !rbol contiene nodos. @ay siete tipos de nodos(
nodos ra-
nodos elemento
nodos te1to
nodos atributo
nodos espacio de nombres
nodos instruccin de procesamiento
nodos comentario
9ara cada tipo de nodo, )ay una forma de determinar un valor de cadena para los
nodos de ese tipo. 9ara algunos tipos de nodo, el 'alor de cadena es parte del nodo>
para otros tipos de nodo, el 'alor de cadena se calcula a partir del 'alor de cadena de
nodos descendientes.
>9T$D 9ara nodos elemento y nodos ra-, el 'alor de cadena de un nodo no es lo
mismo que la cadena de'uelta por el m/todo 356node2alue 2'/ase ^356_7.
Algunos tipos de nodo tienen tambi/n un nombre eIpandido, que es un par formado
por una parte local y un %R+ de espacio de nombres. .a parte local es una cadena. E.
%R+ de espacio de nombres es o bien nulo o bien una cadena. %n namespace name
especificado en una declaracin de espacio de nombres de un documento E6., es una
referencia %R+ tal como se define en ^R:#23F"_> Esto implica que puede tener un
identificador de fragmento y puede ser relati'o. El componente %R+ de espacio de
nombres de un nombre e1pandido depende de la implementacin si el nombre
e1pandido es la e1pansin de un T?ame cuyo prefi$o se declara en una declaracin de
espacio de nombres con un nombre de espacio de nombres que es un %R+ relati'o 2con
o sin identificador de fragmento7. %na e1presin E9at) que dependa del 'alor del
componente %R+ de espacio de nombres de uno de tales nombres e1pandidos no es
interoperable. 3os nombres e1pandidos son iguales si tienen la misma parte local, y o
bien ambos tienen un %R+ de espacio de nombres nulo o bien ambos tienen %R+s de
espacio de nombres no nulos que son iguales.
@ay una ordenacin, el orden de documento, definida sobre todos los nodos del
documento correspondiente con el orden en que el primer caracter de la representacin
E6. de cada nodo aparece en la representacin E6. del documento tras la e1pansin
de las entidades generales. As, el nodo ra- ser! el primer nodo. .os nodos elemento
aparecen antes de sus )i$os. 9or tanto, el orden de documento ordena los nodos
elemento en el orden de aparicin de sus etiquetas de apertura en el E6. 2tras la
e1pansin de entidades7. .os nodos atributo y los nodos espacio de nombres de un
elemento aparecen antes que los )i$os del elemento. .os nodos espacio de nombres
aparecen por definicin antes que los nodos atributo. El orden relati'o de los nodos
espacio de nombres depende de la implementacin. El orden relati'o de los nodos
atributo depende de la implementacin. El 9rden inverso de documento es el in'erso
del orden de documento.
.os nodos ra- y los nodos elemento tienen una lista ordenada de nodos )i$o. .os
nodos nunca comparten un )i$o( si un nodo no es el mismo nodo que otro, entonces
ninguno de los )i$os del primer nodo ser! el mismo nodo que ninguno de los )i$os del
otro nodo. <odos los nodos sal'o el nodo ra- tienen e1actamente un padre, que es o
bien un nodo elemento o bien el nodo ra-. %n nodo ra- o un nodo elemento es el
padre de cada uno de sus nodos )i$o. .os descendientes de un nodo son los )i$os del
nodo y los descendientes de los )i$os del nodo.
5.1 >odo *aLA
El nodo ra- es la ra- del !rbol. ?o aparecen nodos ra- sal'o como ra- del !rbol. El
nodo elemento del elemento de documento es )i$o del nodo ra-. El nodo ra- tiene
tambi/n como )i$os los nodos instruccin de procesamiento y comentario
correspondientes a las instrucciones de procesamiento y comentarios que apare-can
en el prlogo y tras el fin del elemento de documento.
El 'alor de cadena del nodo ra- es la concatenacin de los 'alores de cadena de
todos los nodos te1to descendientes del nodo ra- en orden de documento.
El nodo ra- no tiene nombre e1pandido.
5.& >odos elemento
@ay un nodo elemento por cada elemento en el documento. .os nodos elemento tienen
un nombre e1pandido calculado e1pandiendo el T?ame del elemento especificado en
la etiqueta de acuerdo con la Recomendacin de Espacios de ?ombres E6. ^E6.
?ames_. El %R+ de espacio de nombres del nombre e1pandido del elemento ser! nulo si
el T?ame no tiene prefi$o y no )ay un espacio de nombres por defecto aplicable.
>9T$D En la notacin del Ap/ndice A.3 de ^E6. ?ames_, la parte local del nombre
e1pandido se corresponde con el atributo t/pe del elemento ExpET/pe> El %R+ de
espacio de nombres del nombre e1pandido se corresponde con el atributo ns del
elemento ExpET/pe, y es nulo si el atributo ns del elemento ExpET/pe es omitido.
.os )i$os de un nodo elemento son los nodos elemento, nodos comentario, nodos
instruccin de procesamiento y nodos te1to que contiene. .as referencias de entidades
tanto a entidades internas como e1ternas son e1pandidas. .as referencias de
caracteres son resueltas.
El 'alor de cadena de un nodo elemento es la concatenacin de los 'alores de cadena
de todos los nodos te1to descendientes del nodo elemento en orden de documento.
!.2.1 (dentificadores Hnicos
.os nodos elemento pueden tener un identificador &nico 2+37. Este es el 'alor del
atributo que se declara en el 3<3 como de tipo ID. ?o puede )aber dos elementos en
un documento con el mismo +3. Si un procesador E6. informa de la e1istencia de dos
elementos de un documento con el mismo +3 2lo cuales posible slo si el documento es
no 'alido7 entonces el segundo elemento en orden de documento debe ser tratado
como si no tu'iese +3.
>9T$D Si un documento no tiene 3<3, entonces ning&n elemento del documento
tendr! +3.
5.3 >odos atributo
#ada nodo elemento tiene asociado un con$unto de nodos atributo> el elemento es el
padre de cada uno de esos nodos atributo> sin embargo, los nodos atributo no son )i$os
de su elemento padre.
>9T$D Esto es distinto de lo que ocurre en el 356, que no se refiere a los elementos
que lle'an un atributo como padres del atributo 2'/ase ^356_7.
.os elementos nunca comparten nodos atributo( Si dos nodos elemento son distintos,
entonces ninguno de los nodos atributo del primer elemento ser! el mismo nodo que
ning&n nodo atributo del otro nodo elemento.
>9T$D El operador F comprueba si dos nodos tienen el mismo 'alor, no si son el mismo
nodo. As, atributos de dos elementos diferentes pueden ser comparados como iguales
utili-ando F, a pesar de que no son el mismo nodo.
%n atributo tomado por defecto se trata igual que uno especificado. Si un atributo se
)aba declarado para el tipo del elemento en la 3<3, aunque el 'alor por defecto se
)aba declarado como UI.PLIED , y el atributo no fue especificado en el elemento,
entonces el con$unto de nodos atributo del elemento no contendr! un nodo para el
atributo.
Algunos atributos, tal como xml>lan1 y xml>space, tienen la sem!ntica de ser
aplicables a todos los elementos que sean descendientes del elemento que lle'a el
atributo, sal'o que sean redefinidos por una instancia del mismo atributo en otro
elemento descendiente. Sin embargo, esto no afecta a donde aparecen los nodos
atributo en el !rbol( un elemento tiene nodos atributo correspondientes &nicamente a
atributos e1plcitamente especificados en la etiqueta de apertura o etiqueta de elemento
'aco de dic)o elemento o que fueron e1plcitamente declarados en la 3<3 con un 'alor
por defecto.
.os nodos atributo tienen un nombre e1pandido y un 'alor de cadena. El nombre
e1pandido se calcula e1pandiendo el T?ame especificado en la etiqueta en el
documento E6. de acuerdo con la Recomendacin de Espacios de ?ombres E6.
^E6. ?ames_. El %R+ de espacio de nombres del nombre del atributo ser! nulo si el
T?ame del atributo no tiene prefi$o.
>9T$D En la notacin del Ap/ndice A.3 de ^E6. ?ames_ , la parte local del nombre
e1pandido se corresponde con el atributo name del elemento ExpAName> el %R+ de
espacio de nombres del nombre e1pandido se corresponde con el atributo ns del
elemento ExpAName, y es nulo si el atributo ns del elemento ExpAName es omitido.
.os nodos atributo tienen un 'alor de cadena. El 'alor de cadena es el 'alor
normali-ado tal como se especifica en la Recomendacin E6. ^E6._. %n atributo cuyo
'alor normali-ado es una cadena de longitud cero no es tratado de una forma especial(
da lugar a un nodo atributo cuyo 'alor de cadena es una cadena de longitud cero.
>9T$D 9ara atributos por defecto es posible que la declaracin tenga lugar en una 3<3
e1terna o una entidad de par!metro e1terna. .a Recomendacin E6. no impone a los
procesadores E6. la lectura de 3<3s e1ternas o par!metros e1ternos sal'o que el
procesador incluya 'alidacin. %na )o$a de estilo u otro mecanismo que asuma que el
!rbol E9at) contiene 'alores de atributos por defecto declarados en una 3<3 e1terna o
entidad de par!metro podra no funcionar con algunos procesadores E6. no
'alidadores.
?o )ay nodos atributo correspondientes a atributos que declaran espacios de nombres
2'/ase ^E6. ?ames_7.
5.4 >odos espacio de nombres
#ada elemento tiene un con$unto asociado de nodos espacio de nombres, uno para
cada uno de los distintos prefi$os de espacio de nombres con efecto sobre el elemento
2incluyendo el prefi$o xml, que est! implcitamente declarado seg&n la Recomendacin
de Espacios de ?ombres E6. ^E6. ?ames_7 y uno para el espacio de nombres por
defecto si )ay alguno con efecto sobre el elemento. El elemento es el padre de cada
uno de los nodos espacio de nombres> sin embargo, los nodos espacio de nombres no
son )i$os de su elemento padre. .os elementos nunca comparten nodos espacio de
nombres( Si dos nodos elemento son distintos, entonces ninguno de los nodos espacio
de nombres del primer elemento ser! el mismo nodo que ning&n nodo espacio de
nombres del otro nodo elemento. Esto significa que los elementos tendr!n un nodo
espacio de nombres(
para cada atributo del elemento cuyo nombre empiece por xmlns>>
para cada atributo de un elemento ancestro cuyo nombre empiece por xmlns>
sal'o que el propio elemento o un ancestro m!s cercano redeclaren el prefi$o>
para atributos xmlns, si el elemento o alguno de sus ancestros tienen dic)o
atributo y el 'alor del atributo en el m!s cercano de los elementos que lo tienen
es no 'aco
>9T$D %n atributo xmlnsF[[ RdesdeclaraR el espacio de nombres por defecto
2'/ase ^E6. ?ames_7.
.os nodos espacio de nombres tienen un nombre e1pandido( la parte local es el prefi$o
de espacio de nombres 2este es 'aco si el nodo espacio de nombres corresponde al
espacio de nombres por defecto7> el %R+ de espacio de nombres es siempre nulo.
El 'alor de cadena de un nodo espacio de nombres es el %R+ de espacio de nombres
que se est! asociando al prefi$o de espacio de nombres> si el nombre de espacio de
nombres que aparece en la declaracin de espacio de nombres del documento E6. es
un %R+ relati'o 2con o sin identificador de fragmento7, entonces el 'alor de cadena
depende de la implementacin. %na e1presin E9at) que dependa del 'alor de cadena
de uno de tales nodos de espacio de nombres no es interoperable.
5.5 >odos instruccin de procesamiento
@ay un nodo instruccin de procesamiento para cada instruccin de procesamiento,
sal'o para aquellas que apare-can dentro de la declaracin de tipo de documento.
.as instrucciones de procesamiento tienen un nombre e1pandido( la parte local es el
destinatario de la instruccin de procesamiento> el %R+ de espacio de nombres es nulo.
El 'alor de cadena de un nodo instruccin de procesamiento es la parte de la
instruccin de procesamiento que sigue al destinatario y todo el espacio en blanco. ?o
incluye la terminacin `H.
>9T$D .a declaracin E6. no es una instruccin de procesamiento. En consecuencia,
no )ay nodo instruccin de procesamiento correspondiente a ella.
5.! >odos comentario
@ay un nodo comentario para cada comentario, sal'o para aquellos que apare-can
dentro de la declaracin de tipo de documento.
El 'alor de cadena de los comentarios es el contenido del comentario sin incluir el inicio
K\XX ni la terminacin XXH.
.os nodos comentario no tienen nombre e1pandido.
5." >odos teIto
.os datos de caracter se agrupan en nodos te1to. En cada nodo te1to se agrupan todos
los datos de caracter que sea posible( un nodo te1to nunca tiene un )ermano
inmediatamente anterior o siguiente que sea nodo te1to. El 'alor de cadena de los
nodos te1to son los datos de caracter. .os nodos te1to siempre tienen al menos un
caracter.
#ada caracter en una seccin #3A<A se trata como datos de caracter. As, K\
LCDATALKMMH en el documento fuente ser! tratado igual que YltR. Ambos dar!n lugar
a un &nico caracter K en un nodo te1to en el !rbol. 9or tanto, una seccin #3A<A se
trata como si K\LCDATAL y MMH se quitasen y cada aparicin de K y Y fuese
reempla-ada por YltR y YampR respecti'amente.
>9T$D #uando un nodo te1to que contiene un caracter K se escribe como E6., el
caracter K debe ser escapado mediante, por e$emplo, el uso de YltR, o incluy/ndolo
en una seccin #3A<A.
.os caracteres dentro de comentarios, instrucciones de procesamiento y 'alores de
atributos no producen nodos te1to. .os finales de lnea en entidades e1ternas se
normali-an como a1A tal como se especifica en la Recomendacin E6. ^E6._. El
espacio en blanco fuera del elemento de documento no produce nodos de te1to.
.os nodos de te1to no tienen nombre e1pandido .
B &onformidad
E9at) est! dise8ado principalmente para ser un componente que puede ser utili-ado
por otras especificaciones. 9or consiguiente, E9at) confa a las especificaciones que lo
usan 2tales como ^E9ointer_ y ^ES.<_7 la especificacin de criterios de conformidad de
las implementaciones de E9at) y no define ning&n criterio de conformidad para
implementaciones de E9at) independientes.
httpDGGHHH.sidar.or,GrecurGdesdiGtraducGesGImlGIpath.html
".1F.& B%uery.
(ntroduccin
De un tiempo a esta parte la comunidad de desarrolladores ha isto la aparicin de muchas
nueas tecnolog(as. @ecnolog(as stas que, mientras solucionan problemas y abren posibilidades
de desarrollo )como _;$ y los %ericios Web*, tambin proocan nueos requerimientos. "n el
presente art(culo se pretende introducir otra nuea tecnolog(a que surge como la necesidad de
consultar documentos y bases de datos _;$# el EAuery.
LE AuFI
_Huery es un leguaje de consultas est!ndar, publicado por el M3C )World Wide Web
-onsortium* que utiliza la notacin _;$ para definir consultas y manejar los resultados. _Huery
es lo suficientemente fle?ible como para consultar un amplio espectro de or(genes de datos,
incluyendo bases de datos relacionales, documentos _;$, %ericios Web, aplicaciones y
sistemas heredados.
-lcance del documento
"ste documento no pretende ser un manual de _Huery, sino introducir la tecnolog(a a tras de
conceptos tericos y ejemplos pr!cticosI demostrar la amplia aceptacin que est! teniendo en
todo tipo de aplicaciones y e?poner algunos ejemplos concretos con la nuea ersin de
,icrosoft "AC "erver )Pu`on*.
-ntecedentes
_;$ ha significado mucho para el desarrollo de sistemasI cuestiones tales como la posibilidad de
comunicar de manera transparente sistemas pertenecientes a distintas plataformas habr(an sido
impensadas en otros tiempos. Aunque _;$ es un paso importante, por s( solo no es de gran
utilidad. $o que realmente hace potente a esta tecnolog(a es el conjunto de est!ndares que se han
desarrollado )y los que aun est!n en desarrollo* en torno a la misma.
7ntoncesJ LAuF es EAueryI
_Huery es un lenguaje. ,roee mecanismos para e?traer informacin de bases de datos _;$
natias, as( como de otro tipo de or(genes de datos )como ser bases de datos relacionales*. "ntre
otras cosas, permite la posibilidad de obtener datos de un archio _;$ y una tabla de la base de
datos relacional con una sola consulta. "l lector comprender! lo ambicioso del proyecto, y las
consecuentes dificultades. _Huery se presenta como un lenguaje funcional, en ez de ejecutar
comandos como lo har(a un lenguaje procedural, cada consulta es una e?presin a ser ealuada.
$as e?presiones se pueden combinar para hallar nueas e?presiones.
EPat/
_Huery hace un uso intensio de _,ath )un lenguaje utilizado para seleccionar porciones de
_;$*I de hecho algunos en a _Huery como un superconjunto de _,ath. "n el gr!fico que se
muestra en la Gigura / se puede isualizar algunas de las especificaciones del W1-, ubicadas por
orden de aparicin. _,ath en un principio fue parte de _%$ /.: y luego se desarroll como una
especificacin separada. $a nuea ersin de _,ath )_,ath 0.:* est! siendo desarrollada de
manera conjunta a _Huery, por el mismo grupo de trabajo.
8i*ura 1# "specificaciones del W1-. Doler al te?to.
$as especificaciones que se encuentran detr!s de la l(nea de puntos se encuentran liberadasI las
que est!n despus, se encuentran en una etapa de S=or> in +rogressS, aun se est! trabajando
sobre ellas. -omo se puede er, _Huery es una de ellas.
_,ath se describe mejor con ejemplos que con especificaciones formales de sinta?is, eamos
algunos.
,ara los ejemplos utilizaremos la base de datos -dventureMorDs que est! incluida en el "AC
"erver 2++! $eta 1 )Pu`on*. "n particular utilizaremos la columna Catalo*Description de la
tabla Product,odel que es de tipo _;$ )la nuea ersin de %H$ %erer permite almacenar
_;$ de manera natia*. Der Gigura 0#
8i*ura 2. Doler al te?to.
A continuacin se en algunos de los datos que contiene la columna -atalogDescription. "s decir,
stos son los datos _;$ que se encuentran en un registro de la tabla ,roduct;odel#
KProductDescription Product.odelIDF[+&[ Product.odelNameF[.ountain +**[H
K!ummar/H
Our topXofXtheXline competition mountain biWe7
PerformanceXenhancin1 options include the inno5ati5e
;L Frame$
superXsmooth front suspension$ and traction for all
terrain7
K0!ummar/H
K.anufacturerH
KNameHAd5entureGorWsK0NameH
KProduct<8LH;TTP>00TTT7Ad5entureXTorWs7comK0Product<8LH
K0.anufacturerH
KFeaturesH
KTm>Garrant/H
KTm>Garrant/PeriodH, /earsK0Tm>Garrant/PeriodH
KTm>DescriptionHparts and laborK0Tm>DescriptionH
K0Tm>Garrant/H
KTm>.aintenanceH
KTm>NoOfBearsH+* /earsK0Tm>NoOfBearsH
KTm>DescriptionHmaintenance contract a5ailable
throu1h777K0Tm>DescriptionH
K0Tm>.aintenanceH
K0FeaturesH
KPictureH
KAn1leHfrontK0An1leH
K!i:eHsmallK0!i:eH
KProductPhotoIDH,+K0ProductPhotoIDH
K0PictureH
K0ProductDescriptionH
)-onsulta el documento completo accediendo a los ejemplos de este art(culo.*
Dados los datos origen, ayamos a los ejemplos de consultas _,ath#
M,roductDescriptionM%ummary %elecciona todos los
elementos N"ummaryO
que son hijos del
elemento
NProductDescriptionO,
que es el elemento ra(z
del documento.
MM%ummary %elecciona todos los
elementos N"ummaryO
que se encuentran
dentro del documento.
$a doble barra indica
profundidad arbitraria.
count)MM%ummary* 2etorna el n.mero de
elementos N"ummaryO
que aparecen en el
documento.
MM,ictureZ%ize T SsmallS[ 2etorna todos los
elementos NPictureO,
de profundidad
arbitraria, que tienen un
hijo cuyo alor es
SsmallS.
MM,roductDescriptionZa,roduct;odel8DT/9[ 2etorna todos los
elementos que contienen
un atributo
Product,odel(D y su
alor es 1). "l s(mbolo
P indica que
Product,odel(D es un
atributo. Der!s estos
atributos en la primera
l(nea del cdigo _;$
que se lista arriba.
MM,roductDescriptionZa,roduct;odel8D[ 2etorna todos los
elementos que contienen
un atributo,
independientemente del
alor que contengan.
MM,roductDescriptionMa,roduct;odel8D 2etorna los alores del
atributo
Product,odel(D.
MM%izeZ/[ 2etorna el primer nodo
N"i<eO que encuentra.
,odelo de Datos
_Huery est! definido en trminos de un modelo formal abstracto, no en trminos de te?to _;$.
$os trminos formales est!n definidos en el documento _Huery /.: and _,ath 0.: Data ;odel.
-ada entrada a una consulta es una instancia de un modelo de datos, y la salida de una consulta
tambin. "n torno a este enfoque e?isten disputas entre los que proienen del Smundo de los
documentosS )la comunidad _;$* y los que proienen del Smundo de las bases de datosS. "n
_;$ Huery $anguages# "?periences and "?emplars, Gern!ndez, %imon y Waler )actuales
integrantes del =or>ing roup que trabaja en la recomendacin* e?ponen los lenguajes
antecesores a _Huery, as( como las diferencias entre las dos comunidades.
$a comunidad de bases de datos defiende la importancia de tener un modelo de datosI de hecho,
este es el enfoque adoptado por el comit. %e intenta lograr un lenguaje cerrado con respecto al
modelo de datos. %e dice que un lenguaje es cerrado con respecto a un modelo de datos si se
puede garantizar que el alor de cada e?presin en el lenguaje se encuentra dentro del modelo.
"n el modelo de datos _Huery, cada documento es representado como un !rbol de nodos. $os
tipos de nodos posibles son#
Document
"lement
Attribute
@e?t
=amespace
,rocessing 8nstruction
-omment
-ada nodo en el modelo de datos es .nico e idntico a s( mismo, y diferente a todos los dem!s.
"sto no implica que no puedan tener alores iguales, sino que conceptualmente se los debe tomar
como entidades diferentes. ,odr(a trazarse una relacin con el principio de identidad e?istente en
la teor(a de objetos.
Adem!s de los nodos, el modelo de datos permite alores atmicos )atomic values*, que son
alores simples que se corresponden con los alores simples )simple t(pes* definidos en la
recomendacin E,C "c/emaJ Part 2 del W1-. "stos pueden ser string, boolean, decimal,
integer, float, double y date.
Un (tem es nodo simple o alor atmico. Una serie de (tems es conocida como sequence
)secuencia*. "n _Huery cada alor es una secuencia, y no hay distincin entre un (tem simple y
una secuencia de un solo (tem. $as secuencias solo pueden contener nodos o alores atmicos, no
pueden contener otras secuencias. "l primer nodo en cualquier documento es el Snodo
documentoS )document node*. "l nodo documento no se corresponde con nada isible en el
documento, ste representa el mismo documento.
$os nodos conectados forman un !rbol, que consiste en un nodo SrootS y todos los nodos que
cuelgan de l. Un !rbol cuyo root es un nodo documento se denomina !rbol documento, todos los
dem!s son denominados fragmentos.
76presiones 8CM?R
$as e?presiones 8CM?R )que en estos !mbitos suelen pronunciarse SflowerS* son al _Huery lo
que las distintas cl!usulas dentro de una sentencia "elect )el select, from, w$ere, etc* son al %H$.
"s decir, son sus bloques principales. "l nombre iene de 8or, Cet, M/ere, ?rder by y Return#
GA2# asocia una o m!s ariables a e?presiones, creando un conjunto de tuplas en el cual
cada tupla incula una ariable dada a uno de los (tems a los cuales est! asociada la
e?presin ealuada.
$"@# incula las ariables al resultado de una e?presin, agregando estos (nculos a las
tuplas generadas por la cl!usula GA2.
W<"2"# filtra tuplas, quedando solo aquellas que cumplen con la condicin.
A2D"2 'P# ordena las tuplas en el conjunto de tuplas.
2"@U2=# construye el resultado de la e?presin G$WA2 para una tupla dada.
$as cl!usulas GA2 y $"@ arman el conjunto de tuplas sobre el cual se ealuar! la sentencia
G$WA2, al menos una de estas cl!usulas tiene que e?istir en una consulta. -on estas sentencias
se consigue buena parte de la funcionalidad que diferencia a _Huery de _,ath. "ntre otras cosas
permite construir el documento que ser! la salida de la sentencia.
75emplos
%H$ %erer 0::4 'eta / permite realizar consultas _Huery puras o embeber _Huery dentro de
consultas %H$. ,osee un diseador isual de consultas _Huery )el ;icrosoft _Huery Designer*,
una ista preia se presenta en la Gigura 1#
8i*ura 3# ;icrosoft _Huery Designer. Doler al te?to.
Uno puede disponer de la estructura de los documentos _;$ simplemente arrastrando columnas
desde el Abject "?plorer 91: al %ource Documents 92:. Una ez que se dispone del documento
seleccionado, puede arrastrar los "lementos que desea seleccionar al recuadro central superior
93:I esto a escribiendo la consulta en el recuadro central 94:. Una ez ejecutada la consulta, se
puede obserar el resultado en el recuadro central inferior 9!:. "n el ejemplo simplemente se
est!n obteniendo todos los elementos S,anufacterS que se encuentran dentro de
ProductDescription.
Deamos una consulta m!s complicada que la anterior#
/. Abtener los tamaos de las figuras de aquellos productos que tengan la foto 1/. ;ostrar el
resultado dentro de nodos denominados Resultado.
0. -onsulta#
namespace ns+F[http>00TTT7ad5entureX
TorWs7com0schemas0products0description[
for ^Picture in 0ns+>ProductDescription0ns+>Picture
There 00ns+>ProductPhotoIDF,+
return
Kns+>8esultadoH
a
00ns+>!i:e
b
K0ns+>8esultadoH
1. 2esultado#
Kns+>8esultado xmlns>ns+F[http>00TTT7ad5entureX
TorWs7com0schemas0products0description[H
Kns+>!i:eHsmallK0ns+>!i:eH
K0ns+>8esultadoH
Kns+>8esultado xmlns>ns+F[http>00TTT7ad5entureX
TorWs7com0schemas0products0description[H
Kns+>!i:eHsmallK0ns+>!i:eH
K0ns+>8esultadoH
"n esta consulta se puede er lo siguiente#
$a definicin de ns1 sire para determinar cu!l es el esquema entrante a la consulta.
2ecuerda que _Huery no trabaja sobre documentos de te?to _;$, sino sobre modelos de
datos.
$a cl!usula 8or Q M/ere sire para determinar cu!l ser! el modelo entrante de datos. "n
nuestro ejemplo buscaremos aquellos elementos Picture que se encuentren por debajo de
ProductDescription en la jerarqu(a.
-on la cl!usula Return se arma la salida de la consulta. "sta contar! de nodos etiquetados
como S2esultadoS con nodos hijo "i<e.
Atra forma de realizar consultas _Huery al motor es incrust!ndolas dentro de un %H$>%elect.
Deamos la siguiente consulta#
/. %eleccionar la fecha de modificacin ),odifiedDate, de tipo DateBime* y los elementos
SStepS )pasos* que se encuentran dentro de las instrucciones )6nstructions, de tipo _;$*.
0. -onsulta#
!ELECT .odifiedDate$ Instructions>>Auer/=J
namespace AG.IF[http>00schemas7ad5entureX
TorWs7com0.anufInstructions04/Prod.odel[
for ^!tep in 00AG.I>GorWCenterL+M0AG.I>step
return
strin1=^!tep?
J? as 8esult
F8O. ProductPlan
Ghere Product.odelIDF-
1. 2esultado#
.odifiedDate 8esult
XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+*0*-0)**, +*>,,>)- p7 Insert aluminum sheet .!X),(+ into777
=+ roT=s? affected?
=ota que la pseudocolumna Result se obtiene a partir de la consulta _Huery. %i analizamos la
cl!usula 8or#
for $Step in //AWMI:WorkCenter[1]/AWMI:step
"ncontraremos una e?presin _,ath dentro, la cual indica S"n el documento definido en -M,(,
busca dentro del primer nodo MorDCenter que encuentres, sin importar la profundidad que
tenga, un 7lemento "tepS
"n definitia, esta consulta deuele# Sun 7lemento "tep )identificado por la consulta _Huery*
que se encuentra dentro del documento _;$ de la columna (ntructions de la tabla ProductPlan
para el Product,odel(D &S.
-on este .ltimo ejemplo puedes comenzar a descubrir la potencia de combinar ambos lenguajes,
as( como tambin las complicaciones que podr(a conllear una mala utilizacion de esto.
8mag(nate un diseador de 'ases de Datos que confunda la estructura que podr(a conseguir con
un documento _;$ y las estructuras detr!s del modelo relacional de bases de datos.
Debe quedar claro que cuando hablamos de _;$, en trminos formales, hablamos de
informacin semi>estructurada. %i no tenemos en cuenta esto podr(amos deriar en diseos
ineficientes.
httpDGGHHH.microsoft.comGspanishGmsdnGcomunidadGmt1.netGv
oicesGart1#3.asp
".1F.3 BST.
1u es +8L%
+8L% is una tecnologa que permite que un documento +,L se transforme en otro.
&stos documentos resultantes son formatos principalmente basados en te2to como
C%,L, ;,L, H%3 o cualquier otro arc#ivo de te2to. Coy en da, +L8% tiene su mayor
uso en la generacin de arc#ivos C%,L a partir de documentos +,L, y este es el
tipo de transformaciones que discutiremos en las pr2imas secciones.
Una transformacin +8L% trabaja basada en dos arc#ivos' un documento +,L bien
estructurado y una #oja de estilos. &l primero se llama arc#ivo de entrada y el
segundo documento de transformacin. Un proceso +L8% es aplicado sobre el
documento de entrada y usa el arc#ivo de transformacin para generar un tercer
documento llamado arc#ivo de salida. &l arc#ivo de salida podra ser tambin un
documento +,L, pero podra ser tambin cualquier documento de te2to como
mencionamos anteriormente. La figura siguiente nos ilustra como transcurre un
proceso +L8%'
3igura I' !roceso +8L%
1lantillas 'SL$
Una transformacin reali$ada por un proceso +L8% puede considerarse como una o
ms operaciones sobre la estructura y los datos del documento de entrada. &stas
operaciones pueden consistir en un grupo de filtros, agrupacin, clasificacin,
arirtmtica, de carcteres y otras. >omo bien sabe, todos estos tipos de operaciones
pueder ser reali$ados por un programa como el primero mostrado anteriormente en
forma de !A orientada. +8L%, por otro lado, define un idioma declaratorio que
delimita reglas que sern aplicadas sobre ciertas partes del documento de entrada.
&stas reglas se almacenan en las plantillas. Las plantillas son llamadas una o ms
veces durante el proceso de entrada del documento y son las responsables de
generar el arc#ivo de salida.
&s com@n dise*ar plantillas +8L% que sern aplicadas a un determinado nodo o
grupo de ellos en el documento +,L de entrada. La llave para definir cada nodo o
grupo de nodos se procesar por una plantilla +L8% devuelta en +!at#. La
estructura general para la plantilla +L8% que se aplicar al nodo :JrssJitem: en
nuestro documento H88 es mostrada a continuacin'
Ktemplate matchF[0rss0channel0item[H
K\XX Template rules 1o here XXH
K0templateH
La plantilla +8L% tiene un importante atributo que especifica mediante una
e2presin +!at# a cual nodo ser aplicable, de esta manera encontrar el nodo que
necesitamos procesar. La misma ser ejecutada por cada nodo devuelto por la
e2presin +!at# en el atributo :matc#:. &n el siguiente ejemplo, se aplicar a todos
los elementos :item: que sean #ijos del elemento :c#annel:, que a su ve$ es #ijo del
elemento :rss:.
s nos quedar el cdigo de la #oja de estilos +L8%'
Kxsl>st/lesheet xmlns>xslF[http>00TTT7T,7or10+&&&06!L0Transform[
5ersionF[+7*[H
Kxsl>template matchF[0rss0channel0item[H
K\XX Template rules 1oes here XXH
K0xsl>templateH
K0xsl>st/lesheetH
Les comento que los elementos utili$ados en el ejemplo anterior son prefijados por
:2sl':. &sto justamente es un prefija para +,L =amespace
#ttp'JJ<<<.<I.orgJ5KKKJ+8LJ%ransform .si no est familiari$ado con +,L
=amespaces, puede #acer referencia al mismo en el sitio de ;I> +,L
=amespaces/. &n el =amespace estarn elementos y atributos +L8% y debern ser
declarados en el elemento ra$ del documento +L8%. &l elemento ra$ de una #oja de
estilos +L8% se denomina Lstyles#eetM. %odos los elementos +L8% debern
encontrarse dentro del =amespace :#ttp'JJ<<<.<I.orgJ5KKKJ+8LJ%ransform:. &ste
es definido por ;I> y todos los procesadores +8L% lo reconocern. Hecuerde que
los =amespaces de +,L son solamente UHAs .Uniform Hesource Adentifiers/ los
nombres no necesitan e2istir fsicamente como un recurso o sitio de Anternet.
Ancluso, siendo los =amespaces de +,L direcciones UHL no significa que debemos
tener una cone2in a Anternet para utili$ar +L8%. Los =amespaces de +,L son
solamente nombres y por consiguiente no necesitamos una cone2in real a
Anternet, adems ninguna cone2in es reali$ada durante el proceso.
!ero est faltando algo en el documento' todas las plantillas +L8% tienen una
plantilla implcita llamada plantilla predefinida .default template/. &sta plantilla
presenta un comportamiento normal que copia todos los elementos y atributos del
elemento ra$ #acia delante. &n nuestro ejemplo esto no es lo que deseamos, pues
solo queremos mostrar los ttulos de las noticias y sus descripciones.
!ara evitar este comportamiento, debemos definir una plantilla en la que coincidan
los elementos de la ra$ y las llamadas en la plantilla al elemento :item:
e2plcitamente. continuacin e2ponemos otra versin de nuestra #oja de estilos
+L8%'
Kxsl>st/lesheet xmlns>xslF[http>00TTT7T,7or10+&&&06!L0Transform[
5ersionF[+7*[H
Kxsl>template matchF[0[H
Kxsl>appl/Xtemplates selectF[0rss0channel0item[ 0H
K0xsl>templateH
Kxsl>template matchF[0rss0channel0item[H
K\XX Template rules 1o here XXH
K0xsl>templateH
K0xsl>st/lesheetH
&l ejemplo nos muestra como el elemento ra$ de la plantilla .:J:/ tiene un elemento
#ijo llamado :apply-templates:. &ste elemento fuer$a la ejecucin de todas las
plantillas que coincidan con el valor de +!at# incluida como el valor del atributo
:select:. &n nuestro caso, el valor del atributo :matc#: es :JrssJc#annelJitem:, y
ser ejecutado por cada elemento :item: de nuestro documento +,L de entrada.
N)etengmonosO =o tenemos ninguna regla definida en la plantilla para el elemento
:item:. Healmente #emos pospuesto el tema #asta el momento. N!or lo tanto,
agregaremos algo @til a nuestra plantillaO
8uponga que necesitemos crear un documento C%,L como resultado de nuestro
proceso +L8%? a#ora nos gustara mostrar los ttulos de las noticias en prrafos
independientes. %odo lo que necesitamos #acer es incluir cdigo C%,L apropiado en
nuestro elemento . >omo definir un prrago en C%,L, PcorrectoE. NUsando la
etiquete :L!M:O. P>omo podemos obtener el valor de nuestro documento de
entrada +,LE. &2iste un elemento +L8% que #ace ese trabajo por nosotros
sorprendentemente. &s el elemento Lvalue-ofM. &l mismo tambin tiene un atributo
:select:. &ste atributo definir la e2presin +!at# necesaria para obtener un valor
de un nodo del documento de entrada y el valor resultante ser reempla$ado por el
elemento Lvalue-ofM cuando la salida sea generada.
&n el siguiente ejemplo observaremos el uso del elemento Lvalue-ofM'
Kxsl>st/lesheet xmlns>xslF[http>00TTT7T,7or10+&&&06!L0Transform[
5ersionF[+7*[H
Kxsl>template matchF[0[H
Kxsl>appl/Xtemplates selectF[0rss0channel0item[ 0H
K0xsl>templateH
Kxsl>template matchF[0rss0channel0item[H
KPH
Kxsl>5alueXof selectF[title[ 0H
K0PH
K;8 colorF[blue[ si:eF[+[ 0H
K0xsl>templateH
K0xsl>st/lesheetH
!ara asociar la #oja de estilos a un documento +,L debemos reali$ar un trabajo
similar al que #icimos cuando asociamos la #oja de estilos >88. >ontinuaremos
usando la instruccin LE2mlQstyles#eet EM pero a#ora, en ve$ de especificar el tipo
,A,& como Rte2tJcssS, usaremos el valor Rte2tJ2slS. &l atributo R#refS apuntar a
nuestro arc#ivo +8L% .
!onga el cdigo mostrado anteriormente en un arc#ivo llamado RH88=ormal.2slS y
slvelo en la misma carpeta del arc#ivo H88.2ml que ya #abamos creado. #ora,
cambie la instruccin del arc#ivo H88.2ml y #aga que lu$ca de la siguiente manera'
K`xslXst/lesheet hrefFc8!!Normal7xslc t/peFctext0xslc `H
continuacin, abrimos el arc#ivo H88.2ml con el Anternet &2plorer y veremos la
#oja de estilos +L8% que recientemente creamos aplicada al arc#ivo +,L. &sta ser
su nueva apariencia'
3igura T' +,L con una #oja de estilos +8L% aplicada
Internet 7(%lorer tambi8n tiene sus $rans*ormaciones
partir de la versin U.V, Anternet &2plorer es capa$ de mostrar los arc#ivos +,L en
forma de rbol. Los elementos pueden ser e2pandidos y contrados a cualquier nivel
y esto facilita su visuali$acin? especialmente en los ms complejos..
&n la actualidad Anternet &2plorer usa el componente ,8+,L de la librera ;inID
para transformar los arc#ivos +,L cuando son abiertos. &sta transformacin la
reali$a a travs de +8L% y podemos ver fcilmente la fuente de la transformacin
tecleando la siguiente lnea en la Warra de )irecciones del navegador'
res>00msxml7dll0defaultss7xsl
>ada versin de la librera ,8+,L tiene predefinida su propia #oja de estilos.
!odemos ver la #oja de estilos de cada versin cambiando solamente la lnea
anterior por su correpondiente versin de la )LL ,8+,L, por ejemplo'
res>00msxml,7dll0defaultss7xsl
res>00msxml(7dll0defaultss7xsl
3igure U' +,L ;eb >ontrol
Usando 'SL$ en 0S1.27$ 9el camino *:cil;
>uando desarrollamos aplicaciones ;eb con 8!.=&%, podemos usar una estrategia
para transformar documentos +,L a travs de +8L%. %enemos a nuestra disposicin
en .=&% 3rame<orF una clase ;eb >ontrol llamada :+ml:. &sta clase se encuentra
en el =amespace :8ystem.;eb.UA.;eb>ontrols:. !ara utili$ar este ;eb >ontrol en
una ;eb 3orm, todo lo que debemos #acer es abrir nuestra ;eb 3orm en modo de
dise*o y arrastrar el control :+ml: desde la >aja de Cerramientas #acia el
formulario. La figura U muestra el +,L ;eb >ontrol en la caja de #erramientas .=&%.
&l +ml ;eb >ontrol es muy fcil de usar. !ara que l muestre nuestro documento
+,L solo tenemos que especificar la locali$acin del arc#ivo +,L en la propiedad
:)ocument8ource:' clic derec#o sobre nuestro +,L ;eb >ontrol en la vista de
dise*o y seleccionamos propiedades en el men@ conte2tual. &specifique donde se
encuentra su documento +,L en la propiedad :)ocument8ource: y nuestro +ml
;eb >ontrol ya ser funcional, aunque no muy bueno. !ara propbarlo, #aga clicF en
el botn :8tart: de la barra de #erramientas estndar o presione 3U. 8er abierta
una nueva instancia de nuestro navegador y su contenido deber aparecer como la
figura que mostramos a continuacin'
3igura 6' Ha< +,L )ocument
N-F, estamos de acuerdoO. =o es tan bonito. !ermtame entonces mejorar la calidad
de la presentacin...
La clave radica en el arc#ivo +8L% que recin creamos. &s muy fcil asociar nuestro
+L8% con la fuente +,L usando +,L ;eb >ontrol. &n la ventana propiedades del
control observar una propiedad llamada :%ransform8ource:. =o es tan difcil
suponer el propsito de esta propiedad. 8i #a pensado asociar el arc#ivo +,L al que
se refiere la propiedad :)ocument8ource: con la #oja de estilos +8L% incluida en el
mismo. %eclee el nombre del arc#ivo +L8% .H88=ormal.2sl/ en la propiedad
:%ransform8ource: y trate de ejecutar la aplicacin nuevamente. &n este momento
notaremos una mejora sustancial, gracias a la transformacin +L8% aplicada sobre
el arc#ivo +,L. La siguiente figura muestra los resultados de la transformacin,
a#ora muc#o mejor.
3igura X' +,L con una simple #oja de estilos +8L% aplicada
3igure 4' )rop )o<n List en modo de )ise*o
Le informo que puede cambiar las presentaciones del arc#ivo +,L asociando
simplemente otras #ojas de estilo +8L% en la propiedad :%ransform8ource: del +ml
;eb 8erver >ontrol. !ermtame intentar mejorar nuestra ;eb 3orm adicionando un
control )rop )o<n List que permitir intercambiar la visuali$acin de la pgina
dinmicamente. Cabilitaremos solo dos opciones en nuestro control )rop )o<n List.
>ada una de ellas cambiar la #oja de estilos +8L% aplicada sobre nuestro
documento +,L de entrada y mostrar el resultado cuando sea seleccionada. Una
opcin mostrar una visuali$acin simple de las noticias .solo los titulares/ y la otra
presentar una detallada informacin sobre cada noticia. >onseguiremos este
comportamiento alternando la #oja de estilos +L8% y reelaborando la pgina.
)esde la >aja de Cerramientas, arraste el control )rop)o<nList #acia el formulario
y nmbrelo :)rop)o<nGie<: por ejemplo. %rate de colocarlo sobre el control +ml. 8i
tiene problemas alineando los controles y no logra posicionarlos en el lugar que
desea, pruebe cambiar la propiedad :pageLayout: del documento de "ridLayout a
3lo<Layout. #ora nuestro ;eb 3orm en modo de dise*o deber quedar igual que la
figura 4.
3ije la propiedad :uto!ostWacF: del control )rop )o<n List a :%rue:, para generar
el formulario nuevamente tan pronto como el usuario cambie su valor.
Caga doble clic en un rea vaca del formulario o clic derec#o sobre el mismo y
seleccione :Gie< >ode: del men@ conte2tual? a propsito, 3X es la va ms rpida de
obtener los mismos resultados? tambin puede utili$arla... >opie y pegue el
siguiente cdigo en el mtodo !ageYLoad'
pri5ate 5oid Pa1eLoad=obEect sender$ !/stem7E5entAr1s e?
a
00 Define the 5isuali:ation options
if =\this7IsPost4acW?
a
this7DropDoTn2ieT7Items7Add=[Normal 2ieT[?R
this7DropDoTn2ieT7Items7Add=[Detailed 2ieT[?R
b
b
&l mtodo !ageYLoad de nuestro 3ormulario es asociado con el evento Load.
=ormalmente no vemos cuando esto sucede. 8i es curioso y quiere ver como
funciona, e2panda la seccin del cdigo fuente :;eb 3orm )esigner generated
code:. ll podr ver el cdigo responsable de asociar los eventos con los mtodos
correspondientes. &ste cdigo podr ser locali$ado en el mtodo
:Aniciali$e>omponent: y es automticamente generado por el ;eb 3orm )esigner.
=o resulta una buena idea cambiar este cdigo, ya que ser sobreescrito la pr2ima
ve$ que realice cambios en alg@n evento.
Za contamos con dos opciones en el control )rop )o<n List, a#ora debemos #acer
que funcione cada ve$ que el usuario cambie las mismas. !ara #acerlo utili$aremos
el evento :8electedAtem>#anged:. Caga doble clic sobre el control )rop )o<n List y
G8.=&% mostrar el esquema del mtodo :)rop)o<nGie<Y8electedAtem>#anged:.
!onga el siguiente cdigo en el mtodo para que la #oja de estilos +L8% dependa de
la opcin seleccionada por el usuario'
pri5ate 5oid DropDoTn2ieT!electedIndexChan1ed=obEect sender$ !/stem7E5entAr1s
e?
a
if =this7DropDoTn2ieT7!electedIndex FF +?
a
this76ml+7Transform!ource F [8!!Detailed7xsl[R
b
else
a
this76ml+7Transform!ource F [8!!Normal7xsl[R
b
b
=ecesitamos a#ora crear el arc#ivo H88)etailed.2sl. &sta transformacin presentar
informacin ms detallada sobre las noticias provenientes de H88 y mostrar una
apariencia diferente. continuacin el cdigo para nuestra #oja de estilos
H88)etailed.2sl'
Kxsl>st/lesheet xmlns>xslF[http>00TTT7T,7or10+&&&06!L0Transform[
5ersionF[+7*[H
Kxsl>template matchF[0[H
Kxsl>appl/Xtemplates selectF[0rss0channel0item[ 0H
K0xsl>templateH
Kxsl>template matchF[0rss0channel0item[H
Kspan st/leF[fontXfamil/>2erdanaR fontXsi:e>+*ptR displa/>blocW[H
Kspan st/leF[fontXTei1ht>boldR fontXsi:e>+'ptR bacW1round>UCCCCCCR
displa/>blocW[H
Kxsl>5alueXof selectF[title[ 0H
K0spanH
Kxsl>appl/Xtemplates selectF[description[ 0H
Khr colorF[blue[ si:eF[+[ 0H
K0spanH
K0xsl>templateH
Kxsl>template matchF[description[H
Kbr0H
Kxsl>5alueXof selectF[7[ 0H
K0xsl>templateH
K0xsl>st/lesheetH
8implemente copie este cdigo en un arc#ivo llamado RH88)etailed.2slS y pngalo
en la misma carpeta donde coloc H88.2ml y H88=ormal.2sl. )espus de eso,
ejecute el programa nuevamente y observar como las #ojas de estilo pueden ser
alteradas durante la ejecucin de un 3ormulario ;eb.
3igura K' 3ormulario ;eb en ejecucin con una visuali$acin detallada
httpDGGHHH.mu,.or,.arG5ebG$rtic$S:G&41.aspI
".11$lmacenamiento de datos B'.
".1&$plicaciones.
Sistemas de ;ases de +atos4
Administracin y uso
Alice J. @. <sai
Editorial 9rentice @all
6/1ico 1FFG
+;&GS34
6anual para programadores
<im 6artyn
<im @artley
Editorial 6c.=ra* @ill
Espa8a 1FF1
7undamentos de ;ases de +atos
Segunda edicin
@enry :. fort)
Abra)am Silbersc)at-
Editorial 6c.=ra* @ill

También podría gustarte