Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenidos
Introduccin
XQuery
XML Introduccin
l
XML
Documento
XML
BDOO
XQuery
3
XML
BD Nativas
BD Relacionales
BDOO
4
4
Contenidos
Introduccin
F l XML
XQuery
Atributos->Dominio
Relacin Alumnos
Relacin Asignaturas
DNI
Nombre
Direccin
FNac
Cdigo
10345678
Ura 27, 2A
19-06-1980
01
Bases de Datos
Obligatoria
76987654
Begoa 34, 1B
16-05-1983
02
Programacin
Troncal
09875432
18-04-1983
03
lgebra
Obligatoria
Relacin AlumAsig
Nombre
DNI
CodigoAsig
Nota
10345678
01
10345678
02
09875432
01
Crditos
Curso
Tipo
Tupla
Fabricante
Licencia
XML->BD
BD->XML
ADO
Microsoft
Comercial
Allora
HiT Software
Comercial
ASP2XML
Stonebroom
Comercial
Data Junction
Open Source
DBX
Swift Inc.
Comercial
InterAccess
Comercial
JaxMe
Jochen Wiedmann
Open Source
XML-DBMS
Ronald Bourret
Open Source
Tabla Libros
DTD
Reglas de transformacin
Documento
XML
nombre
isbn
apellido
nombre
ttulo
resultado comentario
ao
revisores
nombre
oficina
homepage
Ana Beln Martnez Prieto
Para cada tabla en el esquema de la base de datos hay que crear un elemento
con el mismo nombre de la tabla y la cardinalidad apropiada.
<!DOCTYPE libros [
<!ELEMENT libros (libro)*>
]>
10
11
Para cada columna en la tabla cuyo tipo de dato es simple (char, integer, etc.)
12
Para cada columna en la tabla cuyo tipo de dato es complejo (tipo objeto), crear
un elemento complejo, sub-elemento del elemento creado en el paso 2, con el
mismo nombre de la columna. Para cada propiedad del tipo objeto crear un
elemento con el mismo nombre de la propiedad.
13
Para cada columna en la tabla que es una tabla anidada, crear un elemento con el
mismo nombre de esa columna y la cardinalidad apropiada. Repetir todos los pasos
desde el 2.
14
<!DOCTYPE libros [
<!ELEMENT libros (libro)*>
<!ELEMENT libro (isbn, titulo, autores, editor, precio, ao, revisores)>
<!ELEMENT isbn (#PCDATA)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT autores (autor)+>
<!ELEMENT autor (nombre, apellidos, email)>
<!ELEMENT editor (nombre,oficina,homepage) >
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apellidos (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT oficina (#PCDATA)>
<!ELEMENT homepage (#PCDATA)>
<!ELEMENT precio (#PCDATA)>
<!ELEMENT ao (#PCDATA)>
<!ELEMENT revisores (revisor)*>
<!ELEMENT revisor (nombre,resultado,comentarios)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT resultado (#PCDATA)>
<!ELEMENT comentario (#PCDATA)>]>
15
<libros>
<libro>
<isbn> 1-55655-767-6 </isbn>
<titulo> Fundamentos de Bases de Datos </titulo>
<autores>
<autor>
<nombre> Abraham</nombre>
<apellido> Silberschatz</apellido>
<email> silbers@hotmail.com </email>
</autor>
<autor>
<nombre> Henry </nombre>
<apellido> Korth </apellido>
<email> korth@ hotmail.com </email>
</autor>
</autores>
<editor>
<nombre> McGraw-Hill </nombre>
<oficina> Av. Santander s/n </oficina>
<homepage> http://www.mcgrawhill.es </homepage>
</editor>
<precio> 40 </precio>
<ao> 2003 </ao>
<revisores>
<revisor>
<nombre> James Smith </nombre>
<resultado> 8 </resultado>
<comentario> Es un libro de texto bsico ...</comentario>
</revisor>
</revisores>
</libro>
</libros>
16
Resumen Transformacin
Esquema Relacional - DTD
<!DOCTYPE tabla [
<!ELEMENT tabla (registro)*>
<!ELEMENT registro (columna1, columna2,..., columnaN)>
<!ELEMENT columna1 (#PCDATA)>
<!ELEMENT columna2 (propiedad1, propiedad2,..., propiedadN) >
...
<!ELEMENT columnaN (#PCDATA)>
<!ELEMENT propiedad1 (#PCDATA)>
<!ELEMENT propiedad2 (#PCDATA)>
...
<!ELEMENT propiedadN (#PCDATA)> ]>
17
Resumen - Transformacin
Esquema Relacional - XML SCHEMA
<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>
<xsd:element name=tabla>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=registro minOccurs=0 maxOccurs=unbounded>
<xsd:complexType>
<xsd:sequence >
<xsd:element name=columna1 type=xsd:positiveInteger/>
<xsd:element name=columna2/>
<xsd:complexType>
<xsd:sequence >
<xsd:element name=propiedad1 type=xsd:string/>
<xsd:element name=propiedad2 type=xsd:boolean/>
....
<xsd:element name=propiedadn type=xsd:positiveInteger/>
</xsd:sequence>
</xsd:complexType>
</xsd:element >
<xsd:element name=columnaN type=xsd:string/>
</xsd:sequence >
</xsd:complexType>
</xsd:element >
</xsd:sequence >
</xsd:complexType>
</xsd:element >
</xsd:schema>
18
19
Contenidos
Introduccin
F l XML
XQuery
20
21
Estructura de Referencia
P r o g r a m a Fuente
en C++, Java, etc
Preprocesador
Entorno 4GL/RAD
Utilidades
Procesador de
consultas ad hoc
Programa Fuente
en 4GL/RAD
Compilador
Mdulos
Cdigo Objeto
Programa
Ejecutable
Procesamiento
y optimizacin
de consultas
Procesamiento de
transacciones,
gestin de errores,
recuperacin,
autorizacin,
seguridad
Linker
Libreras de clases,
m d u l o s ejecutables de
SGBDOO
D a t o s /objetos
Vistas
Reglas
Indices
Catlogos
22
Objetos
Transitorios
Persona 4
Persona 4
Persona 3
Persona 3
Persona1
Persona
2
Persona1
Persona
2
Objetos
Persistentes
Persona 9
Persona 9
Persona 7
Persona 7
Persona6
Persona
2
Persona6
Persona
2
Extensin
de la Clase
23
Inconveniente:
El nombrado de cada objeto a nivel
Bases de Datos Orientadas a Objetos
individual no resulta prctico para
Implica dar un nombre nico al objeto persistente por el que podr ser recuperado por otros
programas
Los nombres han de ser nicos en cada base de datos
Punto
de
Entrada:
PersonaJuan
Ejemplo
getRoot (PersonaJuan)
Juan
Juan
Garca
Garca
Ura
Ura
24
Persona
DNI
Nombre
Direccin
Coche
Matrcula
Marca
Modelo
Propietario
Ejemplo
IDO
db.createRoot(CocheJuan,c1);
1
Persiste el objeto coche c1
Punto de Entrada: CocheJuan
Ana Beln Martnez Prieto
25
Crear un objeto persistente (con nombre) que representa un conjunto o lista de objetos de una
determinada clase
Objetos Persona
Objeto
TodasPersonas
...
Extensin de la Clase
Ana Beln Martnez Prieto
26
http://www.odmg.org
Bases de Datos Orientadas a Objetos
Estndar ODMG
l
Modelo de Objetos
Est concebido para proporcionar un modelo de objetos estndar para las bases de datos orientadas a
objetos
Es el modelo en el que se basan el lenguaje de definicin de objetos (ODL) y el lenguaje de consultas (OQL)
Lenguaje de Definicin de Objetos (ODL, Object Definition Language)
Lenguaje de Consulta
Definen un lenguaje de manipulacin de objetos (OML, Object Manipulation Language) que extiende el
lenguaje de programacin para soportar objetos persistentes. Adems incluye soporte para OQL,
navegacin y transacciones
27
28
Relaciones:
1:1
Clase
Interfaz
Persona
Persona-IF
Herencia
1:N
de interfaz
M:N
de clase
29
Persona
asesor
Profesor
asesora-a
Alumno
Clase Alumno
class Alumno extends Persona
(extent alumnos
key n-matricula)
{
Attribute string n-matricula;
attribute string clase;
relationship Profesor asesor inverse Profesor::asesora_a;
....
}
Ana Beln Martnez Prieto
30
identidad de objetos
objetos complejos
operaciones
herencia
polimorfismo y
relaciones
31
Select e
From personas p
Where p.direccion.ciudad=Oviedo
Invocacin de Mtodos
Select p.nombre
From personas p
Where p.vive_en(Oviedo)
32
Especfica
33
JAXB es el nombre del API oficial de Sun para bindings de archivos XML. Sun proporciona una
implementacin de referencia
URL
Castor
http://www.castor.org
Xgen
http://www.commerceone.com/developers/docsoapxdk
Breeze
http://www.breezefactor.com
Zeus
http://zeus.objectweb.org
XMLBeans
http://xml.apache.org/xmlbeans
34
Esquema
XML
1.Traducir
Clases
Validar
Documento
XML
BDOO
2.Traducir
(unmarshalling)
Objetos
Almacenar
- Consultar
marshalling
Ana Beln Martnez Prieto
35
autor
libro
XML
Schema
editorial
Reglas de transformacin
Documento
XML
36
autor
cdigo
nombre
apellido
email
libro
escribe
1..*
1..*
isbn
ttulo
ao
precio
editorial
publicadopor
1..*
1.
idpub
nombre
oficina
homepage
37
Class libro
(extent libros key isbn) {
attribute string isbn;
attribute string titulo;
attribute unsigned short ao;
attribute float precio;
relationship set <autor> escritopor inverse autor::escribe;
relationship editorial publicadopor inverse editorial::publica; };
Class autor
(extent autores key codigo) {
attribute string codigo;
attribute string nombre;
attribute string apellido;
attribute list<string> email;
relationship set <libro> escribe inverse libro::escritopor; };
Class editorial
(extent editoriales key idpub) {
attribute string idpub;
attribute string nombre;
attribute string oficina;
attribute string homepage;
relationship set <libro> publica inverse libro::publicadopor; };
Ana Beln Martnez Prieto
38
l Regla 1
Cada documento XML tiene un elemento raz (puede ser el nombre de la base de
datos) que debe tener asociado un tipo complejo annimo que incluye un
elemento especial choice con un atributo maxOcurrs con valor unbounded
<xsd:element name=libros>
<xsd:complexType>
<xsd:choice maxOccurs=unbounded>
39
l Regla 2
Cada clase en el esquema ODL se convierte en un elemento, con el mismo
40
l Regla 3
Los atributos con tipos de datos bsicos (string, short, date, float, etc) se
41
l Regla 4
Para los atributos key es necesario declarar un elemento especial key como un
<xsd:key name=librok>
<xsd:selector xpath=.//libro/>
<xsd:field xpath=isbn/>
</xsd:key>
Ana Beln Martnez Prieto
42
l Regla 5 A)
Cada relacin que contiene las palabras clave set,list o bag se convierte en un
43
l Regla 5 B)
Se declarar un elemento especial Keyref como un sub-elemento del elemento
que ha resultado de la regla 1. Este elemento tendr
44
l Regla 6
Cada relacin que no contiene set, list o bag se convierte en un elemento con el
mismo nombre. La traduccin es similar a la expresada en la regla anterior, con
algunas excepciones:
el atributo maxOccurs, con valor unbounded no debera emplearse
en la declaracin del elemento keyref
el atributo xpath del elemento selector contendr el nombre de la clase
a la que pertenece la relacin
el atributo xpath del elemento field contendr el nombre de la relacin
45
l Regla 7
Cada atributo de una clase de tipo list se convierte en un elemento, con el
46
name=bibdb>
<xsd:complexType>
<xsd:choice maxOccurs=unbounded>
<xsd: element name=libro>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=isbn type=xsd:string/>
<xsd:element name=titulo type=xsd:string/>
<xsd:element name=ao type=xsd:unsignedshort/>
<xsd:element name=precio type=xsd:float/>
<xsd:element name=escritopor maxOccurs=unbounded/>
<xsd:complexType>
<xsd:complexContent>
<xsd:restriction base=xsd:anyType>
<xsd:attribute name=codigo type=xsd:string>
</xsd: restriction>
</xsd:complextContent >
</xsd:complexType>
</xsd:element>
<xsd:element name=publicadopor type=xsd:string/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
..
<xsd:key name=librok>
<xsd:selector xpath=.//libro/>
<xsd:field xpath=isbn/>
</xsd:key>
<xsd:key name=autork>
<xsd:selector xpath=.//autor/>
<xsd:field xpath=codigo/>
</xsd:key>
....
<xsd:keyref name=libroRefAutor refer=autorK>
<xsd:selector xpath=.//libro/escritopor/>
<xsd:field xpath=@codigo/>
</xsd:keyref>
47
Genrica
Ej. nicamente hay una clase para cualquier tag XML de cualquier tipo de
documento
48
Document
Genrica
Element:
Attribute:
Text:
ao
2004
libro
Element:
Element:
Element:
Element:
titulo
autor
editor
precio
Text:
Fundamentos..
Element:
Element:
Element:
Text:
Text:
nombre
apellido
McGraw-Hill
80
Text:
Text:
Text:
Abraham
Silberschatz
silbers@hotmail
49
50
Contenidos
Introduccin
XQuery
51
52
Posibilidad sencilla: Almacenar el documento como un BLOB en una base de datos relacional, o
mediante un fichero, y proporcionar algunos ndices sobre el documento que aceleren el
acceso a la informacin
53
Almacena un modelo binario del documento (p.e. DOM) en un almacn existente o bien
especfico.
54
Sistema propietario
Nombre
Licencia
API
Comercial
C++, Java
Coherty XML DB
Comercial
Java, JSP
dbXML
Comercial
eXtc
Comercial
GoXML DB
Comercial
Java
Infonyte DB
Comercial
JSP, Java
Comercial
Java
Lucid XML DM
Comercial
Java
Comercial
JSP
TeamXML
Comercial
Java
Virtuoso
Comercial
XIndice
Open Source
XDBM
Open Source
Java
55
Sistema relacional
Nombre
Licencia
API
DBDOM
Open Source
Java
eXist
Open Source
Java
XDB
Open Soure
C++
Licencia
API
Comercial
C, C++, Java
MindSuite XDB
Comercial
Java, C++
Ozone
Open Source
Java
56
Las colecciones juegan en las bases de datos nativas el papel de las tablas en
las DB relacionales
Consultas
57
Indexacin XML
Actualizaciones y Borrados
58
Contenidos
Introduccin
F l XQuery
Ana Beln Martnez Prieto
59
XQuery - Introduccin
l
XQuery 1.0 and XPath 2.0 Data Model (W3C Working Draft)
XQuery 1.0 and XPath 2.0 Functions and Operators (W3C Working Draft)
XML Query Use Cases (W3C Working Draft)
60
XQuery - Introduccin
61
XQuery - Introduccin
62
Secuencias
63
tem
No tienen
identidad
-string
-integer
Valor Atmico
-decimal
<libro ao="2000"> -date
Nodo
Nodo
Nodo
Orden del documento: corresponde al orden en que los nodos apareceran si la jerarqua de nodos
fuese representada en formato XML (si el primer carcter de un nodo ocurre antes que el primer carcter de otro nodo, lo
preceder tambin en el orden del documento)
64
bib
ao
libro
titulo
Fundamentos
autor
autor
nombre
apellido
nombre
apellido
Abraham
Silberschatz
silbers@h
otmail.com
Henry
Korth
1994
libro
editor
precio
McGraw
-Hill
80
ao
65
Modelo de Datos
D
Documento
XML
schema
validation
serialization
Documento
XML
66
XQuery Expresiones
l
53
5.3
5.3E3
57
La instruccin let
67
XQuery Ejemplos
l
document (bib.xml)
68
XQuery Expresiones
document (bib.xml)//libro
Ejemplo:
Obtener todos los elementos libro hijos del elemento bib en el documento
bib.xml
document(bib.xml)/bib/libro
/bib
Devuelve el nodo documento
/libro
Selecciona los elementos
libro hijos del elemento bib
69
XQuery Expresiones
l
Un paso puede ser cualquier expresin que devuelva una secuencia de nodos
Un paso eje comienza en el nodo de contexto y se desplaza a travs de la jerarqua de
nodos en una direccin concreta (la del eje)
Nombre
Posicin con respecto al nodo de contexto
Predicado basado en el valor de un nodo
70
Ej1.
Ej2.
Ej3.
Ej4.
Ej.5
71
XQuery Ejemplos
l
72
document{ } crea un
nodo documento vacio
73
Salida
<ejemplo>
<p> Esto es una consulta de ejemplo </p>
<ej> document(bib.xml)//libro[1]/titulo </ej>
<p> Este es el resultado de la consulta anterior </p>
<ej> Fundamentos de Bases de Datos </ej>
</ejemplo>
Ana Beln Martnez Prieto
74
Calcula el contenido
Ana Beln Martnez Prieto
75
Ejemplo:
76
For y Let
Where
Order by
Return
77
<fact>
<fact>
<fact>
<fact>
2
2
3
3
veces
veces
veces
veces
2
5
2
5
es
es
es
es
4 </fact>
10 </fact>
6 </fact>
15 </fact>
Clusula for
Ejemplos:
1) for
$n
in (2,3)
return $n+1
Resultado
(3,4)
78
Clusula let
Resultado
$i =1, $j =1
$i =2, $j = (1,2)
$i =3, $j = (1,2,3)
79
Clusula where
80
Clusula order by
Esta clusula es ejecutada una vez para cada tupla retenida por la
clusula where
Esta clusula es evaluada antes que la clusula return
Los resultados de estas ejecuciones son concatenados en una secuencia
que sirve como resultado de la expresin FLWOR
81
Clusula return
Esta clusula es ejecutada una vez para cada tupla retenida por la
clusula where
Los resultados de estas ejecuciones son concatenados en una secuencia
que sirve como resultado de la expresin FLWOR
82
83
84
Ejemplo:
8. Listar los ttulos de los libros as como cualquier revisin que haya sobre ellos
85
86
XQuery Expresiones
l
Expresiones condicionales
if (expresion ) then
else (se ejecuta si la expresin devuelve false o una secuencia vacia).
La clasula else es obligatoria y debe aparecer siempre en la expresin condicional. Si no hay instrucciones para aadirle se
puede indicar como else().
Ejemplo:
if (count($b/autor)>2)
then <autor> et al. </autor>
else ()
87
XQuery Expresiones
l
Expresiones cuantificadas
88
XQuery
l
11. Listar los ttulos de los libros en los que al menos uno de sus autores
es Silberschatz.
12. Listar los ttulos de los libros en los que todos sus autores sean
Silberschatz.
89
XQuery Funciones
l
document()
Funciones agregadas: sum, avg,count, max, min, que operan sobre una
secuencia de nmeros y devuelven un resultado numrico
90
XQuery
l
91
XQuery
l
15. Crear una tabla HTML con los ttulos de todos los libros del
documento bib.xml
92
XQuery Operadores
l
Devuelven secuencias de nodos en el orden del documento y eliminan duplicados de las secuencias resultado
Se emplean para combinar condiciones lgicas dentro de un predicado. Ej. Item[seller=Smith and precio]
Compara la posicin de dos nodos. $node1<<$node2 es true si el nodo ligado a $node1 ocurre primero en el orden del documento que el
nodo ligado a $nodo2
Lgicos: and y or
Comparan la identidad de dos nodos. Ej. $nodo1 is $nodo2 es true si ambas variables estn ligadas al mismo nodo
Comparan dos valores escalares y produce un error si alguno de los operandos es una secuencia de longitud mayor de 1
Negacin: not
93
Direcciones de inters
XML + BD
http://www.searchtools.com/info/xml-resources.html
94
Bibliografa
& Data on the Web. From relations to semistructured data and XML
Abiteboul S., Buneman P. Y Suciu Dan
Morgan Kaufmann, 2000
95