LMGSI TEMA 6 Subrayado
LMGSI TEMA 6 Subrayado
AVISO: Esta página ha sido generada para facilitar la impresión de los contenidos. Los enlaces externos a otras
páginas no serán funcionales.
Almacenamiento de información.
Caso práctico
Antes de irse de vacaciones con su familia, María y Félix
tienen una reunión con el responsable del departamento
de informática de la empresa, Juan, en la que éste último
les explica que aún se puede mejorar la gestión de datos de
la empresa.
Además, para acceder a los datos de esta base de datos nativa van a utilizar un
lenguaje de consultas llamado XQuery, que equivale al SQL usado con las bases
de datos relacionales.
Caso práctico
[Link] 1/19
12/4/2019 eXe
Autoevaluación
La tecnología XML:
Permite tratar a los ficheros como si fuesen base de datos.
Facilita el desarrollo de las aplicaciones al tener el esquema independiente de
los datos.
Hace que el compartir información sea más cómodo.
Permite el acceso directo a los datos buscados, es decir sin recorrer todo el
archivo.
[Link] 2/19
12/4/2019 eXe
Las bases de datos relacionales tradicionales son mejores para tratar con requerimientos
centrados en los datos, mientras que los sistemas de administración de contenido y de
documentos, suelen ser mejores para almacenar datos centrados en el documento.
Los sistemas de bases de datos deben ser capaces de exponer los datos relacionales
como XML, y almacenar el XML recibido como datos relacionales para transferir, obtener y
almacenar los datos requeridos por la aplicación.
Autoevaluación
Elige las características que se ajusten a los sistemas centrados en datos:
Contiene datos con una estructura no muy definida.
Es apropiada para publicidad.
Los datos pueden actualizarse.
Contiene datos con una estructura muy definida.
Caso práctico
Mientras María disfruta de sus vacaciones Félix y Juan estudian si el cambio
propuesto por este último es viable.
Para ello lo primero que hacen es informarse sobre los distintos sistemas de
almacenamiento posibles y sus ventajas a la hora de utilizarlos con la tecnología
[Link] 3/19
12/4/2019 eXe
XML.
Una expresión XPath es un predicado que se aplica sobre una estructura de árbol
correspondiente a la jerarquía de los datos de un documento XML y devuelve todo lo
que encaja con ese predicado.
Pero aparecen muchas más cosas que lo diferencian. Debido a que no es una base de datos, la
tecnología XML carece, entre otras cosas, tanto de almacenamiento y actualización eficientes
como de índices, seguridad, transacciones, integridad de datos, acceso concurrente,
disparadores, etc.; que son algunas de las características habituales en las bases de datos. Por
tanto es imposible pensar que XML se vaya a utilizar para las tareas transaccionales de una
organización para las cuales sigue estando sobradamente más justificado utilizar una base de
datos.
Autoevaluación
Marcar las afirmaciones que son correctas sobre bases de datos XML:
Integran sistemas de información basados en documentos.
Integran sistemas de información estructurados.
La información se estructura siguiendo esquemas definidos previamente.
Garantiza la actualización eficiente.
[Link] 4/19
12/4/2019 eXe
Las bases de datos relacionales suponen una posibilidad para el almacenamiento de datos
XML. Sin embargo, no están bien preparadas para almacenar estructuras de tipo jerárquico
como son los documentos XML, algunas de las causas son:
Las bases de datos relacionales tienen una estructura regular frente al carácter
heterogéneo de los documentos XML.
Los documentos XML suelen contener muchos niveles de anidamiento mientras que los
datos relacionales son planos.
Los documentos XML tienen un orden intrínseco mientras que los datos relacionales son
no ordenados.
Los datos relacionales son generalmente densos (cada columna tiene un valor), mientras
que los datos XML son dispersos, es decir, pueden representar la carencia de información
mediante la ausencia del elemento.
Algunas de las razones para usar los tipos de bases de datos relacionales y los productos de
bases de datos existentes para almacenar XML, aún cuando no sea de forma nativa son:
Las bases de datos relacionales y orientadas a objetos son bien conocidas, mientras que
las bases de datos XML nativas son nuevas.
Como resultado de la familiaridad con las bases de datos relacionales y orientadas a
objetos, los usuarios se inclinan a ellas especialmente por el rendimiento.
Autoevaluación
El hecho de que el uso de las bases de datos relacionales esté muy extendido es
uno de los motivos por los que se utilizan para almacenar datos XML.
No.
Sí.
[Link] 5/19
12/4/2019 eXe
Crear las claves primarias en el esquema XML. Una solución podría ser agregar un
atributo para la columna clave primaria, con un ID agregado al nombre de la columna.
Este atributo podría necesitar ser definido en el esquema XML como de tipo ID. Pueden
surgir problemas de colisión al crear claves primarias en el esquema XML, ya que a
diferencia de las bases de datos relacionales, donde las claves primarias necesitan ser
únicas sólo dentro de una tabla, un atributo ID dentro de un documento XML debe ser
único a través de todo el documento.
Para resolverlo se puede agregar el nombre del elemento (nombre de la tabla), al valor de
la clave primaria (valor del atributo). Esto asegura que el valor es único a través del
documento XML.
Pueden existir muchas variaciones de esquemas XML para representar la misma base de datos
relacional.
Autoevaluación
Relaciona los siguientes pasos con su orden a la hora de transformar una
base de datos relacional a almacenamiento XML.
Ejercicio de relacionar
Modelo de Objetos. Está concebido para proporcionar un modelo de objetos estándar para
las bases de datos orientadas a objetos. Es el modelo en el que se basan el lenguaje de
definición de objetos y el lenguaje de consultas.
Lenguajes de Especificación de Objetos. ODL
Lenguaje de Consulta. Conocido como OQL .
‘Bindings’ para C++, Java y Smalltalk. Definen un OML que extiende el lenguaje de
programación para soportar objetos persistentes. Además incluye soporte para OQL,
navegación y transacciones.
Una vez transformado el documento XML en objetos, éstos son gestionados directamente por el
SGBDOO. Dicha información se consulta acudiendo al lenguaje de consulta OQL. Los
mecanismos de indexación, optimización, procesamiento de consultas, etc. son los del propio
SGBDOO, y por lo general, no son específicos para el modelo XML.
Autoevaluación
Selecciona aquellos que sean componentes del estándar de objetos:
SQL.
OQL.
XQuery.
XQL.
Consultas. La mayoría de las BD XML soportan uno o más lenguajes de consulta. Uno de
los más populares es XQuery.
[Link] 7/19
12/4/2019 eXe
Actualizaciones y Borrados.
Autoevaluación
Selecciona aquellas características de las bases de datos nativas:
Triggers.
Consultas.
Creación de índices.
Creación de identificadores únicos.
3.- XQuery.
Caso práctico
Una vez que María vuelve de vacaciones Juan y Félix le ponen al día de sus
estudios.
La única cuestión que queda por decidir es el modo de acceder a los datos
guardados en los archivos XML.
[Link] 8/19
12/4/2019 eXe
3.1.- Aplicaciones.
Una vez que hemos visto la definición del lenguaje y sus principales requerimientos, queda
pensar, ¿para qué se utiliza?
Qexo: escrito en Java y con licencia GPL que se distribuye integrado dentro del paquete
Kawa.
Saxon: escrito en Java y distribuido en dos paquetes:
Saxon-B es open-source bajo licencia GPL y contiene una implementación básica de
XSLT 2.0 y XQuery.
Saxon-SA, contiene un procesador completo XSLT y XQuery pero tiene licencia
propietaria, aunque está disponible una licencia de evaluación de 30 días.
Qizx/open: es una implementación Java de todas las características del lenguaje excepto
la importación y validación de XML-Schemas. Es uno de los motores con licencia GPL
más completo que existe.
Xquark Bridge: es una herramienta que permite importar y exportar datos a bases de
datos relacionales utilizando XML, ofreciendo, por tanto, la posibilidad de manejar
estructuras XML y realizar la transformación a objetos de la base de datos, y viceversa.
Además XQuark respeta las restricciones de integridad y transforma las relaciones
implícitas en los documentos XML, en relaciones explícitas en la base de datos.
También soporta la consulta y manipulación de los datos en formato XML utilizando el
lenguaje XQuery. XQuark-Bridge soporta MySQL, Oracle, SQLServer y Sybase, tiene una
licencia LGPL.
Autoevaluación
¿Cuáles de las siguientes herramientas se relacionan directamente con
XQuery?
Xquark-Brigde.
Oracle.
Saxon.
MySQL.
[Link] 10/19
12/4/2019 eXe
Autoevaluación
Alguna de las características del modelo de datos en el que se basa XQuery
es:
El orden de los nodos no importa.
Se basa en secuencias de ítems, donde las secuencias se anidan dentro de
otras secuencias.
La secuencia es un conjunto de datos de cualquier tipo.
Tiene un valor especial que aparece cuando se trata de evaluar una expresión
errónea.
Debes conocer
En el siguiente enlace puedes encontrar el estándar de XQuery aprobado por el
W3C en diciembre de 2010.
[Link] 11/19
12/4/2019 eXe
3.3.- Expresiones.
Una consulta en XQuery es una expresión que lee una secuencia
de datos en XML, y devuelve como resultado otra secuencia de
datos en XML.
Los comentarios en XQuery están limitados entre caras sonrientes, es decir: (: Esto es un
comentario XQuery :).
En un documento XQuery los caracteres { } delimitan las expresiones que son evaluadas para
crear un documento nuevo.
XQuery admite expresiones condicionales del tipo if-then-else con la misma semántica que
tienen en los lenguajes de programación habituales.
Las consultas XQuery pueden estar formadas por hasta cinco tipos de cláusulas diferentes,
siguen la norma FLWOR (que se pronuncia "flower"). Estas cláusulas son los bloques
principales del XQuery, equivalen a las cláusulas select, from, where, group by, having, order
by y limit de SQL.
En una sentencia FLWOR al menos ha de existir una cláusula FOR o una LET, el resto, si
existen, han de respetar escrupulosamente el orden dado por el nombre, FLWOR.
Con estas sentencias se consigue buena parte de la funcionalidad que diferencia a XQuery de
XPath. Entre otras cosas permite construir el documento que será la salida de la sentencia.
Prólogo: Lugar donde se declaran los espacios de nombres, de funciones, variables, etc.
Expresión: Consulta propiamente dicha.
Autoevaluación
Toda sentencia XPath es una sentencia XQuery:
Verdadero.
Falso.
[Link] 12/19
12/4/2019 eXe
3.4.- Cláusulas.
Hemos visto el modo de crear sentencias FLWOR, vamos ahora
a estudiar aisladamente cada una de las cláusulas que pueden
formar estas sentencias.
LET: vincula las variables al resultado de una expresión. Si esta cláusula aparece en una
sentencia en la que ya hay al menos una cláusula FOR, los valores de la variable
vinculada por la cláusula LET se añaden a cada una de las tuplas generadas por la
cláusula FOR.
WHERE: filtra tuplas producidas por las cláusulas FOR y LET, quedando solo aquellas que
cumplen con la condición.
ORDER BY: ordena las tuplas generadas por FOR y LET después de que han sido
filtradas por la cláusula WHERE. Por defecto el orden es ascendiente, pero se puede usar
el modificador descending para cambiar el sentido del orden.
Ejercicio
j p
resuelto p
del fichero XML de datos:
[Link] 13/19
12/4/2019 eXe
1. Ejemplo de uso de la cláusula FOR. Obtener todos los títulos de los libros del
fichero [Link].
2. Ejemplo de uso de la cláusula LET. Obtener todos los títulos de los libros del
fichero [Link].
3. Ejemplo de uso de la cláusula FOR y LET juntas. Obtener todos los títulos de
los libros del fichero [Link] junto con los autores de cada libro.
1. Ejemplo de uso de la cláusula FOR. Obtener todos los títulos de los libros
del fichero [Link].
for $d in doc("[Link]")/biblioteca/libro/titulo
return
<titulos>{ $d }</titulos>
2. Ejemplo de uso de la cláusula LET. Obtener todos los títulos de los libros
del fichero [Link].
let $d := doc("[Link]")/biblioteca/libro/titulo
return
<titulos>{ $d }</titulos>
3 Ejemplo de uso de la cláusula FOR y LET juntas Obtener todos los títulos
[Link] 14/19
12/4/2019 eXe
3. Ejemplo de uso de la cláusula FOR y LET juntas. Obtener todos los títulos
de los libros del fichero [Link] junto con los autores de cada libro.
for $b in doc("[Link]")//libro
let $c := $b/autor
return
<libro>{ $b/titulo, <autores>{ $c }</autores>}</libro>
Otra solución posible a este ejercicio, en este caso utilizando únicamente
la cláusula FOR
for $b in doc("[Link]")//libro
return
<libro>{ $b/titulo, <autores>{$b/autor}</autores>}</libro>
4. Ejemplo de uso de las cláusulas WHERE y ORDER BY en una consulta
con dos ficheros. Obtiene los títulos de los libros prestados con sus
autores y la fecha de inicio y devolución del préstamo, ordenados por la
fecha de inicio del préstamo.
for $t in doc("[Link]")//libro,
$e in doc("[Link]")//entrada
where $t/titulo = $e/titulo
order by $e/prestamo/inicio
return <prestamo>{ $t/titulo, $t/autor/*, $e/prestamo/inicio,
$e/prestamo/devolucion }</prestamo>
Debes conocer
En el siguiente enlace puedes ver una presentación que muestra el modo en el que
se ejecuta una sentencia FLWOR.
3.5.- Funciones.
Ahora que conocemos las cláusulas que sustentan el lenguaje XQuery, vamos a ocuparnos de
las funciones que soporta.
Estas son funciones matemáticas, de cadenas, para el tratamiento de expresiones regulares,
comparaciones de fechas y horas, manipulación de nodos XML, manipulación de secuencias,
comprobación y conversión de tipos y lógica booleana. Además permite definir funciones
propias y funciones dependientes del entorno de ejecución del motor XQuery. Las funciones
más importantes se muestran a continuación:
[Link] 15/19
12/4/2019 eXe
Funciones numéricas
floor(), que devuelve el valor numérico inferior más
próximo al dado.
ceiling(), que devuelve el valor numérico superior más
próximo al dado.
round(), que redondea el valor dado al más próximo.
count(), determina el número de ítems en una
colección.
min() o max(), devuelven respectivamente el mínimo y
el máximo de los valores de los nodos dados.
avg(), calcula el valor medio de los valores dados.
sum(), calcula la suma total de una cantidad de ítems dados.
Cuantificadores existenciales:
some, every, permiten definir consultas que devuelven algún, o todos los elementos,
que verifiquen la condición dada.
Ejercicio resuelto
j p , q
títulos de los libros almacenados en el fichero [Link] y su primer autor. En caso
de que haya más de un autor para un libro se añade un segundo autor “cia”.
Además de estas funciones que están definidas en el lenguaje XQuery permite al desarrollador
construir sus propias funciones:
Ó Ó
[Link] 16/19
12/4/2019 eXe
...CÓDIGO DE LA FUNCIÓN...
}
j p
Ejercicio
y
resuelto
3.6.- Operadores.
Veamos ahora algunos de los operadores más importantes
agrupados según su funcionalidad:
Autoevaluación
Cuáles de los siguientes operadores pertenecen a SQL y a XQuery:
is.
union.
lt.
>=.
Autoría: xadrian.
Licencia: CC By-nc-sa.
Procedencia: [Link]
Autoría: -ELFisgon-.
Licencia: CC By-nc-nd.
Procedencia: [Link]
[Link] 18/19
12/4/2019 eXe
Autoría: reiven.
Licencia: CC By-nc-sa.
Procedencia: [Link]
Autoría: Gory.
Licencia: Ccy By-nc-sa.
Procedencia: [Link]
Autoría: seferman.
Licencia: CC By-nc-sa.
Procedencia: [Link]
Autoría: mollyali.
Licencia: CC By-nc.
Procedencia: [Link]
[Link] 19/19