1 BD Bases de Datos Avanzadas
1 BD Bases de Datos Avanzadas
1 BD Bases de Datos Avanzadas
avanzadas
María José Aramburu Cabo
Ismael Sanz Blasco
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions
Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 12071 Castelló de la Plana
http://www.tenda.uji.es e-mail: publicacions@uji.es
Col·lecció Sapientia, 73
www.sapientia.uji.es
Primera edició, 2013
ISBN: 978-84-695-6769-2
Reconeixement-CompartirIgual
CC BY-SA
Aquest text està subjecte a una llicència Reconeixement-CompartirIgual de Creative Com-
mons, que permet copiar, distribuir i comunicar públicament l’obra sempre que s’especifique
l’autor i el nom de la publicació fins i tot amb objectius comercials i també permet crear obres
derivades, sempre que siguen distribuïdes amb aquesta mateixa llicència.
http://creativecommons.org/licenses/by-sa/3.0/legalcode
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
CONTENIDOS
Prólogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Capítulo 1
Bases de datos orientadas a objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1. Objetivos de aprendizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Evolución histórica de las bases de datos . . . . . . . . . . . . . . . . . . . . . . . . . 12
3. Conceptos del modelo de datos orientado a objetos . . . . . . . . . . . . . . . . 14
3.1. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2. Identidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3. Propiedades de los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1. Constructores de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2. Referencias entre objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.3. Estado de los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.4. Comportamiento de los objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.5. Clasificación e instanciación de objetos . . . . . . . . . . . . . . . . . . . . . . 20
4. Sistemas de gestión de bases de datos orientadas a objetos . . . . . . . . . . 21
4.1. Persistencia de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.2. Características de los sgbdoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5. Diseño lógico de bases de datos orientadas a objetos . . . . . . . . . . . . . . . 25
5.1. Agregación y asociación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.2. Generalización, especialización y herencia . . . . . . . . . . . . . . . . . . . . 26
5.3. Polimorfismo de métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.4. Diseño lógico de bases de datos oo . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.5. Ejemplo de diseño de una base de datos orientada a objetos . . . . . . . 31
6. Consultas en bases de datos orientadas a objetos . . . . . . . . . . . . . . . . . . . 34
6.1. Puntos de acceso y variables iterador . . . . . . . . . . . . . . . . . . . . . . . . 34
6.2. Caminos de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.3. Lenguaje de consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7. Diseño físico de bases de datos orientadas a objetos . . . . . . . . . . . . . . . . 40
7.1. Índices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2. Agrupamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 3 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Capítulo 2
Sistemas de recuperación de información y documentos
estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.1. Objetivos de aprendizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2. Sistemas de bases de datos versus sistemas de recuperación
de información . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3. Visión general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.1. La tarea de recuperar información . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.2. Arquitectura de un sri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4. Modelos de representación de documentos . . . . . . . . . . . . . . . . . . . . . . . 54
4.1. Represtación del contenido textual . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.1. Matriz de términos/documentos . . . . . . . . . . . . . . . . . . . . . . . 55
4.2. Metadatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3. Documentos estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.3.1. Introducción al lenguaje xml . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5. Modelos de recuperación de información . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.1. Modelo booleano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2. Modelo vectorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.1. Estimación de los pesos: el modelo tf.idf . . . . . . . . . . . . . . . . . 62
5.3. Modelo probabilístico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.4. PageRankTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
6. Evaluación de un sri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7. Mecanismos de consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.1. Palabras clave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.2. Patrones de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.3. Relevancia de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.4. Recuperación de documentos estructurados . . . . . . . . . . . . . . . . . . . 71
8. Almacenamiento de documentos en un sri . . . . . . . . . . . . . . . . . . . . . . . 72
8.1. Etapas del proceso de indexación de documentos . . . . . . . . . . . . . . 72
8.2. Tesauros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
9. Técnicas de indexación y búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
9.1. Tries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
9.2. Ficheros invertidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
9.2.1. Búsqueda en un fichero invertido . . . . . . . . . . . . . . . . . . . . . . 78
9.2.2. Construcción de un fichero invertido . . . . . . . . . . . . . . . . . . . 78
9.3. Ficheros de signaturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
9.4. Indexación de documentos estructurados . . . . . . . . . . . . . . . . . . . . . 80
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Capítulo 3
Bases de datos distribuidas e integración de información distribuida . . 91
1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
1.1. Objetivos de aprendizaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
2. Definición de bases de datos distribuidas . . . . . . . . . . . . . . . . . . . . . . . 94
3. Acceso a los datos de una base de datos distribuida . . . . . . . . . . . . . . . . 95
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 4 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
3.1. El papel del diccionario de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4. Características de los sistemas de bases de datos distribuidas . . . . . . . . 97
4.1. Autonomía local de los nodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
4.2. Heterogeneidad de datos y sistemas . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.3. Distribución de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
5. Diseño de bases de datos distribuidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.1. Diseño de la distribución de los datos . . . . . . . . . . . . . . . . . . . . . . . . 100
5.1.1. Fragmentación de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.1.2. Réplica de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.2. Etapas del diseño de sbdd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
6. Procesamiento de consultas en bases de datos distribuidas . . . . . . . . . . . . 104
6.1. Ejemplo de procesamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6.2. Semi-joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.3. Pasos del procesamiento de consultas distribuidas . . . . . . . . . . . . . . . 108
7. Propagación de actualizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
7.1. Snapshots o instantáneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
8. Integración de información distribuida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.1. El proceso de integrar información distribuida . . . . . . . . . . . . . . . . . 111
8.2. Reconciliación de datos para su integración . . . . . . . . . . . . . . . . . . . 113
8.3. Arquitecturas para integrar información distribuida . . . . . . . . . . . . . . 114
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 5 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Prólogo
Esta publicación incluye los apuntes de teoría de una asignatura de cuyo nombre
adopta el título de Bases de datos avanzadas. Dicha asignatura se ofrece como
optativa en dos titulaciones de la Universitat Jaume I de Castellón: en cuarto curso
de Ingeniería Informática (Plan 2001) y en tercer curso de Ingeniería Técnica en
Informática de Gestión (Plan 2001).
En su más amplio sentido, podría decirse que las bases de datos avanzadas son to-
das aquellas con funcionalidades que no son propias de las bases de datos relacio-
nales tal y como se concibieron en sus inicios por E. F. Codd. En una publicación
sobre bases de datos avanzadas es posible incluir un enorme rango de modelos
desarrollados con el fin de abordar aplicaciones que no pueden resolverse con
las bases de datos relacionales. A continuación enumeramos un amplio grupo de
tipos de bases de datos avanzadas diferentes entre sí: orientadas a objetos, objeto-
relacionales, activas, multimedia, científicas, estadísticas, espaciales, temporales,
multidimensionales, semiestructuradas, deductivas, difusas, con restricciones, dis-
tribuidas, federadas, móviles, multi-bd, Grid, paralelas, no-sql, etc.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 7 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
una asignatura de bases de datos avanzadas. La razón principal es que estos
sistemas ofrecen una serie de tecnologías que hoy en día se requieren en
muchos sistemas de información que además de datos estructurados deben
gestionar documentos. De hecho, desde hace ya varios años, los principales
sistemas de gestión de bases de datos han sido extendidos con módulos para
la indexación y recuperación de textos planos y documentos estructurados,
principalmente en formato xml. Los estudiantes de esta asignatura realizan
prácticas con Oracle para almacenar y recuperar textos planos y documentos
xml. A través de este capítulo esperamos que sean capaces de comprender el
funcionamiento de los sistemas de recuperación de información, y también
de utilizar estos conocimientos para explotarlos mejor tanto a la hora de
recuperar información como de desarrollar nuevos sistemas de información
textual.
Esperamos que esta publicación sirva de ayuda tanto para estudiantes de la titu-
lación Ingeniería Informática como para profesionales de la informática que re-
quieran actualizar sus conocimientos. Sin embargo, probablemente antes de que
pase mucho tiempo sus contenidos deberán ser revisados, ya que las bases de
datos siguen avanzando rápidamente, al igual que el resto de áreas de la ingeniería
informática.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 8 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
capítulo 1
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 9 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
1. Introducción
Las bases de datos relacionales son, hoy en día, las más utilizadas en la mayoría
de los ámbitos de aplicación. La estructura de datos básica que ofrece, la tabla re-
lacional, es apropiada para muchas aplicaciones habituales. Sin embargo, existen
casos de uso en los que presenta serios inconvenientes prácticos, generalmente si
se requiere gestionar datos muy complejos o no convencionales (imágenes, do-
cumentos...), para los que las estructuras relacionales resultan muy complejas e
ineficientes. Algunos ejemplos de gran importancia práctica son las bases de datos
multimedia, las bases de datos científicos y los sistemas de apoyo al diseño indus-
trial (cad/cam).
Las bases de datos orientadas a objetos intentan dar respuesta a estos problemas,
incorporando las siguientes características:
a) Explicar los principales casos de uso de las bases de datos orientadas a objetos.
b) Diferenciar las bases de datos orientadas a objetos, las objeto-relacionales y
las relacionales.
c) Explicar los principales conceptos del modelo de datos orientado a objetos.
d) Explicar el concepto de persistencia de objetos y sus implementaciones típi-
cas en la práctica.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 11 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
e) Explicar las principales características de los sistemas de gestión de bases de
datos orientados a objetos.
f) Describir las principales primitivas de diseño lógico orientado a objetos.
g) Diseñar una base de datos orientada a objetos a partir de un diagrama enti-
dad/relación.
h) Realizar consultas simples sobre bases de datos orientadas a objetos usando
el lenguaje oql.
i) Describir los principales métodos de diseño físico para bases de datos orien-
tado a objetos.
Sin embargo, a mediados de los años ochenta del pasado siglo, con la explosión
del uso de los microordenadores a nivel empresarial y la aparición de los tipos de
datos multimedia, se expandieron enormemente los tipos de aplicaciones en los
que era necesario utilizar bases de datos, y se hicieron evidentes las limitaciones
en los modelos de datos tradicionales: no eran capaces de tratar los tipos de datos
complejos que eran necesarios, por ejemplo, en aplicaciones como el diseño y la
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 12 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
fabricación asistidas por ordenador (cad/cam, cim), las bases de datos gráficas y
de imágenes, las bases de documentos y multimedia, y los sistemas de informa-
ción geográfica. Estas nuevas aplicaciones tienen requerimientos y características
diferentes a los de las aplicaciones de negocios: estructuras más complejas para
los datos, transacciones de mayor duración, nuevos tipos de datos para almacenar
imágenes o grandes bloques de texto, y la necesidad de definir operaciones espe-
cíficas para cada aplicación. En aquellos momentos las bases de datos relacionales
no disponían de mecanismos adecuados para implementar las nuevas aplicaciones.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 13 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
A este respecto, y de manera análoga a las «12 reglas de Codd» que establecen
los requisitos que debe cumplir una base de datos relacional, se han descrito una
serie de reglas para poder caracterizar hasta qué punto una base de datos soporta
características orientadas a objetos. Estas reglas se describirán en la sección 4.2.
de este capítulo.
3.1. Objetos
En las bases de datos orientadas a objetos todos los elementos que se manejan
son objetos. Cada objeto se corresponde con una entidad de la realidad, y define
sus propiedades y comportamiento. Formalmente, tal y como se representa en la
figura 1.2, un objeto es una representación abstracta de una entidad del mundo
real que tiene una identidad única dentro de la base de datos, unas propiedades
incorporadas en sí mismo, y un comportamiento que le proporciona la capacidad
de interaccionar con otros objetos y consigo mismo. Los objetos que comparten
propiedades y comportamiento forman clases, de las que trataremos más adelante.
Los objetos, al igual que las filas de las bases de datos relacionales, expresan las
propiedades de los elementos de la realidad. Sin embargo, los objetos, al contrario
que las tuplas, tienen identidad y son elementos activos, de tal forma que poseen
un comportamiento y pueden interaccionar entre sí.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 14 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
3.2. Identidad
La parte más importante de un objeto es su identidad única. La identidad de cada
objeto se representa por medio de un oid (Object Identifier), el cual es único para
ese objeto. De esta forma es imposible que dos objetos puedan compartir el mismo
oid. El oid es asignado por el sistema en el momento en que el objeto es creado y
no puede ser alterado bajo ninguna circunstancia. El oid de un objeto no es visible
para el usuario externo, sino que el sistema lo utiliza internamente para identificar
al objeto, y para referenciarlo desde otros objetos.
La diferencia entre un oid y una clave primaria está en que la clave primaria se
basa en los valores dados por los usuarios para ciertos atributos, los cuales pueden
ser alterados en cualquier momento. Sin embargo, el oid es asignado por el siste-
ma, debe ser independiente del valor de cualquier atributo, y no puede ser altera-
do. El oid solo puede desaparecer cuando su objeto lo haga, y en ese caso nunca
puede volver a ser utilizado. Por último, el oid tampoco puede referirse a ninguna
dirección de memoria. Así se consigue que la manera en que se representan los
objetos y sus relaciones sea independiente del formato de almacenamiento físico
de los datos.
Dos objetos con el mismo oid se consideran idénticos: se trata a todos los efectos
del mismo objeto. Es importante remarcar que dos objetos que no sean idénticos
pueden ser iguales si sus valores también lo son. Se trata de dos conceptos de
igualdad diferentes, que tanto los lenguajes como las bases de datos orientadas a
objetos diferencian claramente. Por ejemplo, en el lenguaje Java se usa el operador
== para comprobar si dos objetos son idénticos, y el método equals() para com-
probar si sus valores son iguales. Por ejemplo:
System.out.println(a == b);
System.out.println(a.equals(b));
}
}
Dado que los dos objetos a y b no son idénticos (operador ==) pero sí de igual va-
lor (método equals()), como resultado de ejecutar el código anterior se muestra
como resultado:
false
true
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 15 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
3.3. Propiedades de los objetos
Cada objeto de una base de datos tiene asignado un valor que expresa sus propie-
dades y que puede ser actualizado a lo largo del tiempo. El valor de un objeto se
ajusta a una estructura de datos que puede ser tan compleja como sea necesario.
Esta estructura de datos se construye a partir de unos tipos de datos básicos por
medio de unos constructores de tipos de datos y de tipos de objetos, que se pueden
combinar arbitrariamente.
Entre los tipos de datos básicos que proporcione un sistema de gestión de bases
de datos orientadas a objetos (sgbdoo) también pueden aparecer tipos de datos
multimedia y texto. En este caso, el sistema también debe proveer las operaciones
necesarias para manipular los valores multimedia y textuales. Asimismo, los sgb-
doo más avanzados permiten al usuario definir sus propios tipos de datos básicos
con sus propias operaciones. Esto hace al sistema muy flexible y capaz de soportar
los datos de cualquier aplicación.
Los valores de los objetos se construyen a partir de los átomos (valores reales,
enteros, cadenas, etc.) y también a partir del conjunto de oid de todos los objetos
existentes en la base de datos. A la hora de construir los valores, los constructores
pueden ser anidados dando lugar a valores con estructuras complejas. Por ejemplo,
los siguientes objetos representarían en una base de datos a dos objetos: el primero
a un empleado y el segundo al departamento que dirige.
o1 = (OID = oid_e1,
valor = [‘José García’,
‘99.999.999-X’,
[1980, 12, 10],
V,
oid_d1
] )
o2 = (OID= oid_d1,
valor= [‘Informática’,
17,
[oid_e1, [1999, 10, 17] ],
{‘Castellón’, ‘Valencia’, ‘Alicante’},
{oid_e1, oid_e13, oid_e11, oid_e17, oid_e5, oid_e3, oid_e2}
] )
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 16 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Los lenguajes de definición de datos orientados a objetos permiten definir los ti-
pos de los datos y los tipos de objetos necesarios para construir los objetos de una
aplicación concreta. En los ejemplos de este capítulo, utilizaremos un lenguaje de
definición de datos simplificado, basado en el lenguaje O2C del sgbdoo O2. Las
palabras reservadas tuple, set y list permiten definir los tipos tupla, conjunto y lista
respectivamente, y para los tipos atómicos asumiremos que están disponibles los ti-
pos de datos básicos más habituales (integer, string, real...). En este lenguaje, los tipos
de los dos objetos anteriores se definen de la siguiente manera.
Como puede verse en el ejemplo, hemos definido un tipo de datos (data type) Fecha
para simplificar la definición los tipos de objetos (object type) Empleado y Depar-
tamento. Los tipos de datos se utilizan para simplificar la definición de tipos de
objetos, y representan estructuras de datos que se reutilizan en la definición de las
propiedades de distintos tipos de objetos (como fechas o direcciones), y no van a
tener existencia independiente: en ningún caso va haber objetos «Fecha» con iden-
tidad propia. Es muy importante hacer notar esta distinción entre «object type»
para definir objetos, y «data type» que se utiliza exclusivamente para facilitar la
definición de las propiedades de los tipos de objetos.
Todo atributo de un tipo tiene un dominio asignado, que puede ser un tipo de datos
o un tipo de objetos previamente definidos. Como puede verse en el ejemplo ante-
rior, cuando el valor de un atributo es de un tipo de objetos (p.ej. depto), en lugar
de asignar al atributo todo el valor, se le asigna el oid del objeto. En ningún caso se
copia el valor del objeto destino (salvo que así se decidiera explícitamente), sino
que se usa el oid.
Así, los atributos cuyo dominio sea un tipo de objetos en realidad se implementan
como referencias usando el oid, y representan relaciones entre los objetos. Una
relación binaria entre dos objetos se puede representar en una sola dirección o en
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 17 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
ambas direcciones (referencia inversa). Esta última representación hace más fácil
recorrer la relación en ambas direcciones, y será la que nosotros usaremos exclu-
sivamente.
En el ejemplo anterior, el tipo Empleado tiene un atributo depto que hace referen-
cia a un objeto de tipo Departamento. Esta relación también se ha representado en
la dirección inversa ya que el tipo Departamento tiene definida una componente
empleados como un conjunto de objetos Empleado. Para asegurar la integridad de
las referencias cruzadas el usuario puede utilizar una cláusula inverse de la misma
manera que en el ejemplo siguiente. También hay que fijarse en que la relación ge-
rente solo se ha representado en una dirección, por lo que no lleva cláusula inverse
asociada. La definición completa de estos dos tipos se presenta a continuación.
El estado de un objeto es el valor que tiene asignado dicho objeto en un momento de-
terminado. Esto significa que cuando las propiedades de un objeto cambian, su valor
debe ser actualizado en la base de datos, haciendo pasar el objeto a un nuevo estado.
Los objetos o1 y o2 son claramente iguales, ya que tienen el mismo valor. Sin em-
bargo, la relación entre o3 y o4 es ambigua. Por un lado, sus valores son diferentes,
pero por otro lado, si seguimos las referencias, comprobamos que ambas apuntan
a objetos que tienen el mismo valor. Esto nos lleva a las siguientes definiciones:
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 18 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
• La igualdad profunda, que se comprueba comparando los valores del estado,
y (recursivamente) los valores de los objetos referenciados.
Esta distinción también se suele tener en cuenta al copiar los valores de los ob-
jetos, y en muchos casos se proporcionan operaciones distintas para copiar los
valores tanto superficialmente como profundamente. Por ejemplo, en el lenguaje
Python existen las funciones copy.copy() y copy.deepcopy(), que realizan la copia
superficial y profunda de un objeto respectivamente.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 19 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
El método se ejecuta sobre el objeto que recibe el mensaje. Como ilustra la figura
1.3, estos métodos pueden enviar sus propios mensajes a otros objetos y utilizar el
resultado devuelto en su computación sobre el objeto inicial.
Es importante saber que la estructura interna de los objetos (o sea, su valor) puede
ocultarse, lo que impide que pueda ser accedida directamente si no es por medio
de un método. Esta habilidad de esconder los detalles internos de los objetos se
denomina encapsulación, y es una de las ventajas más importantes del modelo
orientado a objetos, ya que facilita la manipulación de los objetos desde las apli-
caciones, al tiempo que asegura su integridad.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 20 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
aparte utilizando alguno de los lenguajes de programación disponibles en el sgb-
doo que se esté utilizando. Normalmente el sgbdoo está acoplado a un lenguaje de
programación orientado a objetos para implementar las operaciones de los objetos
y las aplicaciones de las bases de datos.
Para terminar esta sección, la figura 1.4 muestra de manera gráfica los distintos
conceptos del modelo de datos orientado a objetos, y las relaciones entre ellos.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 21 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
4.1. Persistencia de objetos
A la hora de implementar aplicaciones sobre bdoo, una decisión muy importante
es qué objetos deberán permanecer en la base de datos una vez que el programa
haya terminado, y cuáles no. Los objetos transitorios desaparecen una vez que el
programa que los creó termina de ejecutarse, mientras que los objetos persistentes
permanecen almacenados en la base de datos.
Para hacer un objeto persistente hay tres alternativas. La primera es marcarlo ex-
plícitamente como persistente. En el siguiente ejemplo en Java se utiliza la bdoo
db4o (db4objects) para crear un objeto de tipo Empleado, que a continuación se
marca como persistente usando el método store para tal efecto. El objeto conte-
nedor encapsula el almacenamiento de objetos.
A partir de este momento, todos los cambios que se produzcan en este objeto se
guardarán automáticamente. Al marcar un objeto como persistente existe la posi-
bilidad de asignarle un nombre único dentro de la base de datos, a través del cual
el sgbdoo permite a los usuarios y a los programas acceder a él. Los objetos con
nombre único suelen ser pocos y sirven como puntos de acceso a la base de datos.
class Empleado {
⁞
private Direccion direccion;
⁞
public void setDireccion(Direccion nueva_dir) {
dirección = nueva_dir;
}
⁞
}
Podemos crear un objeto de tipo Empleado y asignarle una dirección de esta ma-
nera:
Direccion direccion = new Direccion("C/Mayor, 5", "Castellón")
Empleado empleado = new Empleado("Joan", "Cardona", "Vives");
empleado.setDireccion(direccion);
contenedor.store(empleado);
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 22 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
No ha sido necesario marcar explícitamente como persistente la instancia de Di-
reccion que hemos creado, ya que es alcanzable desde el objeto empleado y, por
tanto, se guardará y recuperará automáticamente. Es decir, el método store hace
persistente al objeto empleado y a todos los objetos alcanzables a partir de él.
En la práctica, los sistemas suelen permitir mantener un control muy preciso sobre
qué objetos se harán persistentes por alcanzabilidad, ya que hay muchos casos en que
no es deseable seguir ciegamente todas las cadenas de referencias (estructuras de da-
tos circulares, valores temporales que no es necesario guardar, etc.). Por ejemplo, para
que el código anterior funcione correctamente deberíamos configurar explícitamente
db4o para que la clase Empleado use persistencia por alcanzabilidad sin restricciones,
ya que por defecto no es así. Los detalles concretos son diferentes en cada sistema.
ActivatableLinkedList<Empleado> listaDeEmpleados;
listaDeEmpleados = new ActivatableLinkedList<Empleado>();
Empleado empleado = new Empleado("Joan", "Cardona", "Vives");
listaDeEmpleados.add(empleado)
Al contrario que las reglas, las cinco opciones de implementación no son obliga-
torias. Son las siguientes:
1. Herencia múltiple
2. Verificación e inferencia de tipos
3. Distribución de los datos
4. Transacciones
5. Versionado de objetos
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 23 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Es importante hacer notar que las reglas 1 a 8 son características generales de los
sistemas orientados a objetos, incluyendo los lenguajes de programación, y que
por otro lado, las reglas 9 a 13 son características generales de las bases de datos,
incluyendo las no orientadas a objetos, como las relacionales.
Como en el caso de las 12 reglas de Codd, ninguna base de datos comercial cum-
ple todas las reglas del Manifiesto de las bdoo, por lo que puede decirse que estas
reglas describen un sistema idealizado no disponible en la realidad. Sin embargo,
en la práctica se trata de una lista muy útil para analizar los sgbdoo y determinar si
se ajustan a los requisitos de una aplicación dada.
Regla Explicación
En una bdoo los objetos tendrán una identidad, que será diferente de su valor
2. Identidad de objetos
(Ver sección 3.2 Identidad).
Un sgbdoo permitirá definir tipos de datos y tipos de objetos (Ver sección 3.5
4. Tipos y clases
Clasificación e instanciación de objetos).
Distintas clases podrán proporcionar distintos métodos para una misma ope-
6. Sobrecarga y
ración; el sistema determinará dinámicamente qué método se debe ejecutar
polimorfismo
(Ver sección 5.3 Polimorfismo de métodos).
13. Consultas ad hoc con Un sgbdoo proporcionará un lenguaje de consulta específico para objetos
un lenguaje declarativo (Ver sección 6. Consultas en bdoo).
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 24 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
5. Diseño lógico de bases de datos orientadas a objetos
Para diseñar bases de datos orientadas a objetos hay que identificar las clases de
objetos que se necesitan, así como el tipo y las operaciones de cada clase. Para de-
finir el tipo de los objetos de una clase, primero hay que identificar qué relaciones
se dan entre las clases. En esta sección, previamente a definir un procedimiento de
diseño, vamos a analizar los distintos tipos de relaciones que se pueden dar entre
las clases de una bdoo.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 25 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Figura 1.6. Relaciones de asociación
A la hora de realizar el diseño lógico de una bdoo, cuando se definen los tipos de
los objetos de una clase, las relaciones de asociación y de agregación se repre-
sentan por medio de referencias en una o ambas direcciones, y de acuerdo a su
carnalidad asociada. En algunos sgbdoo es posible diferenciar en el esquema las
relaciones de agregación de las de asociación. En nuestro caso, las representamos
de la misma forma.
Como ya hemos visto, una clase sirve para organizar un conjunto de objetos simi-
lares. Sin embargo, en muchas ocasiones los objetos de una clase pueden reorga-
nizarse, formando varios grupos que también pueden tener interés para la base de
datos. Por ejemplo, en la figura 1.7 vemos que los objetos de la clase empleado
pueden clasificarse en secretarios, ingenieros, gerentes y técnicos. Se dice que
cada una de estas agrupaciones es una subclase de la clase empleado, y emplea-
do es una superclase de las otras cuatro clases. Nótese que todo ingeniero es un
empleado pero no viceversa. Es decir, todas las instancias de una subclase son
también instancias de la superclase, pero no a la inversa.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 26 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
• La propiedad de sustituibilidad dice que toda instancia de una clase puede
ser utilizada cuando se espera una instancia de alguna de sus superclases.
• La propiedad de extensión dice que las instancias de una clase incluyen las
instancias de sus subclases. En otras palabras, la extensión de una clase in-
cluye a las extensiones de sus subclases.
true
true
mostrando que los secretarios y los gerentes están incluidos en la extensión de los
empleados.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 27 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Existen dos tipos de herencia: simple y múltiple. La herencia simple ocurre cuan-
do cada clase en una jerarquía tiene una sola superclase inmediata. Si se envía un
mensaje a un objeto de una clase en una jerarquía con herencia simple, el método
asociado se busca primero en la clase y luego en su superclase inmediata, y así
sucesivamente hacia arriba en la jerarquía. La herencia múltiple ocurre cuando
una subclase tiene varias superclases inmediatas. En este caso se heredan los tipos
y las operaciones de todas las superclases, por lo que pueden surgir colisiones con
los nombres de los atributos y de los mensajes. En ese caso se produciría un error.
En las relaciones de la figura 1.8 se producen ambos tipos de herencia.
Por ejemplo, supongamos que se define una clase para objetos geométricos que
cuenta con una operación que calcula su área, y con tres especializaciones para los
rectángulos, los triángulos y los círculos.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 28 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
tuple [ ancho: real,
alto: real]
operations
es_cuadrado?(): bool;
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 29 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
5.4. Diseño lógico de una base de datos oo
Para implementar una bdoo a partir de un esquema conceptual lo primero que hay
que hacer es definir los tipos de datos, los tipos de objetos y las operaciones de las
clases en el lenguaje de definición de datos de nuestro sgbd. Posteriormente, se
añaden los métodos que se implementan en el lenguaje de programación disponi-
ble. Vamos a partir de un esquema conceptual que represente tanto las relaciones
de asociación, como las de agregación y especialización, sin embargo los métodos
tendrán que ser especificados por separado. A grandes rasgos la transformación
puede hacerse como sigue:
Paso 1: Crear una clase de objetos para cada entidad del esquema. El tipo de objetos de
la clase deberá agrupar todos los atributos de la entidad por medio de un cons-
tructor de tupla. Los atributos multivaluados se declaran a través de un constructor
de tipo conjunto, o lista si están ordenados. Los atributos complejos se declaran
por medio de un constructor de tupla. Todos los tipos y, sobre todo, aquellos
tipos de datos que se utilicen en varias clases se pueden definir como tipos de
datos aparte. Todas las clases deben tener una extensión (cláusula extent) defi-
nida.
Paso 2: Aquellas clases que son subclases de otras deberán tener una cláusula inherit para
indicarlo. Cada subclase hereda de forma automática el tipo y las operaciones
de su superclase inmediata. Solo hay que especificar los atributos y operacio-
nes específicos de la subclase.
Paso 3: Para cada relación de asociación y agregación en las que participe una clase,
añadir atributos para referenciar las clases que participen en la relación. Las re-
ferencias pueden definirse en una dirección o en ambas, aunque suele ser más
eficiente definirlas en ambas. Nosotros añadiremos atributos con referencias a
las dos clases relacionadas, excepto en las relaciones de cardinalidad (0,1) que
dependerá de cada caso a analizar. Los atributos serán monovaluados para las
relaciones de cardinalidad (1,1), y multivaluados (atributos de tipo conjunto o
lista) para los de cardinalidad (1,n). Si una relación se representa con referencias
en ambas direcciones se debe declarar que cada referencia es la inversa de la otra
(cláusula inverse). Si hay alguna relación con atributos, hay que usar un cons-
tructor de tupla para representarlo de la siguiente manera tuple[referencia con
cláusula inverse, atributos de la relación]. Esta tupla se incluye en el atributo de
referencia.
Paso 4: Incluir métodos apropiados para cada clase. Estos no estarán disponibles en el
esquema conceptual y se deberán agregar al diseño de la base de datos según se
necesiten. Al final, toda clase debe incluir un método constructor y otro destruc-
tor para sus instancias.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 30 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
5.5. Ejemplo de diseño de una base de datos orientada a objetos
A continuación se define un ejemplo de una base de datos para una universidad
que se ajusta al esquema conceptual de la figura 1.9. Para simplificar el esquema
no hemos puesto los atributos de las entidades, también vamos a suponer que los
métodos para crear y destruir los objetos de cada clase son definidos por el sistema.
A continuación, se definen los tipos de objetos que se corresponden con las enti-
dades del diagrama conceptual.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 31 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Figura 1.9. Esquema conceptual de la bd de una universidad
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 32 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
define object type Departamento extent Departamentos
type
tuple [ nombre: string,
oficinas: set(string),
telefonos: Telefonos,
miembros: set(Profesor) inverse Profesor:pertenece_a,
alumnos: set(Estudiante) inverse Estudiante:estudia,
director: Profesor,
cursos: set(Curso) inverse Curso:ofrecido_por]
operations
añadir_profesor(p:Profesor),
añadir_a_carrera(e:Estudiante),
quitar_de_carrera(e:Estudiante):boolean;
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 33 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
6. Consultas en bases de datos orientadas a objetos
A la hora de realizar consultas a las bdoo se han propuesto diferentes lenguajes
más o menos expresivos y fáciles de utilizar. Todavía no existe ningún lengua-
je estándar oficial, por lo que aquí nos vamos a centrar en un lenguaje que se
aproxima mucho a uno que podría ser el más aceptado. Se trata del lenguaje oql
(Object Query Language) que ha sido diseñado por un consorcio de compañías de
software denominado odmg (Object Data Management Group). Hoy día, el están-
dar está mantenido por la organización omg, dedicada a la estandarización de las
tecnologías orientadas a objetos.
select d.nombre
from Departamentos d
where d.presidente.nombre.nombrepila = ‘Ana’
Dentro de claúsula from de una consulta siempre que se haga referencia a un conjunto
(o lista) de objetos es necesario definir una variable iterador que toma un valor por
cada objeto de la colección (en el ejemplo anterior d es la variable iterador). Esta
variable se puede utilizar para poner condiciones sobre los objetos y para acceder a
otros objetos de la base de datos como veremos en la siguiente sección.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 34 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
resultado de una consulta puede ser de cualquiera de los tipos que podamos defi-
nir con los constructores de tipos disponibles. En el ejemplo anterior, dado que el
atributo nombre de la clase departamento es de tipo string, el resultado de la consulta
será de tipo set(string).
p.nombre.nombrepila np
p.direccion.calle c
e.nombre.nombrepila ne
e.estudia.telefonos t
Las variables iterador que aparecen después de los caminos de acceso denotan los
valores que se almacenan en los atributos donde estas terminan. Sin embargo, hay
que tener en cuenta que cuando una referencia es multivaluada no se puede usar la
notación de punto directamente. En este caso es preciso intercalar una nueva varia-
ble iterador, como se ha hecho en los siguientes caminos de acceso que empiezan
en la clase Profesor:
p.pertenece_a.miembros m, m.nombre.nombrepila np
p.imparte a, a.examinados e, e.estudiante.estudia.nombre nd
En este último ejemplo, la variable iterador e no toma como valores objetos, sino
los valores complejos que se almacenan en el atributo examinados. Dado que las re-
ferencias se implementan almacenando el oid de los objetos relacionados, se puede
decir que los caminos de acceso sustituyen a los joins de las bases de datos relacio-
nales. Esto quiere decir que al consultar una bdoo no se deben especificar relaciones
de join entre sus clases, sino que se deben utilizar variables iterador y caminos de
acceso como las que se muestran en los ejemplos anteriores.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 35 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
6.3. Lenguaje de consulta
La estructura básica de oql es select...from...where..., similar a la de sql, pero con la
diferencia de que es posible usar caminos de acceso dentro de la consulta para re-
ferirse a los componentes de los objetos complejos y para pasar de unos objetos a
otros relacionados. Otras diferencias, motivadas por los distintos modelos de datos
que subyacen a ambos lenguajes, se ilustrarán en los ejemplos que se muestran
más adelante.
En una consulta, la cláusula select define los datos que se desean conocer y el tipo
de los datos del resultado de la consulta. La cláusula from especifica las extensiones de
objetos por los que se accede a la base de datos y proporciona las variables iterador
que toman como valores los objetos de dichas colecciones. Estas variables pueden uti-
lizarse en el resto de cláusulas de la consulta. Por último, la cláusula where especifica
las condiciones para seleccionar los objetos individuales que intervienen en el re-
sultado de la consulta. A continuación vamos a ver algunos ejemplos de consultas
sobre la base de datos anterior:
a) Para conocer los distintos salarios que tienen los profesores de la base de
datos podemos escribir la siguiente sentencia. Se obtendrá un conjunto de nú-
meros reales diferentes.
b) Para conocer los distintos salarios que hay para cada sexo se puede definir la
siguiente consulta:
select distinct tuple[salario:p.salario, sexo:p.sexo]
from Profesores p
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 36 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
La diferencia entre las dos consultas es su punto de acceso a la base de datos,
siendo más rápida la segunda versión ya que accede a la base de datos por la
misma clase por la que se ponen las condiciones del where, además de que en
la base de datos hay muchos más estudiantes que asignaturas.
d) Veamos esto por medio de otro ejemplo. Supongamos que se desean co-
nocer los números del dni de aquellos estudiantes matriculados en alguna
asignatura impartida por un profesor de Sagunto. Para evaluar esta consulta
podríamos elegir entre las dos opciones siguientes:
select e
from Departamentos d, d.alumnos e
where d.nombre=’Informática’
and count(e.examinado_de) > 5
Este ejemplo muestra cómo se puede utilizar la función count para saber
cuántos valores se almacenan en el atributo examinado_de. Esta misma fun-
ción se puede utilizar para saber cuántos oid se almacenan en un atributo que
representa una referencia 1:N.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 37 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
select e
from Estudiantes e
where e.nota_media( ) > 7.0
g) También se pueden definir condiciones entre los atributos siempre que sean
del mismo tipo. Por ejemplo, podemos buscar parejas estudiante/profesor
que cumplan años el mismo día:
h) Para obtener los resultados ordenados existe la cláusula order by. Por ejem-
plo, se pueden recuperar los profesores ordenados por su sueldo y por su
primer apellido.
select p
from Profesores p
order by p.salario, p.nombre.apellido_p
i) También se pueden agrupar los resultados de una consulta según algún crite-
rio de los objetos recuperados. Por ejemplo, la siguiente consulta cuenta los
profesores que pertenecen al departamento de informática agrupados según
la ciudad donde viven.
select c
from Cursos c
where for all a in c.asignaturas: a.año = 2010
select e
from Estudiantes e
where exists a in e.examinado_de: a.nota = 10.0
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 38 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
La primera consulta recupera los cursos con todas sus asignaturas en el año
2010, y la segunda, los estudiantes con alguna matrícula de honor entre sus
notas. Esta última consulta sería equivalente a:
select e
from Estudiantes e, e.examinado_de a
where a.nota = 10.0
select p.nombre
from Profesores p
where p.salario = (select max(p.salario) from Profesores p)
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 39 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
7. Diseño físico de bases de datos orientadas a objetos
Al igual que en las bases de datos relacionales, el modelo lógico de datos de las bdoo
es independiente de la localización física de los datos. Los datos también se almace-
nan en ficheros emplazados en diferentes dispositivos físicos que el administrador
de la base de datos tiene que gestionar. Muchos de los conceptos de diseño físico de
bases de datos relacionales se pueden aplicar para las bdoo. Sin embargo, hay ciertos
cambios en la forma en que se realizan los agrupamientos y los índices de acceso a
los datos, que deben ser estudiados. En esta sección se repasan los principales me-
canismos que existen para diseñar el almacenamiento físico de los datos en bdoo.
7.1. Índices
Los principales tipos de estructuras de indexación que podemos encontrar en las
bdoo son:
• Índices de atributos. Se usan para indexar los objetos de una clase según
alguno de sus atributos. De esta manera se pueden recuperar rápidamente los
objetos de una clase que cumplen cierta propiedad sobre el atributo indexa-
do. Por ejemplo, se pueden indexar los objetos de la clase Empleados por su
atributo dni.
• Índices de objetos. Se usan para indexar los objetos de una clase según su
oid. Este índice contiene una entrada con el oid de cada objeto de la clase, y
un puntero a su dirección de memoria. Esta alternativa resulta muy útil para
navegar por los objetos ya que para pasar de un objeto de una clase a otro
que referencia desde alguno de sus atributos se utiliza el índice. Para llegar
al objeto referenciado solo hay que acceder al índice de la clase adecuada y
encontrar el oid y la dirección de memoria de dicho objeto.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 40 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
p a e d
oid.P1 oid.A1 oid.E1 oid.D1
oid.P1 oid.A2 oid.E1 oid.D1
oid.P1 oid.A2 oid.E2 oid.D2
oid.P1 oid.A2 oid.E3 oid.D3
oid.P1 oid.A3 oid.E3 oid.D3
oid.P2 oid.A4 oid.E1 oid.D1
oid.P2 oid.A4 oid.E3 oid.D3
oid.P2 oid.A1 oid.E4 oid.D4
oid.P3 oid.A4 oid.E2 oid.D2
oid.P4 oid.A4 oid.E5 oid.D5
oid.P4 oid.A1 oid.E5 oid.D5
oid.P4 oid.A1 oid.E1 oid.D1
Para ejecutar la trayectoria desde una consulta, no será necesario acceder a la base
de datos y recuperar el gran número de objetos por los que pasa. Por ejemplo, para
conocer el departamento de los estudiantes a los que da clase el profesor con oid
oid.P4, leyendo las filas de este índice se puede saber que solamente hay que recu-
perar los departamentos con oid oid.D1 y oid.D5.
7.2. Agrupamientos
Las técnicas de agrupamiento se utilizan para posicionar los objetos en memoria
secundaria en posiciones contiguas, de forma que el proceso de recuperación se
acelere. Generalmente, en bdoo se pueden utilizar los siguientes tipos de agrupa-
mientos:
• Por clases. Este suele ser el modo de posicionamiento por defecto. Todos
los objetos de una clase se almacenan contiguos. Estos pueden incluir a los
objetos de otras clases que sean especializaciones suyas (subclases). De esta
manera, cuando se tiene una jerarquía de especialización simple expresada
en forma de árbol cuyos nodos son las clases de la jerarquía, los objetos de
las diferentes clases se almacenan según el orden definido por el recorrido
en preorden de los nodos del árbol.
• Por valores de los atributos. Los objetos de una clase se agrupan por el va-
lor de alguno de sus atributos. Por ejemplo, los objetos de la clase estudiante
se pueden almacenar ordenados por apellidos. Si se combina este método
con un índice sobre el mismo atributo, entonces la evaluación de las consul-
tas que involucren a dicho atributo se puede ver muy favorecida.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 41 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
recuperan en unas pocas operaciones de lectura. Por ejemplo, se puede re-
cuperar rápidamente el objeto de un departamento junto con los objetos de
todos sus profesores.
Bibliografía
Atkinson, M. et al. (1989): The Object-Oriented Database System Manifesto, Pro-
ceedings of 1st International Conference on Deductive and Object-Oriented
Databases.
Cattell, R. et al. (2000): The Object Data Standard: odmg 3.0, Morgan Kaufmann.
Date, C. J. (2001): Introducción a los Sistemas de Bases de Datos, (7.a edición),
Prentice-Hall.
Elmasri, R., Navathe, S. (2011): Fundamentals of Database Systems, (6.a edición),
Addison-Wesley Longman.
Harrington, J. (2000): Object Oriented Database Design Clearly Explained,
Morgan Kaufmann.
Silberschatz, A., Korth, H., Sudarshan, S. (2002): Fundamentos de Bases de
Datos, (4.a edición), McGraw Hill.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 42 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Ejercicios
Ejercicio 1
Utilizando los siguientes conceptos, diseñar un diagrama conceptual que contenga al
menos dos jerarquías de especialización y dos de agregación. El diagrama también
deberá contener alguna relación de asociación. Dar atributos a todas las entidades.
• Periódicos • Reporteros
• Noticias • Maquetadores de taller
• Anuncios publicitarios • Reveladores de taller
• Fotografías • Escribir noticia
• Textos • Aceptar noticia
• Trabajadores de redacción • Maquetar noticia
• Trabajadores de taller • Maquetar anuncio
• Redactores jefe • Revelar fotografía
Ejercicio 2
Dado el siguiente esquema conceptual diseñar una base de datos orientada a objetos.
Ejercicio 3
Dado el siguiente esquema conceptual diseñar una base de datos orientada a ob-
jetos.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 43 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
´
1. Para el cliente «Oscar Pérez Pérez», recuperar sus números de teléfono con
su fecha de venta.
2. Recuperar la duración media de todas las tarjetas vendidas en el año 2010.
3. Para todos los clientes que hayan participado en la campaña llamada «talk-
more», recuperar el nombre de aquellos que hayan pagado un recibo en la
misma fecha en que fue emitido.
4. Recuperar todos los recibos del «Banco de Morella» ordenados por teléfonos.
Ejercicio 4
Dado el siguiente esquema conceptual diseñar una base de datos orientada a objetos.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 44 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Formular las siguientes consultas sobre la base de datos oo anterior:
1. Seleccionar los jugadores que hayan lanzado más de 5 penaltis y que hayan
participado en alguna jugada de gol tipo remate desde una distancia de más
de 20 metros.
2. Seleccionar los nombres de los jugadores con una prima económica mayor.
Ejercicio 5
Dado el siguiente esquema conceptual diseñar una base de datos orientada a objetos.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 45 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
Formular las siguientes consultas sobre la base de datos oo anterior:
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 46 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
CAPÍTULO 2
Sistemas de recuperación
de información
y documentos estructurados
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 47 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
1. Introducción
Los Sistemas de Recuperación de Información (sri) tratan con la representación,
almacenamiento y recuperación de documentos. Por definición, el objetivo gene-
ral de un sri es que dada una consulta proporcionada por el usuario el sistema recu-
pere información relevante. En los sri tradicionales cada documento se almacena
en un fichero separado. Previamente, su contenido textual debe ser procesado para
su indexación. Es precisamente este mecanismo de indexación el que se utiliza
para procesar las consultas de los usuarios y recuperar los documentos relevantes.
Durante las últimas décadas han surgido nuevos formatos para representar docu-
mentos estructurados que permiten expresar los atributos y la organización de los
documentos junto con sus contenidos. xml (Extensible Markup Language) es un
formato universalmente aceptado como estándar de intercambio de datos y docu-
mentos que permite ser procesado, entre otras muchas cosas, para indexar su con-
tenido y estructura. En este capítulo se estudian los principales modelos y técnicas
que se utilizan en los sistemas de recuperación de información tradicionales y para
documentos estructurados.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 49 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
2. Sistemas de bases de datos versus sistemas
de recuperación de información
A pesar de que los sri no son tan conocidos como los sistemas de bases de datos
(sbd), se están utilizando desde hace tantos años como los sbd más antiguos. Am-
bos tipos de sistemas deben permitir al usuario almacenar y recuperar informa-
ción, sin embargo, hay diferencias sustanciales en su funcionamiento y ámbito de
aplicación. En este apartado se estudian las principales diferencias entre estos dos
tipos de sistemas de información.
Los sbd tradicionales solo pueden utilizarse para recuperar datos y sus técnicas no
se pueden emplear en aplicaciones que necesiten rescatar documentos. Igualmente
los sri solo permiten almacenar documentos y no son adecuados para almacenar
y recuperar datos. Por esta razón, desde sus orígenes, ambos tipos de sistemas
han ido evolucionando separadamente, y sus técnicas y modelos son completa-
mente diferentes. Sin embargo, durante los últimos años, los principales sistemas
de gestión de bases de datos han ido incorporando módulos para el manejo de
información textual que les permite indexar y gestionar documentos. De esta ma-
nera, ahora es posible combinar datos y documentos dentro de un mismo sistema
de información, e incluso es posible realizar consultas que combinen condiciones de
recuperación sobre ambos tipos de información.
Para almacenar datos dentro de una base de datos, previamente es necesario dise-
ñar un esquema lógico que defina la estructura y el tipo de los datos que se van a
insertar. Por ejemplo, en una base de datos relacional, esta información se especi-
fica al crear las tablas donde se van a insertar los datos. Cada tabla se compone de
un conjunto de columnas y cada columna almacena un solo dato del tipo corres-
pondiente. Sin embargo, para los documentos de una colección no se puede crear
un esquema de base de datos porque el contenido de cada documento es diferente.
Sus secciones y párrafos tienen longitudes muy variadas y pueden llegar a ser
muy largos. Además, es imposible predecir cuántas secciones o cuántos párrafos
tendrá cada uno de los documentos de la colección. Por esta razón, en los sri no
se crea ninguna estructura de datos para almacenar los documentos. La unidad de
almacenamiento y recuperación es el documento, y cada documento se almacena
separadamente en un solo bloque, normalmente un solo fichero.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 50 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
lenguaje cuya ambigüedad dificulta su manejo por los ordenadores, sobre todo por
la imposibilidad que tienen de entender su significado preciso.
Por ejemplo, cuando se recupera de una base de datos el teléfono del Ayuntamien-
to de Peñíscola, el usuario realiza una consulta sql como por ejemplo la siguiente:
Como respuesta del sistema, el usuario recibirá una lista de documentos ordenados
según su capacidad de satisfacer las condiciones de la consulta. Cuanto mayor sea
esta capacidad mayor será la relevancia del documento con respecto a la consul-
ta. Sin embargo, a pesar de esto, muchos de los documentos de la respuesta no
proporcionarán la información que se solicita, es decir, el número de teléfono del
Ayuntamiento de Peñíscola.
Para realizar su función, los sri procesan el contenido de los documentos que al-
macenan, y los representan por medio de un conjunto de palabras que se extraen
de su contenido. Posteriormente, los documentos son considerados para su recu-
peración de acuerdo a su relevancia con respecto a la consulta inicial. Todo este
proceso requiere la extracción de información de los textos y la utilización de esta
información para evaluar la consulta. La dificultad no esta solo en cómo extraerla,
sino en cómo utilizar la información para estimar la relevancia del documento con
respecto a la consulta.
Como puede verse, la noción de relevancia es central en los sri. De hecho, pode-
mos decir que el principal objetivo de los sri es recuperar el mayor número posible
de documentos relevantes para el usuario, y recuperar el menor número posible de
ellos que no sean suficientemente relevantes. En el resto del capítulo se estudian
las principales características y técnicas empleadas por los sri actuales. En la tabla
2.1 se resumen todos los conceptos explicados en este apartado.
Almacenan datos con estructura regular y Almacenan documentos con estructura irregular y signifi-
significado preciso cado impreciso
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 51 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
3. Visión general
En esta sección se presentan de una manera general los conceptos más básicos
de los sri que serán mejor explicados en el resto de secciones del capítulo. Estos
conceptos sirven para comprender cómo funciona un sri de una manera preliminar
y permiten comenzar a profundizar en las cuestiones más específicas del capítulo
como son los modelos de representación de los documentos, los mecanismos de
evaluación de consultas y las técnicas de inserción, indexación y búsqueda de do-
cumentos.
A la hora de utilizar un sri, el usuario tiene que traducir sus necesidades de infor-
mación en consultas escritas en el lenguaje o interfaz gráfica proporcionada por el
sistema. En general, tal y como expresa la figura 2.1, puede decirse que la tarea de
recuperar información es un proceso cíclico cuyos objetivos iniciales no están bien
definidos y pueden ir cambiando a lo largo del proceso.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 52 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
3.2. Arquitectura de un sri
En la figura 2.2 se proporciona un esquema que expresa la arquitectura genérica
de un sri y su funcionamiento en el proceso de almacenamiento y recuperación de
información. Nótese que los usuarios de un sri van a realizar únicamente operacio-
nes de consulta y las operaciones de almacenamiento de documentos las realizará
su administrador.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 53 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
4. Modelos de representación de documentos
Para representar los documentos almacenados, cada sri utiliza su propio modelo
de documento. En el modelo de representación de documentos se define qué in-
formación se va representar acerca de cada documento almacenado. Por eso, el
modelo de documento utilizado por un sri va a tener consecuencias en cuestiones
importantes como el formato y las estructuras de datos que se van a utilizar para
almacenar los documentos, y los tipos de condiciones que se van a poder especifi-
car en los lenguajes de recuperación del sistema.
Todas estas operaciones sobre el texto reducen la complejidad del modelo de re-
presentación de los documentos, y proporcionan un buen conjunto de términos de
indexación para el documento. Sin embargo, es importante tener en cuenta que
ninguna de ellas resuelve los problemas de ambigüedad del lenguaje causados
entre otras cosas por la utilización de palabras con varios significados (polisemias)
o varias palabras con el mismo significado (sinónimas). Aunque se han estudiado
mucho, los problemas de ambigüedad del lenguaje siguen sin estar resueltos, así
que se puede decir que es imposible expresar el contenido de los documentos de
manera exacta.
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 54 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73
4.1.1. Matriz de términos/documentos
Por ejemplo, considerando los tres documentos de la tabla 2.2 en el que los térmi-
nos de indexación aparecen marcados en negrita, se puede construir la matriz de
la tabla 2.3. En esta tabla, cada posición de la matriz almacena un valor booleano
indicando si el texto contiene al término.
hogwarts 1 0 0
harry 1 1 1
amigos 1 1 0
cámara secreta 1 0 0
monstruo 1 0 0
voldemort 0 1 1
horrocruxes 0 1 0
sobrevivir 0 1 0
príncipe 0 0 1
libro 0 0 1
María José Aramburu C. / Ismael Sanz B. - ISBN: 978-84-695-6769-2 55 Bases de datos avanzadas - UJI - DOI: http://dx.doi.org/10.6035/Sapientia73