Está en la página 1de 221

CONTENIDOS

PREFACIO ____________________________________________________ 4
INTRODUCCIN _______________________________________________ 5
MODELO ENTIDAD-RELACIN ____________________________________ 9
MODELO RELACIONAL _________________________________________ 28
SQL _______________________________________________________ 38
OTROS LENGUAJES RELACIONALES_______________________________ 51
INTEGRIDAD Y SEGURIDAD _____________________________________ 64
DISEO DE BASES DE DATOS RELACIONALES ______________________ 71
BASES DE DATOS ORIENTADAS A OBJETOS ________________________ 84
BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS ___________ 93
XML ______________________________________________________ 102
ALMACENAMIENTO Y ESTRUCTURA DE ARCHIVOS__________________ 112
INDEXACION Y ASOCIACION ___________________________________ 122
PROCESAMIENTO DE CONSULTAS _______________________________ 134
OPTIMIZACIN DE CONSULTAS_________________________________ 142
TRANSACCIONES ____________________________________________ 151
CONTROL DE CONCURRENCIA __________________________________ 157
SISTEMAS DE RECUPERACIN __________________________________ 168
ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS _______________ 175
BASES DE DATOS DISTRIBUDAS _______________________________ 180
BASES DE DATOS PARALELAS __________________________________ 189

DESARROLLO DE APLICACIONES Y ADMINISTRACIN _______________ 195


CONSULTAS AVANZADAS Y RECUPERACIN DE LA INFORMACIN _____ 200
TIPOS DE DATOS AVANZADOS Y NUEVAS APLICACIONES ____________ 208
PROCESAMIENTO AVANZADO DE TRANSACCIONES _________________ 215

PREFACIO
Este volumen es un manual del profesor para la cuarta edicin de Fundamentos de Bases de Datos por
Abraham Silberschatz, Henry F. Korth y S. Sudarshan. Contiene las respuestas a los ejercicios del final de
cada captulo del libro. Antes de aportar las respuestas a los ejercicios de cada captulo, se incluyen unos
comentarios sobre cada uno. La naturaleza de estos cometarios es variable. Incluyen explicaciones sobre la
inclusin u omisin de ciertas materias y se hace notar la manera en que se ensea el captulo en nuestros
propios cursos. Los comentarios tambin incluyen sugerencias sobre las materias a omitir, si el tiempo es
escaso, consejos prcticos sobre el software y el material que se puede emplear para los ejercicios de
programacin.
El inicio de esta edicin se han dispuesto en la Web las soluciones de algunos problemas. Estos
problemas se han marcado con un * en el manual del profesor.
La pgina web del libro, http://www.bell-labs.com/topic/books/db-book, contiene una variedad
de informacin til, incluyendo la actualizacin de erratas, apndices en lnea que describen modelos de datos
en red, modelos de datos jerrquicos, diseo avanzado de bases de datos relacionales y el modelo del plan de
estudios del curso. Peridicamente se actualizar esta pgina con material suplementario que pueda ser til a
profesores y estudiantes.
Se suministra una lista de correo para que los usuarios se puedan comunicar entre s y con nosotros.
Si desea formar parte de la lista enve un email a db-book@research.bell-labs.com indicando su nombre,
afiliacin, puesto y direccin de correo electrnico.
Le agradeceramos que nos hiciera llegar los errores u omisiones del libro, as como del manual del
profesor. Aunque hemos intentado escribir un manual del profesor que ayude a los usuarios de nuestro libro
tanto como sea posible, siempre se puede mejorar. Se podran incluir respuestas mejoradas, preguntas
adicionales, ejemplos de preguntas de test, proyectos de programacin, sugerencias sobre ordenes alternativos
de presentacin de las materias, referencias adicionales y otros.
Si desea sugerir cualquier mejora al libro o al manual del profesor, estaremos encantados de
escucharle. El correo electrnico por Internet debe dirigirse a db-book@research.bell-labs.com. El correo
fsico debe enviarse a Avi Silberschatz, Laboratorios Bell, Room 2T-310, 600 Mountain Avenue,Murray Hill,
NJ 07974, USA. Todas las aportaciones que tengan lugar sern, naturalmente, convenientemente reconocidas
a sus autores.
Nilesh Dalvi, Sumit Sanghai, Gaurav Bhalotia y Arvind Hulgeri hicieron la mayor parte del trabajo de
preparacin para la cuarta edicin del manual del profesor. Este manual se ha elaborado a partir de los
manuales de las ediciones anteriores. El manual de la tercera edicin fue preparado por K. V. Raghavan con la
ayuda de Prateek R. Kapadia, Sara Strandtman ayud con el manual del profesor para las ediciones segunda y
tercera, mientras que Greg Speegle y Dawn Bezviner ayudaron a preparar el manual del profesor para la
primera edicin.
A.S.
H.F.K.
S.S.
Manual de apoyo al profesor, Versin 4.0.0

CAPITULO

INTRODUCCIN
El Captulo 1 aporta una visin general sobre la naturaleza y el propsito de los sistemas de bases de datos.
El concepto ms importante de este captulo es que los sistemas de bases de datos permiten tratar los
datos con un alto nivel de abstraccin. As, los sistemas de bases de datos se diferencian significativamente de
los sistemas de ficheros y de los entornos de programacin de propsito general, con los cuales ya estn
familiarizados los estudiantes. Otro aspecto importante del captulo es animar al empleo de los sistemas de
bases de datos, en lugar de los programas de aplicaciones construidos sobre sistemas de ficheros. As, el
captulo motiva lo que el estudiante estudiar el resto del curso.
La idea de la abstraccin en los sistemas de bases de datos merece ser enfatizada en todo el proceso,
no slo en la discusin del Apartado 1.3. La visin general de la estructura de las bases de datos que arranca
en el Apartado 1.4 es, forzosamente, ms bien breve y pretende solamente dar al estudiante una idea
aproximada de algunos conceptos. Puede que los estudiantes no sean capaces, inicialmente, de apreciar
completamente los conceptos que aqu se describen, pero deberan serlo al final del curso.
Las especificaciones de los modelos E-R, relacional y orientados a objeto, se cubren en captulos
posteriores. Estos modelos se pueden emplear en el Captulo 1 para reforzar el concepto de abstraccin,
mientras los detalles sintcticos se postergan para ms tarde en el curso.
Si los estudiantes ya han realizado un curso sobre sistemas operativos, vale la pena mostrar como se
relacionan las bases de datos -DBMS- y los sistemas operativos -OS-. Tambin es til diferenciar entre la
concurrencia, tal y como es enseada en los cursos sobre sistemas operativos (con una orientacin hacia
ficheros, procesos y recursos fsicos) y el control de concurrencia en las bases de datos (con una orientacin
hacia una granularidad ms sutil que el nivel de ficheros, las transacciones de recuperacin y los recursos
accedidos asociativamente, ms que fsicamente). Si los estudiantes estn familiarizados con un sistema
operativo en particular, el enfoque de esos S.O. a un acceso de ficheros concurrentes pude emplearse como
ejemplo.

Ejercicios
1.1
Cules son las cuatro diferencias principales entre un sistema de procesamiento de archivos y un
SGBD?
Respuesta: Algunas de las diferencias ms importantes entre un sistema de gestin de bases de datos y uno
de procesamiento de archivos son:
Ambos sistemas contienen una coleccin de datos y un conjunto de programas que acceden a ellos. Un
sistema de gestin de bases de datos coordina los accesos fsicos y lgicos a los datos, mientras que un
sistema de procesamiento de ficheros coordina slo el acceso fsico.
Un sistema de gestin de bases de datos reduce la cantidad de datos duplicados, asegurando que una seccin
fsica de datos est disponible para todos los programas autorizados a accederla, mientras que los datos
escritos por un programa sobre un sistema de procesamiento de ficheros pueden no ser accesibles por otro
programa.
Un sistema de gestin de bases de datos est diseado para permitir acceso flexible a los datos (es decir,
consultas), mientras que un sistema de procesamiento de ficheros est diseado para permitir predeterminados
accesos a los datos(es decir, programas compilados).
Un sistema de gestin de bases de datos est diseado para coordinar a mltiples usuarios accediendo a los
mismos datos en el mismo momento. Un sistema de procesamiento de ficheros generalmente se disea para
permitir que uno o ms programas accedan a diferentes ficheros de datos al mismo tiempo. En un sistema de
procesamiento de ficheros, dos programas pueden acceder concurrentemente a un fichero slo si ambos tienen
acceso de slo lectura sobre el fichero.
1.2
En este captulo se han descrito las diferentes ventajas principales de un sistema gestor de bases de
datos. Cules son dos de los inconvenientes?
Respuesta: A continuacin se indican dos inconvenientes asociados con los sistemas de bases de datos.
a.
La instalacin de un sistema de bases de datos requiere ms conocimiento, dinero, habilidad y
tiempo.
b.
La complejidad de una base de datos puede originar una disminucin del rendimiento.
1.3

Explquese la diferencia entre independencia fsica y lgica de los datos.

Respuesta:
La independencia fsica de los datos es la capacidad para modificar el esquema fsico, sin necesidad de
rescribir los programas de las aplicaciones. Tales modificaciones incluyen cambiar el almacenamiento de
registros desbloqueados a bloqueados, o de ficheros de acceso secuencial a random.
La independencia lgica de los datos es la capacidad para modificar el esquema conceptual, sin necesidad de
rescribir los programas de las aplicaciones. Una de estas modificaciones podra ser la adicin de un campo a
un registro; una vista de los programas de la aplicacin oculta este cambio desde los programas.

1.4
Lstense cinco responsabilidades de un sistema de gestin de bases de datos. Para cada
responsabilidad, explquense los problemas que ocurriran si no se realizara esta funcin.
Respuesta: Un gestor de bases de datos de propsito general (DBM) tiene cinco responsabilidades:
a.
interaccionar con el gestor de ficheros.
b.
poner en prctica la integridad
c.
poner en prctica la seguridad
d.
copias de seguridad y recuperacin
e.
controlar las concurrencias.
Si estas responsabilidades no fueran asumidas por un determinado DBM (y los textos indican que en
ocasiones se omite alguna responsabilidad en el diseo, como es el caso del control de concurrencia en un
DBM mono puesto para un microordenador) podran ocurrir, respectivamente, los siguientes problemas:
a.
Ningn DBM puede hacer nada sin esto; si no hay interaccin con el gestor de ficheros no se puede
recuperar nada que est almacenado en los ficheros.
b.
Pueden no cumplirse las restricciones de integridad, los saldos de las cuentas podan estar por debajo
del mnimo permitido, los empleados podran ganar demasiadas horas extraordinarias (por ejemplo, horas >
80) o los pilotos de las compaas areas podran volar ms horas de las que permite la ley.
c.
Usuarios no autorizados podran acceder a la base de datos, o usuarios autorizados para acceder a
determinadas partes de la base de datos podran ser capaces de acceder a otras, para las que carecen de
autorizacin. Por ejemplo, un estudiante de escuela superior podra tener acceso a los cdigos secretos de la
defensa nacional, o los empleados podran averiguar lo que ganan sus jefes.
d.
Los datos se podran perder de forma permanente en vez de, al menos, estar disponibles en el estado
de consistencia que exista antes del fallo.
e.
Se podran violar la restricciones de integridad a pesar del cumplimiento de la propia integridad en
cada transaccin. Por ejemplo, se podran reflejar saldos bancarios incorrectos debido a retiradas y depsitos
simultneos, etctera.
1.5

Cules son las cinco funciones principales del administrador de una base de datos?

Respuesta: Las cinco funciones principales del administrador de una base de datos son:
Crear la definicin del esquema
Definir la estructura de almacenamiento y los mtodos de acceso
Modificar el esquema y/o la organizacin fsica cuando sea necesario
Conceder autorizacin para acceder a los datos
Definir las restricciones de integridad
1.6
Lstense siete lenguajes de programacin que sean procedimentales y dos que no lo sean. Qu grupo
es ms fcil de aprender y de usar? Justifquese la respuesta.
Respuesta: Clasificacin de lenguajes de programacin:
Procedimentales: C, C++, Java, Basic, Fortran, Cobol, Pascal
No procedimentales: Lisp y Prolog
Nota: Lisp y Prolog soportan algunas construcciones procedimentales, pero el ncleo de ambos lenguajes es
no procedimental.
En teora los lenguajes no procedimentales son ms fciles de aprender porque permiten al programador
concentrarse en lo que necesita ser hecho, en vez de en cmo hacerlo. En la prctica esto no siempre es cierto,
especialmente si los lenguajes procedimentales se aprenden primero.

1.7
Lstense los seis pasos principales que se deberan dar en la definicin de una base de datos para una
empresa particular.
Respuesta: Los seis pasos principales en la definicin de una base de datos para una determinada empresa
particular son:
Definir los requerimientos de alto nivel de la empresa (este paso genera un documento conocido como las
especificaciones requeridas por el sistema.)
Definir un modelo conteniendo todos los tipos apropiados de datos y las relaciones entre ellos.
Definir las restricciones de integridad en los datos.
Definir el nivel fsico.
Por cada problema conocido que haya de resolverse regularmente (por ejemplo, las tareas a realizar por
usuarios Web o auxiliares) definir una interface de usuario para llevar a cabo la tarea y escribir los programas
de aplicacin necesarios para implantar la interface del usuario.
Crear/inicializar la base de datos.
1.8
Considrese un array de enteros bidimensionales de tamao n m que se va a usar en su lenguaje de
programacin preferido. Usando el array como ejemplo, ilstrese la diferencia (a) entre los tres niveles de
abstraccin y (b) entre un esquema e instancias.
Respuesta: Sea tgrid un array de enteros bidimensionales de tamao n m.
a.
El nivel fsico seran simplemente m n (probablemente consecutivas) localizaciones de
almacenamiento de cualquier tamao especificado para la implantacin (por ejemplo, 32 bits cada una).
El nivel conceptual es un cuadrcula de cajas, cada una conteniendo posiblemente un entero, la cul
es n cajas de alto por m de ancho.
Hay 2m x n vistas posibles. Por ejemplo, una vista podra ser el array entero o una fila particular del
array o todas las n filas, pero solamente columnas de 1 a i.
b.

Considrense las siguientes declaraciones Pascal:


type tgrid = array[1..n, 1..m] of integer;
var vgrid1, vgrid2 : tgrid
Entonces tgrid es un esquema, mientras que los valores de las variables vgrid1 y vgrid2 son
instancias.
Para ilustrarlo an ms, considrese el esquema array[1..2, 1..2] of integer. Dos instancias de este
esquema son:
1
7

16
89

17 90
412 89

CAPITULO

MODELO ENTIDAD-RELACIN
Este captulo introduce el modelo entidad-relacin en detalle. El captulo abarca numerosas caractersticas del
modelo, varias de las cuales se pueden omitir dependiendo del alcance del curso que se ha planificado.
Conjuntos de entidades dbiles (Apartado 2.6), diseo de restricciones (Apartado 2.7.4) y agregacin
(Apartado 2.7.5), junto con los correspondientes sub apartados del Apartado 2.9 (Reduccin de un Esquema
E-R a Tablas) se pueden omitir si se dispone de poco tiempo. Se recomienda tratar la especializacin
(Apartado 2.7.1), al menos con algn detalle, dado que es un concepto importante en las bases de datos
orientadas a objeto (Captulo 8).
El propio modelo E-R y los diagramas E-R se emplean a menudo en el texto. Es importante que los
estudiantes se encuentren cmodos con ellos. El modelo E-R es un excelente contexto para introducir a los
estudiantes en la complejidad del diseo de las bases de datos. Para una empresa dada hay, a menudo, una
extensa variedad de diseos E-R. Aunque algunas elecciones son arbitrarias, frecuentemente sucede que un
diseo es intrnsecamente mejor que los restantes. Varios de los ejercicios ilustran este punto. La evaluacin
de las bondades de un diseo E-R requiere un conocimiento de la empresa a modelar y de las aplicaciones a
ejecutar. A menudo es posible dirigir a los estudiantes a un debate sobre los mritos relativos de diseos
contrapuestos y as ilustrar, por ejemplo, como la comprensin de la aplicacin es frecuentemente la parte
ms dura del diseo de la base de datos.
Un nfasis considerable se ha puesto en la construccin de tablas a partir de diagramas E-R.
Esto sirve para desarrollar la intuicin en la discusin del modelo relacional en los captulos siguientes.
Tambin es til para convertir los conceptos abstractos, de las entidades y sus relaciones, en los ms concretos
de las relaciones. Diversos textos sitan esta materia junto al modelo de datos relacional, en lugar de hacerlo
el captulo del modelo E-R. Nuestra intencin, al situar esta materia aqu, es ayudar a los estudiantes a
apreciar como se emplean, en la realidad los modelos de datos E-R, mientras se estudia el modelo E-R, en vez
de hacerlo ms tarde.
La materia sobre la conversin de diagramas E-R en tablas es bastante breve en algunos puntos del
libro, aportando las transparencias un mejor tratamiento de los detalles que el implcitamente dejado en el
libro.
Cambios a la tercera edicin:
En la cuarta edicin se han actualizado varios ejemplos, incluyendo relaciones ternarias (empleados,
sucursales, trabajo en lugar de cliente, prstamo, sucursal) y agregaciones (administracin en lugar de
responsable de prstamos), para hacerlos ms realistas. Tambin se han aadido ms ejemplos, as en la
especializacin se emplean persona, cliente y empleado como ejemplo principal, en lugar de cuenta, cuentas
control y cuentas de ahorro, que tambin hace el ejemplo ms realista. Se ha reemplazado D.N.I. por el ms
global (y realista) id-cliente e id-empleado.
Se han aadido notaciones para hacer restricciones sin conexin y aclarar la participacin total (solapamiento
y participacin parcial estn por defecto). Se han introducido notaciones E-R alternativas, dado que
numerosas aplicaciones del mundo real las emplean.
Tambin se ha aportado una breve introduccin a los diagramas de clase UML, que estn empezando a
emplearse cada vez ms en lugar de los diagramas E-R, en herramientas tales como el diseador de Oracle.
Se ha abandonado el alcance de las dependencias de existencia, dado que las restricciones de participacin
total aportan una restriccin muy parecida. La distincin entre participacin total y dependencias de existencia
es demasiado pequea como para ser tenida en cuenta y slo confunde a los estudiantes.
Las cuestiones de diseo se discuten en mayor detalle.

Figura 2.1

Diagrama E-R para una compaa de seguros de coches.

Ejercicios
2.1

Explquense las diferencias entre los trminos clave primaria, clave candidata y superclave.

Respuesta: Una superclave es un conjunto de uno o ms atributos que, tomados colectivamente, permiten
identificar de forma nica una entidad en el conjunto de entidades. Una superclave puede contener atributos
ajenos. Si K es una superclave, entonces tambin lo es cualquier superconjunto de K. Una superclave para la
que ningn subconjunto propio es tambin superclave, se denomina clave candidata. Es posible que varios
conjuntos diferentes de atributos puedan servir como claves candidatas. La clave primaria es una de las claves
candidatas que se elige, por el diseador de la base de datos, como el elemento principal para identificar las
entidades dentro un conjunto de entidades.
2.2
Constryase un diagrama E-R para una compaa de seguros de coches cuyos clientes poseen uno o
ms coches. Cada coche tiene asociado un nmero, de cero a cualquier valor, que almacena el nmero de
accidentes.
Respuesta: Vase la Figura 2.1
2.3
Constryase un diagrama E-R para un hospital con un conjunto de pacientes y un conjunto de
mdicos. Asciese con cada paciente un registro de las diferentes pruebas y exmenes realizados.
Respuesta: Vase la Figura 2.2
2.4
Una oficina de registro de una universidad mantiene datos acerca de las siguientes entidades: (a)
cursos, incluyendo nmero, ttulo, crditos, programa de estudios y requisitos previos; (b) ofertas de cursos,
incluyendo nmero del curso, ao, semestre, nmero de seccin, profesor(es), horarios y aulas; (c)
estudiantes, incluyendo id-estudiante, nombre y programa; y (d) profesores, incluyendo nmero de
identificacin, nombre, departamento y ttulo.
Adems, se deben modelar adecuadamente la matriculacin de los estudiantes en los cursos y las
calificaciones otorgadas en cada uno.
Constryase un diagrama E-R para la oficina de registro. Documntense todas las suposiciones que
se hagan acerca de las restricciones de correspondencia.

Respuesta: Vase la Figura 2.3.


En la respuesta dada aqu, los principales conjuntos de entidades son estudiantes, cursos, ofertas-cursos
y profesores. El conjunto de entidades ofertas-cursos es un conjunto de entidad dbil dependiente de curso.
Las suposiciones hechas son:
a.
una clase slo se rene en un lugar y en un momento preciso. Este diagrama E-R no puede modelar
una clase que se rena en diferentes lugares y en diferentes momentos.
b.
No hay garanta de que la base de datos no tenga dos clases reunindose en el mismo lugar y al
mismo tiempo.

Figura 2.2

Figura 2.3

Diagrama E-R para un hospital.

Diagrama E-R para una universidad.

2.5
Considrese una base de datos cuyo objeto es registrar las notas que obtienen los estudiantes en los
distintos exmenes de los diferentes cursos ofertados.
a.
Constryase un diagrama E-R que modele los exmenes como entidades y haga uso de una relacin
ternaria para la base de datos anterior.
b.
Constryase un diagrama E-R alternativo que emplee slo una relacin binaria entre estudiantes y
ofertas-cursos. Asegrese de que slo existe una relacin entre un determinado estudiante y un par ofertascursos, y que an se pueden representar las notas que obtiene un estudiante en los diferentes exmenes de un
curso ofertado.
Respuesta:
a.
Vase la Figura 2.4
b.
Vase la Figura 2.5

Figura 2.4
2.6

Diagrama E-R para la base de datos de notas.

Constryanse las tablas apropiadas para cada uno de los diagramas E-R de los ejercicios 2.2 al 2.4.

Respuesta:
a.
Tablas de seguros de coches:
persona (id-conductor, nombre, direccin)
coche (matrcula, ao, modelo)
accidente (nmero-informe, fecha, lugar)
participado (id-conductor, matrcula, nmero-informe, cantidad-daos)
b.

Tablas de hospitales:
pacientes (id-paciente, nombre, seguro, fecha-admisin, fecha-alta)
doctores (id-doctor, nombre, especialidad)
pruebas (id-prueba, nombre-prueba, fecha, hora, resultado)
paciente-doctor (id-paciente, id-doctor)
registro-pruebas (id-prueba, id-paciente) realizada-por (id-prueba, id-doctor)

c.

Tablas del registro de la universidad:


estudiante (id-estudiante, nombre, programa)
curso (nmero-curso, ttulo, programa-estudios, crditos)
ofertas-cursos (nmero-curso, nmero-seccin, ao, semestre, hora, aula)
profesor (id-profesor, nombre, departamento, ttulo)
matrculas (id-estudiante, nmero-curso, nmero-seccin, semestre, ao, calificacin)
ensea (nmero-curso, nmero-seccin, semestre, ao, id-profesor)
requerimientos (curso-principal, requisitos-previos)

Figura 2.5

Otro diagrama E-R para la base de datos de notas.

2.7
Disese un diagrama E-R para seguir la pista de las hazaas de su equipo de deportes favorito. Se
deberan almacenar los partidos jugados, los resultados de cada partido, los jugadores y las estadsticas
individuales de cada jugador, para cada partido. Las estadsticas de resumen se deberan modelar como
atributos derivados.
Respuesta: Vase la Figura 2.6
2.8
Extindase el diagrama E-R del ejercicio anterior, a fin de almacenar la misma informacin para
todos los equipos de una liga.
Respuesta: Vase la Figura 2.7. Ntese que un jugador slo puede pertenecer a un equipo durante una
temporada.
2.9

Explquense las diferencias entre conjunto de entidades dbiles y fuertes.

Respuesta: Un conjunto de entidades fuertes tiene una clave primaria. Todas las tuplas del conjunto se
distinguen por medio de esa clave. Un conjunto de entidades dbiles no tiene clave primaria, a menos que se
incluyan los atributos del conjunto de entidades fuertes del que depende. En un conjunto de entidades dbiles
las tuplas estn divididas segn su relacin con las de la entidad fuerte. Las tuplas de cada divisin se

distinguen mediante un discriminador, que es un conjunto de atributos.

Figura 2.6

Diagrama E-R para las estadsticas del equipo favorito.

Figura 2.7

Diagrama E-R para las estadsticas de todos los equipos.

2.10
Se puede convertir cualquier conjunto de entidades dbiles en un conjunto de entidades fuertes,
simplemente aadiendo los atributos apropiados. Por qu, entonces, se tienen conjuntos de entidades
dbiles?
Respuesta: Se tienen entidades dbiles por varias razones:
Se desea evitar la duplicidad de datos y las consiguientes posibles inconsistencias causadas por las claves
duplicadas de la entidad fuerte.
Las entidades dbiles reflejan la estructura lgica de una entidad que es dependiente de otra.
Las entidades dbiles se pueden borrar automticamente cuando se borra la entidad fuerte de la que
dependen.
Las entidades dbiles se pueden almacenar fsicamente con sus entidades fuertes.

2.11

Defnase el concepto de agregacin. Propnganse dos ejemplos para los que este concepto es til.

Figura 2.8

Ejemplo 1 de diagrama E-R de agregacin.

Figura 2.9

Ejemplo 2 de diagrama E-R de agregacin.

Respuesta: La agregacin es una abstraccin a travs de la cual las relaciones se tratan como entidades de
nivel ms alto. As, la relacin entre las entidades A y B se trata como si fuera una entidad C. Algunos
ejemplos de esto son:
a.
Empleados que trabajan por proyectos. Un empleado trabajando para un proyecto en particular
utiliza diversa maquinaria. Vase la Figura 2.8
b.
Los fabricantes tienen asociaciones con distribuidores para la distribucin de productos. Cada
asociacin tiene especificado el conjunto de productos que se van a distribuir. Vase la Figura 2.9

Figura 2.10

Diagrama E-R para el Ejercicio 2.12.

2.12
Considrese el diagrama E-R de la Figura 2.29, que modela una librera en lnea.
a.
Lstense los conjuntos de entidades y sus claves primarias.
b.
Supngase que la librera aade casetes de msica y discos compactos a su coleccin. El mismo
elemento musical puede estar presente en formato de casete o de disco compacto con diferentes precios.
Extindase el diagrama E-R para modelar este aadido, ignorando el efecto sobre las cestas de la compra.
c.
Extindase ahora el diagrama E-R usando generalizacin para modelar el caso en que una cesta de la
compra pueda contener cualquier combinacin de libros, casetes de msica o discos compactos.
Respuesta:
2.13
Considrese un diagrama E-R en el que el mismo conjunto de entidades aparece varias veces. Por
qu est permitida esta redundancia, una mala prctica que se debera evitar siempre que sea posible?
Respuesta: Al utilizar un conjunto de entidades muchas veces se estn perdiendo relaciones en el modelo.
Por ejemplo, en el diagrama E-R de la Figura 2.11: los estudiantes que toman clases son los mismos que son
atletas, pero este modelo no lo mostrar.

Figura 2.11

Diagrama E-R con duplicidad de entidades.

2.14
Considrese la base de datos de una universidad para la planificacin de las aulas para los exmenes
finales. Esta base de datos se modelara mediante un nico conjunto de entidades examen, con atributos
nombre-curso, nmero-seccin, nmero-aula y hora. Alternativamente, se podran definir uno o ms
conjuntos de entidades, con conjuntos de relaciones para sustituir algunos de los atributos del conjunto de
entidades examen, como
curso con atributos nombre, departamento y nmero-c
seccin con atributos nmero-s y matriculados, que es un conjunto de entidades dbiles dependiente de
curso
aula con atributos nmero-a, capacidad y edificio
a.
Mustrese en un diagrama E-R el uso de los tres conjuntos de entidades adicionales listados.
b.
Explquense qu aplicaciones caractersticas influiran en la decisin de incluir o no, cada uno de los
conjuntos de entidades adicionales.
Respuesta:
a.
Vase la Figura 2.12
b.
Los conjuntos de entidades adicionales son tiles si se desea almacenar sus atributos como parte de
la base de datos. Para el conjunto de entidades curso se han elegido tres atributos a incluir. Si se incluyera
solamente la clave primaria (nmero-c) y si los cursos tuvieran slo una seccin, entonces sera apropiado
reemplazar los conjuntos de entidades curso (y seccin) por un atributo (nmero-c) de examen. La razn de
que no sea aconsejable tener mltiples atributos de curso como atributos de examen es que, entonces, sera
difcil el mantenimiento de los datos en los cursos, en concreto si un curso tuviera varios exmenes o ninguno.
Comentarios similares aplican al conjunto de entidades aula.

Figura 2.12

Diagrama E-R para el calendario de exmenes.

2.15
Cuando se disea un diagrama E-R para un desarrollo particular se tienen varias alternativas entre las
que hay que decidir.
a.
Qu criterio se deber considerar para hacer la eleccin apropiada?
b.
Disense tres diagramas E-R alternativos para representar la oficina de registro de la universidad
del Ejercicio 2.4. Lstense las ventajas de cada uno. Decdase por una de las alternativas.
Respuesta:
a.
Los criterios a emplear son diseos intuitivos, expresiones fieles del concepto de mundo real y
eficiencia. Un modelo que esboza claramente los objetos y las relaciones de una forma intuitiva es mejor que
uno que no lo hace, porque es ms fcil de usar y de cambiar. Decidirse entre un atributo y conjunto de
entidades para representar un objeto y decidirse entre un conjunto de entidades y un conjunto de relaciones,
influye en la precisin con que se representan los conceptos del mundo real. Si no se hace la eleccin de
diseo correcta, resultarn inconsistencias y /o prdidas de informacin. Es preferible, por razones obvias, un
modelo que se pueda implantar de una forma eficiente.
b.

Considrense tres alternativas diferentes para el problema del Ejercicio 2.4.

Vase la Figura 2.13


Vase la Figura 2.14
Vase la Figura 2.15
Cada alternativa tiene ventajas, dependiendo del uso previsto de la base de datos. El esquema 2.13 se ha visto
anteriormente. El esquema 2.15 no requiere una entidad independiente para requisitos-previos. Sin embargo,
ser difcil almacenar todos los requisitos previos(siendo un atributo multivalorado). El esquema 2.14 trata los
requisitos previos, as como las aulas, como entidades independientes, siendo til para la recogida de datos
sobre los requisitos previos y el uso las habitaciones. El esquema 2.13 est entre medias de los otros, trata los
requisitos previos como entidades independientes, pero las aulas no. Dado que una oficina de registro
probablemente ha de responder preguntas generales sobre el nmero de clases que tiene un estudiante, los
requisitos previos de un curso o acerca de los lugares concretos en que tienen lugar las clases, el esquema 2.14
es seguramente la mejor eleccin.

Figura 2.13

Diagrama E-R para una universidad (a).

Figura 2.14

Diagrama E-R para una universidad (b).

Figura 2.15

Diagrama E-R para una universidad (c).

2.16
Un diagrama E-R se puede ver como un grafo. Qu significan los siguientes trminos de estructura
en un esquema de desarrollo?
a.
El grafo es inconexo.
b.
El grafo es acclico.
Respuesta:
a.
Si un par de conjuntos de entidades estn conectados por una lnea en un diagrama E-R, los
conjuntos de entidades estn relacionados, aunque sea indirectamente. Un grafo desconectado implica que hay
parejas de conjuntos de entidades que no estn relacionadas entre s. Si se divide el grafo en los componentes
conectados se tiene, en efecto, una base de datos independiente.
b.
Como se ha indicado en la respuesta del apartado anterior, una conexin en el grafo entre un par de
conjuntos de entidades indica una relacin (posiblemente indirecta) entre ellos. Si hay un ciclo en el grafo,
entonces cada par de conjuntos de entidades del ciclo estn relacionadas entre s en, al menos, dos maneras
distintas. Si el diagrama E-R es acclico hay slo una conexin entre cada par de conjuntos de entidades y, por
lo tanto, slo una relacin.
2.17
En el Apartado 2.4.3 se represent una relacin ternaria (Figura 2.30a) usando relaciones binarias,
como se muestra en la Figura 2.30b. Considrese la alternativa mostrada en la Figura 2.30c. Disctanse las
ventajas relativas de estas dos representaciones alternativas entre una relacin ternaria y relaciones binarias.
Respuesta: El modelo de la Figura 2.30c no ser capaz de representar todas las relaciones ternarias.
Considrese el conjunto de relaciones ABC siguiente.

Figura 2.30

Diagrama E-R para el Ejercicio 2.17 (no se muestran los atributos).


A
1
4
4

B
2
2
8

C
3
7
3

Si ABC est partido en tres conjuntos de relaciones AB, BC y AC, los tres implicarn que la relacin (4, 2, 3)
es una parte de ABC.
2.18
Considrese la representacin de una relacin ternaria usando relaciones binarias como se describi
en el Apartado 2.4.3 (mostrado en la figura 2.30b).
a.
Mustrese una instancia sencilla de E, A, B, C, RA, RBy RC que no pueda corresponderse con ninguna
instancia de A, B, C y R.
b.
Modifquese el diagrama E-R de la Figura 2.30b para introducir restricciones que garanticen que
cualquier ejemplar de E, A, B, C, RA, RB y RC que satisfaga las restricciones, corresponda a una instancia de
A, B, C y R.
c.
Modifquese la traduccin anterior para manejar restricciones de participacin total sobre las
relaciones ternarias.
d.
La representacin anterior requiere que se cree un atributo clave primaria para E. Mustrese la forma
en que tratar E, como un conjunto de entidades dbiles, de manera que no se requiera un atributo clave
primaria.
Respuesta:
a.
Sea E = {e1, e2}, A = {a1, a2}, B = {b1}, C = {c1}, RA = {(e1, a1), (e2, a2)}, RB = {(e1, b1)} y RC = {(e1,
c1)}. Se ve que debido a la tupla (e2, a2), no existe ninguna instancia de R que se corresponda con E, RA, RB y
RC.

Figura 2.31

Diagrama E-R del Ejercicio 2.31b.

Figura 2.32

Diagrama E-R del Ejercicio 2.31d.

b.
Vase la Figura 2.31. La idea es introducir restricciones de participacin total entre E y las relaciones
RA, RB y RC, para que cada tupla en E tenga una relacin con A, B y C.
c.
Supngase que A participa totalmente en la relacin R, entonces introdzcase una restriccin de
participacin total entre A y RA.
d.
Considrese a E como un conjunto de entidades dbiles y a RA, RB y RC como su conjunto de
relaciones identificadoras. Vase la Figura 2.32.
2.19
Un conjunto de entidades dbiles siempre se puede convertir en un conjunto de entidades fuertes,
aadindole a sus atributos los de la clave primaria de su conjunto de entidades identificadoras. Descrbase
qu tipo de redundancia resultara si se hiciese as.
Respuesta: La clave primaria de un conjunto de entidades dbiles se puede deducir de su relacin con el
conjunto de entidades fuertes. Si se aaden los atributos de la clave primaria al conjunto de entidades dbiles,
estarn presentes tanto en el conjunto de entidades como en el de relaciones y sern lo mismo. En
consecuencia, habr redundancia.
2.20
Disese una jerarqua de especializacin-generalizacin para las ventas de una compaa de
vehculos a motor. La compaa vende motocicletas, coches de pasajeros, mono volmenes y autobuses.
Justifquese la colocacin de los atributos en cada nivel de la jerarqua. Explquese por qu se deberan
colocar en un nivel ms alto o ms bajo.
Respuesta: La Figura 2.33 presenta una posible jerarqua; podra haber muy distintas soluciones. La jerarqua
de especializacin-generalizacin para la compaa de vehculos a motor se muestra en la figura. Los
atributos modelo, tasa-impuestos-ventas y volumen-ventas son necesarios para todos los tipos de vehculos.
Los vehculos comerciales son objeto del impuesto de vehculos comerciales y cada tipo tiene una capacidad

de transporte de pasajeros especfica de l. Algunos tipos de vehculos no comerciales estn sujetos al


impuesto de vehculos de lujo. Los coches solamente pueden se de varios tipos, tales como coches deportivos,
sedn, familiares, etc., por tanto el atributo tipo.

Figura 2.33

Diagrama E-R de una compaa que vende vehculos a motor.

2.21
Explquese la distincin entre las restricciones de diseo definidas por condicin y las definidas por
el usuario. Cules de estas restricciones se pueden comprobar automticamente? Explquese la respuesta.
Respuesta: En una jerarqua de especializacin-generalizacin debe ser posible decidir qu entidades son
miembros del conjunto de entidades de nivel inferior. En una restriccin de diseo definidas por condicin, la
pertenencia al conjunto de entidades de nivel inferior se evala partiendo de si una entidad cumple, o no, una
condicin explcita o predicado. Los conjuntos de entidades de bajo nivel definidas por usuario no estn
restringidos por una condicin de pertenencia; Ms bien las entidades estn asignadas, por el usuario de la
base de datos, a un conjunto de entidades determinado.
Las restricciones de diseo definidas por condicin slo se pueden manejar automticamente por el
sistema. Siempre que se inserta cualquier tupla en la base de datos, se puede decidir automticamente su
pertenencia a los varios conjuntos de entidades de nivel inferior, mediante la evaluacin de los
correspondientes predicados de pertenencia. Igualmente, cuando se actualiza una tupla, se puede volver a
evaluar automticamente su pertenencia a los varios conjuntos de entidades.
2.22

Explquese la distincin entre las restricciones disjuntas y solapadas.

Respuesta: En una restriccin de diseo disjunta, una entidad no puede pertenecer a ms de un conjunto de
entidades de nivel inferior. En generalizaciones solapadas la misma entidad puede pertenecer a ms de un
conjunto de entidades de nivel inferior. As, en el ejemplo del libro sobre los grupos de trabajo de empleados,
un jefe puede participar en ms de un grupo de trabajo.

Figura 2.34

Diagrama E-R para el Ejercicio 2.24 (no se muestran los atributos).

Figura 2.35
2.23

UML equivalente de la Figura 2.9c

Explquese la distincin entre las restricciones totales y parciales.

Respuesta: En una restriccin de diseo total, cada entidad de nivel superior deber pertenecer a un conjunto
de entidades de nivel inferior. Lo mismo no tiene por qu ser cierto en una restriccin de diseo parcial. Por
ejemplo, algunos empleados pueden no pertenecer a ningn grupo de trabajo.
2.24
En la Figura 2.31 se muestra una estructura reticular de generalizacin y especializacin. Para los
conjuntos de entidades A, B y C explquese cmo se heredan los atributos desde los conjuntos de entidades de
nivel ms alto X e Y. Disctase cmo manejar el caso en que un atributo de X tiene el mismo nombre que un
atributo de Y.
Respuesta: A hereda todos los atributos de X y, adems, puede definir los suyos propios. Anlogamente C
hereda, junto con sus propios atributos, todos los de Y. B hereda los atributos de X e Y. Si algunos de los
atributos nombre pertenecen a X e Y, puede referirse a B mediante el nombre cualificado X.nombre o
Y.nombre.
2.25

Dibjense equivalentes UML de los diagramas E-R de las Figuras 2.9c, 2.10, 2.12, 2.13 y 2.17.

Respuesta: Vanse las Figuras 2.35 a 2.39

2.26
Considrense dos bancos que deciden fusionarse. Asmase que ambos bancos usan exactamente el
mismo esquema de bases de datos E-R - el de la Figura 2.22. (Esta suposicin es, naturalmente, muy irreal; se
considera un caso ms realista en el Apartado 19.8). Si el banco fusionado tiene slo una base de datos, hay
varios problemas potenciales:
La posibilidad de que los dos bancos originales tengan sucursales con el mismo nombre
La posibilidad de que algunos clientes lo sean de ambos bancos originales
La posibilidad de que algunos nmeros de prstamo o de cuenta fueran usados en ambos bancos originales
(para diferentes prstamos o cuentas, por supuesto).
Por cada uno de estos problemas potenciales descrbase por qu existen de hecho dificultades potenciales.
Propngase una solucin a este problema. En la solucin, explquese cualquier cambio que se tenga que hacer
y descrbase cmo afectar al esquema y a los datos.

Figura 2.36

UML equivalente de la Figura 2.10

Figura 2.37

UML equivalente de la Figura 2.12

Figura 2.38

UML equivalente de la Figura 2.13

Figura 2.39

UML equivalente de la Figura 2.17

Respuesta: En este ejemplo se asume que ambos bancos tienen los identificadores compartidos para los
clientes, como es el caso del D.N.I. La solucin general se presenta en el siguiente ejercicio. Cada uno de los
problemas mencionados tiene dificultades potenciales.

a.
nombre-sucursal es la clave primaria del conjunto de entidades sucursal. Por lo tanto, al fusionar los
conjuntos de entidades de los dos bancos, si ambos tienen una sucursal con el mismo nombre uno de ellos se
perder.
b.
los clientes participan en los conjuntos de relaciones banquero-consejero, prestatario e impositor.
Al fusionar los conjuntos de entidades cliente de los dos bancos, las tuplas duplicadas del mismo cliente se
borrarn. Por consiguiente se actualizarn las relaciones, de entre los tres conjuntos mencionados, que estn
involucradas con las tuplas borradas. Ntese que si la representacin tabular de un conjunto de relaciones se
obtiene tomando una unin de las claves primarias de los conjuntos de entidades participantes, no ser
necesario modificar ninguno de estos conjuntos de relaciones.
c.
El problema causado por prstamos o cuentas con el mismo nmero en ambos bancos, es similar al
causado por las sucursales de los dos bancos con igual nombre-sucursal.
Para resolver los problemas originados por la fusin no es necesario modificar el esquema. Mezclar los
conjuntos de entidades cliente eliminando tuplas duplicadas con el mismo campo D.N.I. Antes de fusionar los
conjuntos de entidades sucursal, prefijar el nombre del banco antiguo al atributo nombre-sucursal en cada
tupla. Los conjuntos de entidades empleado y pago se pueden fusionar directamente. No hay que realizar
ninguna eliminacin de duplicados. Antes de fusionar los conjuntos de entidades prstamos y cuentas,
siempre que haya un nmero comn en ambos bancos, el nmero antiguo se reemplaza por un nmero nuevo
nico, en uno de los bancos.
Los conjuntos de relaciones siguientes se pueden fusionar. Cualquier relacin, en un conjunto de
relaciones que implica una tupla que se ha modificado previamente por la fusin, se modifica para conservar
el mismo significado. Por ejemplo, sea 1611 un nmero de prstamo comn en ambos bancos antes de la
fusin y supongamos que se remplaza por un nuevo y nico nmero 2611 en uno de los bancos, digamos en el
banco 2. Ahora todas las relaciones en prestatario, prstamo-sucursal y prstamo-pago del banco 2 que estn
referidas al nmero de prstamo 1611, habrn de modificarse para referirse a 2611. Entonces la fusin con los
conjuntos de relaciones correspondientes del banco 1 podrn tener lugar.
2.27
Reconsidrese la situacin descrita en el Ejercicio 2.26 bajo la suposicin de que un banco est en
Espaa y el otro en Portugal. Como antes, los bancos usan el esquema de la Figura 2.22, excepto que el banco
portugus usa un nmero de identificacin asignado por el gobierno portugus, mientras que el banco espaol
usa el D.N.I. espaol para la identificacin de clientes. Qu problemas (adems de los identificados en el
Ejercicio 2.24) ocurriran en este caso multinacional? Cmo se podran resolver? Asegrese de considerar
ambos esquemas y los valores de los datos actuales en la construccin de la respuesta.
Respuesta: Este es un caso en el que los esquemas de los dos bancos difieren, con lo que la fusin se hace
ms difcil. El atributo de identificacin para las personas en Espaa es el D.N.I. y en Portugal el segurosocial. Por lo tanto, el esquema fusionado no puede emplear ninguno de estos. En su lugar se introduce un
nuevo atributo id-persona que se usa por todos en el esquema fusionado. No es necesario ningn otro cambio
en el esquema. Los valores del atributo id-persona se pueden obtener de diferentes maneras. Una forma sera
prefijar un cdigo de pas a los antiguos valores de D.N.I. o seguro-social (por ejemplo E y P,
respectivamente), para obtener los correspondientes valores de id-persona. Otra manera sera asignar nuevos
nmeros, empezando en el 1 y hacia arriba, un nmero para cada valor de D.N.I. y seguro-social en las
antiguas bases de datos.
Una vez hecho esto, se puede proceder a la fusin de acuerdo a la respuesta de la pregunta anterior.
Si un conjunto de relaciones en particular, por ejemplo prestatario, implica slo a clientes espaoles, se puede
expresar en la base de datos fusionada especializando el conjunto de entidades cliente en e-cliente y p-cliente,
y haciendo que slo e-cliente participe en el prestatario fusionado. Anlogamente, empleados se puede
especializar si es necesario.

CAPITULO

MODELO RELACIONAL
Este captulo presenta el modelo relacional y tres lenguajes relacionales. El modelo relacional (Apartado 3.1)
se emplea intensamente a travs del texto, as como el lgebra relacional (Apartado 3.2). El captulo tambin
abarca el clculo relacional de tuplas (Apartado 3.6) y el clculo relacional de dominios (Apartado 3.7) (el
cual es la base del lenguaje QBE descrito en el Captulo 5). Las clases que enfaticen slo el SQL pueden
omitir los lenguajes de clculo relacional.
Nuestra notacin para el clculo relacional de tuplas hace que resulte fcil presentar el concepto de
una consulta segura. El concepto de seguridad para el clculo relacional de dominios, aunque idntico al
clculo de tuplas, es mucho ms engorroso desde el punto de vista de la notacin y requiere una presentacin
cuidadosa. Esta consideracin puede sugerir que se aporte un poco menos de nfasis en los clculos de
dominios, para las clases que no hayan planificado tratar QBE.
El Apartado 3.3 presenta operaciones de lgebra relacional extendidas, tales como reuniones
externas y agregaciones. La evolucin de los lenguajes de consultas, tales como SQL, indica claramente la
importancia de estas operaciones extendidas. Algunas de estas operaciones, como las reuniones externas,
pueden ser expresadas por medio del clculo relacional de tuplas / dominios, mientras las extensiones son
requeridas para otras operaciones, como es el caso de la agregacin. Hemos decidido no presentar tales
extensiones al clculo relacional y, en cambio, restringir nuestra atencin a las extensiones del lgebra.

Figura 3.38. Diagrama E-R

Ejercicios
3.1
Disese una base de datos relacional para la oficina de registro de una universidad. La oficina
conserva datos sobre cada curso, incluyendo el profesor, el nmero de estudiantes matriculados y la hora y el
lugar de las clases. Por cada pareja estudiante curso, se guarda una calificacin.
Respuesta: Los atributos subrayados indican la clave primaria.
estudiante (id-estudiante, nombre, programa)
curso (nmero-curso, ttulo, programa-estudios, crditos)
ofertas-cursos (nmero-curso, nmero-seccin, ao, semestre, hora, aula)
profesor (id-profesor, nombre, departamento, ttulo)
matrculas (id-estudiante, nmero-curso, nmero-seccin, semestre, ao, calificacin)
ensea (nmero-curso, nmero-seccin, semestre, ao, id-profesor)
requerimientos (curso-principal, requisitos-previos)
3.2
Descrbanse las diferencias de significado entre los trminos relacin y esquema de la relacin.
Ilstrese la respuesta haciendo referencia a la solucin propuesta para el Ejercicio 3.1.
Respuesta: Un esquema de la relacin es una definicin de tipos y una relacin es una instancia de ese
esquema. Por ejemplo, estudiante (ss#, nombre) es un esquema de la relacin y ss# nombre es una relacin
basada en ese esquema.
ss#

123-45-6789
456-78-9123

nombre
Tom Jones
Joe Brown

3.3

Disese una base de datos relacional correspondiente al diagrama E-R de la Figura 3.38.

Respuesta: El esquema de la base de datos relaciones se presenta a continuacin.


persona (id-conductor, nombre, direccin)
coche (matrcula, ao, modelo)
accidente (nmero-informe, lugar, fecha)
posee (id-conductor, matrcula)
participado (nmero-informe, id-conductor, matrcula, importe-daos)
empleado (nombre-persona, calle, ciudad)
trabaja (nombre-persona, nombre-compaa, sueldo)
compaa (nombre-compaa, ciudad)
jefe (nombre-persona, nombre-jefe)
Figura 3.39.
Base de datos relacional para los Ejercicios 3.5, 3.8 y 3.10.
3.4
En el Captulo 2 se mostr la manera de representar los conjuntos de relaciones de varios a varios, de
varios a uno, de uno a varios y de uno a uno. Explicar la manera en que las claves primarias ayudan a
representar estos conjuntos de relaciones en el modelo relacional.
Respuesta: Supngase que la clave primaria del esquema de la relacin R es {Ai1, Ai2 , ...,Ain} y que la clave
primaria del esquema de la relacin S es {Bi1, Bi2 , ...,Bim}. Entonces una relacin entre los dos conjuntos se
puede representar como una tupla (Ai1, Ai2 , ...,Ain, Bi1, Bi2 , ...,Bim). En una relacin de uno a uno, cada valor en
{Ai1, Ai2 , ...,Ain} aparecer en una tupla e igualmete para {Bi1, Bi2 , ...,Bim}. En una relacin de varios a uno (por
ejemplo de varios A a un B), cada valor en {Ai1, Ai2 , ...,Ain} aparecer una vez y cada valor en {Bi1, Bi2 , ...,Bin}
puede aparecer varias veces. En una relacin de varios a varios, los valores en ambos {Ai1, Ai2 , ...,Ain} y {Bi1,
Bi2 , ...,Bim}aparecern varias veces. Sin embargo, en todos los casos anteriores {Ai1, Ai2 , ...,Ain ,Bi1, Bi2 , ...,Bim}
es una clave primaria, por lo que ninguna tupla en (Aj1 , ...,Ajn Bk1 , ...,Bkm) aparecer ms de una vez.
3.5
Considrese la base de datos relacional de la Figura 3.39, donde las claves primarias estn
subrayadas.
Formlese una expresin del lgebra relacional, otra del clculo relacional de tuplas y una tercera del clculo
relacional de dominios, para cada una de las consultas siguientes:
a.
Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.
b.
Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco
Importante.
c.
Averiguar el nombre, la calle y ciudad de residencia, de todos los empleados que trabajan para el
Banco Importante y ganan mas de 10.000 anuales.
d.
Averiguar el nombre de todos los empleados de esta base de datos que viven en la misma ciudad que
la compaa para la que trabajan.
e.
Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle que
sus jefes.
f.
Averiguar el nombre de todos los empleados de esta base de datos que no trabajan para el Banco
Importante.
g.
Averiguar el nombre de todos los empleados que ganan ms que cualquier empleado del Banco
Pequeo.
h.
Supngase que las compaas pueden estar ubicadas en varias ciudades. Buscar todas las empresas
con sede en todas las ciudades en las que tiene sede el Banco Pequeo.

Respuesta:
a.
nombre-persona (snombre-compaa = Banco Importante (trabaja))
b.

nombre-persona (empleado |x|


(snombre-compaa = Banco Importante (trabaja)))

c.

nombre-persona, calle, ciudad


(s(nombre-compaa = Banco Importante sueldo > 2.000.000)
trabaja |x| empleado)
1

d.

nombre-persona (empleado |x| trabaja |x| compaa)

e.

nombre-persona ((empleado |x| jefe)


|x| (nombre-jefe = empleado2.nombre-persona empleado.calle = empleado2.calle
empleado.ciudad = empleado2.ciudad)(r empleado2 (empleado)))

f.
Las soluciones siguientes asumen que todas las personas trabajan para una compaa. Si se permite
que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan en trabaja, el
problema se complica. Ms adelante se dan soluciones para este caso ms realista.
nombre-persona (snombre-compaa Banco Importante (trabaja))
Si las personas no pueden trabajar para cualquier compaa:
nombre-persona (empleado) - nombre-persona
(s(nombre-compaa = Banco Importante) (trabaja))
g.
1

h.

nombre-persona (trabaja) - trabaja.nombre-persona (trabaja


|x| (trabaja.sueldo trabaja2.sueldo trabaja2.cpnmbre-compaa =Banco Pequeo)
r trabaja2 (trabaja)))
Nota: El Banco Pequeo se incluir en cada respuesta.
nombre-compaa (compaa
(ciudad (snombre-compaa = Banco Pequeo (compaa))))

3.6
Considrese la relacin de la Figura 3.21, que muestra el resultado de la consulta Avergese el
nombre de todos los clientes que tienen un prstamo en el banco. Escrbase de nuevo la consulta para incluir
no solamente el nombre, sino tambin la ciudad de residencia de cada cliente.
Obsrvese que ahora el cliente Sotoca ya no aparece en el resultado, aunque en realidad tiene un prstamo del
banco.
a.
Explquese por qu Sotoca no aparece en el resultado.
b.
Supngase que desea que Sotoca aparezca en el resultado. Cmo habra que modificar la base de
datos para conseguirlo?
c.
Nuevamente, supngase que desea que Sotoca aparezca en el resultado. Escrbase una consulta
empleando una reunin externa que cumpla esta condicin sin que haya que modificar la base de datos.
Respuesta: La nueva consulta es
nombre-cliente,ciudad-cliente,importe(prestatario |x| prstamo |x| cliente)
1

a.
Aunque Sotoca tenga un prstamo, en la relacin cliente no aparece ninguna direccin para Sotoca.
Dado que ninguna tupla de cliente se une con la tupla Sotoca de prestatario, Sotoca no puede aparecer en el
resultado.
b.
La mejor solucin es insertar la direccin de Sotoca en la relacin cliente. Si se desconoce la
direccin, se pueden emplear valores nulos. Si el sistema de base de datos no soporta nulos, se puede emplear
un valor especial (tal como desconocido) para la ciudad y la calle de Sotoca. El valor especial escogido no

debe ser un nombre que se pueda corresponder con el de una calle o ciudad real.
c.

nombre-cliente,ciudad-cliente,importe((prestatario |x| prstamo) ]x| cliente)


1

1 l

3.7
Las operaciones de reunin externa amplan la operacin reunin natural, de manera que las tuplas
de las relaciones participantes no se pierdan en el resultado de la reunin. Descrbase la manera en que la
operacin reunin zeta puede ampliarse para que las tuplas de la relacin de la izquierda, derecha, o ambas,
no se pierdan en el resultado de una reunin zeta.
Respuesta:
a.
La reunin zeta externa por la izquierda de r(R) y s(S) (r ]x|q s) se puede definir como
(r |x|q s) ((r - R(r |x|q s)) (nulo,nulo, . . ., nulo))
La tupla de nulos es de tamao igual al nmero de atributos en S.
b.
La reunin zeta externa por la derecha de r(R) y s(S) (r |x[q s) se puede definir como
(r |x|q s) ((nulo,nulo, . ., nulo) (s - s(r |x|q s)))
La tupla de nulos es de tamao igual al nmero de atributos en R.
c.
La reunin zeta externa completa de r(R) y s(S) (r ]x[q s) se puede definir como
(r |x|q s) ((nulo,nulo, . . ., nulo) (s - s(r |x|q s))) ((r - R(r |x|q s)) (nulo,nulo, . . ., nulo))
La primera tupla de nulos es de tamao igual al nmero de atributos en R y la segunda es de tamao igual al
nmero de atributos en S.
3.8
Considrese la base de datos relacional de la Figura 3.39. Se da una expresin del lgebra relacional
para cada peticin:
a.
Modificar la base de datos de forma que Santos viva en Tres Cantos.
b.
Dar a todos los empleados del Banco Importante un aumento de sueldo del 10%.
c.
Dar a todos los jefes de la base de datos un aumento de sueldo del 10%.
d.
Dar a todos los jefes de la base de datos un aumento de sueldo del 10%, a menos que su sueldo est
por encima de 100.000 anuales. En tal caso, darles slo un 3%.
e.
Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo.
Respuesta:
a.
empleado Pnombre-persona,calle,Tres Cantos
(snombre-persona =Santos(empleado))
(empleado - snombre-persona =Santos(empleado))
b.

trabaja Pnombre-persona,nombre-compaa, 1.1 * salario (


(s(nombre-compaa = Banco Importante) (trabaja))
(trabaja - snombre-compaa = Banco Importante (trabaja))

c.
La sintaxis de actualizacin permite referenciar slo a una relacin sencilla. Dado que esta
actualizacin requiere acceder a las dos relaciones a actualizar (trabaja) y jefe, se deben seguir varios pasos.
En primer lugar, identificar las tuplas de trabaja que se han se actualizar y almacenarlas en una relacin
temporal (t1) Despus, crear una relacin temporal (t2) que contenga las nuevas tuplas. Finalmente borrar las
tuplas en t1, desde trabaja, e insertar las tuplas t2.
t1 Ptrabaja.nombre-persona, nombre-compaa, salario
(strabaja.nombre-persona = nombre-jefe (trabaja jefe))
t2 Pnombre-persona,nombre-compaa, 1.1 * salario (t1)
trabaja(trabaja - t1) t2
d.
La misma situacin surge aqu. Como antes, t1, contiene las tuplas que se han de actualizar y t2
contiene estas tuplas en su forma actualizada.

t1 Ptrabaja.nombre-persona, nombre-compaa, salario


(strabaja.nombre-persona = nombre-jefe (trabaja jefe))
t2 Ptrabaja.nombre-persona, nombre-compaa, salario*1.03
(st1.salario * 1.1 > 100.000(t1))
t2 t2 (Ptrabaja.nombre-persona, nombre-compaa, salario*1.1
(st1.salario * 1.1 100.000(t1))
trabaja(trabaja - t1) t2
e.
trabaja trabaja - snombre-compaa = Banco Pequeo (trabaja)
3.9
Utilizando el ejemplo bancario, escrbanse consultas del lgebra relacional para averiguar las cuentas
por ms de dos clientes:
a.
Utilizando una funcin de agregacin.
b.
Sin utilizar funciones de agregacin.
Respuesta:
a.
t1 nmero-cuenta Gcount nombre-cliente (impositor)
nmero-cuenta (snmero-titulares>2 (rtitulares-cuenta (nmero-cuenta,nmero-titulares)(t1)))
b.

t1 (rd1(impositor) rd2(impositor) rd3(impositor))


t2 s(d1.nmero-cuenta = d2.nmero-cuenta = d3.nmero-cuenta)(t1)
d1.nmero-cuenta (s(d1.nombre-cliente d2.nombre-cliente
d2.nombre-cliente d3.nombre-cliente d3.nombre-cliente d1.nombre-cliente )(t2))

3.10
Considrese la base de datos relacional de la Figura 3.39. Se da una expresin del lgebra relacional
para cada una de las consultas siguientes:
a.
Averiguar la compaa con mayor nmero de empleados.
b.
Averiguar la compaa con nmina (suma de sueldos de sus empleados) ms reducida.
c.
Averiguar las compaas cuyos empleados ganan un sueldo ms alto, en media, que el sueldo medio
del Banco Importante.
Respuesta:
a.
t1 nombre-compaa G count-distinct nombre-persona (trabaja)
t2 max nmero-empleados(r fuerza-compaa (nombre-compaa,nmero-empleados)(t1))
nombre-compaa(r t3 (nombre-compaa,nmero-empleados)(t1) |x| r t4 (nmero-empleados)(t2))
b.

t1 nombre-compaa G sum sueldo (trabaja)


t2 min nmina (r nmina-compaa (nombre-compaa,nmina)(t1))
nombre-compaa(r t3 (nombre-compaa,nmina)(t1) |x| r t4 (nmina)(t2))

c.

t1 nombre-compaa G avg sueldo (trabaja)


t2 snombre-compaa = Banco Importante (t1)
t3.nombre-compaa((r t3(nombre-compaa,salario-medio)(t1))
x| t3.salario-medio > banco-importante.salario-medio (r banco-importante (nombre-compaa,salario-medio)(t2)))

3.11

Dense dos motivos por los que se puede decidir definir una vista.

Respuesta:
a.
Las condiciones de seguridad pueden requerir que la base de datos lgica no sea totalmente visible
para todos los usuarios.
b.
Puede que se desee crear un conjunto personalizado de relaciones que se adapte mejor que el modelo
lgico a la intuicin de un usuario concreto.

3.12
Ctense dos problemas importantes del procesamiento de la operacin actualizacin, expresadas en
trminos de vistas.
Respuesta: Las vistas presentan problemas significativos si se expresan con ellas actualizaciones.
La dificultad radica en que las modificaciones de la base de datos, expresadas en trminos de vistas, deben
traducirse en modificaciones de las relaciones reales en el modelo lgico de la base de datos.
a.
Dado que la vista puede no tener todos los atributos de las tablas subyacentes, la insercin de una
tupla en la vista insertar tuplas en las tablas subyacentes, tomando valores nulos los atributos no participan
de la vista. Esto puede no ser conveniente, especialmente si el atributo en cuestin es parte de la clave
primaria de la tabla.
b.
Si una vista es una reunin de varias tablas subyacentes y una insercin da como resultado tuplas con
nulos en las columnas de la reunin, no se lograr el efecto deseado de la insercin. En otras palabras, una
actualizacin para una vista puede no ser capaz de expresar, en absoluto, como actualiza para las relaciones de
base. Para un ejemplo explicativo, consultar el de la actualizacin de informacin-crdito, en el Apartado
3.5.2.
3.13

Sean los siguientes esquemas de relacin:


R = (A, B, C)
S = (D, E, F)
Sean las relaciones r(R) y s(S). Se da una expresin del clculo relacional de tuplas que sea equivalente a cada
una de las expresiones siguientes:
a.

PA(R)

b.
c.

sB = 17 (r)
rxs

d.

PA, F (sC = D(r x s))

Respuesta:
a.
{t | $ q r (q[A] = t[A])}
b.

{t | t r t[B] = 17}

c.

{t | $ p r $ q s (t[A] = p[A] t[B] = p[B] t[C] = p[C] t[D] = q[D]


t[E] = q[E] t[F] = q[F])}

d.

{t | $ p r $ q s (t[A] = p[A] t[F] = q[F] p[C] = q[D]}

3.14
Sea R = (A, B, C) y sean r1 y r2 relaciones del esquema R. Se da una expresin del clculo relacional
de dominios que sea equivalente a las expresiones siguientes:
a.
PA(r1)
b.
sB = 17 (r1)
c.
. r1 r2
d.
. r1 r2
e.
. r1 - r2
f.
PA, B(r1) |x| PB, C(r2)
Respuesta:
a.
{< t > | $ p, q (< t, p, q > r1)}
b.

{< a, b, c > | < a, b, c > r1 b = 17}

c.

{< a, b, c > | < a, b, c > r1 < a, b, c > r2}

d.

{< a, b, c > | < a, b, c > r1 < a, b, c > r2}

e.

{< a, b, c > | < a, b, c > r1 < a, b, c > r2}

f.

{< a, b, c > | $ p, q (< a, b, p > r1 < q, b, c > r2)}

3.15

Reptase el Ejercicio 3.5 usando el clculo relacional de tuplas y el de dominios.

Respuesta:
a.
Averiguar los nombres de todos los empleados que trabajan para el Banco Importante:
i. {t | $ s trabaja (t[nombre-persona] = s[nombre-persona]
s[nombre-compaa] = Banco Importante)}
ii. { < p > | $ c, s (< p, c, s > trabaja c = Banco Importante)}
b.
Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco
Importante:
i.{t |$ r empleado $ s trabaja (t[nombre-persona] = r[nombre-persona]
t[ciudad] = r[ciudad] r[nombre-persona] = s[nombre-persona]
s[nombre-compaa] = Banco Importante)}
ii. {< p,c > | $ co, sa, st (< p,co,sa > trabaja
< p,st,c > empleado co = Banco Importante)}
c.
Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan
para el Banco Importante y ganan ms de 10.000 anuales.
i. {t | t empleado ($ s trabaja ( s[nombre-persona] = t[nombre-persona]
s[nombre-compaa] = Banco Importante s[sueldo] >
10.000))}
ii. {< p, s, c > | < p, s, c > empleado $ co, sa (< p,co,sa > trabaja
co = Banco Importante sa > 10.000)}
d.
Averiguar el nombre de todos los empleados de esta base de datos que viven en la misma ciudad que
la compaa para la que trabajan:
i. {t | $ e empleado $ w trabaja $ c compaa
(t[nombre-persona] = e[nombre-persona]
e[nombre-persona] = w[nombre-persona]
w[nombre-compaa] = c[nombre-compaa] e[ciudad] = c[ciudad])}
ii. {< p > | $ st, c, co, sa (< p,st,c > empleado
< p,co,sa > trabaja < co,c > compaa)}
e.
Averiguar el nombre de todos los empleados que viven en la misma ciudad y en la misma calle que
sus jefes:
i. { t | $ l empleado $ m jefe $ r empleado
(l[nombre-persona] = m[nombre-persona] m[nombre-jefe] =
r[nombre-persona]
l[calle] = r[calle] l[ciudad] = r[ciudad] t[nombre-persona] =
l[nombre-persona])}
ii. {< t > | $ s, c, m (< t, s, c > empleado < t,m > jefe <
m, s, c > empleado)}
f.

Averiguar el nombre de todos los empleados de esta base de datos que no trabajan para el Banco

Importante:
Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no
aparezcan en trabaja, el problema se complica. Ms adelante se dan soluciones para este caso ms realista.
i. { t | $ w trabajas ( w[nombre-compaa] Banco Importante
t[nombre-persona] = w[nombre-persona])}
ii. { < p > | $ c, s (< p, c, s > trabaja c Banco Importante)}
Si las personas no pueden trabajar para cualquier compaa:
i. { t | $ e empleado ( t[nombre-persona] = e[nombre-persona] $ w trabaja
(w[nombre-compaa] = Banco Importante
w[nombre-persona] = t[nombre-persona]))}
ii. { < p > | $ s, c (< p, s, c > empleado) $ x, y
(y = Banco Importante < p, y, x > trabaja)}
g.
Averiguar el nombre de todos los empleados que ganan ms que cualquier empleado del Banco
Pequeo:
i. { t | $ w trabaja ( t[nombre-persona] = w[nombre-persona] " s trabaja
(s[nombre-compaa] = Banco Pequeo w[sueldo] >
s[sueldo]))}
ii. {< p > | $ c, s (< p, c, s > trabaja " p2, c2, s2
(< p2, c2, s2 > trabaja c2 Banco Pequeo s >
s2))}
h.
Supngase que las compaas pueden estar ubicadas en varias ciudades. Buscar todas las empresas
con sede en todas las ciudades en las que tiene sede el Banco Pequeo.
Nota: El Banco Pequeo se incluir en cada respuesta.
i. {t | " s compaa (s[nombre-compaa] = Banco Pequeo
$ r compaa (t[nombre-compaa] = r[nombre-compaa] r[ciudad] =
s[ciudad]))}
ii. {< co > | " co2, ci2 (< co2, ci2 > compaa
co2 Banco Pequeo < co,ci2 > compaa)}
3.16
Sean R = (A,B) y S = (A,C), y sean las relaciones r(R) y s(S). Escribir expresiones del lgebra
relacional equivalentes a las siguientes expresiones del clculo relacional de dominios:
a.
{<a> | $ b (<a, b> r b = 17)}
b.
{<a, b, c> | <a, b> r <a, c> s}
c.
{<a> | $ b (<a, b> r) " c ($ d (<d, c> s) <a, c> s)}
d.
{<a> | $ c (<a, c> s) $ b1, b2 (<a, b1> r < c, b2> r b1 > b2))}
Respuesta:
a.
A (sB = 17 (r))
b.

r |x| s

c.

A(r) (r sB(C(s)))

d.

r.A ((r |x| s) |x| c=r2.A? r.B >r2.B (rr2(r)))


1

Es interesante notar que (d) es una abstraccin de la clebre consulta Averiguar los empleados que ganan
ms que su propio jefe. Para observar esto, sea R = (emp, sal), S = (emp, jef).
3.17
Sean R = (A, B) y S = (A ,C), y sean las relaciones r(R) y s(S). Utilizando la constante especial nulo,
escrbanse expresiones del clculo relacional de tuplas equivalentes a cada una de las siguientes:
a.
r |x[ s

b.
c.

r ]x[ s
r ]x| s

Respuesta:
a.
{t | $r R $s S (r[A] = s[A] t[A] = r[A] t[B] = r[B] t[C] = s[C])
$s S($r R(r[A] = s[A]) t[A] = s[A] t[C] = s[C] t[B] = nulo)}
b.

{t | $r R $s S (r[A] = s[A] t[A] = r[A] t[B] = r[B] t[C] = s[C])


$r R($s S(r[A] = s[A]) t[A] = r[A] t[B] = r[B] t[C] = nulo)
$s S($r R(r[A] = s[A]) t[A] = s[A] t[C] = s[C] t[B] = nulo)}

c.

{t | $r R $s S (r[A] = s[A] t[A] = r[A] t[B] = r[B] t[C] = s[C])


$r R($s S(r[A] = s[A]) t[A] = r[A] t[B] = r[B] t[C] = nulo)}

3.18

Dense dos motivos por los que se puedan introducir valores nulos en la base de datos.

Respuesta: Se pueden introducir nulos en la base de datos porque el valor actual es desconocido o no existe.
Por ejemplo, un empleado cuya direccin ha cambiado y cuya nueva direccin todava no se conoce, debera
conservarse con una direccin nula. Si las tuplas de empleados tienen un atributo compuesto dependencias y
un empleado en concreto no tiene dependencias, entonces el atributo de ese empleado deberan tener un valor
nulo.
3.19
Algunos sistemas permiten los valores nulos marcados. Un valor nulo marcado ^i es igual a s
mismo, pero si i j, entonces ^i ^j. Una aplicacin de valores nulos marcados debe permitir ciertas
actualizaciones mediante el uso de vistas. Considrese la vista informacin-prstamo (Apartado 3.5).
Mustrese la manera en que se puedan utilizar valores nulos marcados para permitir la insercin de la tupla
(Gonzlez, 1900) mediante informacin-prstamo.
Respuesta:
Para insertar la tupla (Gonzlez, 1900) en la vista informacin-prstamo, se puede hacer lo siguiente:
prestatario (Gonzlez,^k) prestatario
prstamo (^k ^, 1900) prstamo
de tal manera que ^k es un nuevo nulo marcado, que todava no existe en la base de datos.

CAPITULO

SQL
El captulo 4 abarca el lenguaje relacional SQL. la discusin est basada en el SQL-92, dado que el SQL ms
reciente:1999 an no est ampliamente soportado. Las aplicaciones aportadas por SQL:1999 estn cubiertas
en los Captulos 9 y 22. Las restricciones de integridad y las caractersticas de autorizacin del SQL-92 se
describen en el Captulo 6. Al ser SQL un lenguaje muy amplio, muchas de sus caractersticas no se abarcan
aqu, al no ser apropiadas para un curso de introduccin de bases de datos. Libros estndar sobre SQL, tales
como Date y Darwen [1993] y Melton y Simon [1993], o manuales de sistemas de bases de datos, se pueden
emplear como suplemento por aquellos estudiantes que quieran ahondar ms profundamente en la
problemtica del SQL.
Aunque es posible cubrir este captulo haciendo slo los ejercicios escritos, se recomienda
enormemente el acceso a un sistema de bases de datos actual, que soporte SQL. El modelo de ejercicios
empleado tiene por objeto crear una base de datos moderadamente extensa y dar a los estudiantes una lista de
consultas en Ingls, para escribirlas y ejecutarlas mediante SQL. Publicamos las respuestas apropiadas (esto
es, el resultado de las relaciones que deberan tener lugar, Este enfoque permite que los estudiantes
comprueben sus propias respuestas para corregirlas inmediatamente, sin tener que esperar a su evaluacin y,
por lo tanto, hace que el proceso de aprendizaje sea ms rpido. Unos pocos de tales ejemplos estn
disponibles en la pgina Web de este libro.
Los ejercicios correspondientes al diseo de la base de datos se han pospuesto mejor hasta despus
del Captulo7.
Dando por hecho que los protocolos ODBC y JDBC se han convertido rpidamente en el medio principal de
acceso a bases de datos, se ha extendido significativamente la cobertura de estos dos protocolos, incluyendo
algunos ejemplos. Sin embargo, nuestro alcance es slo una introduccin y omite muchos detalles que son
tiles en la prctica. Los manuales / tutoras online o los libros de texto que tratan estos protocolos, se
deberan emplear como suplementos para ayudar a que los estudiantes hagan un uso completo de estos
protocolos.
Cambios a la tercera edicin:
La cobertura del SQL se ha extendido para incluir la clusula with, ODBC, JDBC y esquemas, catlogos y
entornos (Apartado 4.14).

Ejercicios
4.1
Considrese la base de datos de seguros de la Figura 4.12, donde las claves primarias estn
subrayadas.
Formlense las siguientes consultas SQL para esta base de datos relacional.
a.
Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en
1989.
b.
Buscar el nmero de accidentes en los cuales se ha visto involucrado un coche perteneciente a
Santos.
c.
Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos
necesarios.
d.
Borrar el Mazda de Santos.
e.
Actualizar el importe de daos del coche de matrcula "2002BCD" en el accidente con nmero de
informe "AR2197" a 3.000 .
Respuesta: Nota: La relacin participado relaciona conductores, coches y accidentes.
a.
Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en
1989.
Nota: esto no es lo mismo que el nmero total de accidentes en 1989. Las personas con varios accidentes slo
se deben contar una vez.
select count (distinct nombre)
from accidente, participado, persona
where accidente.nmero-informe = participado.nmero-informe
and participado.id-conductor = persona.id-conductor
and fecha between date 1989-00-00 and date 1989-12-31
b.
Buscar el nmero de accidentes en los que se ha visto involucrado un coche perteneciente a
Santos.
select count (distinct *)
from accidente
where exists
(select *
from participado, persona
where participado.id-conductor = persona.id-conductor
and persona.nombre = Santos
and accidente.nmero-informe = participado.nmero-informe)
c.
Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos
necesarios.
Se supone que el conductor era Santos, aunque podra haber sido cualquier otro. Tambin se
supone que Santos tiene un Toyota. En primer lugar se debe encontrar la matrcula del coche en cuestin.
Entonces, las relaciones participado y accidente se deben actualizar con el fin de registrar el accidente y
asociarlo al coche dado. Se asumen los valores Berkeley para lugar, 2001-09-01 para fecha, 4007 para
nmero-informe y 3.000 para el importe de los daos.
persona (id-conductor, nombre, direccin)
coche (matrcula, modelo, ao)
accidente (nmero-informe, fecha, lugar)
posee (id-conductor, matrcula)
participado (id-conductor, coche, nmero-informe, importe-daos)
Figura 4.12.

Base de datos de seguros.

insert into accidente


values (4007, 2001-09-01, Berkeley)
insert into participado
select o.id-conductor, c.matrcula, 4007, 3.000
from persona p, posee o, coche c
where p.nombre = Santos and p.id-conductor = o.id-conductor and
o.matrcula = c.matrcula and c.modelo = Toyota
d.
Borrar el Mazda de Santos.
Dado que modelo no es una clave de la relacin coche, se puede asumir que slo uno de los coches de Santos
es un Mazda, o borrar todos los Mazda de Santos (la consulta es la misma). De nuevo se supone que nombre
es una clave de persona.
delete coche
where modelo = Mazda and matrcula in
(select matrcula
from persona p, posee o
where p.nombre = Santos and p.id-conductor = o.id-conductor)
Nota: Los registros accidente y participado asociados con el Mazda todava existen.
e.
Actualizar el importe de daos del coche de matrcula "2002BCD" en el accidente con nmero de
informe "AR2197" a 3.000 .
update participado
set importe-daos = 3.000
where nmero-informe = AR2197 and id-conductor in
(select id-conductor
from posee
where matrcula = 2002BCD)
4.2
Considrese la base de datos de empleados de la Figura 4.13, donde las claves primarias estn
subrayadas.
Proporcinese una expresin SQL para cada una de las consultas siguientes:
a.
Buscar los nombres de todos los empleados que trabajan para el Banco Importante.
b.
Buscar los nombres y ciudades de residencia de todos los empleados que trabajan en el Banco
Importante.
c.
Buscar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan en el
Banco Importante y que ganan ms de 10.000 .
d.
Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan.
e.
Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.
f.
Buscar todos los empleados que no trabajan en el Banco Importante.
g.
Buscar todos los empleados que ganan ms que cualquier empleado del Banco Pequeo.
h.
Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con
sede en todas las ciudades en las que tiene sede el Banco Pequeo.
i.
Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa.
j.
Buscar la empresa que tiene el mayor nmero de empleados.
k.
Buscar la empresa que tiene el menor sueldo medio.
l.
Averiguar las compaas cuyos empleados ganan un sueldo ms alto, en media, que el sueldo medio
del Banco Importante.

Respuesta:
a.
Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.
select nombre-empleado
from trabaja
where nombre-compaa = Banco Importante
b.
Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco
Importante.
select e.nombre-empleado, ciudad
from empleado e, trabaja w
where w.nombre-compaa = Banco Importante and
w.nombre-empleado = e.nombre-empleado
c.
Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan
para el Banco Importante y ganan ms de 10.000 anuales.
Si las personas pueden trabajar para varias compaas la solucin siguiente slo listar aquellas que ganen
ms de 10.000 anuales slo del Banco importante.
select *
from empleado
where nombre-empleado in
(select nombre-empleado
from trabaja
where nombre-compaa = Banco Importante and sueldo 10.000)
Al igual que en la solucin de la consulta anterior, tambin se puede emplear una reunin para resolver esto.
d.
Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan.
select e.nombre-empleado
from empleado e, trabaja w, compaa c
where e.nombre-empleado = w.nombre-empleado and e.ciudad = c.ciudad and
w.nombre-compaa = c.nombre-compaa
e.

Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.
select P.nombre-empleado
from empleado P, empleado R, jefe M
where P.nombre-empleado = M.nombre-empleado and
M.nombre-jefe = R.nombre-empleado and
P.calle = R.calle and P.ciudad = R.ciudad

f.
Buscar todos los empleados que no trabajan en el Banco Importante.
Las soluciones siguientes asumen que todas las personas trabajan slo para una compaa.
select nombre-empleado
from trabaja
where nombre-compaa Banco Importante
Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan en
trabaja, o si las personas pueden trabajar para ms de una compaa, la solucin es un poco ms complicada.
select nombre-empleado
from empleado
where nombre-empleado not in
(select nombre-empleado
from trabaja
where nombre-compaa = Banco Importante)
g.
Buscar todos los empleados que ganan ms que cualquier empleado del Banco Pequeo.
Las soluciones siguientes asumen que todas las personas trabajan slo para una compaa.

select nombre-empleado
from trabaja
where sueldo > all
(select sueldo
from trabaja
where nombre-compaa = Banco Pequeo)
Si las personas pueden trabajar para varias compaas y se desea considerar el sueldo total de cada persona, el
problema es ms complejo. Aunque puede resolverse empleando una subconsulta anidada, seguidamente se
presenta la manera de hacerlo con la clusula with.
with sueldo-total-empleado as
(select nombre-empleado, sum(sueldo) as sueldo-total
from trabaja
group by nombre-empleado
)
select nombre-empleado
from sueldo-total-empleado
where sueldo-total > all
(select sueldo-total
from sueldo-total-empleado, trabaja
where trabaja.mombre-compaa = Banco Pequeo and
sueldo-total-empleado.nombre-empleado = trabaja.nombre-empleado
)
h.
Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con
sede en todas las ciudades en las que tiene sede el Banco Pequeo.
La solucin ms simple emplea la comparacin contains que fue incluida en Sistem R original, lenguaje
Sequel, pero que no est presente en las posteriores versiones SQL.
select T.nombre-compaa
from compaa T
where (select R.ciudad
from compaa R
where R.nombre-compaa = T.nombre-compaa)
contains
(select S.ciudad
from compaa S
where S.nombre-compaa = Banco Pequeo)
Lo que sigue es una solucin en SQL estndar.
select S.nombre-compaa
from compaa S
where not exists ((select ciudad
from compaa
where nombre-compaa = Banco Pequeo)
except
(select ciudad
from compaa T
where S.nombre-compaa = T.nombre-compaa))

i.
Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa.
La solucin siguiente supone que todas las personas trabajan, a lo sumo, para una compaa.
empleado (nombre-empleado, calle, ciudad)
trabaja (nombre-empleado, nombre-compaa, sueldo)
compaa (nombre-compaa, ciudad)
jefe (nombre-empleado, nombre-jefe)
Figura 4.13.

Base de datos de empleados.

select nombre-empleado
from trabaja T
where sueldo > (select avg (sueldo)
from trabaja S
where T.nombre-compaa = S.nombre-compaa)
j.

Buscar la empresa que tiene el mayor nmero de empleados.


select nombre-compaa
from trabaja
group by nombre-compaa
having count (distinct nombre-empleado) >= all
(select count (distinct nombre-empleado)
from trabaja
group by nombre-compaa)

k.

Buscar la empresa que tiene el menor sueldo medio.


select nombre-compaa
from trabaja
group by nombre-compaa
having sum (sueldo) <= all (select sum (sueldo)
from trabaja
group by nombre-compaa)

l.
Encontrar las compaas cuyos empleados ganan un salario mayor, en promedio, que el salario
medio del Banco Importante.
select nombre-compaa
from trabaja
group by nombre-compaa
having avg (sueldo) > (select avg (sueldo)
from trabaja
where nombre-compaa = Banco Importante)

4.3
Considrese la base de datos relacional de la Figura 4.13. Formlese una expresin SQL para cada
una de las consultas siguientes.
a.
Modificar la base de datos de forma que Santos viva en vila
b.
Incrementar en un 10% el sueldo de todos los empleados del Banco Importante.
c.
Incrementar en un 10% el sueldo de todos los jefes del Banco Importante.
d.
Incrementar en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldo
pase a ser mayor que 100.000 ,en cuyo caso, se incrementar su sueldo slo en un 3%.
e.
Borrar todas las tuplas de la relacin trabaja correspondientes a los empleados del Banco Pequeo.
Respuesta:
La solucin para la parte a supone que cada persona slo tiene una tupla en la relacin
empleado. Las soluciones para las partes c y d suponen que cada persona trabaja, cmo mximo, para una

compaa.
a.
Modificar la base de datos de forma que Santos viva en Tres Cantos.
update empleado
set ciudad = Tres Cantos
where nombre-persona = Santos
b.

Incrementar en un 10% el sueldo de todos los empleados del Banco Importante.


update trabaja
set sueldo = sueldo * 1.1
where nombre-compaa = Banco Importante

c.

Incrementar en un 10% el sueldo de todos los jefes del Banco Importante.


update trabaja
set sueldo = sueldo * 1.1
where nombre-empleado in (select nombre-jefe
from jefe)
and nombre-compaa = Banco Importante

d.
Incrementar en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldo
pase a ser mayor que 100.000 , en tal caso, incrementarlo slo en un 3%.
update trabaja T
set T.sueldo = T.sueldo * 1.03
where T.nombre-empleado in (select nombre-jefe
from jefe)
and T.sueldo * 1.1 > 100.000
and T.nombre-compaa = Banco Importante
update trabaja T
set T.sueldo = T.sueldo * 1.1
where T.nombre-empleado in (select nombre-jefe
from jefe)
and T.sueldo * 1.1 <= 100.000
and T.nombre-compaa = Banco Importante
SQL-92 aporta una operacin case (consultar el Ejercicio 4.11), usando la cul se presenta una solucin ms
concisa:
update trabaja T
set T.sueldo = T.sueldo
(case
when (T.sueldo . 1.1 > 100.000) then 1.03
else 1.1
)
where T.nombre-empleado in (select nombre-jefe
from jefe) and
T.nombre-compaa = Banco Importante
e.

Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo.
delete trabaja
where nombre-compaa = Banco Pequeo

4.4

Sean los siguientes esquemas de relaciones:


R = (A, B, C)
S = (D, E, F)

Adems, considrense las relaciones r(R) y s(S). Obtngase la expresin SQL equivalente a las consultas
siguientes:
a. PA(r)
b. s B = 17 (r)
c. r x s
d. PA,F (s C = D (r x s))
Respuesta:
a.
A(r)

b.

c.

sB = 17 (r)

select distinct A
from r
select *
from r
where B = 17

rs
select distinct *
from r, s

d.

A,F (sC =D(r s))

select distinct A, F
from r, s
where C = D

4.5
Sea R = (A, B, C) y sean r1 y r2 relaciones sobre el esquema R. Proporcinese una expresin SQL
equivalente a cada una de las siguientes consultas:
a. r1 U r2
b. r1 r2
c. r1 - r2
d. PAB (r1) |x| PBC (r2)
Respuesta:
a.
r1 r2

(select *
from r1)
union
(select *
from r2)

b.
r1 r2
Se puede escribir esto empleando la operacin intersect, que es el enfoque preferido pero, por variar, se
presenta una solucin empleando una subconsulta anidada.
select *
from r1
where (A, B, C) in (select *
from r2)

c.

r1 - r2
select . from r1
where (A, B, C) not in (select
. from r2)

Esto tambin se puede resolver empleando la clusula except.


d.

AB(r1) |x| BC(r2)

select r1.A, r2.B, r3.C


from r1, r2
where r1.B = r2.B

4.6
Sean R = (A, B) y S = (A ,C) y sean las relaciones r(R) y s(S). Formlese una expresin SQL
equivalente a cada una de las consultas siguientes.
a. {<a> | $ b (<a, b> r b = 17)}
b. {<a, b, c> | <a, b> r <a, c> s}
c. {<a> | $ c (<a, c> s $ b1 , b2 (<a, b1> r <c, b2> r b1 >
b2 ))}
Respuesta:
a.
{<a> | $ b (<a, b> r b = 17)}

b.

c.
b2))}

select distinct A
from r
where B = 17
{<a, b, c> | <a, b> r <a, c> s}
select distinct r.A, r.B, s.C
from r, s
where r.A = s.A
{<a> | $ c (<a, c> s $ b1 , b2 (<a, b1> r <c, b2> r b1 >
select distinct s.A
from s, r e, r m
where s.A = e.A and s.C = m.A and e.B > m.B

4.7

Demustrese que en SQL <> all es equivalente a not in.

Respuesta: Sea S el conjunto que denota el resultado de una subconsulta SQL. Se compara (x <> all S) con
(x not in S). Si un valor concreto x1 cumple (x1 <> all S) entonces para todos los elementos y de S x1 y. As,
x1 no es un miembro de S y debe cumplir (x1 not in S). Anlogamente, supngase que hay un determinado
valor x2 que cumple (x2 not in S). No puede ser igual a ningn elemento w que pertenezca a S y, por tanto, se
cumplir (x2 <> all S). Por lo tanto las dos expresiones son equivalentes.
4.8
Considrese la base de datos relacional de la Figura 4.13. Utilizando SQL, defnase una vista que
contenga nombre-jefe y el sueldo medio de todos los empleados que trabajan para ese jefe. Explicar por qu
el sistema de base de datos no debera permitir que las actualizaciones se expresaran en trminos de esta vista.

Respuesta:
create view salinfo as
select nombre-jefe, avg(sueldo)
from jefe m, trabaja w
where m.nombre-empleado = w.nombre-empleado
group by nombre-jefe
No se debera permitir actualizar en esta vista, porque no hay manera de determinar como cambiar los datos
subyacentes. Por ejemplo, supngase que el requerimiento es cambiar el sueldo medio de los empleados que
trabajan para Santos a 200. Se debera modificar el sueldo, de cualquiera que trabajara para Santos, a
200? O debera ,el primer (o ms, si es necesario) empleado encontrado que trabaja para Santos, tener su
salario ajustado para que la media sea de 200? Ninguno de estos enfoques tiene realmente sentido.
4.9

Considrese la consulta SQL


select p.a1
from p, r1, r2
where p.a1 = r1.a1 or p.a1 = r2.a1

Bajo qu condiciones la consulta anterior devuelve los valores de p.a1 que estn tanto en r1 como en r2 ?
Examnense cuidadosamente los casos en que r1 o r2 pueden estar vacos.
Respuesta: La consulta selecciona aquellos valores de p.a1 que son iguales a algunos valores de r1.a1 o r2.a1
si y slo si ambos, r1 y r2, no estn vacos. Si estn vacos uno o ambos, r1 y r2 , el producto cartesiano de p, r1
y r2 est vaco, por lo que el resultado de la consulta tambin lo es. Naturalmente, si el propio p est vaco, el
resultado es el esperado, es decir, vaco.
4.10
Escrbase una consulta SQL, sin emplear la clusula with, para encontrar todas las sucursales donde
la cantidad total de depsitos sea menor que la cantidad total media depositada en todas las sucursales usando:
a.
Una consulta anidada en la clusula from.
b.
Una consulta anidada en una clusula having.
Respuesta:
Se obtienen los nombres de las sucursales adems de la cantidad total de depsitos de la
sucursal.
a.
Empleando una consulta anidada en la clusula from.
select nombre-sucursal, saldo-total
from (select nombre-sucursal, sum (saldo)
from cuenta
group by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-total)
where saldo-total
( select avg (saldo-total)
from (select nombre-sucursal, sum (saldo)
from cuenta
group by nombre-sucursal) as total-sucursal (nombre-sucursal, saldototal)
)

b.

Empleando una consulta anidada en una clusula having.


select nombre-sucursal, sum (saldo)
from cuenta
group by nombre-sucursal
having sum (saldo)
( select avg (saldo-total)
from (select nombre-sucursal, sum (saldo)
from cuenta
group by nombre-sucursal) as total-sucursal (nombre-sucursal, saldo-

total)
)
4.11
Supngase que se tiene una relacin notas(id-estudiante, puntuacin) y que se quiere clasificar a los
estudiantes en funcin de la puntuacin del modo siguiente: SS: si la puntuacin es menor que 5 AP: si la
puntuacin es mayor o igual que 5 y menor que 7, NT: si la puntuacin es mayor o igual que 7 y menor que
8,5 SB: si la puntuacin es mayor o igual que 8,5. Escrbanse consultas para hacer lo siguiente:
a.
Mostrar la clasificacin de cada estudiante, en trminos de la relacin notas.
b.
Encontrar el nmero de estudiantes por clasificacin.
Respuesta:
Se emplea la operacin case aportada por SQL-92:
a.
Para mostrar la clasificacin de cada estudiante:
select id-estudiante,
(case
when puntuacin < 5 then SS,
when (puntuacin 5 and puntuacin < 7) then AP,
when (puntuacin 7 and puntuacin < 8,5) then NT,
else SB
end) as clasificacin
from notas
b.
Para encontrar el nmero de estudiantes por clasificacin se usa la siguiente consulta, donde
clasificacin es el resultado de la consulta dada como solucin de la parte a.
select clasificacin, count(id-estudiante)
from clasificacin
group by clasificacin
4.12
SQL-92 proporciona una operacin n-aria denominada coalesce que se define como sigue:
coalesce(A1,A2, . . . , An) devuelve el primer Ai no nulo en la lista A1,A2, . . .,An, y devuelve nulo si todos los
A1,A2, . . .,An son nulos. Mustrese cmo expresar la operacin coalesce usando la operacin case.
Respuesta:
case
when A1 is not nulo then A1
when A2 is not nulo then A2
...
when An is not nulo then An
else nulo
end

4.13
Sean a y b relaciones con los esquemas A(nombre, direccin, puesto) y B(nombre, direccin,
sueldo), respectivamente. Indquese como expresar a natural full outer join b, utilizando la operacin full
outer join con una condicin on y la operacin coalesce. Comprubese que la relacin resultado no contiene
dos copias de los atributos nombre y direccin y que la solucin es vlida, incluso si dichos atributos de
alguna tupla en a o b toman valor nulo para los atributos nombre o direccin.
Respuesta:
select coalesce(a.nombre, b.nombre) as nombre,
coalesce(a.direccin, b.direccin) as direccin,
a.puesto,
b.sueldo
from a full outer join b on a.nombre = b.nombre and
a.direccin = b.direccin
4.14
Dada una definicin de esquema SQL para la base de datos de empleados de la Figura 4.13, eljase
un dominio apropiado para cada atributo y una clave primaria para cada esquema de relacin.
Respuesta:
create domain nombres-compaa char(20)
create domain nombres-ciudad char(30)
create domain nombres-persona char(20)
create table empleado
(nombre-empleado nombres-persona,
calle char(30),
ciudad nombres-ciudad,
primary key (nombre-empleado))
create table trabaja
(nombre-empleado nombres-persona,
nombre-compaa nombres-compaa,
sueldo numeric(8, 2),
primary key (nombre-empleado))
create table compaa
(nombre-compaa nombres-compaa,
ciudad nombres-ciudad,
primary key (nombre-compaa))
create table jefe
(nombre-empleado nombres-persona,
nombre-jefe nombres-persona,
primary key (nombre-empleado))
4.15
a.
b.

Escrbanse condiciones check para el esquema del ejercicio anterior para asegurar que:
Cada empleado trabaja para una empresa con sede en la ciudad de residencia del empleado.
Ningn empleado gana un sueldo mayor que el de su jefe.

Respuesta:
a.
condicin check para la tabla trabaja:
check((nombre-empleado, nombre-compaa) in
(select e.nombre-empleado, c.nombre-compaa
from empleado e, compaa c
where e.ciudad = c.ciudad
)
)
b.

condicin check para la tabla trabaja:


check(
sueldo < all
(select sueldo-jefe
from (select nombre-jefe, jefe.nombre-empleado as nombre-emp,
sueldo as sueldo-jefe
from trabaja, jefe
where trabaja.nombre-empleado = jefe.nombre-jefe)
where nombre-empleado = nombre-emp
)
)

La solucin es ligeramente complicada por el hecho de que dentro del mbito de la expresin select, la
relacin externa trabaja, dentro de la cul se realiza la insercin, es inaccesible. De ah, el cambio de nombre
del atributo nombre-empleado a nombre-emp. Bajo estas circunstancias es ms natural emplear declaraciones,
las cuales se introducen en el Captulo 6.
4.16
Descrbanse las circunstancias en que se debera utilizar SQL incorporado, en lugar de SQL o de un
lenguaje de programacin de propsito general.
Respuesta: Escribir consultas en SQL es generalmente ms fcil que codificar las mismas consultas en un
lenguaje de programacin de propsito general. No obstante, no todos los tipos de consultas se pueden
escribir en SQL. Adems, acciones no declarativas tales como la impresin de un informe, interactuando con
un usuario o enviando los resultados de una consulta a un interface de usuario grfico, no puede hacerse desde
dentro de SQL. Bajo circunstancias en las que se desea el mejor de ambos mundos, se puede elegir SQL
incorporado o SQL dinmico, en vez de emplear slo SQL o un lenguaje de programacin de propsito
general.
El SQL incorporado tiene la ventaja de que los programas son menos complicados, dado que evita el
agrupamiento de las llamadas de las funciones ODBC o JDBC, pero requiere un procesador especial.

CAPITULO

OTROS LENGUAJES RELACIONALES


En este captulo se estudian dos lenguajes relacionales adicionales, QBE y Datalog. QBE, basado en el clculo
relacional de dominios, constituye la base para los lenguajes de consultas, soportado por un gran nmero de
sistemas de bases de datos y diseado para ordenadores personales, tales como Microsoft Access, FoxPro, etc.
Desafortunadamente no hay ningn estndar para QBE; nuestro alcance est basado en la descripcin original
del QBE. La descripcin tendr que ser completada mediante el material de las guas de usuario de los
sistemas de bases de datos especficos que estn siendo empleados. Uno de los puntos a tener en cuenta es la
semntica precisa de las operaciones de agregacin, la cual es particularmente no estndar.
El lenguaje Datalog tiene varias similitudes con Prolog, que algunos estudiantes pueden haber
estudiado en otros cursos. Datalog se diferencia de Prolog en que su semntica es puramente declarativa, en
oposicin a la semntica operacional de Prolog. Es importante enfatizar la diferencias, dado que la semntica
declarativa es capaz de utilizar estrategias de evaluacin de consultas eficientes. Hay varias implantaciones de
Datalog disponibles en el dominio publico, tales como el sistema Coral de la Universidad de Wisconsin
Madison, y XSB del State University de New York, Stony Brook, los cuales se pueden emplear para ejercicios
de programacin. El sistema Coral tambin soporta objetos complejos tales como relaciones anidadas
(tratadas posteriormente en el Captulo 9). Consultar la seccin Herramientas, al final del Captulo 5, para las
URLs de estos sistemas.
Cambios a la tercera edicin:
La sintaxis y semntica, de agregaciones y actualizaciones QBE, se han modificado para simplificar la
semntica y eliminar algunas ambigedades en las semnticas anteriores. La versin de QBE soportada por
Microsoft Access se ha tratado brevemente. Se ha eliminado Quel.

Ejercicios
5.1
Considrese la base de datos de seguros de la Figura 5.14, donde las claves primarias estn
subrayadas. Formlense las siguientes consultas en QBE:
a.
Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en
1989.
b.
Buscar el nmero de accidentes en los que se ha visto involucrado un coche perteneciente a
Santos.
c.
Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos
necesarios.
d.
Borrar el Mazda de Santos.
e.
Actualizar a 3.000 el importe de daos del coche de matrcula "2002BCD", en el accidente con
nmero de informe "AR2197".
Respuesta:
La relacin participado relaciona coches y accidentes. Supngase que el atributo fecha tiene
el formato YYYY-MM-DD.
a.
Buscar el nmero total de las personas cuyos coches se han visto involucrados en un accidente en
1989.
accidente

participado

nmero-informe
informe

id-conductor
P.CNT.UNQ.ALL

coche

fecha
fecha

lugar

nmero-informe
informe

importe-daos

condiciones
fecha =
( 1989-00-00 and
1989-12-31 )
b.
Buscar el nmero de accidentes en los que se ha visto involucrado un coche perteneciente a
Santos.
persona

participado

id-conductor
conductor

id-conductor
conductor

coche

nombre
Santos

direccin

nmero-informe
P.CNT.ALL

importe-daos

c.
Aadir un nuevo accidente a la base de datos; supngase cualquier valor para los atributos
necesarios.
Se supone que el conductor era Santos, aunque podra haber sido cualquier otro. Tambin se supone que
Santos slo tiene un Toyota.
acidente
I.

nmero-informe
4007

fecha
1997-01-01

lugar
Berkeley

persona (id-conductor, nombre, direccin)


coche (matrcula, modelo, ao)
accidente (nmero-informe, fecha, lugar)
posee (id-conductor, matrcula)
participado (id-conductor, coche, nmero-informe, importe-daos)
Figura 5.14.

Base de datos de seguros.

participado
I.

id-conductor
conductor

nmero-informe
4007

posee

id-conductor
conductor

coche

matrcula
matrcula

persona
d.

coche
matrcula

importe-daos
3000

matrcula
matrcula

ao
ao

modelo
Toyota

id-conductor
conductor

nombre
Santos

direccin

id-conductor
conductor

nombre
Santos

direccin

Borrar el Mazda de Santos.


persona

posee

id-conductor
conductor

coche
D.

matrcula
matrcula

matrcula
matrcula

ao

modelo
Mazda

e.
Actualizar a 3.000 el importe de daos del coche de matrcula "2002BCD", en el accidente con
nmero de informe "AR2197".
posee

participado

id-conductor
conductor

id-conductor
conductor

coche

matrcula
"2002BCD"

nmero-informe
AR2197

importe-daos
U.3000

5.2
Considrese la base de datos de empleados de la Figura 5.15. Proporcionar expresiones en QBE y
Datalog para cada una de las siguientes consultas:
a.
Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.
b.
Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco
Importante.
c.
Averiguar el nombre, direccin y ciudad de residencia, de todos los empleados que trabajan para el
Banco Importante y ganan mas de 10.000 anuales.
d.
Buscar todos los empleados que viven en la ciudad de la empresa para la que trabajan.
e.
Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.
f.
Buscar todos los empleados que no trabajan en el Banco Importante.
g.
Buscar todos los empleados que ganan ms que cualquier empleado del Banco Pequeo.
h.
Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con
sede en todas las ciudades en las que tiene sede el Banco Pequeo.

Respuesta:
a.
i.

Averiguar los nombres de todos los empleados que trabajan para el Banco Importante.
trabaja

ii.

nombre-persona
P._x

nombre-compaa

sueldo
Banco Importante

consulta(X) :- trabaja(X, Banco Importante, Y)

b.
Averiguar el nombre y la ciudad de residencia de todos los empleados que trabajan para el Banco
Importante.
i.
trabaja

nombre-persona
_x

empleado

ii.

nombre-compaa
Banco Importante

nombre-persona
P._x

calle

sueldo

ciudad
P._y

consulta (X, Y ) :- empleado (X, Z, Y ), trabaja(X, Banco Importante, W)

c.
Averiguar los nombres, direcciones y ciudades de residencia de todos los empleados que trabajan
para el Banco Importante y ganan ms de 10.000 anuales. Si las personas pueden trabajar para varias
compaas las soluciones siguientes nicamente listarn aquellas que ganen ms de 10.000 anuales, slo del
Banco Importante.
i.
empleado

trabaja

nombre-persona
P._x

nombre-persona
_x

calle
P._y

ciudad
P._z

nombre-compaa
Banco Importante

sueldo
> 10.000

ii.
consulta (X, Y, Z ) :- vive (X, Z, Y ), trabaja(X, Banco Importante, W)
W > 10.000
d.
Encontrar todos los empleados que viven en la misma ciudad en que est localizada la compaa
para la que trabajan.
i.
empleado

trabaja

nombre-persona
P._x

nombre-persona
_x
compaa

ii.

calle

ciudad
_y

nombre-compaa
_c

nombre-compaa
_c

sueldo

ciudad
_y

consulta (X) :- empleado (X, Y, Z), trabaja(X, V, W), compaa(V, Z)

e.
i.

Buscar todos los empleados que viven en la misma ciudad y en la misma calle que sus jefes.
empleado

jefe
ii.

nombre-persona
P._x
_y
nombre-persona
x

calle
_s
_s

ciudad
_c
_c

nombre-jefe
y

consulta (X) :- vive (X, Y, Z), jefe (X, V ), vive (V, Y, Z)

f.
Buscar todos los empleados que no trabajan en el Banco Importante. Las soluciones siguientes
asumen que todas las personas trabajan para una compaa.
i.
trabaja

ii.

nombre-persona
P._x

nombre-compaa
Banco Importante

sueldo

consulta (X) :- trabaja (X, Y, Z), Y Banco Importante

Si se permite que aparezcan personas en la base de datos (por ejemplo en empleado) pero que no aparezcan en
trabaja, o si las personas pueden trabajar para ms de una compaa, la soluciones se complican ligeramente.
Se presentan a continuacin:
i.
empleado

trabaja

nombre-persona
P._x

nombre-persona
_x

calle

ciudad

nombre-compaa
Banco Importante

sueldo

ii.
consulta (X) :- empleado (X, Y, Z), p1 (X)
p1 (X) :- trabaja(X, Banco Importante, W)
g.
Averiguar el nombre de todos los empleados que ganan ms que cualquier empleado del Banco
Pequeo. Las soluciones siguientes asumen que todas las personas trabajan, como mximo, para una
compaa.
i.
trabaja

nombre-persona

nombre-compaa
Banco Pequeo

P._x

sueldo
_y
> MAX.ALL._y

o
trabaja

nombre-persona
P._x

nombre-compaa
Banco Pequeo

sueldo
_y
> _y

ii.
consulta (X) :- trabaja (X, Y, Z), p (X)
p (X) :- trabaja(X, C, Y 1), trabaja(V, Banco Pequeo, Y ), Y >Y1
h.
Supngase que las empresas pueden tener sede en varias ciudades. Buscar todas las empresas con
sede en todas las ciudades en las que tiene sede el Banco Pequeo.
Nota: El Banco Pequeo se incluir en cada respuesta.
i.
ubicado-en

nombre-compaa
Banco Pequeo
P._c
Banco Pequeo

ciudad
_x
_y
_y

condiciones
CNT.ALL._y =
CNT.ALL._x
ii.
consulta (X) :- compaa(X, C), not p(X)
p(X) :- compaa(X, C1), compaa(Banco Pequeo, C2), not compaa(X, C2)
5.3
Considrese la base de datos relacional de la Figura 5.15, donde las claves primarias estn
subrayadas. Formlense expresiones en QBE para cada una de las consultas siguientes:
a.
Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa.
b.
Buscar la empresa que tiene el mayor nmero de empleados.
c.
Buscar la empresa que tiene el menor sueldo medio.
d.
Averiguar las compaas cuyos empleados ganan un sueldo ms alto, en media, que el sueldo medio
del Banco Importante.
Respuesta:
a.
Buscar todos los empleados que ganan ms que el sueldo medio de los empleados de su empresa.
Las soluciones siguientes asumen que todas las personas trabajan slo para una compaa.
trabaja

nombre-persona
P.

nombre-compaa
_y
_Y

sueldo
_x
_z

condiciones
_x > AVG.ALL._z
b.

Buscar la empresa que tiene el mayor nmero de empleados.


trabaja

nombre-persona
_x
_y

nombre-compaa
P.G.
G.

condiciones
CNT.UNQ._x MAX.CNT.UNQ.ALL._y

sueldo

c.

Buscar la empresa que tiene el menor sueldo medio.


empleado (nombre-persona, calle, ciudad)
trabaja (nombre-persona, nombre-compaa, sueldo)
compaa (nombre-compaa, ciudad)
jefe (nombre-persona, nombre-jefe)

Figura 5.15.

Base de datos de empleados.


trabaja

nombre-persona

nombre-compaa
P.G.
G.

sueldo
_x
_y

condiciones
SUM.ALL._x MIN.SUM.ALL._y
d.
Encontrar las compaas cuyos empleados ganan un salario mayor, en promedio, que el salario
medio del Banco Importante.
trabaja

nombre-persona

nombre-compaa
P.G.
Banco Importante

sueldo
_x
_y

condiciones
AVG.ALL._x> AVG.ALL._y
5.4
Considrese la base de datos relacional de la Figura 5.15. Formlense expresiones en QBE para cada
una de las consultas siguientes:
a.
Modificar la base de datos de forma que Santos viva en Tres Cantos.
b.
Dar un 10% de aumento de sueldo a todos los empleados del Banco Importante.
c.
Dar un 10% de aumento de sueldo a todos los jefes de la base de datos.
d.
Dar un 10% de aumento de sueldo a todos los jefes de la base de datos, a menos que su sueldo est
por encima de 100.000 anuales. En tal caso, darles slo un 3%.
e.
Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo.
Respuesta:
Las soluciones suponen que cada persona slo tiene una tupla en la relacin empleado. Las
soluciones para las partes c y d suponen que cada persona trabaja, cmo mximo, para una compaa.
a.
Modificar la base de datos de forma que Santos viva en Tres Cantos.
empleado
b.

nombre-persona
Santos

calle

ciudad
vila

Incrementar en un 10% el sueldo de todos los empleados del Banco Importante.


trabaja
U.

nombre-persona

nombre-compaa
Banco Importante

sueldo
_x
_x * 1.1

c.

Proporcinese a todos los jefes de la base de datos un aumento salarial del 10%.
jefe

trabaja

nombre-persona

nombre-persona
_x

nombre-jefe
_x

nombre-compaa

U.

sueldo
_y
_y * 1.1

d.
Incremntese en un 10% el sueldo de todos los jefes del Banco Importante, a menos que su sueldo
pase a ser mayor de 100.000 . En tales casos, incrementarlo slo en un 3%. Se deben realizar dos
operaciones de actualizacin independientes. Cada operacin de actualizacin tiene su propio conjunto de
tablas de estructura.
Primera actualizacin:
jefe

trabaja

nombre-persona

nombre-persona
_x

nombre-jefe
_x

nombre-compaa

U.

sueldo
_y
_y * 1.03

condiciones
_y > 100000/1.1
Segunda actualizacin:
jefe
trabaja

nombre-persona

nombre-persona
_x

nombre-jefe
_x

nombre-compaa

U.

sueldo
_y
_y * 1.1

condiciones
_y 100000/1.1
e.

Borrar todas las tuplas de la relacin trabaja para los empleados del Banco Pequeo.
trabaja
D.

5.5

nombre-persona

nombre-compaa
Banco Pequeo

Sean los siguientes esquemas de relacin:


R = (A, B, C)
S = (D, E, F)

sueldo

Considrense las relaciones r(R) y s(S). Proporcinense expresiones en QBE y Datalog equivalentes a cada
una de las siguientes consultas:
a. PA(r)
b. s B = 17 (r)
c. r x s
d. PA,F (s C = D (r x s))
Respuesta:
a. PA(r)
i.

ii.

A
P.

r
P.

B
17

consulta (X) :- r (X, Y, Z)

b. s B = 17 (r)
i.

ii.

consulta (X, Y, Z) :- r (X, Y, Z), Y = 17

c. r x s
i.
resultado
P

ii.

A
_a

B
_b

C
_c

D
_d

A
_a

B
_b

C
_c

D
_d

E
_e

F
_f

E
_e

F
_f

consulta (X, Y, Z, U, V, W) :- r (X, Y, Z), s(U, V, W)

d. PA,F (s C = D (r x s))
i.
resultado
P.

A
_a

F
_f

A
_a

C
_c

D
_c

F
_f

ii.

consulta (X, Y ) :- r (X, V, W), s(W, Z, Y )

5.6

Sea R = (A, B, C) y sean r1 y r2 relaciones del esquema R. Proporcionar expresiones en QBE y

Datalog equivalentes a cada una de las siguientes consultas:


a.
b.
c.
d.

r1 U r2
r1 r2
r1 - r2
PAB (r1) |x| PBC (r2)

Respuesta:
a. r1 U r2
i.
resultado
P.
P.

A
_a
_d

B
_b
_e

r1

A
_a

B
_b

C
_c

r2

A
_d

B
_e

C
_f

r1
P.

A
_a

B
_b

C
_c

r2

A
_a

B
_b

C
_c

ii.
consulta(X, Y, Z) :- r1 (X, Y, Z)
consulta(X, Y, Z) :- r2 (X, Y, Z)
b. r1 r2
i.

ii.

consulta(X, Y, Z) :- r1 (X, Y, Z), r2 (X, Y, Z)

c. r1 - r2
i.

ii.

r1
P.

A
_a

B
_b

C
_c

r2

A
_a

B
_b

C
_c

consulta(X, Y, Z) :- r1 (X, Y, Z), no r2 (X, Y, Z)

C
_c
_f

d. PAB (r1) |x| PBC (r2)


i.
resultado
P.

ii.

A
_a

B
_b

C
_c

r1

A
_a

B
_b

r2

B
_b

C
_c

consulta(X, Y, Z) :- r1 (X, Y, V), r2 (W, Y, Z)

5.7
Sean R = (A, B) y S = (A ,C) y sean las relaciones r(R) y s(S). Escrbanse expresiones en QBE y
Datalog para cada una de las consultas siguientes:
a. {<a> | $ b (<a, b> r b = 17)}
b. {<a, b, c> | <a, b> r <a, c> s}
c. {<a> | $ c (<a, c> s $ b1 , b2 (<a, b1> r <c, b2> r b1 >b2 ))}
Respuesta:
a. {<a> | $ b (<a, b> r b = 17)}
i.

ii.

A
P.

B
17

A
_a

B
_b

A
_a

C
_c

result
P.

A
_a

B
_b

consulta (X) :- r (X, 17)

b. {<a, b, c> | <a, b> r <a, c> s}


i.

ii.

C
_c

consulta(X, Y, Z) :- r(X, Y), s(X, Z)

c. {<a> | $ c (<a, c> s $ b1 , b2 (<a, b1> r <c, b2> r b1 >b2 ))}


i.

ii.

A
_a
_c

A
P._a

B
>_s
_s

consulta (X) :- s (X, Y ), r (X, Z), r (Y, W), Z > W

C
_c

5.8
Considrese la base de datos relacional de la Figura 5.12. Escrbase un programa Datalog para cada
una de las siguientes consultas:
a.
Buscar todos los empleados que trabajan (directa o indirectamente) bajo la direccin de Santos.
b.
Buscar las ciudades de residencia de todos los empleados que trabajan (directa o indirectamente)
bajo la direccin de Santos.
c.
Buscar todas las parejas de empleados que tienen (directa o indirectamente) un jefe en comn.
d.
Buscar todas las parejas de empleados que tienen (directa o indirectamente) un jefe en comn y que
estan al mismo nmero de niveles bajo el jefe.
Respuesta:
a.
Buscar todos los empleados que trabajan (directa o indirectamente) bajo la direccin de Santos.
consulta (X) :- p (X)
p (X) :- jefe (X, Santos)
p (X) :- jefe (X, Y ), p(Y )
b.
Buscar todas las ciudades de residencia de todos los empleados que trabajan (directa o
indirectamente) bajo la direccin de Santos.
consulta(X, C) :- p(X), empleado(X, S, C)
p(X) :- jefe(X, Santos)
p(X) :- jefe(X, Y), p(Y)
c.

Buscar todas las parejas de empleados que tengan (directa o indirectamente) un jefe en comn.
consulta(X, Y) :- p(X, W), p(Y, W)
p(X, Y) :- jefe(X, Y)
p(X, Y) :-jefe(X, Z), p(Z, Y)

d.
Buscar todas las parejas de empleados que tengan (directa o indirectamente) un jefe en comn y que
esten al mismo nmero de niveles de supervisin bajo el jefe en comn.
consulta(X, Y) :- p(X, Y)
p(X, Y) :- jefe(X, Z), jefe(Y, Z)
p(X, Y) :- jefe(X, V), jefe(Y, W), p(V, W)
5.9

Escrbase una vista del lgebra relacional extendida equivalente a la regla Datalog
p(A,C,D) : q1 (A,B), q2 (B,C), q3 (4,B), D = B + 1 .

Respuesta: Asmase que q1, q2 y q3 son are ejemplares del esquema (A1, A2).La vista del lgebra relacional
es
create view P as
q1.A1,q2.A2,q1.A2+1(sq3.A1=4

q1.A2=q2.A1 q1.A2=q3.A2(q1

q2 q3))

5.10
Descrbase cmo una regla de Datalog arbitraria puede expresarse como una vista del lgebra
relacional extendida.
Respuesta:
Una regla de Datalog tiene dos partes, la cabeza y el cuerpo. El cuerpo es una lista de
literales separados por comas. Un literal positivo tiene la forma p(t1, t2, . . . , tn ), done p es el nombre de una
relacin con n atributos y t1, t2, . . . , tn son constantes o variables. Un literal negativo tiene la forma p(t1, t2, .
. . , tn), donde p tiene n atributos. En el caso de literales aritmticos, p ser un operador aritmtico como >, =
etc.
Se consideran slo reglas seguras; consultar el Apartado 5.2.4 para las definiciones de seguridad de
las reglas de Datalog. Adems, se asume que cada variable que aparece en un literal aritmtico tambin lo
hace en un literal no aritmtico positivo.

Considrese primero una regla sin ningn literal negativo. Para expresar la regla como una vista del
lgebra relacional extendida, se escribe como una reunin de todas las relaciones referidas en los literales no
aritmticos (positivos) del cuerpo, seguidos por una seleccin. La condicin de seleccin es una conjuncin
que se obtiene como sigue. Si p1 (X, Y ), p2 (Y, Z) tienen lugar en el cuerpo, donde p1 es del esquema (A, B) y
p2 del (C, D), entonces p1.B = p2.C debera pertenecer a la conjuncin. Los literales aritmticos pueden
entonces aadirse a la condicin.
A modo de ejemplo, la consulta Datalog
consulta(X, Y) :- trabaja(X, C, S1), trabaja(Y, C, S2), S1 > S2, jefe(X, Y)
se convierte en la siguiente expresin de lgebra relacional:
E1 = s(w1.nombre-compaa = w2.nombre-compaa

w1.sueldo > w2.sueldo


jefe.nombre-persona = w1.nombre-persona jefe.nombre-jefe=w2.nombre-persona)

( rw1(trabaja) rw2(trabaja) jefe)

Supngase que la regla dada ahora tiene literales negativos. Primero supngase que no hay constantes en los
literales negativos; recurdese que todas las variables de un literal negativo deben, tambin, aparecer en un
literal positivo. Sea q(X, Y ) el primer literal negativo del esquema (E, F). Sea Ei la expresin del lgebra
relacional obtenida despus de que se hayan tratado todos los literales, positivos y negativos. Para tratar este
literal negativo se genera la expresin
Ej = Ei |x| (A1,A2(Ei) - q)
donde A1 y A2 son los nombres de atributo de dos columnas en Ei que se corresponden, respectivamente, a X e
Y.
Considrense ahora que aparecen constantes en un literal negativo. Supngase un literal negativo de
la forma q(a, b, Y ), donde a y b son constantes. Entonces, en la expresin anterior que define Ej ,se
reemplaza q por sA1=a A2=b(q).
Procediendo de una misma manera, se procesan los literales negativos restantes, resultando
finalmente en una expresin Ew.
Finalmente, los atributos deseados se proyectan de la expresin. Los atributos en Ew,
correspondientes a las variables en la cabeza de la regla, se convierten en los atributos de la proyeccin.
As, finalmente, la regla de ejemplo se convierte en la vista:
create view consulta as
w1.nombre-persona,w2.nombre-persona (E2)
Si hay reglas mltiples para el mismo predicado, la expresin del lgebra relacional que define la vista es la
unin de las correspondientes expresiones a las reglas individuales.
La conversin anterior se puede ampliar para manejar reglas que cumplan algunas formas ms
dbiles de las condiciones de seguridad y, en algunos casos limitados, donde la variables en predicados
aritmticos no aparezcan en un literal no aritmtico positivo.

CAPITULO

INTEGRIDAD Y SEGURIDAD
Este captulo presenta varios tipos de restricciones de integridad, incluyendo restricciones de los dominios,
restricciones de integridad referencial, asertos y disparadores, as como seguridad y autorizacin. Las
restricciones de integridad referencial y las restricciones de los dominios, son un importante aspecto de las
especificaciones del diseo de una base de datos relacional. Los asertos estn viendo incrementar su empleo.
Los disparadores se usan ampliamente, aunque cada base de datos soporta su propia sintaxis y semntica para
disparadores; los disparadores estaban estandarizados como parte de SQL:1999 y es de esperar que las bases
de datos faciliten soporte para disparadores SQL:1999.
Las dependencias funcionales ahora se muestran como parte de la normalizacin, en vez de como
parte del captulo de las restricciones de integridad, tal y como se haca en la tercera edicin. La razn del
cambio es que se emplean casi exclusivamente en el diseo de bases de datos y ningn sistema de base de
datos, que se sepa, soporta dependencias funcionales como las restricciones de integridad. Tratndolos en el
contexto de la normalizacin, se ayuda a motivar a los estudiantes a dedicar esfuerzo para comprender la
problemtica del razonamiento con dependencias funcionales.
La seguridad es el principal asunto por s mismo. Dado que cualquier sistema es solamente tan
seguro como lo es su componente ms dbil, un diseador de sistemas debe considerar todos los aspectos de
seguridad. Este captulo se centra slo en los aspectos de seguridad que son especficos de las bases de datos.
En un curso posterior, esta materia se puede completar con la discusin de cuestiones de seguridad en los
sistemas operativos y en los sistemas distribuidos.
Cambios a la tercera edicin:
El tratamiento de los disparadores est ahora basado en el estndar SQL:1999. En el momento de la
publicacin de la tercera edicin los disparadores no estaban estandarizados. La nocin de funciones para la
autorizacin se ha introducido en esta edicin, ahora que es parte del estndar SQL:1999. El tratamiento de la
encriptacin ha sido actualizado para cubrir los desarrollos recientes.

Ejercicios
6.1
Compltese la definicin del LDD de SQL de la base de datos de la Figura 6.2, para incluir las
relaciones prstamo y prestatario.
Respuesta:
create table prstamo
(nmero-prstamo char(10),
nombre-sucursal char(15),
importe integer,
primary key (nmero-prstamo),
foreign key (nombre-sucursal) references sucursal)
create table prestatario
(nombre-cliente char(20),
nmero-prstamo char(10),
primary key (nombre-cliente, nmero-prstamo),
foreign key (nombre-cliente) references cliente,
foreign key (nmero-prstamo) references prstamo)
Declarar como clave primaria de la relacin prestatario a la pareja nombre-cliente, nmero-prstamo, asegura
que la relacin no contenga duplicados.
6.2

Considrese la siguiente base de datos relacional:


empleado (nombre-empleado, calle, ciudad)
trabaja (nombre-empleado, nombre-compaa, sueldo)
compaa (nombre-compaa, ciudad)
jefe (nombre-empleado, nombre-jefe)

Se da una definicin en el LDD de SQL de esta base de datos. Identifquense las restricciones de integridad
referencial que deben cumplirse, e inclyanse en la definicin del LDD.
Respuesta:
create table empleado
(nombre-persona char(20),
calle char(30),
ciudad char(30),
primary key (nombre-persona))
create table trabaja
(nombre-persona char(20),
nombre-compaa char(15),
sueldo integer,
primary key (nombre-persona),
foreign key (nombre-persona) references empleado,
foreign key (nombre-compaa) references compaa)
create table compaa
(nombre-compaa char(15),
ciudad char(30),
primary key (nombre-compaa))
create table jefe

(nombre-persona char(20),
nombre-jefe char(20),
primary key (nombre-persona),
foreign key (nombre-persona) references empleado,
foreign key (nombre-jefe) references empleado)
Ntese que son posibles tipos de datos alternativos. Se pueden aceptar otras elecciones para los atributos not
null.
6.3
Las restricciones de integridad referencial, tal y como se han definido en este captulo, implican
exactamente dos relaciones. Considrese una base de datos que incluya las siguientes relaciones:
trabajador-fijo (nombre, despacho, telfono, sueldo)
trabajador-tiempo-parcial (nombre, sueldo-por-hora)
direccin (nombre, calle, ciudad)
Supngase que se desea exigir que cada nombre que aparece en direccin, aparezca en trabajador-fijo o en
trabajador-tiempo-parcial, pero no necesariamente en ambos.
a.
Propngase una sintaxis para expresar esta restriccin.
b.
Disctanse las acciones que el sistema debe realizar para aplicar una restriccin de este tipo.
Respuesta:
a.
Por sencillez, se presenta una variante de la sintaxis del SQL. Como parte de la expresin create
table para direccin, se incluye
foreign key (nombre) references trabajador-fijo o trabajador-tiempo-parcial
b.
Para reforzar esta ligadura, siempre que una tupla se inserte en la relacin direccin, se debe hacer
una bsqueda sobre el valor nombre en la relacin trabajador-fijo y (si falla la bsqueda) en la relacin
trabajador-tiempo-parcial (o viceversa).
6.4
SQL permite la dependencia de una clave externa para referirse a la misma relacin, como en el
ejemplo siguiente:
create table jefe
(nombre-empleado char(20) not null,
nombre-jefe char(20),
primary key nonbre-empleado,
foreign key (nombre-jefe) references jefe
on delete cascade )
Aqu, nombre-empleado es una clave para la tabla jefe, lo que significa que cada empleado tiene como
mximo un jefe. La orden de clave externa requiere que cada jefe tambin sea un empleado. Explquese qu
sucede exactamente cuando se borra una tupla de la relacin jefe.
Respuesta: Las tuplas de todos los empleados del jefe, a todos los niveles, tambin se borran. Esto sucede en
una serie de pasos. El borrado inicial disparar el de todas las tuplas correspondientes a los empleados
directos del jefe. Estos borrados originarn los borrados de las tuplas de los empleados del segundo nivel, y
as sucesivamente, hasta sean borradas, directa o indirectamente, todas las tuplas de empleados.
6.5
Supngase que hay dos relaciones r y s, tales que la clave externa B de r hace referencia a la clave
primaria A de s. Descrbase la manera en que puede utilizarse el mecanismo de los disparadores para
implementar la opcin on delete cascade, cuando se borra una tupla de s.

Respuesta: Se definen disparadores para cada relacin cuya clave primaria est referida por la clave externa
de alguna otra relacin. El disparador se activara siempre que una tupla se borre de la relacin referenciada.
La accin realizada por el disparador consistira en recorrerse todas las relaciones referenciadas y borrar todas
las tuplas en aquellas cuyo valor del atributo clave externa sea el mismo que el del atributo clave primaria, de
la tupla borrada en la relacin de referencia. Estos conjuntos de disparadores se ocuparn de la operacin on
delete cascade.
6.6
Escrbase un aserto para la base de datos bancaria, que asegure que el valor del activo de la sucursal
de Navacerrada sea igual a la suma de todos los importes prestados por esa sucursal.
Respuesta: El nombre del aserto es arbitrario. Se ha elegido el nombre Navacerrada. Ntese que al aplicar el
aserto slo a la sucursal de Navacerrada, se debe restringir la atencin slo a las tuplas de Navacerrada en la
relacin sucursal, en vez de escribir una restriccin sobre la relacin entera.
create assertion Navacerrada check
(not exists (select *
from sucursal
where nombre-sucursal = Navacerrada and
activo (select sum (importe)
from prstamo
where nombre-sucursal = Navacerrada)))
6.7
Escrbase una disparador SQL que lleve a cabo la siguiente accin: Al borrar una cuenta, para cada
propietario de la cuenta, comprubese si tiene algunas otras cuentas y, si no es as, brresele de la relacin
impositor.
Respuesta:
create trigger disparador-comprobacin-borrado after delete on cuenta
referencing old row as fila-antigua
for each row
delete from impositor
where impositor.nombre-cliente not in
( select nombre-cliente from impositor
where nmero-cuenta<> fila-antigua.nmero-cuenta )
end
6.8

Considrese la vista sucursal-cliente definida como sigue:


create view sucursal-cliente as
select nombre-sucursal, nombre-cliente
from impositor, cuenta
where impositor.nmero-cuenta = cuenta.nmero-cuenta

Supngase que la vista esta materializada, es decir, la vista se calcula y se almacena.


Escrbanse reglas activas para el mantenimiento de la vista, es decir, para mantenerla actualizada segn las
inserciones y borrados de impositor o cuenta. No preocuparse de las actualizaciones.
Respuesta: Para insertar en la vista materializada sucursal-cliente, se debe definir un disparador de base de
datos sobre las inserciones en impositor y cuenta. Se asume que el sistema de base de datos hace uso de una
vinculacin inmediata para la ejecucin de las reglas. Adems, se supone que la versin actual de una relacin
se denota por el propio nombre de la relacin, mientras que el conjunto de tuplas recin insertadas se denota
calificando el nombre de la relacin con el prefijo insertado.
Las reglas activas para esta insercin se dan a continuacin

define trigger insertar en sucursal-cliente va impositor


after insert on impositor
referencing new table as insertado for each statement
insert into sucursal-cliente
select nombre-sucursal, nombre-cliente
from insertado,cuenta
where insertado.nmero-cuenta = cuenta.nmero-cuenta
define trigger insertar en sucursal-cliente va cuenta
after insert on cuenta
referencing new table as insertado for each statement
insert into sucursal-cliente
select nombre-sucursal, nombre-cliente
from impositor, inserted
where impositor.nmero-cuenta = insertado.nmero-cuenta
Ntese que si la vinculacin de la ejecucin fuese diferida (en vez de inmediata), entonces el
resultado de la reunin del conjunto de las nuevas tuplas de cuenta con el de las nuevas tuplas de impositor,
habra sido insertado por ambas reglas activas, duplicando las correspondientes tuplas en sucursal-cliente.
El borrado de una tupla desde sucursal-cliente es similar a la insercin, excepto en que un borrado
desde impositor o cuenta implicar la unin natural de estas relaciones para tener un menor nmero de tuplas.
Se denota el conjunto de tuplas recin borradas calificando el nombre de la relacin con la palabra clave
borrado.
define trigger borrar desde sucursal-cliente va impositor
after delete on impositor
referencing old table as borrado for each statement
delete from sucursal-cliente
select nombre-sucursal, nombre-cliente
from borrado,cuenta
where borrado.nmero-cuenta = cuenta.nmero-cuenta
define trigger borrar desde sucursal-cliente va cuenta
after delete on cuenta
referencing old table as borrado for each statement
delete from sucursal-cliente
select nombre-sucursal, nombre-cliente
from impositor, borrado
where impositor.nmero-cuenta = borrado.nmero-cuenta
6.9
Confeccinese una lista de los problemas de seguridad de un banco. De cada elemento de la lista,
especifquese si afecta a la seguridad fsica, a la personal, a la del sistema operativo o a la de las bases de
datos.
Respuesta: Considrese el problema de proteger la base de datos del banco.
Algunas medidas de seguridad, a cada uno de los cuatro niveles, se mencionan seguidamente
a.
Nivel fsico El sistema desde el que se puede acceder y modificar a las relaciones, debera situarse
en una habitacin cerrada, bien guardada e inexpugnable.
b.
Nivel humano Una apropiada poltica de transferencia de llaves debera reforzarse, para restringir
el acceso a las dependencias del sistema anteriormente mencionadas. Las contraseas para poder acceder a
la base de datos deberan ser conocidas slo por los usuarios de confianza.
c.
Nivel de sistema operativo Las contraseas deberan ser difciles de imaginar y modificarse
regularmente. Ningn usuario debera ser capaz de obtener accesos no autorizados al sistema, debido un fallo
del software en el sistema operativo.
d.
Nivel de sistema de base de datos . Los usuarios deberan estar autorizados a acceder slo a las

partes pertinentes de la base de datos. Por ejemplo, debera permitirse al cajero de un banco modificar los
valores del saldo de los clientes, pero no el de su propio sueldo.
6.10
Utilizando las relaciones de la base de datos bancaria de ejemplo, escrbase una expresin SQL para
definir las siguientes vistas:
a.
Una vista que contenga los nmeros de cuenta y los nombres de los clientes (pero no los saldos) de
todas las cuentas de la sucursal de El Escorial.
b.
Una vista que contenga el nombre y la direccin de todos los clientes que tengan cuenta en el banco,
pero no tengan ningn prstamo.
c.
Una vista que contenga el nombre y el saldo medio de la cuenta de cada cliente de la sucursal de
Collado Villalba.
Respuesta:
a.
create view El-Escorial as
select nmero-cuenta, nombre-cliente
from impositor, cuenta
where nombre-sucursal = El Escorial and
impositor.nmero-cuenta = cuenta.nmero-cuenta
b.
create view sin-deudas as
select * from cliente
where nombre-cliente in
(select nombre-cliente
from impositor)
minus
(select nombre-cliente
from prestatario)
c.
create view saldo-medio as
select nombre-cliente, avg(saldo)
from impositor, cuenta
where impositor.nmero-cuenta = cuenta.nmero-cuenta
y nombre-sucursal = Collado Villalba
group by nombre-cliente
6.11
Para cada una de las vistas definidas en el Ejercicio 6.10, explquese la manera en que deben
realizarse las actualizaciones (si es que se deben permitir). Sugerencia: Consultar la discusin de las vistas del
Captulo 3.
Respuesta: Para insertar (nmero-cuenta, nombre) en la vista El-Escorial , se inserta la tupla ( El Escorial,
nmero-cuenta, nulo) en la relacin cuenta y la tupla (nombre, nmero-cuenta) en la relacin impositor.
Actualizar las vistas sin-deudas y saldo-medio presenta serios problemas. Si se inserta en la vista sin-deudas,
el sistema debe reflejar la insercin si el cliente tiene un prstamo. El coste de la actualizacin a travs de esta
vista es tan alto, que la mayora de los sistemas lo rechazaran. La vista saldo-medio no puede actualizarse,
dado que el resultado de una operacin de agregacin depende de varias tuplas, no slo de una.
6.12
En el Captulo 3 se describi el uso de las vistas para facilitar el acceso a la base de datos de los
usuarios que slo necesiten ver una parte de la misma. En este captulo se ha descrito el uso de las vistas
como mecanismo de seguridad. Pueden entrar en conflicto estas dos finalidades de las vistas? Explquese la
respuesta.
Respuesta: Generalmente un mecanismo de seguridad y vistas bien diseado, puede evitar conflictos entre la

facilidad de los accesos y la seguridad. Sin embargo, como se muestra en los ejemplos siguientes, los dos
propsitos entran en conflicto si los mecanismos no se han diseado cuidadosamente.
Supngase que se tiene una base de datos de empleados y un usuario cuya vista implica los datos de
empleados que ganan menos de 10.000. Si este usuario inserta al empleado Santos, cuyo sueldo es 9.000 ,
pero accidentalmente teclea 90.000, diversos sistemas de bases de datos existentes aceptarn esta
actualizacin como vlida, a travs de una vista. Sin embargo, el mecanismo de seguridad impedir que el
usuario acceda a borrar esta tupla errnea.
6.13
Cul es la finalidad de tener categoras diferentes para la autorizacin de ndices y para la de
recursos?
Respuesta: Las autorizaciones de ndices y recursos deberan ser categoras especiales que permitan a
determinados usuarios crear relaciones (y los ndices para operar sobre ellas), al impedir que estas
operaciones, lentas y que modifican el esquema, estn disponibles para muchos usuarios. Separar las
autorizaciones de ndices y recursos permite a un usuario construir un ndice sobre relaciones existentes, por
ejemplo por razones de optimizacin, pero denegarle el derecho a crear nuevas relaciones.
6.14
Los sistemas de bases de datos que guardan cada relacin en un archivo diferente del sistema
operativo pueden utilizar los esquemas de seguridad y de autorizacin del sistema operativo, en lugar de
definir un esquema especial propio. Disctanse las ventajas e inconvenientes de ese enfoque.
Respuesta: Los sistemas de bases de datos tienen requerimientos especiales que son tpicamente ms
refinados que la mayora de los sistemas operativos. Por ejemplo, un usuario sencillo puede tener diferentes
privilegios sobre diferentes ficheros en todo el sistema, incluyendo modificaciones de ndices y atributos que,
generalmente, los sistemas de ficheros no controlan. La ventaja de emplear los mecanismos de seguridad de
los sistemas operativos es que simplifican los sistemas de bases de datos, y se pueden usar para simples
(leer/escribir) medidas de seguridad.
6.15

Cules son las dos ventajas de cifrar los datos guardados en una base de datos?

Respuesta:
a.
Los datos cifrados permiten que usuarios autorizados accedan a los datos, sin preocuparse que otros
usuarios o el administrador del sistema consigan cualquier informacin.
b.
La encriptacin de los datos puede simplificar o incluso fortalecer otros mecanismos de
autorizacin. Por ejemplo, la distribucin de las claves criptogrficas slo entre usuarios de confianza es,
tanto una manera sencilla de controlar los accesos de lectura, como una capa adicional de seguridad sobre la
que ofrecen las vistas.
6.16
Quizs los elementos de datos ms importantes de cualquier sistema de bases de datos sean las
contraseas que controlan el acceso a la base de datos. Propngase un esquema para guardar de manera
segura las contraseas. Asegrese de que el esquema permita al sistema comprobar las contraseas
proporcionadas por los usuarios que intenten iniciar una sesin en el mismo.
Respuesta: Una manera de almacenar contraseas sera cifrarlas y, posteriormente, usar un ndice asociativo
sobre el identificativo de usuario. El identificativo de usuario se puede emplear para acceder fcilmente a la
contrasea cifrada. La contrasea empleada en un intento de conexin se cifra y compara con la encriptacin
de la contrasea correcta almacenada. Una ventaja de este plan es que las contraseas no se almacenan en
texto transparente y que, incluso, no es necesario que exista cdigo para el descifrado.

CAPITULO

DISEO DE BASES DE DATOS RELACIONALES


Este captulo presenta los principios del diseo de bases de datos relacionales. Los estudiantes universitarios
frecuentemente encuentran difcil este captulo. Es aceptable cubrir solamente los Apartados 7.1, 7.2 y 7.4,
para aquellas clases que encuentren la materia particularmente difcil. Sin embargo, un cuidadoso estudio de
las dependencias y normalizaciones de los datos, es una buena manera de introducir a los estudiantes a los
aspectos formales de la teora de bases de datos relacionales.
Hay muchas maneras de hacer constar las definiciones de las formas normales. Se ha elegido un
estilo que, pensamos, es el ms fcil de presentar y el que ms claramente transmite la intuicin de las formas
normales.
Cambios a la tercera edicin:
Hay muchos cambios a este captulo desde la tercera edicin. La 1FN se define ahora formalmente. Las
dependencias funcionales se tratan en este captulo, en lugar de hacerlo en el Captulo 6. La razn es que la
normalizacin aporta la motivacin real para las dependencias funcionales, dado que se emplean sobre todo
para la normalizacin.
Se ha descrito un procedimiento simplificado para la inferencia de la dependencia funcional, basado en el
cierre de atributos y se aportan procedimientos simplificados para la comprobacin de las formas normales.
La cobertura de la teora de las dependencias multi valoradas y las formas normales ms all de la 4FN (es
decir, PJNF y DKNF) ha sido trasladada al Apndice C (el cul est disponible en la Web, no en el libro
impreso).
El proceso de diseo de esquemas relacionales se ha descrito significativamente con mayor detalle, adems de
algunos problemas de diseo que no se perciben mediante los procesos de normalizacin usuales.

Ejercicios
7.1
Explquese qu se entiende por repeticin de la informacin e imposibilidad de representacin de la
informacin. Explquese el motivo por el que estas propiedades pueden indicar un mal diseo de bases de
datos relacionales.
Respuesta:
Repeticin de informacin es una condicin en una base de datos relacional, donde los valores de un
atributo se determinan por los valores de otro en la misma relacin y, ambos valores, se repiten a travs de la
relacin.
Esto es un mal diseo de base de datos relacional, porque incrementa el almacenamiento necesario para la
relacin y hace ms difcil la actualizacin de la relacin.
Incapacidad para representar informacin es una condicin donde una relacin entre slo un subconjunto
propio de los atributos en una relacin. Esto es mal diseo de base de datos relacional porque todos los
atributos sin relacin deben rellenarse con valores nulos, de lo contrario una tupla sin informacin de relacin
no se puede insertar en la relacin.
Prdida de informacin es una condicin de una base de datos relacional, que resulta de la descomposicin
de una relacin en dos, que no se pueden combinar para recrear la relacin original. Es un mal diseo de base
de datos relacional porque ciertas consultas que no se pueden responder empleando la relacin reconstruida,
podran haber sido contestadas empleando la relacin original.
7.2

Supngase que se descompone el esquema R = (A, B, C, D, E) en


(A, B, C)
(A, D, E).

Demustrese que esta descomposicin es una descomposicin de reunin sin prdida, si se cumple el
siguiente conjunto F de dependencias funcionales:
A g BC
CD g E
BgD
EgA
Respuesta: Una descomposicin {R1, R2} es una descomposicin de reunin sin prdida si R1 R2 R1 o R1
R2 R2. Sea R1 = (A, B, C), R2 = (A, D, E) y R1 R2 = A. Dado que A es una clave candidata (vase el
Ejercicio 7.11), por lo tanto R1 R2 R1.
7.3
Indquese el motivo de que ciertas dependencias funcionales se denominen dependencias funcionales
triviales.
Respuesta: Ciertas dependencias funcionales se denominan triviales porque son cumplidas por todas las
relaciones.
7.4

Indquense todas las dependencias funcionales que satisface la relacin de la Figura 7.21.

Respuesta: Las dependencias funcionales no triviales son: A B y C B y una dependencia lgica


implcita: AC B . Hay 19 dependencias funcionales triviales de la forma a b, donde b a. C no
determina funcionalmente a A, porque las tuplas primera y tercera tienen valores iguales de C pero diferentes
de A. La mismas tuplas tambin muestran que B no determina funcionalmente a A. Igualmente, A no

determina funcionalmente a C, porque las primeras dos tuplas tienen valores iguales de A pero diferentes de
C. La mismas tuplas tambin muestran que B no determina funcionalmente a C.
7.5
Utilcese la definicin de dependencia funcional para argumentar que cada uno de los axiomas de
Armstrong (reflexividad, aumentatividad y transitividad) es vlido.
Respuesta: La definicin de dependencia funcional es: a b contiene sobre R si en cualquier relacin legal
r(R), para todos los pares de tuplas t1 y t2 en r tales que t1[a] = t2[a], es tambin el caso que t1[b] = t2[b].
Regla de la reflexividad: si a es un conjunto de atributos y b a, entonces a b.
Asmase que $ t1 y t2 tales que t1[a] = t2[a]
t1[b] = t2[b] dado que b a
a b definicin de FD
Regla de la aumentatividad: si a b y g es un conjunto de atributos, entonces ga gb.
Asmase que $ t1 y t2 tales que t1[ga] = t2[ga]
t1[g] = t2[g]
g ga
t1[a] = t2[a]
a ga
t1[b] = t2[b]
definicin de a b
t1[gb] = t2[gb]
gb = g b
ga gbdefinicin de FD
Regla de la transitividad: si a b y b g, entonces a g.
Asmase que $ t1 y t2 tales que t1[a] = t2[a]
t1[b] = t2[b]
t1[g] = t2[g]
ag

definicin de a b
definicin de b g
definicin de FD

7.6
Explquese el modo en que las dependencias funcionales pueden utilizarse para indicar lo siguiente:
Existe un conjunto de relaciones de uno a uno entre los conjuntos de entidades cuenta y cliente.
Existe un conjunto de relaciones varios a uno entre los conjuntos de entidades cuenta y cliente.

Figura 7.21.

Relacin del Ejercicio 7.4.

Respuesta: Supongamos que Pk(r) denota el atributo clave primaria de la relacin r.


Las dependencias funcionales Pk(cuenta)Pk (cliente) y Pk(cliente) Pk(cuenta) indican una relacin de
uno a uno porque dos tuplas cualesquiera con el mismo valor de cuenta, deben tener el mismo valor de cliente
y dos tuplas cualesquiera de acuerdo en cliente, deben tener el mismo valor de cuenta.
La dependencia funcional Pk(cuenta)Pk (cliente) indica una relacin de muchos a uno, dado que cualquier
valor de cuenta que se repita tendr el mismo valor de cliente, pero muchos valores de cuenta pueden tener el
mismo valor de cliente.

7.7
Considrese la siguiente regla propuesta para las dependencias funcionales: Si a b y g b
entonces a g. Prubese que esta regla no es segura mostrando una relacin r que satisfaga a b y g b,
pero no cumpla a g.
Respuesta: Considrese la siguiente regla: si A B y C B, entonces A C. As, a = A, b = B, g = C. La
siguiente relacin r es un contra ejemplo para la regla.
r:

A
a1
a1

B
b1
b1

C
c1
c2

Nota: A B y C B, (dado que ninguna de las 2 tuplas tiene el mismo valor de C, C B es una
trivialidad). Sin embargo, no es el caso que A C dado que el mismo valor de A est en dos tuplas, pero el
valor de C en esas tuplas difiere.
7.8
Utilcense los axiomas de Armstrong para probar la seguridad de la regla de la unin. (Sugerencia:
utilcese la regla de la aumentatividad para probar que, si a b, entonces a ab.Aplquese nuevamente la
regla de la aumentatividad, empleando a g, y luego aplquese la regla de la transitividad).
Respuesta: Para probar que:
i a b y a g, entonces a bg.
Siguiendo la sugerencia, se deduce:
ab
dado
aa ab
regla de la aumentatividad:
a ab unin de conjuntos idnticos
ag
dado
ab g b
regla de la aumentatividad:
a bg
regla de la transitividad y conmutatividad de la unin de conjuntos
7.9

Utilcense los axiomas de Armstrong para probar que la regla de la descomposicin es correcta.

Respuesta: La regla de la descomposicin y sus derivaciones desde los axiomas de Armstrong se presentan a
continuacin:
si a bg, entonces a b y a g
a bg
bg b
ab
bg g
ag
7.10

dado
regla de la reflexividad
regla de la transitividad
regla reflexiva
regla transitiva

Utilcense los axiomas de Armstrong para probar que la regla de la pseudotransitividad es correcta.

Respuesta: Prueba utilizando los axiomas de Armstrong de la regla de la pseudotransitividad:


si a b y gb d, entonces ag d.
ab
ag g b
g b d dado
ag d

dado
regla de la aumentatividad y conmutatividad de la unin de conjuntos
regla de la transitividad

7.11
Calclese el cierre del siguiente conjunto de dependencias funcionales F, para el esquema de la
relacin R=(A, B, C, D, E).
A BC
CD E
BD
EA
Indquese las claves candidatas de R.
Respuesta: Clculo del cierre del siguiente conjunto de dependencias funcionales F para el esquema de la
relacin R = (A, B, C, D, E).
A BC
CD E
BD
EA
Listado de las claves candidatas de R.
Nota: No es razonable esperar que los estudiantes enumeren todo de F+. Alguna representacin abreviada del
resultado sera aceptable, mientras que se encuentran los miembros no triviales de F+.
Comenzando con A BC, se concluye: A B y A C.
Dado que A B y B D, A D
Dado que A CD y CD E, A E
Dado que A A, se tiene
A ABCDE desde los pasos anteriores
Dado que E A, E ABCDE
Dado que CD E, CD ABCDE
Dado que B D y BC CD, BC ABCDE
Tambin, C C, D D, BD D, etc.

(descomposicin, transitiva)
(unin, descomposicin, transitiva)
(reflexiva)
(unin)
(transitiva)
(transitiva)
(aumentativa, transitiva)

Por lo tanto, cualquier dependencia funcional con A, E, BC, o CD en el lado izquierdo de la flecha est en F+,
no importa qu otros atributos aparecen en el FD.
Permtase * para representar cualquier conjunto de atributos en R, entonces F+ es BD B, BD D, C C,
D D, BD BD, B D, B B, B BD, y todos los FDs de la forma A* a, BC * a, CD * a, E*
a donde a es cualquier subconjunto de {A, B, C, D, E}. Las claves candidatas son A, BC, CD y E.
7.12

Utilizando las dependencias funcionales del Ejercicio 7.11, calclese B+.

Respuesta: Calculando B+ por medio del algoritmo de la Figura 7.7, se empieza con resultado = {B}.

Considerando FDs de la forma b g en F, se encuentra que solamente dependencias que satisfacen b


resultado son B B y B D. Por lo tanto resultado = {B, D}. Ninguna dependencia ms en F aplica ahora.
Por eso B+ = {B, D}
7.13

Utilizando las dependencias funcionales del Ejercicio 7.11, calclese el recubrimiento cannico Fc.

Respuesta: El conjunto dado de FDs F es:


A BC
CD E
B D
E A
El lado izquierdo de cada FD en F es nico. Ninguno de los atributos en el lado izquierdo o derecho de
cualquiera de los FDs es ajeno. Por lo tanto, el recubrimiento cannico Fc es igual a F.
7.14
Considrese el algoritmo de la Figura 7.22 para calcular a+. Prubese que este algoritmo es ms
eficiente que el mostrado en la Figura 7.7 (Apartado 7.3.3) y que calcula a+ correctamente.
Respuesta: El algoritmo es correcto porque:
Si se aade A a resultado hay una prueba que a A. Para ver esto obsrvese que trivialmente a a, por
lo que a es parte correcta de resultado. If A a se aade a resultado, debe haber algn FD b g tal que A
g y b sea todava un subconjunto de resultado. (De lo contrario fdcount sera distinto de cero y la condicin if
sera falsa.) Una prueba completa puede venir dada mediante la induccin sobre la profundidad de la
recursividad, para una ejecucin de addin, pero tal prueba slo se puede esperar de estudiantes con buenos
conocimientos de matemticas.
Si A a+, entonces se aade eventualmente A a resultado. Esto se verifica por induccin sobre la longitud
de la prueba de a A empleando los axiomas de Armstrong. Primero obsrvese que si el procedimiento
addin es llamado con algn argumento b, todos los atributos en b se aadirn a resultado. Tambin si un
determinado fdcount de FD est a 0, todos los atributos en su cola se aadirn definitivamente a resultado. El
caso de la base de la prueba, A a A a+, es obviamente cierto porque la primera llamada a addin tiene
el argumento a. La hiptesis inductiva es que, si a A se puede probar en n pasos o menos, entonces A
resultado. Si hay una prueba en n + 1 pasos que a A, entonces el ltimo paso era una aplicacin de
reflexividad, aumentatividad o transitividad sobre un hecho a b probado en n o menos pasos.

resultado := ;
/* fdcount es un array cuyo i ensimo elemento contiene el nmero de atributos en la parte izquierda del i
ensimo FD, que no se conocen an para estar en a+ */
for i := 1 a |F| do
begin
supngase que b g denota el i ensimo FD;
fdcount [i] :=|b|;
end
/* aparece es un array con una entrada por cada atributo. La entrada por atributo A es una lista de enteros.
Cada entero i
de la lista indica que A aparece en el lado izquierdo del i ensimo FD */
for each atributo A do
begin
aparece [A] := NIL;
for i := 1 a |F| do
begin
supngase que b g denota el i ensimo FD;
if A b then sumar i a aparece [A];
end
end
addin (a);
return (resultado);
procedure addin (a);
for each atributo A en a do
begin
if A resultado then
begin
resultado := resultado {A};
for each elemento i de aparece[A] do
begin
fdcount [i] :=fdcount [i] - 1;
if fdcount [i] := 0then
begin
supngase que b g denota el i ensimo FD;
addin (g);
end
end
end
end
Figura 7.22.

Un algoritmo para calcular a+


st

Si se emple reflexividad o aumentatividad en el paso (n + 1) , A debe haber estado en resultado al final del
nth paso. De lo contrario, por la hiptesis inductiva b resultado. Por lo tanto, la dependencia empleada en
probar b g, A g tendr fdcount definido a 0 por el final del paso ensimo. Por tanto, A se aadir a
resultado.
Para ver que este algoritmo es ms eficiente que el presentado en el captulo, ntese que se busca
cada FD una vez en el programa principal. El array resultante parece tiene un tamao proporcional al de los
FDs dados. Las llamadas de recursividad a addin resultan en procesamiento lineal en el tamao de parece.
Por tanto el algoritmo tiene complejidad temporal, que es lineal en el tamao de los FDs dados. Por otro lado,
el algoritmo dado en el texto tiene complejidad temporal cuadrtica, por ello puede realizar el bucle tantas
veces como el nmero de FDs, rastreando todos ellos una vez en cada bucle.

7.15
Dado el esquema de la base de datos R(a, b, c), y una relacin r del esquema R, escrbase una
consulta SQL para comprobar si se cumple la dependencia funcional b g c sobre la relacin r; Escrbase
tambin una declaracin SQL que haga cumplir la dependencia funcional. Supngase que no hay ningn valor
nulo.
Respuesta:
a.
La consulta se presenta a continuacin. Su resultado es no vaco si y slo si b g c no se mantiene en
r.
select b
from r
group by b
having count(distinct c) > 1
b.
create assertion b-hasta-c check
(not exists
(select b
from r
group by b
having count(distinct c) > 1
)
)
7.16
Demustrese que la siguiente descomposicin del esquema R, del Ejercicio 7.2, no es una
descomposicin de reunin sin prdida.
(A, B, C)
(C, D, E).
Sugerencia: Se da un ejemplo de la relacin r en el esquema R, de tal manera que
A, B, C (r) |x| C, D, E (r) r
Respuesta: Siguiendo la sugerencia, se emplea el siguiente ejemplo de r:
A
a1
a2

B
b1
b2

C
c1
c2

D
d1
d2

A
a1
a2

B
b1
b2

C
c1
c1

C
c1

D
d1

E
e1

Con R1 = (A, B, C), R2 = (C, D, E) :


a.
R1 (r) sera:

b.

R2 (r) sera:

E
e1
e2

c.

R1 (r) |x| R2 (r) sera:

A
a1
a1
a2
a2

B
b1
b1
b2
b2

C
c1
c1
c1
c1

D
d1
d2
d1
d2

E
e1
e2
e1
e2

Claramente, R1 (r) |x| R2 (r) r. Por lo tanto, esto es una reunin con prdida.
7.17
Sea R1, R2, . . . , Rn una descomposicin del esquema U. Sea u(U) una relacin y sea ri = RI (u);
Demustrese que
u r1 |x| r2 |x| ... |x| rn
Respuesta: Considrese alguna tupla t en u.
Ntese que ri = Ri (u) implica que t[Ri] ri, 1 i n. As,
t[R1] |x| t[R2] |x| . . . |x| t[Rn] r1 |x| r2 |x| . . . |x| rn
1

Mediante la definicin de reunin natural,


t[R1] |x| t[R2] |x| . . . |x| t[Rn] = a (sb (t[R1] t[R2] . . . t[Rn]))
1

donde la condicin b se cumple si los valores de los atributos con el mismo nombre en una tupla son iguales y
donde a = U. El producto cartesiano de tuplas sencillas genera una tupla. El proceso de seleccin se cumple
porque todos los atributos con el mismo nombre deben tener igual valor, dado que son proyecciones desde la
misma tupla. Finalmente, la clusula de proyeccin elimina nombres de atributos duplicados.
Mediante la definicin de descomposicin, U = R1 R2 ... . Rn, que significa que todos los
atributos de t estn en t[R1] |x| t[R2] |x| ... . . |x| t[Rn]. Es decir, t es igual al resultado de esta reunin.
Dado que t es una tupla cualquiera de u,
1

u r1 |x| r2 |x| . . . |x| rn


1

7.18
Demustrese que la descomposicin del Ejercicio 7.2 no es una descomposicin que preserve las
dependencias.
Respuesta: La dependencia B g D no est preservada. F1, la restriccin de F a (A, B, C) es A g ABC, A g
AB, A g AC, A g BC, A g B, A g C, A g A, B g B, C g C, AB g AC, AB g ABC, AB g BC, AB g AB,
AB g A, AB g B, AB g C, AC (igual que AB), BC (igual que AB), ABC (igual que AB). F2, la restriccin de F
a (C, D, E) es A g ADE, A g AD, A g AE, A g DE, A g A, A g D, A g E, D g D, E (igual que A), AD,
AE, DE, ADE (igual que A). Se ve fcilmente que (F1 F2)+ no contiene B g D, dado que el nico FD en F1
F2 con B como el lado izquierdo es B g B, un FD trivial. Se ver en el Ejercicio 7.22 que B g D est
efectivamente en F+. As, B g D no est preservado. Ntese que CD g ABCDE tampoco est preservado.
Un argumento sencillo es el siguiente: F1 no contiene dependencias con D en el lado derecho de la
flecha. F2 no contiene dependencias con B en el lado izquierdo de la flecha. Por lo tanto, para B g D al estar
preservado debe haber un FD, B g a en F+1 y a g D en F+2 (as B g D se deducira por transitividad). Dado
que la interseccin de dos esquemas es A, a = A. Obsrvese que B g A no est en F+1, pues B+ = BD.
7.19
Demustrese que es posible asegurar que una descomposicin que preserve dependencias en 3FN es
una descomposicin de reunin sin prdida garantizando que, al menos, un esquema contiene una clave
candidata para el esquema que se est descomponiendo. (Sugerencia: Demustrese que la reunin de todas las
proyecciones en los esquemas de la descomposicin no pueden tener ms tuplas que la relacin original).

Respuesta: Sea F un conjunto de dependencias funcionales que se cumplen en un esquema R. Sea s = {R1,R2,
. . . , Rn} una descomposicin que preserva dependencias en 3FN de R. Sea X una clave candidata de R.
Considrese una instancia legal r de R. Sea j = X (r) |x| R1 (r) |x| R2 (r) . . . Rn(r). Se desea
probar que r = j.
Se parte de que si t1 y t2 son dos tuplas en j tales que t1[X] = t2[X], entonces t1 = t2. Para probar esta
afirmacin se emplea el siguiente mtodo inductivo;
Sea F = F1 F2 . . . Fn, donde cada Fi es la restriccin de F al esquema Ri en s. Considrese el
empleo del algoritmo dado en la Figura 7.7 para calcular el cierre de X bajo F. Se emplea la induccin sobre
el nmero de veces que el bucle for se ejecuta este algoritmo.
Base : En el primer paso del algoritmo, resultado se asigna a X y, por tanto, dado que t1[X] = t2[X], se sabe
que t1[resultado] = t2[resultado] es cierto.
Paso de induccin : Supongamos que se cumple t1[resultado] = t2[resultado] al final de la k ejecucin del
bucle for.
Supngase que la dependencia funcional considerada en la k + 1 ejecucin del bucle for es b g g y que b
resultado. b resultado implica que t1[b] = t2[b] es cierto. El hecho de que se cumpla b g g para algn
conjunto de atributos Ri en s y que t1[Ri] y t2[Ri] estn en PRi (r), implica que t1[g] = t2[g] es tambin cierto.
Dado que ahora g se ha aadido a resultado por medio del algoritmo, se sabe que t1[resultado] = t2[resultado]
es cierto al final de la k + 1 ejecucin del bucle for.
Dado que s est preservando las dependencias y X es una clave de R, todos los atributos de R estn en
resultado cuando finaliza el algoritmo. As, t1[R] = t2[R] es cierto, es decir, t1 = t2 tal y como se afirm
anteriormente.
Esta afirmacin implica que el tamao de PX (j) es igual al de j. Ntese tambin que PX (j) = PX (r)
= r (dado que X es una clave de R). De esta manera se ha probado que el tamao de j es igual al de r.
Empleando el resultado del Ejercicio 7.17, se sabe que r j. Por lo que se concluye que r = j.
Ntese que como X est trivialmente en 3FN, s {X} es una descomposicin de reunin sin prdida
que preserva las dependencias en 3FN.
7.20
Indquense los tres objetivos de diseo de las bases de datos relacionales y explquese el motivo de
que cada uno de ellos sea deseable.
Respuesta: Los tres objetivos del diseo son descomposicin de reunin sin prdida, descomposicin que
preserva las dependencias y minimizacin de la repeticin de informacin. Son convenientes para poder
mantener una base de datos veraz, comprobar rpidamente la exactitud de las actualizaciones y la menor
cantidad de espacio posible.
7.21

Se da una descomposicin de reunin sin prdida en FNBC del esquema R del ejercicio 7.2.

Respuesta: A partir del Ejercicio 7.11, se sabe que B g D no es trivial y el lado izquierdo no es una
superclave. Mediante el algoritmo de la Figura 7.13 se deducen las relaciones {(A, B, C, E), (B, D)}. Esto es,
en FNBC.
7.22
Se da un ejemplo de un esquema de relacin R y un conjunto de dependencias funcionales F tales
que, al menos, haya tres descomposiciones de reunin sin prdida distintas de R en FNBC.

Respuesta: Dada la relacin R = (A, B, C, D), el conjunto de dependencias funcionales F = A g B, C g D,


B g C permite tres descomposiciones FNBC distintas.
R1 = {(A, B), (C, D), (B, C)}
est en FNBC como lo estn
R2 = {(A, B), (C, D), (A, C)}
R3 = {(B, C), (A, D), (A, B)}
7.23
Al disear una base de datos relacional, indquese el motivo de que se pueda escoger un diseo que
no sea FNBC.
Respuesta: FNBC no siempre preserva las dependencias. Por lo tanto, se pude querer elegir otra forma
normal (especficamente 3FN) con el fin de hacer, durante las actualizaciones, ms fcil la verificacin de las
dependencias. Esto evitara reuniones para verificar las dependencias e incrementara el rendimiento del
sistema.
7.24
Se da una descomposicin en 3FN de reunin sin prdida que conserve las dependencias del esquema
R del Ejercicio 7.2.
Respuesta: Primero se nota que las dependencias dadas en el Ejercicio 7.2 forman un recubrimiento
cannico. Generando el esquema a partir del algoritmo de la Figura 7.14, se obtiene
R = {(A, B, C), (C, D, E), (B, D), (E, A)}.
El esquema (A, B, C) contiene una clave candidata. Por lo tanto, R est en tercera forma normal desde una
descomposicin de reunin sin prdida que preserva las dependencias.
Ntese que el esquema original R = (A, B, C, D, E) ya est en 3FN. As, no era necesario aplicar el
algoritmo, tal y como se hizo anteriormente. El esquema original simple es trivialmente una reunin sin
prdida, descomposicin que preserva las dependencias.
7.25
Sea un atributo primo que aparece como mnimo en una clave candidata. Sean y conjuntos de
atributos tales que a g ,pero no se cumple que g a. Sea A un atributo que no est en ni en y que
cumple g a. Se dice que A es dependiente de manera transitiva de . Se puede reformular la definicin de
3FN de la manera siguiente:
un esquema de relacin R est en la 3FN, respecto a un conjunto F de dependencias funcionales, si no hay
atributos no primos A en R, para los cuales A sea dependiente de manera transitiva de una clave de R.
Demustrese que esta nueva definicin es equivalente a la original.
Respuesta: Supngase que R est en 3FN de acuerdo a la definicin del libro de texto. Se ve que est en 3FN
de acuerdo a la definicin en el ejercicio. Sea A un atributo no primo en R, que es transitivamente dependiente
sobre una clave a para R. Entonces ah existe b R, de tal manera que g A, a g , A a, A y no se
cumple que g a.
Pero entonces g A viola la definicin del libro de texto de 3FN, dado que
A implica g A no es trivial
Dado que g a no se cumple, no es una superclave.
Como A no es primo, no es ninguna clave candidata
Ahora se muestra que, si R est en 3FN de acuerdo a la definicin del ejercicio, est en 3FN de acuerdo a la
definicin del libro de texto. Supngase que R no est en 3FN de acuerdo a la definicin del libro de texto.

Entonces hay un FD, a g que incumple las tres condiciones.


As
a g no es trivial.
a no es una superclave para R.
Algn A en a no est en ninguna clave candidata.
Esto implica que A no es primo y a g A. Sea g una clave candidata para R. Entonces g g a, a g g no se
cumple (dado que a no es una superclave), A a y A g (dado A no es primo). As, A es transitivamente
dependiente de g, violando la definicin del ejercicio.
7.26
Una dependencia funcional a g se denomina una dependencia parcial, si hay un subconjunto
adecuado g de a, tal que g g . Se dice que es parcialmente dependiente de a. Un esquema de relacin R
est en la segunda forma normal (2FN), si cada atributo A en R cumple uno de los siguientes criterios:
Aparece en una clave candidata.
No es parcialmente dependiente de una clave candidata.
Demustrese que cada esquema en 3FN est en 2FN. (Sugerencia: demustrese que cada dependencia parcial
es una dependencia transitiva).
Respuesta: En referencia a las definiciones del Ejercicio 7.25, se dice que un esquema de relacin R est en
3FN si no hay ningn atributo primo A en R, para el que A sea transitivamente dependiente sobre una clave
para R.
Tambin se puede rescribir la definicin de 2FN dada aqu como :
Un esquema de relacin R est en 2FN, si ningn atributo no primo A es parcialmente dependiente
sobre cualquier clave candidata para R.
Para probar que todo esquema en 3FN est en 2FN, es suficiente mostrar que si un atributo no primo
A es parcialmente dependiente sobre una clave candidata a, entonces A es tambin transitivamente
dependiente sobre la clave a.
Sea A un atributo no primo en R. Sea a una clave candidata para R. Supngase que A es parcialmente
dependiente sobre a.
Desde la definicin de una dependencia parcial, se sabe que para algunos subconjuntos propios b de a, b g
A.
Dado que b a, a g b. Adems, b g a no se cumple, dado que a es una clave candidata.
Finalmente, dado que A no es primo, no puede estar ni en b ni en a.
De esto se concluye que a g A es una dependencia transitiva. Por lo tanto, se ha probado que cada esquema
en 3FN, lo est tambin en 2FN.
7.27
Dados los tres objetivos del diseo de bases de datos relacionales, indquese si hay alguna razn para
disear un esquema de base de datos que se halle en 2FN, pero que no se halle en una forma normal de orden
superior. (Vase el Ejercicio 7.26 para obtener la definicin de 2FN).
Respuesta: Los tres objetivos del diseo de bases de datos relacionales estn para evitar
Repeticin de informacin
Incapacidad para representar informacin
Prdida de informacin
2NF no prohbe tanta repeticin de informacin debido a que el esquema (A, B, C) con dependencias A g B y
B g C est permitido bajo 2FN, aunque el mismo par (B, C) pudiera estar asociado con muchos valores de A,

duplicando innecesariamente valores de C. Apara evitar esto se debe ir a la 3FN. La repeticin de informacin
se permite en 3FN en algunos, pero no todos, casos donde lo est en 2FN. As, en general, 3FN reduce la
repeticin de informacin. Dado que siempre se puede realizar una descomposicin en 3FN de reunin sin
prdida, no hay prdida de informacin al pasar de 2FN a 3FN.

Ntese que la descomposicin {(A, B), (B, C)} es una descomposicin en 3FN de reunin sin prdida
y que preserva dependencias, del esquema (A, B, C). Sin embargo, en el caso de que se elija esta
descomposicin, la recuperacin de la informacin sobre la relacin entre A, B y C requiere una reunin de
las dos relaciones que, en la correspondiente descomposicin en 2FN, se evita.
De este modo, la decisin sobre la forma normal a elegir depende del resultado de comparar el coste
de la verificacin de la dependencia con el de las reuniones. Generalmente se prefiere la 3FN. La verificacin
de las dependencias necesita hacerse con cada insercin o actualizacin de las instancias de un esquema en
2FN, mientras que slo algunas consultas requerirn la reunin de instancias de un esquema en 3FN.
7.28
Se da un ejemplo de un esquema de relacin R y un conjunto de dependencias tales que R est en
FNBC, pero no en 4FN.
Respuesta: El esquema de relacin R = (A, B, C, D, E) y el conjunto de dependencias
A gg BC
B gg CD
E gg AD
constituyen una descomposicin FNBC, sin embargo es claro que no est en 4FN. (Es BCNF porque todos los
FDs son triviales).
7.29

Explquese el motivo de que 4FN sea una forma normal ms deseable que FNBC.

Respuesta: 4FN es ms conveniente que FNBC porque reduce la repeticin de informacin. Si se considera
un esquema FNBC que no est en 4FN (vase el Ejercicio 7.28), se observa que la descomposicin en 4FN no
pierde informacin con tal que se use una descomposicin de reunin sin prdida, todava se reduce la
redundancia.
7.30

Explquese como pueden surgir las tuplas colgantes. Explquense los problemas que pueden causar.

Respuesta: Las tuplas colgantes pueden aparecer cuando se inserta una tupla en una relacin descompensada,
pero ninguna tupla se inserta en las otras relaciones de la composicin. Pueden originar que las consultas que
formen la reunin de una relacin descompuesta devuelvan valores incorrectos, dado que podran no estar
incluidas las tuplas colgantes. Como se ve en el Captulo 5, las tuplas colgantes se pueden evitar, mediante la
especificacin de ligaduras de integridad referencial.

CAPITULO

BASES DE DATOS ORIENTADAS A OBJETOS


Este captulo aporta una introduccin a las bases de datos orientadas a objetos. Este captulo y el siguiente
forman una unidad lgica y deberan ensearse consecutivamente. Es posible ensear estos captulos antes de
cubrir las normalizaciones (Captulo 7).
Los apartados del captulo anteriores al apartado sobre C++ y ODMG persistentes (Apartado 8.5), no
presuponen familiaridad alguna con un lenguaje de programacin orientada a objetos. Sin embargo, es
bastante posible que los estudiantes ya estn familiarizados con los conceptos bsicos y los lenguajes de la
programacin orientada a objetos. Para tales estudiantes el Apartado 8.2 se puede cubrir con relativa rapidez.
Sin embargo, es importante sealar la motivacin de las caractersticas de la orientacin a objetos en el
contexto de una base de datos y como los requerimientos varan en funcin del lenguaje de programacin.
Hay una tendencia a confundir lenguajes orientados a objetos persistentes con bases de datos
orientadas a objetos. Un lenguaje orientado a objetos persistentes debera ser simplemente un interface para
una base de datos. Es importante recordar a los estudiantes todas las caractersticas que un sistema de bases de
datos debe tener, de tal modo que puedan distinguir, con toas las de la ley, sistemas de bases de datos
orientados a objetos de sistemas que aportan interfaces orientados a objetos, pero aportan poco en el sentido
de las posibilidades de las bases de datos, tales como las facilidades en las consultas, catlogos en lnea,
control de concurrencias y recuperaciones.
Hay varios sistemas comerciales de bases de datos orientadas a objetos en el mercado, as como unos
pocos sistemas de uso pblico. Algunos de los sistemas comerciales tambin ofrecen precios reducidos o
copias gratuitas para usos acadmicos. Los sistemas comerciales de bases de datos orientadas a objetos
incluyen Objectivity (www.objectivity.com), ObjectStore (www.odi.com) y Versant (www.versant.com).
Cambios a la tercera edicin:
Se han actualizado algunos ejemplos para hacerlos ms intuitivos. El tratamiento de ODMG se ha actualizado
hasta ODMG-2, incluyendo la nueva sintaxis (con un prefijo d_ para las palabras clave) y la nueva
caracterstica d_rel_ref para declarar relaciones.

Ejercicios
8.1
Para cada una de las siguientes reas de aplicacin, explquese por qu un sistema de bases de datos
relacional resultara inadecuado. Indquense todos los componentes especficos del sistema que habra que
modificar.
a.
Diseo asistido por computadora.
b.
Bases de datos multimedia.
Respuesta: Cada una de las grandes aplicaciones contiene elementos de datos especializados (por ejemplo, un
mdulo de programa, una imagen grfica, voces digitalizadas, un documento). Estos elementos de datos
tienen operaciones especficas para ellos (por ejemplo, compilar, rotar, escuchar, formatear) que no se pueden
expresar mediante lenguajes de consultas relacionales. Son elementos de datos de longitud variable que hace
impracticable almacenarlos en los campos cortos que estn permitidos en los registros, para tales sistemas de
bases de datos. Por consiguiente es necesario cambiar tanto el modelo, como los lenguajes de manipulacin y
definicin de los datos.
Adems, las transacciones anidadas y las de larga duracin son tpicas de estas aplicaciones. Es
probable que sean necesarios cambios en los sistemas de concurrencia y recuperacin.
8.2
En qu se diferencia el concepto de objeto en el modelo orientado a objetos, del concepto de
entidad en el modelo entidad - relacin?
Respuesta: Una entidad es simplemente una coleccin de variables o elementos de datos. Un objeto es una
encapsulacin de datos as como los mtodos (cdigo) para operar sobre los datos. Los datos miembros de un
objeto son visibles directamente slo para sus mtodos. El mundo exterior puede acceder a los datos de los
objetos, slo pasando mensajes predefinidos para ello y estos mensajes se implementan por medio de los
mtodos.
8.3
Una compaa de alquiler de coches tiene una base de datos de los vehculos de su flota actual. Para
todos los vehculos incluye el nmero de identificacin del vehculo, el nmero de matrcula, fabricante,
modelo, fecha de adquisicin y el color. Se incluyen datos especficos para algunos tipos de vehculos:
Camiones: capacidad de carga.
Coches deportivos: potencia, edad mnima del conductor.
Mono volmenes: nmero de plazas.
Vehculos todo terreno: altura de los bajos, eje motor (traccin a dos o cuatro ruedas).
Constryase, para esta base de datos, la definicin del esquema de una base de datos orientada a objetos.
Utilcese la herencia donde sea conveniente.
Respuesta:

class vehculo {
int
string
string
string
date
color-type
};

id-vehculo;
nmero-matrcula;
fabricante;
modelo;
fecha-compra;
color;

class camin isa vehculo {


int
capacidad-carga;
};
class coches-deportivos isa vehculo {
int
potencia;
int
edad-mnima-conductor;
};
class monovolumen isa vehculo {
int
nmero-plazas;
};
class vehculos-todo-terreno isa vehculo {
real
altura-bajos;
drivetrain-type ejemotor;
};
Se supone que color-type y drivetrain-type son tipos definidos previamente.
8.4
Explquese el motivo de que pueda haber ambigedad en caso de herencia mltiple. Ilstrese la
explicacin con un ejemplo.
Respuesta: Una clase hereda las variables y mtodos de todas sus superclases inmediatas. As, podra heredar
una variable o mtodo del mismo nombre desde ms de una superclase. Cuando se referencia esa variable
particular o mtodo de un objeto de la subclase, hay una ambigedad con respecto a cul de las superclases
proporciona la herencia.
Por ejemplo, sean las clase profesor y estudiante, ambas con una variable departamento. Si una clase
profesor asistente hereda desde ambas clases, cualquier referencia a la variable departamento de un objeto
profesor asistente es ambiguo.
8.5
Explquese la diferencia entre el concepto de identidad de los objetos del modelo orientado a objetos
y el concepto de igualdad de las tuplas del modelo relacional.
Respuesta: La tupla igualdad est determinada por los valores de los datos. La identidad de los objetos es
independiente de los valores de los datos, dado que los sistemas orientados a objetos emplean identidad
incorporada.
8.6
Explquese la diferencia de significado entre los arcos de un grafo dirigido acclico, que represente la
herencia y uno que represente los continentes de objetos.
Respuesta: Un arco desde una clase A hasta otra B, en un GAD representando herencias, significa que un
objeto de la clase B lo es tambin de la clase A. Tiene todas las propiedades de los objetos de la clase A, ms
las de los objetos propios. En particular, hereda todas las variables y mtodos de la clase A. Puede, por

supuesto, aportar sus propias implementaciones para los mtodos heredados.


Un arco desde una clase A hasta otra B, en un GAD de continentes de objetos, significa que un objeto
de la clase A contiene a uno de clase B. No tiene por qu haber ningn parecido en las propiedades de A y B.
Ni A ni B heredan nada el uno del otro. Funcionan como tipos independientes, en la medida en que un objeto
de clase A puede acceder a la variables del objeto B contenido en l, slo por medio de los mtodos del objeto
B.
8.7
Por qu permiten los lenguajes de programacin persistentes los objetos transitorios? Sera ms
sencillo utilizar slo objetos persistentes y borrar los objetos innecesarios al terminar la ejecucin? Explquese
la respuesta.
Respuesta: La creacin, la eliminacin y los accesos, sern generalmente ms lentos y caros para objetos
persistentes almacenados en la base de datos, que para objetos transitorios en la memoria local de la
transaccin. Esto se debe a los gastos generales de conservar la semntica de las transacciones, seguridad e
integridad. Dado que un objeto transitorio es puramente local a la transaccin que lo crea y no se incorpora a
la base de datos, todos estos gastos generales se pueden evitar. As, con el objeto de aportar accesos eficientes
a los datos puramente locales y temporales, los lenguajes de programacin persistentes soportan objetos
transitorios.
8.8
Empleando C++ de ODMG
a.
Dense definiciones de esquemas correspondientes al esquema relacional de la Figura 3.39,
empleando referencias para expresar las relaciones de clave externa.
b.
Escrbanse programas para resolver cada una de las cuestiones del Ejercicio 3.10.
Respuesta:
a
La definiciones del esquema se pueden escribir de dos maneras distintas, una es una traduccin
directa del esquema relacional, mientras que la otra emplea, ms directamente, las caractersticas de la
orientacin a objetos.
El primer esquema es el siguiente:
class empleado : public d Object {
public:
d String nombre-persona;
d String calle;
d String ciudad;
};
class compaa : public d Object {
public:
d String nombre-compaa;
d String ciudad;
};
class trabaja : public d Object {
public:
d Ref<empleado> persona;
d Ref<compaa> comp;
d Long sueldo;
};

class jefe : public d Object {


public:
d Ref<empleado> persona;
d Ref<empleado> jefe;
};
El segundo esquema es el siguiente:
class empleado : public d Object {
public:
d String nombre-persona;
d String calle;
d String ciudad;
d Rel Ref<compaa, empleados> comp;
d Ref<empleado> jefe;
d Long sueldo;
};
class compaa : public d Object {
public:
d String nombre-compaa;
d String ciudad;
d Rel Set<empleado, comp> empleados;
};
const char empleados[] = empleados;
const char comp[] = comp;
b.
Se presentan consultas para el segundo esquema.
Averiguar la compaa con mayor nmero de empleados.
d Ref<compaa> mayoraempleados(){ d Database emp db obj;
d Database * emp db = emp db obj;
emp db- >open(Emp-DB);
d Transaction Trans;
Trans.begin();
d Extent<compaa> all comps(emp db);
d Iterator<d Ref<compaa>> iter=all comps.create iterator();
d Iterator<d Ref<empleado>> iter2;
d Ref<compaa> c, maxc;
d Ref<empleado> e;
int count;
int maxcount=0;
while(iter.next(c)) {
iter2=(c- >empleados).create iterator();
count=0;
while(iter2.next(e)) {
count++;
}
if(maxcount < count) {
maxcount=count;
maxc=c;
}
}
Trans.commit();
return maxc;
}

Averiguar la compaa con la nmina ms reducida.


d Ref<compaa> menorpago(){ d Database emp db obj;
d Database * emp db = emp db obj;
emp db- >open(Emp-DB);
d Transaction Trans;
Trans.begin();
d Extent<compaa> all comps(emp db);
d Iterator<d Ref<compaa>> iter=all comps.create iterator();
d Iterator<d Ref<empleado>> iter2;
d Ref<compaa> c, minc;
d Ref<empleado> e;
d Long sal;
d Long minsal=0;
while(iter.next(c)) {
iter2=(c- >empleados).create iterator();
sal=0;
while(iter2.next(e)) {
sal+=e- >sueldo;
}
if(minsal > sal) {
minsal=sal;
minc=c;
}
}
Trans.commit();
return minc;
}
Encontrar las compaas cuyos empleados ganan un salario mayor, en promedio, que el salario medio del
Banco Importante.
d Ref<compaa> mayorsueldo(){ d Database emp db obj;
d Database * emp db = emp db obj;
emp db- >open(Emp-DB);
d Transaction Trans;
Trans.begin();
d Extent<compaa> all comps(emp db);
d Iterator<d Ref<compaa>> iter=all comps.create iterator();
d Iterator<d Ref<empleado>> iter2;
d Ref<compaa> c, FBC=all comps.select(nombre-compaa=Banco Importante);
d Set<d Ref<compaa>> result;
d Ref<empleado> e;
int count;
d Long avsal=0, avFBCsal=0, sal=0;
iter2=(FBC- >empleados).create iterator();
while(iter2.next(e)) {
count++;
sal+=e- >sueldo;
}
avFBCsal=sal/count;
while(iter.next(c)) {
iter2=(c- >empleados).create iterator();
sal=0; count=0;
while(iter2.next(e)) {
sal+=e- >sueldo;
count++;
}

avsal=sal/count;
if(avsal > avFBCsal) {
result.insert element(c);
}
}
Trans.commit();
return result;
}
8.9
Utilizando C++ de ODMG, dense definiciones de esquema correspondientes al diagrama E-R de la
Figura 2.29. Utilcense referencias para implementar relaciones.
Respuesta:
class persona : public d Object {
public:
d String nombre;
d String direccin;
d String telfono;
};
class autor : public person {
public:
d String URL;
d Rel Set<libro, autores> libros;
};
class editor : public person {
public:
d String URL;
d Rel Set<libro, libro.editor> libros;
};
class cliente : public person {
public:
d String email;
d Rel Set<cestacompra, propietario> cestas;
};
class libro : public d Object {
public:
int ao;
d String ttulo;
float precio;
d String ISBN;
d Rel Set<autor, libros> autores;
d Rel Ref<editor, libros> libro.editor;
};

class cestacompra : public d Object {


public:
d String ID-cesta;
d Rel Ref<cliente, cestas> propietario;
d Set<d Ref<libro qty>> contiene;
};
class almacn : public d Object {
public:
d String direccin;
d String telfono;
d String cdigo;
d Set<d Ref<libro qty>> stocks;
};
class libro qty : public d Object {
public:
d Ref<libro> libro;
int nmero;
};
const char libros[] = libros;
const char autores[] = autores;
const char libro editor[] = libro editor;
const char cestas[] = cestas;
const char propietario[] = propietario;
8.10
Explquese, por medio de un ejemplo, cmo representar una relacin ternaria en un modelo de datos
orientado a objeto, como C++ de ODMG.
Respuesta: Para representar relaciones ternarias, crear una clase correspondiente a la relacin y referirse a las
entidades en esta clase. Por ejemplo, para representar la relacin ternaria de la Figura 2.13 se hace lo
siguiente:
class trabajaen : public d Object {
public:
d Ref<empleado> emp;
d Ref<sucursal> sucursal;
d Ref<trabajo> trabajo;
};
8.11
Explquese la manera en que se implementa un puntero persistente. Comprese esta implementacin
con la de los punteros de los lenguajes de propsito general, tales como C o Pascal.
Respuesta: Los punteros persistentes se pueden implantar como Tipos de Datos Abstractos (TDAs). Estos
TDAs deben aportar las operaciones de punteros tpicas, como incrementando y desreferenciando, as su
empleo y el de los punteros regulares es uniforme. Por otro lado, los punteros regulares generalmente
incorporan tipos, implementados como parte del lenguaje.

8.12

Si se crea un objeto sin que haya referencias al mismo, cmo se puede borrar?

Respuesta: Si se crea un objeto sin ninguna referencia sobre l, no puede ser accedido ni borrado por medio
de un programa. La nica manera para el sistema de la base de datos es, por s mismo, localizar y borrar tales
objetos. Esto se denomina recogida de basura. Una forma de hacer la recogida de basura es por el mtodo de
marcar y barrer. Primero se marcan los objetos referidos directamente por programas. Despus se siguen las
referencias desde estos objetos a otros que, asu vez, se marcan. El procedimiento continua repetidas veces,
hasta que no hay ms objetos sin marcar que puedan alcanzarse, mediante cadenas de referencia desde objetos
marcados. En este punto, se borran todos los objetos restantes sin marcar. Este mtodo es correcto; se puede
probar que si no se marca ningn nuevo objeto despus de una ronda de marcar y barres, los restantes objetos
sin marcar estn de hecho sin referenciar.
8.13
Considrese un sistema que proporcione objetos persistentes. Se trata necesariamente de un sistema
de bases de datos?. Explquese la respuesta.
Respuesta: Un sistema de base de datos debe proporcionar prestaciones como transacciones, consultas
(recuperacin asociativa de objetos), seguridad e integridad. Un sistema de objetos persistentes puede no
ofrecer tales prestaciones.

CAPITULO

BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS


Este captulo describe extensiones a los sistemas de bases de datos relacionales, para soportar tipos de datos
complejos y caractersticas orientadas a objetos. Tales sistemas extendidos se denominan sistemas
relacionales orientados a objetos. Desde que el captulo se incorpor a la tercera edicin, la mayora de los
sistemas de bases de datos comerciales han incorporado algunos complementos a las caractersticas de las
relaciones orientadas a objetos y estas caractersticas se han estandarizado como parte del SQL:1999.
Sera instructivo asignar ejercicios a los estudiantes con el objeto de encontrar aplicaciones en las
que el modelo relacional objeto, en particular los objetos complejos, fuera ms idneo que el modelo
relacional tradicional.
Cambios a la tercera edicin:
Las caractersticas del lenguaje de consultas se basan ahora en el estndar SQL:1999, el cual no estaba listo
cuando se public la tercera edicin; esa edicin estaba basada en las caractersticas de diferentes propuestas
de ampliacin del SQL.

Ejercicios
9.1

Considrese el esquema de la base de datos


Emp = (enombre, setof(Hijos), setof(Conocimientos))
Hijos = (nombre, Cunpleaos)
Cumpleaos = (da, mes, ao)
Conocimientos = (escribir-a-mquina,setof(Exmenes))
Exmenes = (ao, ciudad)

Supngase que los atributos de tipo setof (Hijos), setof(Conocimientos), y setof(Exmenes), tienen nombres
de atributos ConjuntoHijos, ConjuntoConocimientos y ConjuntoExmenes, respectivamente. Supngase que
la base de datos contiene una relacin emp (Emp). Escrbanse las siguientes consultas en SQL:1999 (con las
extensiones descritas en este captulo).
a.
Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.
b.
Encuntrense los empleados que hicieron un examen del tipo de conocimiento escribir-a-mquina
en la ciudad de San Rafael.
c.
Indicar todos los tipos de conocimiento de la relacin emp.
Respuesta:
a.
Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.
select nombree
from emp as e, e.ConjuntoHijos as c
where Marzo in
(select cumpleaos.mes
from c
)
b
Encuntrense los empleados que hicieron un examen del tipo de conocimiento escribir-a-mquina
en la ciudad de San Rafael.
select e.nombree
from emp as e, e.ConjuntoConocimientos as s, s.ConjuntoExmenes as x
where s.tipo = escribir a mquina and x.ciudad = San Rafael
c.

Indicar todos los tipos de conocimiento de la relacin emp.


select distinct s.tipo
from emp as e, e.ConjuntoExmenes as s

9.2
Redisese la base de datos del Ejercicio 9.1 en la primera y cuarta forma normal. Indquense las
dependencias funcionales o multivaloradas que se den por supuestas. Indquense tambin todas las
restricciones de integridad referencial que deban incluirse en los esquemas de la primera y cuarta formas
normales.
Respuesta: Para poner el esquema en primera forma normal se aplanan todos los atributos en un esquema de
relacin sencilla.
Empleado-detalles = ( nombree, nombrec, dab, mesb, aob, tipos, aox, ciudadx)
Se renombran los atributos por motivos de claridad; nombrec es Hijos.nombre y dab, mesb, aob son los
atributos de Cumpleaos; tipos es Conocimientos.tipo y aox y ciudadx son los atributos de Exmenes. Los
FDs y las dependencias multivaloradas supuestas son:
nombree, nombrec

dab, mesb, aob

nombree
nombree, tipos

gg
gg

nombrec, dab, mebs, aob


aox, ciudadx

El FD captura el hecho de que un hijo tenga un nico cumpleaos, bajo la suposicin de que un empleado no
puede tener dos hijos del mismo nombre. Los MVDs capturan el hecho de que no hay relacin entre los hijos
de un empleado y su formacin.
El esquema rediseado en cuarta forma normal es:
Empleado = ( nombree)
Hijo = ( nombree, nombrec, dab, mesb, aob)
Conocimientos = (nombree, tipos, aox, ciudadx)
nombree ser la clave primaria de Empleado y ( nombree, nombrec) ser la clave primaria de Hijo. El atributo
nombree es una clave externa en Hijo y en Conocimientos, refirindose a la relacin Empleado.
9.3
Considrense los esquemas de la tabla personas y las tablas estudiantes y profesores, que se crearon
bajo persona en el Apartado 9.3. Se da un esquema relacional en tercera forma normal que represente la
misma informacin. Recuprense las restricciones sobre subtablas y dense todas las restricciones que deban
imponerse en el esquema relacional para que cada ejemplar de la base de datos del esquema relacional pueda
representarse tambin mediante un ejemplar del esquema con herencia.
Respuesta: Un esquema relacional correspondiente, en tercera forma normal, es el siguiente:
Personas = (nombre, direccin)
Estudiantes = (nombre, titulacin, departamento-estudiante)
Profesores = (nombre, sueldo, departamento-profesor)
nombre es la clave primaria de las tres relaciones y es tambin una clave externa referida a Personas, para
Estudiantes y Profesores.
En lugar de situar slo el atributo nombre de Personas, en Estudiantes y Profesores, se pueden
incluir sus dos atributos. En ese caso, habr un leve cambio, a saber (nombre, direccin) se convertir en la
clave externa de Estudiantes y Profesores. La claves primarias permanecern igual en todas las tablas.
9.4
Una compaa de alquiler de coches tiene una base de datos de los vehculos de su flota actual. Para
todos los vehculos incluye su nmero de bastidor, el nmero de matrcula, fabricante, modelo, la fecha de
compra y su color. Se incluyen datos especficos para algunos tipos de vehculos:
Camiones: capacidad de carga.
Coches deportivos: potencia, edad mnima del arrendatario.
Mono volmenes: nmero de plazas.
Vehculos todo terreno: altura de los bajos, eje motor (traccin a dos o cuatro ruedas).
Constryase una definicin de esquema para esta base de datos en SQL:1999. Utilcese la herencia donde sea
conveniente.
Respuesta: Para este problema se emplea la herencia de tablas. Se supone que MiFecha, Color y Tipo Eje
Motor son tipos definidos previamente.

create type Vehculo


(id-vehculo integer,
nmero matrcula char(15),
fabricante char(30),
modelo char(30),
fecha-compra MiFecha,
color Color)
create table vehculo of type Vehculo
create table camin
(capacidad-carga integer)
under vehculo
create table cochedeportivo
(potencia integer
edad-mnima-conductor integer)
under vehculo
create table monovolumen
(nmero-plazas integer)
under vehculo
create table vehculotodoterreno
(altura-bajos real
ejemotor Tipo Eje Motor)
under vehculo
9.5
Explicar la diferencia entre un tipo x y un tipo de referencia ref(x). En qu circunstancias se
escogera un tipo de referencia?
Respuesta: Si el tipo de un atributo es x, entonces en cada tupla de la tabla , correspondiente a ese atributo,
hay un objeto actual de tipo x . Si su tipo es ref(x), entonces en cada tupla, correspondiente a ese atributo, hay
una referencia a algn objeto de tipo x. Se elige un tipo de referencia para un atributo, si la finalidad prevista
de ese atributo es referirse a un objeto independiente.
9.6
Considrese el diagrama E-R de la Figura 2.11, que contiene atributos compuestos, multi valorados y
derivados.
a.
Se da una definicin de esquema en SQL:1999 correspondiente al diagrama E-R. Utilcese un array
para representar el atributo multivalorado y constructoras apropiadas de SQL:1999 para representar los otros
tipos de atributos.
b.
Dense constructores para cada uno de los tipos estructurados definidos.
Respuesta:
a.
A continuacin se presenta la correspondiente definicin del esquema en SQL extendido: Ntese
que el atributo edad ha sido convertido en un mtodo.
create type Nombre
(primer-nombre varchar(15),
inicial-segundo-nombre char,
apellido varchar(15))

create type Calle


(nombre-calle varchar(15),
nmero-calle varchar(4),
nmero-apartamento varchar(7))
create type Direccin
(calle Calle,
ciudad varchar(15),
provincia varchar(15),
cdigo-postal char(6))
create table cliente
(nombre Nombre,
id-cliente varchar(10),
direccin Direccin,
telfonos char(7) array[10],
dob fecha)
method integer edad()
b

create function Nombre (f varchar(15), m char, l varchar(15))


returns Nombre
begin
set primer-nombre = f;
set inicial-segundo-nombre = m;
set apellido = l;
end
create function Calle (snombre varchar(15), sno varchar(4), ano varchar(7))
returns Calle
begin
set nombre-calle = snombre;
set nmero-calle = sno;
set nmero-apartamento =ano;
end
create function Direccin (s Calle, c varchar(15), sta varchar(15), postal varchar(6))
returns Direccin
begin
set calle = s;
set ciudad = c;
set provincia =sta;
set cdigo-postal = postal;
end

9.7
Se da una definicin del esquema en SQL:1999 del diagrama E-R de la Figura 2.17, que contiene
especializaciones.
Respuesta:
create type Persona
(nombre varchar(30),
calle varchar(15),
ciudad varchar(15))
create type Empleado
under Persona

(sueldo integer)
create type Cliente
under Persona
(valoracin-crdito integer)
create type Responsable
under Empleado
(nmero-oficina integer)
create type Cajero
under Empleado
(nmero-estacin integer,
horas-trabajadas integer)
create type Secretaria
under Empleado
(horas-trabajadas integer)
create table persona of Persona
create table empleado of Empleado
under persona
create table cliente of Cliente
under persona
create table responsable of Responsable
under empleado
create table cajero of Cajero
under empleado
create table secretaria of Secretaria
under empleado
9.8
Considrese el esquema relacional de la Figura 3.39.
a.
Se da una definicin de esquema en SQL:1999 correspondiente al esquema relacional, pero usando
referencias para expresar las relaciones de claves externas.
b.
Escrbanse cada una de las consultas del Ejercicio 3.10 del esquema anterior, usando SQL:1999.
Respuesta:
a.
La definicin del esquema se presenta a continuacin. Ntese que se pueden aadir referencias
atrasadas, pero no son tan importantes como en OODBS, porque las consultas se pueden escribir en SQL y las
reuniones pueden cuidar las restricciones de integridad.
create type Empleado
(nombre-persona varchar(30),
calle varchar(15),
ciudad varchar(15))
create type Compaa
(nombre-compaa varchar(15),
(ciudad varchar(15))

create table empleado of Empleado


create table compaa of Compaa
create type Trabaja
(persona ref(Empleado) scope empleado,
comp ref(Compaa) scope compaa,
sueldo int)
create table trabaja of Trabaja
create type Jefe
(persona ref(Empleado) scope empleado,
(jefe ref(Empleado) scope empleado)
create table jefe of Jefe
b

9.9

i.

select comp g nombre


from trabaja
group by comp having count(persona) all(select count(persona)
from trabaja
group by comp)

ii.

select comp g nombre


from trabaja
group by comp having count(sueldo) all(select count(sueldo)
from trabaja
group by comp)

iii

select comp g nombre


from trabaja
group by comp having avg(sueldo) > (select avg(sueldo)
from trabaja
where comp g nombre-compaa=Banco Importante)

Considrese una base de datos de empleados con las relaciones


empleado (nombre-empleado, calle, ciudad)
trabaja (nombre-empleado, nombre-compaa, sueldo)

donde las claves primarias estn subrayadas. Escrbase una consulta para encontrar las compaas cuyos
empleados ganan un salario superior, en media, que el sueldo medio del Banco Importante.
a.
Empleando las funciones SQL:1999 donde sea apropiado.
b.
Sin emplear funciones SQL:1999.

Respuesta:
a.
create function sueldo-medio(cnombre varchar(15))
returns integer
declare resultado integer;
select avg(sueldo) into resultado
from trabaja
where trabaja.compaa-nombre = cnombre
return resultado;
end
select nombre-compaa
from trabaja
where sueldo-medio(nombre-compaa) > sueldo-medio (Banco Importante)
b

select nombre-compaa
from trabaja
group by nombre-compaa
having avg (sueldo) > (select avg (sueldo)
from trabaja
where nombre-compaa = Banco Importante)

9.10
Rescrbase la consulta del Apartado 9.6.1 que devuelve los ttulos de todos los libros que tienen ms
de un autor, empleando la clusula with en lugar de la funcin.
Respuesta:
with autoresmltiples(ttulo, contar) as
select ttulo, count(autor)
from autores
group by ttulo
select libros4.ttulo
from libros4, autoresmltiples
where libros4.ttulo = autoresmltiples.ttulo
and autoresmltiples.contar > 1
9.11
Comprese el uso de SQL incorporado con el empleo en SQL de las funciones definidas utilizando
un lenguaje de programacin de propsito general. En qu circunstancias se debe utilizar cada una de estas
caractersticas?
Respuesta: Las funciones SQL son principalmente un mecanismo para extender la potencia del SQL, para
gestionar atributos de tipos de datos complejos (como imgenes) o para realizar operaciones complejas y no
estndar. El SQL incorporado es til cuando son necesarias acciones imperativas, como la visualizacin de
resultados y la interaccin con el usuario. Esto no se puede hacer convenientemente en un entorno de slo
SQL. El SQL incorporado se puede emplear, en lugar de funciones SQL, para la recuperacin de datos y,
entonces, realizar operaciones de las funciones sobre el resultado del SQL. Sin embargo, un inconveniente es
que muchas evaluaciones de las consultas funcionalmente pueden terminar por buclear en el cdigo del
lenguaje anfitrin.
9.12
Supngase que ha sido contratado como consultor para seleccionar un sistema de base de datos para
la aplicacin de su cliente. Para cada una de las aplicaciones siguientes, indquese el tipo de sistema de base
de datos (relacional, base de datos orientada a objetos basada en un lenguaje de programacin persistente,
relacional orientada a objetos; no se debe especificar ningn producto comercial) que recomendara.
Justifquese la recomendacin.

a.
b.
c.

Sistema de diseo asistido por computadora para un fabricante de aviones.


Sistema para realizar el seguimiento de los donativos hechos a los candidatos a un cargo pblico.
Sistema de informacin de ayuda para la realizacin de pelculas.

Respuesta:
a.
Un sistema de diseo asistido por computadora para un fabricante de aviones:
Una base de datos orientada a objetos sera adecuada para esto. La razn es que CAD requiere tipos de datos
complejos y, al estar orientadas al clculo, las herramientas CAD son generalmente usadas en un entorno de
lenguajes de programacin que necesita acceder a la base de datos.
b
Un sistema para realizar el seguimiento de los donativos hechos a los candidatos a un cargo pblico:
Un sistema relacional sera adecuado para esto, al ser de esperar que los tipos de datos resulten sencillos y un
mecanismo potente de consultas sea esencial.
c.
Un sistema de informacin de ayuda a la realizacin de pelculas:
Aqu habr un uso intensivo de tipos de datos multimedia y otros tipos de datos complejos. Pero las consultas
son probablemente sencillas, por lo que es adecuado un sistema relacional objeto.

CAPITULO

10

XML
En los cuatro aos y medio desde que se public la edicin anterior, XML ha pasado de ser una propuesta
poco conocida para el Consorcio World Wide Web, a un extenso conjunto de estndares que estn siendo
empleados ampliamente y cuyo uso crece rpidamente. En este perodo los objetivos del XML han pasado de
ser una mejora al SGML o HTML, hasta convertirse en el modelo de datos bsico para el intercambio de
datos.
Nuestra visin de XML est decididamente centrada en las bases de datos: es importante ser
consciente que muchos de los usos de XML son centros de documentos, pero creemos que la gran mayora de
las aplicaciones XML sern la representacin y el intercambio de datos, entre aplicaciones de bases de datos.
En este sentido, XML es un modelo de datos que aporta un nmero de prestaciones ms all de las del modelo
relacional, en particular la capacidad para representar informacin afn en una unidad sencilla, mediante el
empleo de estructuras anidadas. Los dominios de aplicaciones especficas, para la representacin e
intercambio de datos, necesitan sus propios estndares que definan el esquema de datos.
Dada la amplia naturaleza del XML y los estndares relacionados, este captulo slo intenta aportar
una introduccin y no una descripcin completa. Para un curso que pretenda explorar XML en detalle se
puede necesitar material suplementario. Podra incluir tanto informacin en lnea como libros sobre XML.

Ejercicios
10.1
Se da una representacin alternativa de la informacin bancaria que contenga los mismos datos que
en la Figura 10.1,pero empleando atributos en vez de sub elementos. Se da tambin el DTD para esta
representacin.
Respuesta:
a.
Representacin XML de datos, empleando atributos.
<banco>
<cuenta nmero-cuenta=A-101 nombre-sucursal=Centro
saldo=500>
</cuenta>
<cuenta nmero-cuenta=A-102 nombre-sucursal=Navacerrada
saldo=400>
</cuenta>
<cuenta nmero-cuenta=A-201 nombre-sucursal=Galapagar
saldo=900>
</cuenta>
<cliente nombre-cliente=Gonzlez calle-cliente=Alma
ciudad-cliente=Palo Alto>
</cliente>
<cliente nombre-cliente=Hayes calle-cliente=Main
ciudad-cliente=Harrison>
</cliente>
<impositor nmero-cuenta=A-101 nombre-cliente=Gonzlez>
</impositor>
<impositor nmero-cuenta=A-201 nombre-cliente=Gonzlez>
</impositor>
<impositor nmero-cuenta=A-102 nombre-cliente=Hayes>
</impositor>
</banco>
b

DTD para el banco:


<!DOCTYPE banco [
<!ELEMENT cuenta >
<!ATTLIST cuenta
nmero-cuenta ID #REQUIRED
nombre-sucursal CDATA #REQUIRED
saldo CDATA #REQUIRED >
<!ELEMENT cliente >
<!ATTLIST cliente
nombre-cliente ID #REQUIRED
calle-cliente CDATA #REQUIRED
calle-cliente CDATA #REQUIRED >
<!ELEMENT impositor >
<!ATTLIST impositor
nmero-cuenta IDREF #REQUIRED
nombre-cliente IDREF #REQUIRED >
]>

10.2
Demustrese, mediante un DTD, cmo representar la relacin anidada libros del Apartado 9.1,
empleando XML.
Respuesta:
<!DOCTYPE bib [
<!ELEMENT libro (ttulo, autor+, editor, palabra clave+)>
<!ELEMENT editor (nombre-pub, sucursal-pub) >
<!ELEMENT ttulo (#PCDATA )>
<!ELEMENT ttulo ( #PCDATA )>
<!ELEMENT palabra-clave (#PCDATA )>
<!ELEMENT nombre-pub (#PCDATA )>
<!ELEMENT sucursal-pub (#PCDATA )>
]>
10.3

Se da la DTD, para una representacin XML, del siguiente esquema relacional anidado
Emp = (nombree,ConjuntoHijos setof(Hijos), ConjuntoMaterias setof(Materias))
Hijos = (nombre, Cunpleaos)
Cumpleaos = (da, mes, ao)
Materias = (tipo, ConjuntoExmenes setof(Exmenes))
Exmenes = (ao, ciudad)

Respuesta:
<!DOCTYPE db [
<!ELEMENT emp ( nombree, hijos*, materias*)>
<!ELEMENT hijos (nombre, cumpleaos)>
<!ELEMENT cumpleaos (da, mes, ao)>
<!ELEMENT materias (tipo, exmenes+)>
<!ELEMENT exmenes (ao, ciudad)>
<!ELEMENT nombree (#PCDATA )>
<!ELEMENT nombre (#PCDATA )>
<!ELEMENT da (#PCDATA )>
<!ELEMENT mes (#PCDATA )>
<!ELEMENT ao (#PCDATA )>
<!ELEMENT tipo (#PCDATA )>
<!ELEMENT ciudad (#PCDATA )>
]>
10.4
Escrbanse las siguientes consultas en XQuery, asumiendo la DTD del Ejercicio 10.3.
a.
Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.
b.
Encuntrense los empleados que hicieron un examen del tipo de materia mecanografa en la ciudad
de Madrid.
c.
Lstense todos los tipos de materias en Emp.
Respuesta:
a.
Encuntrense los nombres de todos los empleados que tengan un hijo nacido en Marzo.
for $e in /db/emp,
$m in distinct($e/hijos/cumpleaos/mes)
where $m = Marzo
return $e/ nombree
b.

Encuntrense los empleados que hicieron un examen del tipo de materia mecanografa en la

ciudad de Madrid.
For $e in /db/emp
$s in $e/materias[tipo=mecanografa]
$examen in $s/exmenes
where $examen/ciudad= Madrid
return $e/ nombree
c.
Encuntrense los empleados que hicieron un examen del tipo de materia mecanografa en la
ciudad de Madrid.
for $t in distinct (/db/emp/materias/tipo)
return $e/enombre
10.5
Escrbanse las consultas en XSLT y XPath sobre la DTD del Ejercicio 10.3, para listar todos los
tipos de materia en Emp.
Respuesta:
a.
XPath: /db/emp/materias/tipo
b.
XSLT:
<xsl:template match=/db/emp>
<tiposmateria>
<xsl:apply-templates/>
<tiposmateria>
</xsl:template>
<xsl:template match=/materias>
<tiposmateria>
<xsl:value-of select=tipo/>
<tiposmateria>
</xsl:template>
<xsl:template match=./>
10.6
Escrbase una consulta en XQuery en la representacin XML de la Figura 10.1, para encontrar el
saldo total entre todas las cuentas en cada sucursal. (Sugerencia: Emplese una consulta anidada para obtener
el efecto de un SQL group by.)
Respuesta:
for $b in distinct (/banco/cuenta/nombre-sucursal)
return
<nombre-sucursal>
$b/text()
let $s := sum (/banco/cuenta[nombre-sucursal=$b]/saldo
return $s
</nombre-sucursal>
10.7
Escrbase una consulta en XQuery en la representacin XML de la Figura 10.1, para calcular la
reunin externa por la izquierda de los elementos cliente con elementos cuenta. (Sugerencia: se puede usar
la cuantificacin universal.)

Respuesta:
<lojoin>
for $b in /banco/cuenta,
$c in /banco/cliente,
$d in /banco/impositor
where $a/nmero-cuenta = $d/nmero-cuenta
and $c/nombre-cliente = $d/nombre-cliente
return <cuenta-cliente> $c $a </cuenta-cliente>
|
for $c in /banco/cliente,
where every $d in /banco/impositor satisfies
(not ($c/nombre-cliente=$d/nombre-cliente))
return <cuenta-cliente> $c </cuenta-cliente>
</lojoin>
10.8
Se da una consulta en XQuery para invertir el anidamiento de los datos del Ejercicio 10.2. Esto es, el
nivel ms externo del anidamiento la salida debe tener los elementos correspondientes a los autores y cada
uno de estos elementos debe tener anidados con los correspondientes a todos los libros escritos por el autor.
Respuesta:
For $a in distinct (/bib/libro/autor)
return
<autor>
$a/text()
for $b in (/bib/libro/[autor=$a])
return
<libro>
$b/ttulo
$b/editor
$b/palabra-clave
< \libro>
< \autor>
10.9
Se da la DTD para una representacin XML de la informacin de la Figura 2.29. Crear un tipo de
elemento separado para representar cada relacin, pero utilcense ID e IDREF para implantar claves primarias
y externas.
Respuesta: La respuesta se presenta en la Figura 10.1.
10.10 Escrbanse consultas en XSLT y XQuery que devuelvan los elementos cliente con los elementos
cuentas asociadas, anidados en los elementos cliente, dada la representacin de la informacin bancaria
empleando ID e IDREFS en la Figura 10.8.
<!DOCTYPE librera [
<!ELEMENT cesta (contiene+, cesta-de)>
<!ATTLIST cesta
id-cesta ID #REQUIRED >
<!ELEMENT cliente (nombre, direccin, telfono)>
<!ATTLIST cliente
email ID #REQUIRED >
<!ELEMENT libro (ao, ttulo, precio, escrito-por, publicado-por)>
<!ATTLIST libro
ISBN ID #REQUIRED >

<!ELEMENT almacn (direccin, telfono, existencias)>


<!ATTLIST almacn
cdigo ID #REQUIRED >
<!ELEMENT autor (nombre, direccin, URL)>
<!ATTLIST autor
idautor ID #REQUIRED >
<!ELEMENT editor (direccin, telfono)>
<!ATTLIST editor
nombre ID #REQUIRED >
<!ELEMENT cesta-de >
<!ATTLIST cesta-de
propietario IDREF #REQUIRED >
<!ELEMENT contiene >
<!ATTLIST contiene
libro IDREF #REQUIRED >
nmero CDATA #REQUIRED >
<!ELEMENT existencias >
<!ATTLIST existencias
libro IDREF #REQUIRED >
nmero CDATA #REQUIRED >
<!ELEMENT escrito-por >
<!ATTLIST escrito-por
autores IDREFS #REQUIRED >
<!ELEMENT publicado-por >
<!ATTLIST publicado-por
editor IDREF #REQUIRED >
<!ELEMENT nombre (#PCDATA )>
<!ELEMENT direccin (#PCDATA )>
<!ELEMENT telfono (#PCDATA )>
<!ELEMENT ao (#PCDATA )>
<!ELEMENT ttulo (#PCDATA )>
<!ELEMENT precio (#PCDATA )>
<!ELEMENT nmero (#PCDATA )>
<!ELEMENT URL (#PCDATA )>
]>
Figura 10.1

DTD del XML para Librera

Respuesta:
<banco-2>
for $c in /banco/cliente
return
<cliente>
$c/*
for $a in $c/id(@cuentas)
return $a
</cliente>
</banco-2>
10.11 Se da un esquema relacional para representar la informacin bibliogrfica como se detalla en el
fragmento DTD de la Figura 10.13. El esquema relacional debe registrar el orden de los elementos autor. Se
puede asumir que slo los libros y artculos aparecen como elementos de nivel superior en los documentos
XML.

Respuesta:
libro (id-libro, ttulo, ao, editor, lugar)
artculo (id-artculo, ttulo, diario, ao, nmero, volumen, pginas)
libro-autor (id-libro, nombre, apellido, orden)
artculo-autor (id-artculo, nombre, apellido, orden)
10.12 Considrese el Ejercicio 10.11 y supngase que los autores tambin pueden aparecer como
elementos de nivel superior. Qu cambio habra que realizar al esquema relacional?
Respuesta:
libro (id-libro, ttulo, ao, editor, lugar)
artculo (id-artculo, ttulo, diario, ao, nmero, volumen, pginas)
autor (nombre, apellido)
libro-autor (id-libro, nombre, apellido, orden)
artculo-autor (id-artculo, nombre, apellido, orden)
10.13 Escrbanse las consultas en XQuery del fragmento DTD de bibliografa de la Figura 10.13, para
realizar lo siguiente.
a.
Encontrar todos los autores que hayan escrito un libro y un artculo en el mismo ao.
b.
Visualizar libros y artculos ordenados por ao.
c.
Visualizar libros con ms de un autor.
Respuesta:
a.
Encontrar todos los autores que hayan escrito un libro y un artculo en el mismo ao.
for $a in distinct (/bib/libro/autor)
$y in /bib/libro[autor=$a]/ao
$art in /bib/artculo[autor=$a and ao=$y]
return $a
<!DOCTYPE bibliografa [
<!ELEMENT libro (ttulo, autor+, ao, editor, lugar?)>
<!ELEMENT artculo (ttulo, autor+, diario, ao, nmero, volumen, pginas?)>
<!ELEMENT autor ( apellido, nombre) >
<!ELEMENT ttulo (#PCDATA )>
similares declaraciones PCDATA por ao, editor, lugar, diario, ao,
nmero, volumen, pginas, apellido y nombre
]>
Figura 10.13
DTD para datos bibliogrficos.
b.

Visualizar libros y artculos ordenados por ao.


for $a in ((/bib/libro) | (/bib/artculo))
return $a sortby(ao)

c.

Visualizar libros con ms de un autor.


for $a in ((/bib/libro[autor/count()>1])
return $a

10.14 Mustrese la representacin en rbol de los datos XML de la Figura 10.1 y la representacin del
rbol empleando relaciones nodos e hijo descritas en el Apartado 10.6.1.
Respuesta: La respuesta se presenta en la Figura 10.2.
10.15

Considrese la siguiente DTD recursiva.


<!DOCTYPE partes [
<!ELEMENT parte (nombre, informacinsubpartes*)>
<!ELEMENT informacinsubpartes (parte, cantidad)>
<!ELEMENT nombre (#PCDATA )>
<!ELEMENT cantidad (#PCDATA )>
>

a.
Se da un pequeo ejemplo de datos correspondientes a la DTD anterior.
b.
Mustrese como asociar este DTD a un esquema relacional. Se puede asumir que los nombres de
producto son nicos, es decir, cada vez que aparezca un producto, su estructura de componente ser la misma.
Respuesta:
a.
Se da un pequeo ejemplo de datos correspondientes a la DTD anterior.
La respuesta se presenta en la Figura 10.3.
b.
Mustrese como asociar este DTD a un esquema relacional.
parte(id-parte,nombre)
informacinsubpartes(id-parte, id-subparte, cantidad)
Los atributos id-parte e id-subparte de informacinsubpartes, son claves externas para parte.
nodos(1,elemento,banco,)
nodos(2,elemento,cuenta,)
nodos(3,elemento,cuenta,)
nodos(4,elemento,cuenta,)
nodos(5,elemento,cliente,)
nodos(6,elemento,cliente,)
nodos(7,elemento,impositor,)
nodos(8,elemento,impositor,)
nodos(9,elemento,impositor,)
hijo(2,1) hijo(3,1) hijo(4,1)
hijo(5,1) hijo(6,1)
hijo(7,1) hijo(8,1) hijo(9,1)
nodos(10,elemento,nmero-cuenta,A-101)
nodos(11,elemento,nombre-sucursal,Centro)
nodos(12,elemento,saldo,500)
hijo(10,2) hijo(11,2) hijo(12,2)
nodos(13,elemento,nmero-cuenta,A-102)
nodos(14,elemento,nombre-sucursal,Navacerrada)
nodos(15,elemento,saldo,400)
hijo(13,3) hijo(14,3) hijo(15,3)
nodos(16,elemento,nmero-cuenta,A-201)
nodos(17,elemento,nombre-sucursal,Brighton)
nodos(18,elemento,saldo,900)
hijo(16,4) hijo(17,4) hijo(18,4)
nodos(19,elemento,nombre-cliente,Gonzlez)

nodos(20,elemento,calle-cliente,Alma)
nodos(21,elemento,ciudad-cliente,Palo Alto)
hijo(19,5) hijo(20,5) hijo(21,5)
nodos(22,elemento,nombre-cliente,Hayes)
nodos(23,elemento,calle-cliente,Main)
nodos(24,elemento,ciudad-cliente,Harrison)
hijo(22,6) hijo(23,6) hijo(24,6)
nodos(25,elemento,nmero-cuenta,A-101)
nodos(26,elemento,nombre-cliente,Gonzlez)
hijo(25,7) hijo(26,7)
nodos(27,elemento,nmero-cuenta,A-201)
nodos(28,elemento,nombre-cliente,Gonzlez)
hijo(27,8) hijo(28,8)
nodos(29,elemento,nmero-cuenta,A-102)
nodos(30,elemento,nombre-cliente,Hayes)
hijo(29,9) hijo(30,9)
Figura 10.2
Representacin relacional de datos XML como rboles
<partes>
<parte>
<nombre> bicicleta </nombre>
<informacinsubpartes>
<parte>
<nombre> rueda </nombre>
<informacinsubpartes>
<parte>
<nombre> rim </nombre>
</parte>
<cantidad> 1 </cantidad>
</informacinsubpartes>
<informacinsubpartes>
<parte>
<nombre> radios </nombre>
</parte>
<cantidad> 40 </cantidad>
</informacinsubpartes>
<informacinsubpartes>
<parte>
<nombre> neumtico </nombre>
</parte>
<cantidad> 1 </cantidad>
</informacinsubpartes>
</parte>
<cantidad> 2 </cantidad>
</informacinsubpartes>
<informacinsubpartes>
<parte>
<nombre> freno </nombre>
</parte>
<cantidad> 2 </cantidad>
</informacinsubpartes>
<informacinsubpartes>
<parte>
<nombre> marcha </nombre>
</parte>
<cantidad> 3 </cantidad>

</informacinsubpartes>
<informacinsubpartes>
<parte>
<nombre> bastidor </nombre>
</parte>
<cantidad> 1 </cantidad>
</informacinsubpartes>
</parte>
</partes>
Figura 10.3

Ejemplo de datos de partes en XML

CAPITULO

11

ALMACENAMIENTO Y ESTRUCTURA DE ARCHIVOS


Este captulo presenta los conceptos bsicos de las estructuras de ficheros. El captulo consta realmente de dos
partes la primera se ocupa de las bases de datos relacionales y la segunda de las bases de datos orientadas a
objetos. La segunda parte se puede omitir, sin prdida de continuidad para los captulos siguientes.
Muchos diplomados en ciencias de la computacin han cubierto algunas de las materias de este
captulo en cursos anteriores, sobre estructuras de datos o de ficheros. Incluso si los conocimientos de los
estudiantes son principalmente sobre estructuras de datos, este captulo es an de importancia, dado que trata
cuestiones de las estructuras de datos como las referidas al almacenamiento en disco. Las cuestiones sobre la
gestin de la memoria intermedia, tratadas en el Apartado11.5.1, deberan resultar familiares a los estudiantes
que han realizado cursos de sistemas operativos. Sin embargo, hay aspectos de la gestin de la memoria
intermedia de determinadas bases de datos que hacen que esta seccin valga la pena, incluso para los
estudiantes con conocimientos de sistemas operativos.
Cambios a la tercera edicin:
La discusin de los medios de almacenamiento, en particular los discos magnticos (Apartado 11.2), se ha
actualizado para reflejar la tecnologa actual. La seccin de las estructuras RAID (Apartado 11.3) se ha
mejorado con ejemplos; la comparacin de los niveles RAID se ha modificado, dado que las mejoras en la
capacidad de las unidades de discos han disminuido las ventajas del RAID 5; Se ha ampliado la cobertura de
los diccionarios de datos.

Ejercicios
11.1
Indquense los medios de almacenamiento fsico disponibles en las computadoras que se utilizan
habitualmente.
Se da la velocidad con la que se puede tener acceso a los datos en cada medio.
Respuesta: La respuesta estar basada en las computadoras y medios de almacenamiento empleados.
Ejemplos tpicos seran las unidades de disco duro, disquetes y cd-rom.
11.2
Cmo afecta la reasignacin de los sectores daados por los controladores de disco, a la velocidad
de recuperacin de los datos?
Respuesta: La reasignacin de los sectores daados por los controladores de disco reduce la velocidad de
recuperacin de los datos, debido a la la prdida de secuencialidad entre los sectores. Pero eso es mejor que la
prdida de datos, en el caso de no reasignar.
11.3

Considrese la siguiente disposicin de los bloques de datos y de paridad de cuatro discos:


Disco 1
B1
P1
B8
.
.
.

Disco 2
B2
B5
P2
.
.
.

Disco 3
B3
B6
B9
.
.
.

Disco 4
B4
B7
B 10
.
.
.

Bi representa los bloques de datos; Pi los bloques de paridad. El bloque de paridad Pi, es el bloque de paridad
para los bloques de datos B4i-3 a B4i. Qu, de haber alguno, problemas podra presentar esta disposicin?
Respuesta: Esta disposicin tiene el problema de que Pi y B4i-3 estn en el mismo disco. Por lo que, si el
disco falla, la reconstruccin de B4i-3 es imposible, dado que se pierden tanto datos como paridad.
11.4
Un fallo en el suministro elctrico que se produzca mientras se escribe un bloque del disco, puede
dar lugar a que el bloque slo se escriba parcialmente. Supngase que se pueden detectar los bloques escritos
parcialmente. Un proceso atmico de escritura de bloque es aqul en el que se escribe el bloque entero o no se
escribe nada (es decir, no hay procesos de escrituras parciales). Propnganse esquemas para conseguir el
efecto de los procesos atmicos de escritura con los siguientes esquemas RAID.
Los esquemas deben implicar procesos de recuperacin de fallos.
a.
RAID de nivel 1 (creacin de imgenes)
b.
RAID de nivel 5 (entrelazado de bloques, paridad distribuida)
Respuesta:
a.
Para asegurar la atomicidad, una operacin de escritura de bloques se lleva a cabo como sigue:
i.
Escrbase la informacin sobre el primer bloque fsico.
ii.
Cuando se complete con xito la primera escritura, escrbase la misma informacin sobre el segundo
bloque fsico.
iii
El resultado se da por finalizado slo despus que la segunda escritura se complete con xito.
Durante la recuperacin se examina cada par de bloques fsicos. Si ambos son idnticos y no se
detectan escrituras parciales, no son necesarias acciones posteriores. Si uno de los bloque ha sido reescrito
parcialmente, se reemplaza su contenido con el del otro bloque. Si no hay escrituras parciales, pero difieren en

el contenido, se reemplaza el contenido del primer bloque con el del segundo, o viceversa. Este procedimiento
de recuperacin asegura que un almacenamiento estable tiene un xito completo (esto es, actualiza ambas
copias), o no cambia nada.
El requerimiento de comparar cada correspondiente par de bloques durante la recuperacin es
costoso. Se puede reducir enormemente el coste siguiendo la pista de las escrituras de bloques que estn en
curso, empleando una pequea cantidad de RAM no voltil. En la recuperacin, slo es necesario comparar
los bloques para los que est teniendo lugar la escritura.
b.
La idea es similar aqu. Para cualquier escritura de bloques, el bloque de informacin se escribe
primero, seguido del correspondiente bloque de paridad. En el momento de la recuperacin, se considera cada
conjunto formado por el ensimo bloque de cada uno de los discos. Si ninguno de los bloques del conjunto ha
sido escrito parcialmente y el contenido del bloque de paridad es consistente con el de los bloques de
informacin, entonces no es necesario tomar ms acciones. Si cualquier bloque ha sido escrito parcialmente,
se reconstruyen sus contenidos empleando los otros bloques. Si ningn bloque ha sido escrito parcialmente,
pero el contenido del bloque de paridad no est de acuerdo con el del bloque de informacin, se reconstruye el
contenido del bloque de paridad.
11.5
Los sistemas RAID suelen permitir la sustitucin de los discos averiados sin que se impida el acceso
al sistema. As, los datos del disco averiado deben reconstruirse y escribirse en el disco de repuesto, mientras
el sistema se halla en funcionamiento. Con cul de los niveles RAID es menor la interferencia entre los
accesos al disco reconstruido y los accesos al resto de los discos? Justifquese la respuesta.
Respuesta: El RAID de nivel 1 (creacin de imgenes) es el que facilita la reconstruccin de un disco
averiado con un mnimo de interferencias sobre los accesos al disco. Esto es as porque la reconstruccin
implica la copia de datos desde la imagen del disco averiado. En los otros niveles RAID, la reconstruccin
implica lecturas de todo el contenido de los otros discos.
11.6
Se da un ejemplo de una expresin de lgebra relacional y de una estrategia de procesamiento de
consultas en cada una de las situaciones siguientes:
a.
MRU es preferible a LRU.
b.
LRU es preferible a MRU.
Respuesta:
a.
MRU es preferible a LRU, donde R1 R2 se calcula empleando una estrategia de procesamiento de
bucles anidados, donde cada tupla en R2 debe compararse con cada bloque en R1. Despus que se procesa la
primera tupla de R2, el siguiente bloque necesario es el primero en R1. Sin embargo, dado que es el ltimo
recientemente empleado, la estrategia de gestin de la memoria intermedia LRU reemplazara ese bloque si el
sistema necesitara uno nuevo.
1

b.
LRU es preferible a MRU donde R1 R2 se calcula ordenando las relaciones por valores de reunin y
comparando, entonces, los valores mediante procedimientos a travs de las relaciones. Debido a los valores de
reuniones duplicadas, puede ser necesario hacer copia de seguridad en una de las relaciones. Esta copia de
seguridad podra atravesar un lmite de bloque, hacia el bloque ms recientemente empleado, el cual se habra
sido reemplazado por un sistema empleando gestin de memoria intermedia MRU, si fuera necesario un
nuevo bloque.
Bajo MRU algunos bloque no usados pueden permanecer en memoria para siempre. En la prctica
slo se puede emplear MRU en situaciones especiales, como la de la estrategia de bucle anidado discutida en
el ejemplo 0.a.
1

11.7
Considrese el borrado del registro 5 del archivo de la Figura 11.8. Comprense las ventajas relativas
de las siguientes tcnicas para implementar el borrado:
a.
Trasladar el registro 6 al espacio ocupado por el registro 5 y desplazar el registro 7 al espacio
ocupado por el registro 6.
b.
Trasladar el registro 7 al espacio ocupado por el registro 5.
c.
Marcar el registro 5 como borrado y no desplazar ningn registro.
Respuesta:
a.
Aunque trasladar el registro 6 al espacio del 5 y el registro 7 al espacio del 6 es el enfoque mas
sencillo, requiere trasladar casi todos los registros e implica casi todos los accesos.
b.
Trasladar el registro 7 al espacio del 5 mueve menos registros, pero destruye cualquier orden en el
fichero.
c.
Marcando el espacio del registro 5 como borrado se conserva el orden y no se traslada ningn
registro, pero se requieren costes adicionales para seguir la pista de todos los espacios libres del fichero. Este
mtodo puede originar demasiados agujeros en el fichero el cual, si no se compacta peridicamente, puede
afectar al rendimiento debido a que se reduce la disponibilidad de registros libres contiguos.
11.8
a.
b.
c.

Mustrese la estructura del archivo de la Figura 11,9 despus de cada uno de los pasos siguientes:
Insertar (Galapagar, C-323, 1600).
Borrar el registro 2.
Insertar (Galapagar, C-626, 2000).

Respuesta: (Se emplea h i para denotar un puntero al registro i.)


El fichero original de la Figura 11.9:
cabecera
registro 0
registro 1
registro 2
registro 3
registro 4
registro 5
registro 6
registro 7
registro 8
a.
cabecera
registro 0
registro 1
registro 2
registro 3
registro 4
registro 5
registro 6
registro 7
registro 8
b

h1
h4
h6

Navacerrada

C-102

400

Becerril
Centro

C-215
C-101

700
500

Navacerrada

C-201

900

Centro
Navacerrada

C-110
C-218

600
700

El fichero despus de insertar (Galapagar, C-323, 1600).


h4

h6

Navacerrada
Galapagar
Becerril
Centro

C-102
C-323
C-215
C-101

400
1600
700
500

Navacerrada

C-201

900

Centro
Navacerrada

C-110
C-218

600
700

El fichero despus de borrar el registro 2.

cabecera
registro 0
registro 1
registro 2
registro 3
registro 4
registro 5
registro 6
registro 7
registro 8

h2
h4
h6

Navacerrada
Galapagar

C-102
C-323

400
1600

Centro

C-101

500

Navacerrada

C-201

900

Centro
Navacerrada

C-110
C-218

600
700

La cadena de registro libre podra haber sido alternativamente desde la cabecera a 4, desde 4 a 2 y,
finalmente, desde 2 a 6.
c.
El fichero despus de insertar (Galapagar, C-626, 2000).
Cabecera
registro 0
registro 1
registro 2
registro 3
registro 4
registro 5
registro 6
registro 7
registro 8

h4

h6

Navacerrada
Galapagar
Galapagar
Centro

C-102
C-323
C-626
C-101

400
1600
2000
500

Navacerrada

C-201

900

Centro
Navacerrada

C-110
C-218

600
700

11.9
Dndose un ejemplo de una aplicacin de bases de datos en que sea preferible el mtodo del espacio
reservado para la representacin de los registros de longitud variable, frente al mtodo de los punteros.
Justifquese la respuesta.
Respuesta: En el mtodo del espacio reservado una consulta, comparando el ltimo campo existente en un
registro con algn valor, requiere slo una lectura desde el disco. Esta simple lectura es preferible a las,
potencialmente, numerosas lecturas que son necesarias para perseguir los punteros al ltimo campo, si se
emplea el mtodo del puntero.
11.10 Se da un ejemplo de una aplicacin de bases de datos en que sea preferible el mtodo de los punteros
para representar los registros de longitud variable, al mtodo del espacio reservado.
Justifquese la respuesta.
Respuesta: Empleando el mtodo de los punteros, una operacin de reunin sobre atributos que estn
solamente en el bloque ancla, puede realizarse slo sobre esta pequea cantidad de datos, en vez de la relacin
entera, como sera el caso de emplear el mtodo de reserva de espacio. Por eso, en este ejemplo, es preferible
el mtodo del puntero.
11.11
a.
b.
c.

Mustrese la estructura del archivo de la Figura 11,12 despus de cada uno de los pasos siguientes:
Insertar (Becerril, C-101, 2800).
Insertar (Galapagar, C-323, 1600).
Borrar (Navacerrada, C-102, 400).

Respuesta:
a.
insertar (Becerril, C-101, 2800) cambia el registro 2 a:
Becerril
C-215
700
C-101
2800

b
insertar (Galapagar, C-323, 1600) cambia el registro 5 a:
Galapagar
C-216
750
C-323
1600

c.

borrar (Navacerrada, C-102, 400) cambia ek registro 0 a:

Navacerrada
11.12

C-102

900

C-218

700

Qu ocurre si se intenta insertar el registro


(Navacerrada, C-323, 3000)

en el fichero de la Figura 11.12?


Respuesta: Inserta (Navacerrada, C-323, 3000) en el fichero de la Figura 11.12 causa un error porque el
registro Navacerrada ha superado la longitud mxima reservada.
11.13
a.
b.
c.

Mustrese la estructura del archivo de la Figura 11.13 despus de cada uno de los pasos siguientes:
Insertar (Becerril, C-101, 560.000).
Insertar (Galapagar, C-323, 320.000).
Borrar (Navacerrada, C-102, 80.000).

Respuesta:
a.
La figura despus de insertar (Becerril, C-101, 2800).
0
1
2
3
4
5
6
7
8
9

h5
h9
h7
h8

b
0
1
2
3
4
5
6
7
8
9
10

Navacerrada
Collado Mediano
Becerril
Centro
Moralzarzal
Galapagar

C-102
C-305
C-215
C-101
C-222
C-201
C-216
C-110
C-218
C-101

400
350
700
500
700
900
750
600
700
2800

La figura despus de insertar (Galapagar, C-323, 1600).


h5
h9
h7
h8
h 10

Navacerrada
Collado Mediano
Becerril
Centro
Moralzarzal
Galapagar

C-102
C-305
C-215
C-101
C-222
C-201
C-216
C-110
C-218
C-101
C-323

400
350
700
500
700
900
750
600
700
2800
1600

c.
1
2
3
4
5
6
7
8
9
10

La figura despus de borrar (Navacerrada, C-102, 400).


h9
h7
h8
h 10

Collado Mediano
Becerril
Centro
Moralzarzal
Navacerrada
Galapagar

C-305
C-215
C-101
C-222
C-201
C-216
C-110
C-218
C-101
C-323

350
700
500
700
900
750
600
700
2800
1600

11.14 Explquese por qu la asignacin de los registros a los bloques afecta de manera significativa al
rendimiento de los sistemas de bases de datos.
Respuesta: Si se asignan registros relacionados a los bloques, a menudo se puede recuperar la mayora, o
todos, de los registros solicitados por una consulta con un acceso a disco. Los accesos a disco tienden a ser los
cuellos de botella en las bases de datos; dado que esta estrategia de asignacin reduce el nmero de accesos a
disco para una operacin dada, mejora significativamente el rendimiento.
11.15 Si es posible, determnese la estrategia de gestin de la memoria intermedia de su sistema operativo
ejecutndose en su computadora y los mecanismos que proporciona para controlar la sustitucin de pginas.
Disctase cmo el control sobre la sustitucin que proporciona podra ser til para la implementacin de
sistemas de bases de datos.
Respuesta: El sistema operativo tpico emplea LRU para la sustitucin de la memoria intermedia. A menudo
esta es una mala estrategia para las bases de datos. Como se ha explicado en el Apartado 11.5.2 del texto,
MRU es la mejor estrategia para reuniones en bucle anidado. En general ninguna estrategia sencilla gestiona
bien todos los escenarios e, idealmente, el sistema de base de datos debera tener su propia cach de memoria
intermedia, para la que la poltica de sustitucin tiene en cuenta todas las cuestiones relacionadas con el
rendimiento.
11.16 En la organizacin secuencial de los archivos, por qu se utiliza un bloque de desbordamiento
aunque slo haya en ese momento un registro de desbordamiento?
Respuesta: Un bloque de desbordamiento se utiliza en la organizacin secuencial de los archivos porque un
bloque es el espacio ms pequeo que se puede leer desde un disco. Por lo tanto, emplear cualquier regin
ms pequea no sera til desde un punto de vista del rendimiento. El espacio ahorrado al asignar el
almacenamiento en disco en unidades de registros, sera ensombrecido por el coste de rendimiento de permitir
bloques que contengan registros de mltiples ficheros.
11.17 Indquense dos ventajas y dos inconvenientes de cada una de las estrategias siguientes para el
almacenamiento de una base de datos relacional.
a.
Almacenar cada relacin en un archivo.
b.
Almacenar varias relaciones (quiz incluso toda la base de datos) en un archivo.
Respuesta:
a.
Las ventajas de almacenar cada relacin como un archivo incluyen emplear el sistema de ficheros
que soporta el sistema operativo, simplificando el sistema gestor de la base de datos, pero incurre en la
desventaja de restringir la capacidad del sistema gestor de base de datos para incrementar el rendimiento, por

usar estructuras de almacenamiento ms sofisticadas.


b.
Utilizando un fichero para toda la base de datos se pueden implementar estas estructuras complejas
a travs del sistema gestor de las base de datos, pero se incrementa el tamao y la complejidad de la base de
datos.
11.18

Considrese una base de datos relacional con dos relaciones:


curso (nombre-curso, aula, profesor)
matrcula (nombre-curso, nombre-estudiante, calificacin)

Defnanse ejemplos de estas relaciones para tres cursos, en cada uno de los cuales se matriculan cinco
estudiantes. Se da una estructura de archivos de estas relaciones que utilice la agrupacin.
Respuesta:
relacin curso
nombre-curso aula
Pascal
CS-101
C
CS-102
LISP
CS-102
nombre-curso
Pascal
Pascal
Pascal
Pascal
Pascal
C
C
C
C
C
Lisp
Lisp
Lisp
Lisp
Lisp

profesor
Calvin, B
Calvin, B
Kess, J

relacin matrcula
nombre-estudiante
Carper, D
Merrick, L
Mitchell, N
Bliss, A
Hames, G
Nile, M
Mitchell, N
Carper, D
Hurly, I
Hames, G
Bliss, A
Hurly, I
Nile, M
Stars, R
Carper, D

c1
c2
c3

calificacin
A
A
B
C
C
A
B
A
B
A
C
B
D
A
A

e1
e2
e3
e4
e5
e6
e7
e8
e9
e10
e11
e12
e13
e14
e15

el bloque 0 contiene: c1, e1, e2, e3, e4, y e5


el bloque 1 contiene: c2, e6, e7, e8, e9 y e10
el bloque 2 contiene: c3, e11, e12, e13, e14, y e15
11.19 Considrese la siguiente tcnica de mapa de bits para realizar el seguimiento del espacio libre en un
fichero. Por cada bloque del fichero se mantienen dos bits en el mapa. Si el bloque est lleno entre el 0 y el
30%, los bits son 00, entre 30% y 60% , 01, entre 60% y 90%, 10 y por encima del 90%, 11. Tales mapas de
bits pueden mantenerse en memoria, incluso para ficheros muy grandes.
a.
Descrbase como mantener actualizado el mapa de bits al insertar y eliminar registros.
b.
Descrbanse el beneficio de la tcnica de los mapas de bits sobre las listas libres, al buscar espacio
libre y al actualizar su informacin.
Respuesta:
a.
Cada vez que se inserta o borra un registro, comprueba si el empleo el bloque ha cambiado los

niveles. En tal caso, se actualizan los bits correspondientes.


b.
Si se requiere espacio libre para n registros entonces, en la tcnica de las listas libres, son necesarios
n accesos de la lista de registros libres. Sin embargo, en la tcnica del mapa de bits, un bloque con espacio
libre para n registros ( o ms de un bloque si hace falta) se puede averiguar directamente. El espacio libre as
obtenido est tambin mas contiguo que el obtenido mediante la tcnica de listas libres.
11.20 Se da una versin normalizada de la relacin Metadatos-ndices y explquese por qu al usar la
versin normalizada se incurrira en prdida de rendimiento.
Respuesta: La relacin metadatos-ndices se puede normalizar como sigue
metadatos-ndices (nombre-ndice, nombre-relacin, tipo-ndice, conjunto-atributos)
metadatos-conjunto-atributos (nombre-relacin, conjunto-atributos, nombre-atributo)
Aunque la versin normalizada tendr menos requerimientos de espacio, sern necesarios accesos extras al
disco para leer metadatos-conjunto de atributos, cada vez que tenga que accederse a un ndice. As, esto
ocasionar una prdida de rendimiento.
11.21 Explquese el motivo de que un IDO fsico deba contener ms informacin que un puntero que
apunte a una ubicacin fsica de almacenamiento.
Respuesta: Un IDO fsico necesita tener un identificador nico, adems de un puntero, para una ubicacin
fsica de almacenamiento. Esto se requiere para prevenir desreferencias de los punteros colgantes.
11.22 Si se utilizan IDOs fsicos, se puede reubicar un objeto guardando un puntero a su nueva ubicacin.
En el caso de que se guarden varios punteros para un objeto, Cul sera el efecto sobre la velocidad de
recuperacin? Respuesta: En caso de guardar varios punteros para un objeto, la velocidad de recuperacin
decrecer porque el acceso requerir acceder a las series de ubicaciones desde las que el objeto ha sido
sucesivamente enviado a la ubicacin actual.
Se pueden evitar accesos mltiples manteniendo siempre, en la ubicacin ms antigua, la ltima
direccin del objeto. Esto se puede hacer comprobando, al enviar, si este objeto ya ha sido enviado y ,en ese
caso ,actualizando la direccin de envo a la ubicacin ms antigua. As, a lo sumo se requerirn dos accesos.
11.23 Defnase el trmino puntero colgante. Descrbase la manera en que el esquema de identificador
nico ayuda a detectar los punteros colgantes en las bases de datos orientadas a objetos.
Respuesta: Un puntero colgante es un puntero a un rea que ya no contiene datos vlidos.
En el esquema de identificador nico para detectar punteros colgantes, los IDOs fsicos pueden
contener un identificador nico, que es un entero que distingue el IDO de los identificadores de otros objetos
que resultaron ser al almacenados en la misma ubicacin anterior y fueron borrados o movidos a otra parte. El
identificador nico se almacena tambin con el objeto, debiendo concordar los identificadores en un IDO con
los correspondientes objetos. Si el identificador nico en un IDO fsico no concuerda con el identificador
nico en el objeto al cual apunta el IDO, el sistema detecta que el puntero es un puntero colgante y seala un
error.
11.24 Considrese el ejemplo de la pgina 435, que muestra que no hace falta el rescate si se emplea el
rescate hardware. Explquese el motivo de que, en ese ejemplo, resulte seguro cambiar el identificador corto
de la pgina 679.34278 desde 2395 a 5001. Puede tener ya alguna otra pgina el identificador corto 5001?. Si
fuera as, cmo se resolvera esa situacin?

Respuesta: Al rescatar, si el identificador corto de la pgina 679.34278 cambia de 2395 a 5001, es porque
a.
el sistema descubre que 679.34278 ya ha sido asignado a la pgina de memoria virtual 5001 en
algn paso anterior, o si no
b.
679.34278 no ha sido asignado en ninguna pgina de memoria virtual hasta ahora y la pgina de
memoria virtual 5001 se asigna ahora a ella.
As, en cualquier caso, no puede ser cierto que la pgina actual ya utilice el mismo identificador corto 5001,
para referirse a alguna otra pgina de la base de datos diferente de 679.34278. Alguna otra pgina puede usar
5001 para referirse a una pgina de base de datos diferente, pero entonces cada pgina tiene sus propias
correspondencias independiente, desde identificadores de pgina cortos a completos, para que esto sea
correcto.
Ntese que si se rescata como se describe en el texto y diferentes procesos necesitan acceder
simultneamente a la pgina de la base de datos, habrn de asociar copias separadas de la pgina para sus
espacios individuales de direccin virtual. Esto puede evitarse mediante extensiones al esquema.

CAPITULO

12

INDEXACION Y ASOCIACION
Este captulo cubre las tcnicas de indexacin, desde la ms bsica a las altamente especializadas. Debido al
empleo extensivo de ndices en los sistemas de bases de datos, este captulo constituye una parte importante
del curso de bases de datos.
Una clase que ya haya tenido un curso sobre estructuras de datos estar familiarizada con asociaciones y,
posiblemente, incluso con rboles B+. Sin embargo, este captulo es de necesaria lectura, incluso para estos
estudiantes, dado que los cursos de estructuras de datos generalmente cubren las indexaciones en memoria
principal. Aunque los conceptos afectan a los mtodos de acceso a las bases de datos, los detalles (por
ejemplo, nodos de tamao bloque), les resultarn nuevos a tales estudiantes.
Los apartados sobre los rboles B (Apartados 12.4), ficheros en retcula (Apartado 12.9.3) e indexaciones de
mapas de bit (Apartado 12.9.4) se pueden omitir si as se desea.
Cambios a la tercera edicin:
La descripcin de consultas sobre rboles B+ se ha ampliado con seudocdigo. Se ha simplificado el
seudocdigo para la insercin en rboles B+. La seccin sobre la definicin de ndices en SQL (Apartado
12.8) es nueva en esta edicin, as como el tratamiento de ndices de mapas de bits (Apartado 12.9.4).

Ejercicios
12.1

Cundo es preferible utilizar un ndice denso en vez de uno disperso? Raznese la respuesta.

Respuesta: Es preferible utilizar un ndice denso en lugar de uno disperso cuando el fichero no est ordenado
sobre el campo ndice (como cuando el ndice es un ndice secundario), o cuando el fichero de ndices es
pequeo, comparado con el tamao de la memoria.
12.2
Dado que los ndices agilizan el procesamiento de consultas, por qu no deberan de mantenerse en
varias claves de bsqueda? Enumrense tantas razones como sea posible.
Respuesta: Razones para no mantener varios ndices de bsqueda:
a.
Durante las inserciones y los borrados, cada ndice requiere tiempo adicional de CPU y sobrecarga
de E/S a disco.
b.
Los ndices sobre claves que no son primarias podran tener que ser cambiados o actualizados,
aunque no as en los ndices sobre la clave primaria (esto es porque las actualizaciones, generalmente, no
modifican los atributos de la clave primaria).
c.
Cada ndice extra requiere espacio de almacenamiento adicional.
d.
Para las consultas que implican condiciones sobre varias claves de bsqueda la eficiencia podra no
ser mala, incluso si slo algunas de las claves tienen ndices sobre ellas.
Por tanto, cuando ya existen muchos ndices, el rendimiento de la base de datos mejora menos por la adicin
de ndices.
12.3

Cul es la diferencia entre un ndice primario y un ndice secundario?

Respuesta: El ndice primario est sobre el campo que especifica el orden secuencial del fichero. Slo puede
haber un ndice primario, mientras que puede haber muchos secundarios.
12.4
Es posible, en general, tener dos ndices primarios en la misma relacin para dos claves de
bsqueda diferentes? Raznese la respuesta.
Respuesta: En general, no es posible tener dos ndices primarios en la misma relacin para diferentes claves,
porque las tuplas en una relacin habran de estar almacenadas en diferente orden, para tener los mismos
valores almacenados juntos. Se podra cumplir esto almacenando la relacin dos veces y duplicando todos los
valores pero, para un sistema centralizado, no es eficiente.
12.5

Constryase un rbol B+ con el siguiente conjunto de valores de la clave:


(2, 3, 5, 7, 11, 17, 19, 23, 29, 31)

Supngase que el rbol est inicialmente vaco y que se aaden los valores en orden ascendente. Constryanse
rboles B+ para los casos en que el nmero de punteros que caben en un nodo son:
a.
Cuatro
b.
Seis
c.
Ocho

Respuesta: Lo siguiente ha sido generado al insertar valores en el rbol B+ en orden ascendente. Un nodo
(diferente del raz) nunca fue permitido tener menos de n/2 valores/punteros.
a.

2 3 5 7 29 31 17
29
11 19 23
19
5 11

b.

19 31 29 23 17 11 7 5 3 2
19 7

c.

11 3 2
11
5 7 17 19 23 29 31

12.6
a.
b.

Para cada rbol B+ del Ejercicio 12.5, mustrense los pasos involucrados en las siguientes consultas:
Encontrar los registros con un valor de la clave de bsqueda de 11.
Encontrar registros con un valor de la clave de bsqueda entre 7 y 17, ambos inclusive.

Respuesta:
Con estructura 0.a:
a.
Encontrar registros con un valor de 11
i.
Buscar el ndice de primer nivel; seguir el primer puntero.
ii.
Buscar el siguiente nivel; seguir el tercer puntero.
iii
Buscar el nodo hoja; seguir el primer puntero para registros con valor de clave 11.
b.
Encontrar registros con valor entre 7 y 17 (inclusive)
i.
Buscar el ndice superior; seguir el primer puntero.
ii.
Buscar el siguiente nivel; seguir el segundo puntero.
iii
Buscar el tercer nivel; seguir el segundo puntero para registros con valor de clave 7 y, despus de
acceder a ellos, volver al nodo hoja.
iv
Seguir el cuarto puntero para el siguiente bloque de hojas en la cadena.
v
Seguir el primer puntero para registros con valor de clave 11, despus volver.
vi
Seguir el segundo puntero para registros con valor de clave 17.
Con estructura 0.b:
a.
Encontrar registros con un valor de 11
i.
Buscar el nivel superior; seguir el segundo puntero.
ii.
Buscar el siguiente nivel; seguir el segundo puntero para registros con valor de clave 11.
b.
i.
ii.
volver.
iii
iv

Encontrar registros con valor entre 7 y 17 (inclusive)


Buscar el nivel superior; seguir el segundo puntero.
Buscar el siguiente nivel; seguir el primer puntero para registros con valor de clave 7, despus
Seguir el segundo puntero para registros con valor de clave 11, despus volver.
Seguir el tercer puntero para registros con valor de clave 17.

Con estructura 0.c:


a.
Encontrar registros con un valor de 11
i.
Buscar el nivel superior; seguir el segundo puntero.
ii.
Buscar el siguiente nivel; seguir el primer puntero para registros con valor de clave 11.
b.
i.
ii.
volver.
iii
iv
v

Encontrar registros con valor entre 7 y 17 (inclusive)


Buscar el nivel superior; seguir el primer puntero.
Buscar el siguiente nivel; seguir el cuarto puntero para registros con valor de clave 7, despus
Seguir el octavo puntero para el siguiente bloque de hojas en la cadena.
Seguir el primer puntero para registros con valor de clave 11, despus volver.
Seguir el segundo puntero para registros con valor de clave 17.

12.7
Para cada rbol B+ del Ejercicio 12.5, mustrese el aspecto del rbol despus de cada una de las
siguientes operaciones:
a.
Insertar 9.
b.
Insertar 10.
c.
Insertar 8.
d.
Borrar 23.
e.
Borrar 19.
Respuesta:
Con estructura 0.a:
Insertar 9:

2 3 5 7 29 31 17
29
11 19 23
19
5 11
9

Insertar 10:
9
9
10 2 3
29
19
5 11
5 7 17 11 19 23 29 31

Insertar 8:
89
9
10 2 3
29
19
5 11
5 7 17 11 19 23 29 31

Borrar 23:
9 19 10 8
9
11
2 3 5 7 29 31 17 11
19 5

Borrar 19:

29
29
9 10 8
9
11
2 3 5 7 31 17 11
5

Con estructura 0.b:


Insertar 9:
9 19 31 29 23 17 11 7 5 3 2
19 7

Insertar 10:
10 9 19 31 29 23 17 11 7 5 3 2
19 7

Insertar 8:
8 5 3 2 9 7 10 17 11 19 31 29 23
19 7 10

Borrar 23:
8 5 3 2 9 7 10 17 11 19 31 29
19 7 10

Borrar 19:

7 10
8 5 3 2 9 7 10 17 11 31 29

Con estructura 0.c:


Insertar 9:
9 17 3 2 11
11
5 7 19 23 29 31

Insertar 10:
10 9 17 3 2 11
11
5 7 19 23 29 31

Insertar 8:
8 10 9 17 3 2 11
11
5 7 19 23 29 31

Borrar 23:
8 10 9 17 3 2 11
11
5 7 19 29 31

Borrar 19:

8 10 9 17 3 2 11
11
5 7 29 31

12.8
Considrese el esquema modificado de redistribucin para rboles B+ descrito en la pgina 463.
Cul es la altura esperada del rbol en funcin de n?.
Respuesta: Si hay K valores de claves de bsqueda y m - 1 hermanos estn implicados en la redistribucin, la
altura esperada del rbol es: log?(m-1)n/m?(K)
12.9

Reptase el Ejercicio 12.5 para un rbol B.

Respuesta: El algoritmo para la insercin en un rbol B es:


Localizar el nodo hoja en el que el nuevo par clave-puntero se debera insertar.
Si hay espacio sobrante en el nodo hoja, realizar la insercin en la ubicacin correcta y la tarea se completa.
De lo contrario, insertar el par clave-puntero conceptualmente en la ubicacin correcta del nodo hoja y,
entonces, partirlo por la mitad.
El par intermedio clave-puntero no va dentro de los nodos resultantes de la operacin dividir. En su lugar, se
inserta en el nodo padre junto al puntero del rbol para el nuevo hijo. Si no hay espacio en el padre, se repite
un procedimiento similar.
El algoritmo de borrado es:
Localizar el valor el valor de la clave a borrar, en el rbol B.
a.
Si se encuentra un nodo hoja, borrar el par clave-puntero y el registro del fichero. Si el nodo hoja
contiene menos de n/2 -1 entradas como resultado de este borrado, o se fusiona con sus hermanos o algunas
entradas se redistribuyen para ello. La fusin implicara un borrado, mientras que la redistribucin implicara
cambios en las entradas del nodo del padre. Los borrados pueden rizarse hasta la raz del rbol B.
b.
Si el valor de la clave se encuentra en un nodo interno del rbol B reemplazar, a l y a su puntero de
registro, por el menor valor de la clave en el sub rbol inmediatamente a su derecha y el correspondiente
puntero del registro. Borrar el registro actual en el fichero de la base de datos. Borrar despus el menor valor
del par clave-puntero del sub rbol. Este borrado pueden originar an ms borrados de rizamiento hasta la raz
del rbol B.
Seguidamente se presentan los rboles B despus de las inserciones de los valores clave dados. Se supone que
los nodos hoja y no hoja mantienen el mismo nmero de valores de clave de bsqueda.
a.
????
??
???
?
_ _ _ _ _ _ _9
_
Z
ZXXXz
5

17
11 19
29

b.
_
_
_
_
__
XXXXXXXXXXz
?
?
?
7 23

17
?
19
?
31
?
29
?
11
?
5
?
3
?
2
?

c.

12.10 Explquense las diferencias entre las asociaciones abiertas y cerradas. Comntense los beneficios de
cada tcnica en aplicaciones de bases de datos.
Respuesta: Las asociaciones abiertas pueden colocar claves con el mismo valor de la funcin asociativa en
diferentes cajones. Las asociaciones cerradas siempre colocan tales claves juntas, en el mismo cajn. As, en
este caso, diferentes cajones pueden ser de diferentes tamaos, aunque la implementacin pueda ser
enlazando los cajones de tamao fijo, empleando cadenas de desbordamiento. El borrado es difcil con
asociaciones abiertas dado que todos los cajones pueden tener que ser inspeccionados antes de poder constatar
que un valor clave ha sido borrado, mientras que en las asociaciones cerradas slo los cajones cuya direccin
se obtiene por asociacin, el valor clave necesita ser inspeccionado. Los borrados son ms comunes en las
bases de datos y por lo tanto una asociacin cerrada es ms apropiada para ellas. Para un pequeo, esttico
conjunto de datos, las bsquedas pueden ser ms eficientes empleando asociaciones abiertas. La tabla de
smbolos de un compilador sera un buen ejemplo.
12.11 Cules son las causas del desbordamiento de cajones en un fichero con una organizacin
asociativa? Qu se puede hacer para reducir la aparicin del desbordamiento de cajones?
Respuesta: Las causas del desbordamiento de cajones son:
a.
Nuestra estimacin del nmero de registros que la relacin iba a tener fue demasiado bajo y, por la
tanto, el nmero de cajones asignados no fue suficiente.
b.
Desviacin en la distribucin de registros a los cajones. Esto puede suceder porque haya muhos
registros con el mismo valor de clave de bsqueda, o porque la funcin de asociacin elegida no tuviera las
propiedades deseables de uniformidad y aleatoriedad.
Para reducir la ocurrencia de los desbordamientos se puede:
a.
Seleccionar la funcin de asociacin ms cuidadosamente y hacer mejores estimaciones sobre el
tamao de la relacin.

b.
Si el tamao estimado de la relacin es nr y el nmero de registros por bloque es fr, asignar (nr/fr) *
(1 + d) cajones, en lugar de (nr/fr). Aqu d es un factor de escape, tpicamente en torno a 02. Algn espacio se
malgasta: En torno al 20% del espacio de los cajones estar vaco. Pero la ventaja es que algunas de las
desviaciones se gestionan y la probabilidad de desbordamiento se reduce.
12.12 Supngase que se est empleando la asociacin extensible en un archivo que contiene registros con
los siguientes valores de la clave de bsqueda:
2, 3, 5, 7, 11, 17, 19, 23, 29, 31
Mustrese la estructura asociativa extensible para este archivo si la funcin de asociacin es h(x) = x mod 8 y
los cajones pueden contener hasta tres registros.
Respuesta:
3
3
29
5
19
11
3
2
111
110
100
011
010
001

3
2
2
31
23
7
17
2

000

12.13 Mustrese como cambia la estructura asociativa extensible del Ejercicio 12.12, como resultado de
realizar los siguientes pasos:
a.
Borrar 11.
b.
Borrar 31.
c.
Insertar 1.
d.
Insertar 15.

Respuesta:
a.
Borrar 11: A partir de la respuesta del Ejercicio 12.12, cambiar el tercer cajn a:
3
3
19

En este momento es posible agrupar el segundo y tercer cajn. Entonces es suficiente si la tabla direcciones de
los cajones tiene slo cuatro entradas en lugar de ocho. Para el objetivo de esta respuesta no se hace la
agrupacin.
b.

Borrar 31: A partir de la respuesta del Ejercicio 12.12, cambiar el ltimo cajn a:

2
23
7

c.

Insertar 1: A partir de la respuesta del Ejercicio 12.12, cambiar el primer cajn a:

1
17
2

d.

Insertar 15: A partir de la respuesta del Ejercicio 12.12, cambiar el ltimo cajn a:

15
2
23
7

12.14 Se da un seudocdigo para el borrado de entradas desde una estructura asociativa extensible,
incluyendo los detalles de cundo y cmo agrupar cajones. No preocuparse sobre la reduccin del tamao de
la tabla de direcciones de los cajones.
Respuesta: Sea i el nmero de bits del valor de asociacin empleado en la tabla asociativa. Sea BSIZE la
capacidad mxima de cada cajn.
delete(valor Kl)
begin
j = primeros i bits de orden superior de h(Kl);
borrar el valor Kl del cajn j;
agrupar(cajn j);
end
coalesce(cajn j)
begin
ij = bits utilizados en el cajn j;
k = cualquier cajn con los primeros (ij - 1) bits iguales
a los del cajn j, mientras el bit ij est reservado;
ik = bits utilizados en el cajn k;
if(ij _= ik)
return; /* los cajones no se pueden fusionar */

if(entradas en j + entradas en k > BSIZE)


return; /* los cajones no se pueden fusionar */
mover las entradas del cajn k al cajn j;
reducir en 1 el valor de ij;
hacer que todas las entradas de la tabla de direcciones de los cajones,
que apuntan al cajn k, lo hagan al j;
agrupar(cajn j);
end
Ntese que slo se pueden fusionar dos cajones a la vez. El prefijo asociativo comn del cajn
resultante tendr una longitud menor que los dos cajones fusionados. Por lo tanto, nos fijamos en que el cajn
compaero del cajn j se diferencia de l slo en el ltimo bit. Si el prefijo asociativo comn de este cajn no
es ij , implica que el cajn compaero ha sido a su vez dividido, con lo que no es posible la fusin.
Cuando la fusin tiene xito fusiones posteriores pueden ser posibles, lo cul se gestiona mediante
una llamada recursiva para agrupar al final de la funcin.
12.15 Sugirase una manera eficiente para comprobar si la tabla de direcciones de los cajones en una
asociacin extensible se puede reducir de tamao, mediante el almacenamiento de un recuento extra con la
tabla de direcciones de los cajones. Dense detalles de como se debera mantener el recuento cuando los
cajones se dividan, agrupen o borren.
(Nota: la reduccin del tamao de la tabla de direcciones de cajones es una operacin costosa y las
inserciones posteriores pueden originar que la tabla crezca de nuevo. Por lo tanto, es mejor no reducir el
tamao tan pronto como se pueda, sino hacerlo slo si el nmero de entradas de ndice se reduce en
comparacin con el tamao de la tabla de direcciones de cajones.)
Respuesta: Si la tabla asociativa est utilizando actualmente i bits del valor de asociacin, mantngase un
contador de cajones para los que la longitud del prefijo asociativo comn sea exactamente i.
Considrese un cajn j con longitud del prefijo asociativo comn ij. Si el cajn esta siendo dividido e
ij es igual a i, entonces se reinicia el contador a 1. Si el cajn esta siendo dividido e ij es uno menos que i,
entonces se incrementa el contador en 1. Si el cajn esta siendo agrupado e ij es igual a i, entonces se reduce
el contador en 1. Si el contador llega a ser 0, entonces la tabla de direcciones de los cajones se puede reducir
de tamao en ese momento.
Sin embargo, ntese que si la tabla de direcciones de los cajones no se reduce en ese momento,
entonces el contador no tiene significado despus. Si se desea posponer la reduccin, se ha de conservar un
array de contadores, es decir un contador por cada valor del prefijo asociativo comn. El array ha de
actualizarse de una misma manera. La tabla de direcciones de los cajones se puede reducir si la ith entrada del
array es 0, donde i es el nmero de bits que la tabla est empleando. Dado que la reduccin de la tabla de
cajones es una operacin costosa, no siempre es aconsejable reducir la tabla. Slo debera reducirse cuando un
nmero suficiente de entradas, al final del array de contadores, lleguen a ser 0.
12.16 Por qu una estructura asociativa no es la mejor eleccin para una clave de bsqueda en la que son
frecuentes las consultas de rangos?
Respuesta: Una consulta de rangos no puede ser contestada eficientemente empleando un ndice asociativo,
porque habr que leer todos los cajones. Esto se debe a que los valores de las claves en el rango no ocupan
espacios consecutivos en los cajones, sino que estn distribuidos uniformemente y aleatoriamente a travs de
todos los cajones.
12.17 Considrese un archivo en retcula en el cual se desea evitar el desbordamiento de cajones por
razones de rendimiento. En los casos en los que sea necesario un cajn de desbordamiento, en su lugar se
reorganiza el archivo. Presntese un algoritmo para esta reorganizacin.

Respuesta: Considrese un array de retculas de dos dimensiones. Cuando se desborda un cajn se pueden
dividir en dos los rangos correspondientes a esas fila y columna, en dos escalas lineales. De este modo las
escalas lineales tomarn, cada una, una entrada adicional y el cajn se divide en cuatro cajones. Los rangos
deberan dividirse de tal modo que aseguren que los cuatro cajones resultantes tienen casi el mismo nmero
de valores.
Puede haber otros cuantas heursticas para decidir cmo reorganizar los rangos y, por tanto, las escalas
lineales y arrays de retculas.
12.18 Considrese la relacin cuenta de la Figura 12.25.
a.
Constryase un ndice de mapa de bits sobre los atributos nombre-sucursal y saldo, separando los
valores de saldo en 4 rangos: menores que 250,entre 250 y menor que 500 entre 500 y menor que 750 y 750 o
mayor.
b.
Considrese una consulta que solicite todas las cuentas en Centro con un saldo de 500 o ms.
Mustrense los pasos implicados en la consulta as como los mapas de bits intermedios y finales construidos
para responder la consulta.
Respuesta: A continuacin se reproduce la relacin cuenta de la Figura 12.25.
C-217
C-101
C-110
C-215
C-102
C-201
C-218
C-222
C-305

Galapagar
Centro
Centro
Becerril
Navacerrada
Navacerrada
Navacerrada
Moralzarlal
Collado Mediano

750
500
600
700
400
900
700
700
350

Mapa de bits para nombre-sucursal


Galapagar
Centro
Becerril
Navacerrada
Moralzarzal
Collado Mediano

100000000
011000000
000100000
000011100
000000010
000000001

Mapa de bits para saldo


L1
L2
L3
L4

000000000
000010001
011100110
100001000

donde, nivel L1 est por debajo de 250, nivel L2 desde 250 hasta debajo de 500, L3 desde 500 hasta debajo de
750 y nivel L4 por encima de 750.

Para encontrar todas las cuentas de Centro con saldo de 500 o ms, se encuentra la unin de mapas
de bits para los niveles L3 y L4 y, despus, se inserta con el mapa de bits para Centro.
Centro
L3
L4
L3 L4
Centro
Centro (L3 L4)

011000000
011100110
100001000
111101110
011000000
011000000

De este modo, las tuplas requeridas son C-101 y C-110.


12.19 Mustrese cmo calcular la existencia de mapas de bits, desde otros mapas de bits. Asegrese que la
tcnica funciona incluso con valores nulos, mediante el empleo de un mapa de bits para el valor nulo.
Respuesta: La existencia de mapas de bits para una relacin se puede calcular tomando la unin (or lgico)
de todos los mapas de bits del atributo, incluyendo el mapa de bits para el valor nulo.
12.20 Cmo afecta el cifrado de los datos a los esquemas de ndices? En particular, cmo afectara a los
esquemas que intentan almacenar datos ordenados?
Respuesta: Ntese que los ndices deben operar sobre datos cifrados, o alguien podra acceder a los ndices
para interpretar los datos. De lo contrario, los ndices habran de restringirse para que slo pudieran acceder a
ellos determinados usuarios. Para mantener los datos en forma ordenada, el esquema de ndices tendra que
descifrar los datos en cada nivel del rbol. Ntese que los sistemas asociativos no se veran afectados.

CAPITULO

13

PROCESAMIENTO DE CONSULTAS
Este captulo describe los procesos por medio de los cuales las consultas son ejecutadas eficientemente por un
sistema de bases de datos. El captulo comienza con medidas de costes, para continuar con algoritmos de
evaluacin de expresiones y operadores de lgebra relacional. Este captulo aplica conceptos de los Captulos
3, 11 y 12.
Cambios a la tercera edicin:
El nico captulo sobre procesamiento de consultas de la edicin anterior, se ha reemplazado por dos
captulos, el primero sobre procesamiento y el segundo sobre optimizacin de las consultas.
Otro cambio significativo es la separacin de la estimacin del tamao desde la presentacin de los
algoritmos de procesamiento de las consultas.
Como resultado de estos cambios, los algoritmos de procesamiento de consultas se pueden cubrir sin los
tediosos y molestos detalles de la estimacin del tamao. Aunque la estimacin del tamao se cubre ms
tarde, en el Captulo 14, se ha simplificado la presentacin mediante la omisin de algunos detalles.
Los profesores pueden elegir cubrir el procesamiento, pero omitir la optimizacin de las consultas, sin prdida
de continuidad con los captulos posteriores.

Ejercicios
13.1
Por qu no hay que obligar a los usuarios a que elijan explcitamente una estrategia de
procesamiento de la consulta? Hay casos en los que es deseable que los usuarios sepan el coste de las
distintas estrategias posibles? Raznese la respuesta.
Respuesta: En general, no es conveniente forzar a los usuarios a elegir una estrategia de procesamiento de
consultas, porque los usuarios inexpertos podran seleccionar una estrategia ineficiente. La razn de que los
usuarios seran malas alternativas acerca de cmo procesar las consultas, es que ellos no tendran
conocimientos sobre cono se almacena una relacin ni sobre sus ndices. No es razonable forzar a los usuarios
a ser conscientes de estos detalles, dado que la facilidad de uso es el objeto principal de los lenguajes de
consultas de bases de datos. Si los usuarios se dieran cuenta del coste de las diferentes estrategias, podran
escribir consultas eficientemente, ayudando al rendimiento. Esto podra suceder si el sistema fuera utilizado
por expertos.
13.2

Considrese la siguiente consulta SQL para la base de datos bancaria:


select T.nombre-sucursal
from sucursal T, sucursal S
where T.activo > S.activo and S.ciudad-sucursal = Arganzuela

Escrbase una expresin del lgebra relacional equivalente a la dada que sea ms eficiente.
Justifquese la eleccin.
Respuesta:
PT.nombre-sucursal ((Pnombre-sucursal, activo (rT (sucursal))) |x| T.activo>S.activo
(Pactivo (s(ciudad-sucursal =Arganzuela)(rS(sucursal)))))
1

Esta expresin realiza la reunin zeta sobre la menor cantidad de datos posible. Hace esto restringiendo el
operando del lado derecho de la reunin, a slo aquellas sucursales de Arganzuela y, tambin, eliminando los
atributos innecesarios de ambos operandos.
13.3
Cules son las ventajas e inconvenientes de los ndices asociativos en relacin con ndices de rbol
B+-? Cmo podra influir el tipo de ndice en la eleccin de una estrategia de procesamiento de una consulta?
Respuesta: Los ndices asociativos permiten realizar muy rpidamente operaciones de bsqueda de puntos
(por ejemplo sA=r(relacin)), pero en bsquedas de rangos el ndice de rbol B+ sera mucho ms eficiente. Si
hay que evaluar una consulta de rangos, y slo est disponible un ndice asociativo, la mejor estrategia podra
ser realizar unan exploracin de ficheros, en vez de emplear ese ndice.
13.4
Supngase (para simplificar este ejercicio) que slo cabe una tupla en un bloque y que la memoria
puede contener, como mximo, tres marcos de pgina. Mustrense las secuencias creadas en cada ciclo del
algoritmo de ordenacin-mezcla, cuando se aplica para ordenar las siguientes tuplas sobre el primer atributo:
(canguro, 17), (ualabi, 21), (em, 1), (wombat, 13), (ornitorrinco, 3), (len, 8), (jabal, 4), (cebra, 11), (koala,
6), (hiena, 9), (clao, 2), (babuino, 12).

Respuesta: Las referencias a las tuplas (canguro, 17) hasta (babuino, 12) se harn empleando los nmeros de
tupla t1 hasta t12. Nos referimos a la j ensima secuencia utilizada por el i ensimo ciclo, como rij . Las secuencias
de ordenacin inicial tienen tres bloques cada una. Son:
r11 = {t3, t1, t2}
r12 = {t6, t5, t4}
r13 = {t9, t7, t8}
r14 = {t12, t11, t10}
Cada ciclo mezcla tres secuencias. Por lo tanto, las secuencias despus del final del primer ciclo son:
r21 = {t3, t1, t6, t9, t5, t2, t7, t4, t8}
r22 = {t12, t11, t10}
Al final del segundo ciclo, las tuplas estn completamente ordenadas en una secuencia:
r21 = {t3, t1, t6, t9, t5, t2, t7, t4, t8}
13.5
Dadas las relaciones r1(A ,B, C) y r2(C, D, E) con las siguientes propiedades: r1 tiene 20.000 tuplas,
r2 tiene 45.000 tuplas, 25 tuplas de r1 caben en un bloque y 30 tuplas de r2 caben en un bloque. Estmese el
nmero de accesos a bloques requeridos, utilizando cada una de las siguientes estrategias para la reunin r1 |x|
r2:

a.
b.
c.
d.

Reunin en bucle anidado


Reunin en bucle anidado por bloques
Reunin por mezcla
Reunin por asociacin

Respuesta: r1 necesita 800 bloques y r2 1.500. Supnganse M pginas de memoria. Si M >800, la reunin
puede hacerse fcilmente en 1.500 + 800 accesos a disco, empleando incluso reunin en bucle anidado
sencilla. As, consideraremos slo el caso en que M 800 pginas.
a.
Reunin en bucle anidado:
Empleando r1 como la relacin externa se necesitan 20.000 * 1.500+800 = 30.000.800 accesos a disco, si r2 es
la relacin externa son necesarios 45.000 * 800 + 1.500 = 36.001.500 accesos a disco.
b
Reunin en bucle anidado por bloques:
Si r1 es la relacin externa se necesitan 800 (M-1) * 1.500 + 800 accesos a disco, si r2 es la relacin
externa son necesarios 1.500 (M-1) * 800 + 1.500 accesos a disco.
c.
Reunin por mezcla
Suponiendo que r1 y r2 no estn inicialmente ordenadas sobre la clave de reunin, el coste de la ordenacin
total, inclusive el de la salida es Bs = 1.500(2 logM-1(1.500/M) + 2) + 800(2 logM-1(800/M) + 2) accesos a
disco. Suponiendo que todas las tuplas con el mismo valor de los atributos de la reunin caben en memoria, el
coste total es Bs + 1.500 + 800 accesos a disco.
d.
Reunin por asociacin:
Se supone que no tiene lugar desbordamiento. Dado que r1 es menor, se emplea como la relacin para
construir y r2 como la relacin para probar. Si M > 800/M, es decir no hay necesidad de una divisin
recursiva, entonces el coste es 3(1.500 + 800) = 6.900 accesos a disco, si no el coste es 2(1.500 + 800) logM1(800) - 1 + 1.500 + 800 accesos a disco.
13.6
Disese una variante del algoritmo hbrido de reunin por mezcla, para el caso en que las dos
relaciones no estn ordenadas segn el orden fsico de almacenamiento, pero ambas tienen un ndice

secundario ordenado en los atributos de la reunin.


Respuesta: Se mezclan la entradas de las hojas del primer ndice secundario ordenado, con las entradas de las
hojas del segundo ndice secundario ordenado. El fichero resultante contiene pares de direcciones, la primera
direccin en cada par apunta a una tupla de la primera relacin y la segunda direccin apunta a una tupla de la
segunda relacin.
El fichero resultante est primero ordenado sobre la primera direccin de la relacin. La relacin
entonces se rastrea en orden de almacenamiento fsico y las direcciones del fichero resultante se reemplazan
por los valores de la tupla actual. Despus se ordena el fichero resultante sobre la segunda direccin de la
relacin, permitiendo un rastreo de la segunda relacin en orden de almacenamiento fsico para completar la
reunin.
13.7
El algoritmo de reunin en bucle anidado indexado, descrito en el Apartado 13.5.3, podra ser
ineficiente si el ndice fuera secundario y hubiese varias tuplas con el mismo valor en los atributos de la
reunin. Por qu es ineficiente? Describir una forma, empleando ordenacin, para reducir el coste de
recuperacin de las tuplas de la relacin interna. Bajo qu condiciones sera este algoritmo ms eficiente que
la reunin por mezcla hbrida?
Respuesta: Si hay varias tuplas en la relacin interna con el mismo valor para los atributos de la reunin, se
puede tener que acceder a numerosos bloques de la relacin interna, para cada tupla de la relacin externa.
Esto es por lo que es ineficiente. Para reducir este coste se puede realizar una reunin de las tuplas de la
relacin externa, con slo las entradas de las hojas del ndice secundario, posponiendo la recuperacin de las
tuplas de la relacin interna. El fichero resultante obtenido se ordena sobre la direccin de la relacin interna,
permitiendo un eficiente rastreo del orden fsico, para completar la reunin.
La reunin por mezcla hbrida requiere que la relacin externa est ordenada. El algoritmo anterior
no cumple este requerimiento, pero para cada tupla de la relacin externa necesita realizar una bsqueda del
ndice sobre la relacin interna. Si la relacin externa es mucho ms grande que la relacin interna, el coste de
la bsqueda del ndice ser menor que el de la ordenacin, con lo que el algoritmo ser mas eficiente.
13.8
Estmese el nmero de accesos a bloques requeridos por la solucin del Ejercicio 13.6 para r1 |x| r2,
donde r1 y r2 son como las definidas en el Ejercicio 13.5.
1

Respuesta: r1 ocupa 800 bloques y r2 1.500. Supngase que hay n punteros por bloque hoja del ndice (se
asume que ambos ndices tienen bloques hojas y punteros de igual tamao). Supnganse M pginas de
memoria, M < 800.
El ndice de r1 necesitar B1 = 20.000 n bloques hoja y el de r2 necesitar, B2 = 45.000 n. Por lo
tanto, la reunin por mezcla necesitar B3 = B1 + B2 accesos, sin la salida. El nmero de tuplas de salida se
estima segn no = 20.000*45.000 (max(V (C,r1),V (C,r2))) . Cada tupla de salida necesitar dos punteros, por lo
que el nmero de bloques de salida de la reunin ser Bo1 = no n/2.Por lo tanto, la reunin necesita Bj =
B3+Bo1 accesos a disco.
Ahora se han de reemplazar los punteros por las tuplas actuales. Para la primera ordenacin se
necesitan, Bs1 = Bo1(2logM-1(Bo1/M) + 2) accesos a disco, incluyendo la grabacin de la salida a disco. El
nmero de bloques de r1 que han de ser accedidos para reemplazar los punteros por tuplas es min(800, no).
Supngase que n1 pares de la forma (r1 tupla, puntero a r2) caben en un bloque del disco. Por lo tanto el
resultado intermedio, despus de reemplazar los punteros de r1, ocupar Bo2 = (no/n1) bloques. As el primer
ciclo, para la sustitucin de los punteros de r1, costar Bf = Bs1 + Bo1 + min(800, no) + Bo2 accesos a disco.
El segundo ciclo, para la sustitucin de los punteros de r2, tiene un anlisis similar. Supngase que n2
tuplas de la reunin final caben en un bloque. Entonces el segundo ciclo, para la sustitucin de los punteros de
r2, costar Bs = Bs2 + Bo2 + min(1500, no) accesos a disco, donde Bs2 = Bo2(2logM-1(Bo2/M) + 2).
Por lo tanto, el nmero total de accesos a disco para la reunin es Bj +Bf +Bs y el nmero de pginas
de salida es no/n2.

13.9
Sean r y s dos relaciones sin ndices y supngase que no estn ordenadas. Suponiendo una memoria
infinita, cul es la manera ms econmica (en trminos de operaciones de E/S) para calcular r|x| s? Cunta
memoria se necesita en este algoritmo?
1

Respuesta: Se puede almacenar en memoria la relacin ms pequea entera, leer la relacin mayor bloque a
bloque y realizar una reunin en bucle anidado empleando la mayor como relacin externa. El nmero de
operaciones de E/S es igual a br + bs y el requerimiento de memoria es min(br, bs) + 2 pginas.
13.10 Supngase que hay un ndice de rbol B+- disponible en ciudad-sucursal de la relacin sucursal y
que no hay ms ndices. Cul sera el mejor modo de manejar las siguientes selecciones con negaciones?
a.
(ciudad-sucursal <Arganzuela)(sucursal)
b.
(ciudad-sucursal =Arganzuela)(sucursal)
c.
(ciudad-sucursal <Arganzuela v activo <5000)(sucursal)
Respuesta:
a.
Emplear el ndice para localizar la primera tupla cuyo campo ciudad-sucursal tenga valor
Arganzuela. Desde esta tupla, seguir las cadenas de punteros hasta el final, recuperando todas las tuplas.
b.
Para esta consulta el ndice no cumple ningn objetivo. Se puede rastrear secuencialmente el fichero
y seleccionar todas las tuplas cuyo campo ciudad-sucursal sea diferente de Arganzuela.
c.

Esta consulta es equivalente a


s(ciudad-sucursal Arganzuela activo < 5.000)(sucursal)

Empleando el ndice ciudad-sucursal se pueden recuperar todas las tuplas con valor ciudad-sucursal mayor o
igual que Arganzuela, siguiendo las cadenas de los punteros desde la primera tupla Arganzuela. Tambin
se aplica el criterio adicional, sobre cada tupla, de activo < 5.000.
13.11 El algoritmo de reunin por asociacin descrito en el Apartado 13.5.5 calcula la reunin natural de
dos relaciones. Descrbase cmo extender el algoritmo de reunin por asociacin para calcular la reunin
externa por la izquierda, la reunin externa por la derecha y la reunin externa completa. (Sugerencia: se
puede mantener informacin adicional con cada tupla en el ndice asociativo para detectar si alguna tupla de
la relacin para probar concuerda con la tupla del ndice asociativo.)
Comprubese el algoritmo con las relaciones cliente e impositor.
nombre-cliente
Adams
Brooks
Hayes
Gonzlez
Santos
Lindsay
Curry
Santos
Turner
Glenn
Green
Santos
Figura 13.17

calle-cliente
Spring
Senator
Main
Alma
Main
Park
North
North
Putnam
Sand Hill
Walnut
Nassau

ciudad-cliente
Pittsfield
Arganzuela
Harrison
Palo Alto
Harrison
Pittsfield
Rye
Rye
Stamford
Woodside
Stamford
Princeton

Ejemplo de relacin cliente

Respuesta: Para la tupla en consideracin tr de la relacin probar, si no se encuentra ninguna tupla que se
corresponda, en la divisin por asociacin de la relacin construir, se rellena con nulos y se incluye en el
resultado. Esto dar la reunin externa por la izquierda natural tr ]x| ts. Para obtener la reunin externa por la
derecha natural tr |x[ ts, se puede mantener un indicador booleano con cada tupla en la divisin de la relacin
para construir actual, Hsi residente en memoria, y activarlo siempre que cualquier tupla de la relacin para
probar se corresponda con ella. Cuando se haya terminado con Hsi, todas las tuplas en ella que no tengan su
indicador activado se rellenarn con nulos y se incluirn en el resultado. Para obtener la reunin externa
completa natural, se hacen juntas las dos operaciones anteriores.
Para probar nuestro algoritmo se emplean las relaciones de muestra cliente e impositor, de las
Figuras 13.17 y 13.18. Supngase que hay suficiente memoria para mantener tres tuplas de la relacin para
construir, ms un ndice asociativo para estas tres tuplas.
Como relacin para construir se emplea impositor. Se utiliza la funcin de asociacin simple que devuelve la
primera letra de nombre-cliente. Tomando las primeras particiones se obtiene Hr1 = {(Adams, Spring,
Pittsfield)} y Hs1 = f. La tupla en la divisin de la relacin para probar no tendr ninguna tupla equivalente,
por lo que se obtiene (Adams, Spring, Pittsfield, nulo). En la divisin para D, la tupla de la relacin
para construir est sin equivalencias, por lo que proporciona una tupla de salida (David, nulo, nulo, A-306).
En la divisin para H, se encuentra una correspondencia por primera vez, produciendo la tupla de salida
(Hayes, Main, Harrison, A-102). Procediendo de forma similar, se procesan todas las divisiones y se
completa la reunin.
1

13.12 Escrbase el seudocdigo para un iterador que implemente la reunin en bucle anidado indexada,
donde la relacin externa est encauzada. Emplear las funciones de iterador estndares en el seudocdigo.
Mustrese el estado del iterador entre las llamadas.
Respuesta: Sea externo el iterador que devuelve sucesivas tuplas desde la relacin externa encauzada. Sea
interno el iterador que devuelve sucesivas tuplas de la relacin interna que tiene un valor dado en los atributos
de la reunin. El iterador interno devuelve estas tuplas realizando una bsqueda de ndices. Las funciones
IndexedNLJoin::open, IndexedNLJoin::close e IndexedNLJoin::next para implementar los iteradores de
la reunin en bucle anidado indexada, se dan a continuacin.
nombre-cliente
Gonzlez
Gonzlez
Santos
Santos
Hayes
Turner
David
Lindsay
Figura 13.18

nmero-cuenta
A-101
A-201
A-217
A-215
A-102
A-305
A-306
A-222

Ejemplo de relacin impositor

Los dos iteradores externo e interno, los valores de las ltimas tuplas ledas de la relacin externa tr y un
indicador hechor mostrando si el final del rastreo de la relacin externa se ha alcanzado, constituyen la
informacin de estado que es necesario recordar por IndexedNLJoin entre llamadas.

IndexedNLJoin::open()
begin
externo.open();
interno.open();
hechor := falso;
if(externo.next() falso)
mover la tupla desde la memoria intermedia de salida de externo hasta tr;
else
hechor := cierto;
end
IndexedNLJoin::close()
begin
externo.close();
interno.close();
end
boolean IndexedNLJoin::next()
begin
while(hechor)
begin
if(interno.next(tr[atributos-reunin]) falso)
begin
mover la tupla desde la memoria intermedia de salida de interno hasta ts;
calcular tr|x| ts y colocarlo en la memoria intermedia de salida;
devolver cierto;
end
else
if(externo.next() falso)
begin
mover la tupla desde la memoria intermedia de salida de externo
1

hasta tr;
rebobinar interno a la primera tupla de s;
end
else
hechor := cierto;
end
return falso;
end
13.13

Disense algoritmos basado en ordenacin y asociacin para el clculo de la operacin divisin.

Respuesta: Supngase que r(T S) y s(S) son dos relaciones y que se ha de calcular r s.
Mediante algoritmos basados en la ordenacin se ordena la relacin s sobre S. Ordenar la relacin r
sobre (T,S). Ahora, iniciar el rastreo de r y mirar los valores del atributo T de la primera tupla. Rastrear r hasta
que las tuplas tengan el mismo valor que T. Rastrear tambin simultneamente s y verificar si cada tupla de s
aparece como el atributo S de r, de igual manera a la reunin por mezcla. De ser as, obtener el valor de T y
proceder con el siguiente valor de T. Puede que sea necesario rastrear varias veces la relacin s, pero r slo se
rastrear una vez. El total de accesos a disco ser, despus de ordenar ambas relaciones, |r + N * |s|, donde N
es el nmero de valores distintos de T en r.
Se asume que, para cualquier valor de T, todas las tuplas en r con ese valor de T caben en memoria y
se considerar el caso general al final. Divdase la relacin r en atributos de T, de tal manera que cada

particin quepa en memoria (es siempre posible por la suposicin anterior). Considrense las divisiones una a
una. Constryase una tabla asociativa sobre las tuplas, al mismo tiempo que se agrupan todos los valores
diferentes de T en una tabla asociativa independiente. Por cada valor de T, Ahora, por cada valor VT de T,
cada valor s de S, analizar la tabla asociativa sobre (VT , s). Si cualquiera de los valores est ausente rechazar
el valor VT, de lo contrario obtener el valor VT.
En el caso de que ninguna de las tuplas de r con un valor para T quepa en memoria, divdanse r y s
sobre los atributos de S, de tal manera que se cumpla la condicin y ejectese el algoritmo sobre cada uno de
los correspondientes pares de divisiones ri y si. Obtener la interseccin de los valores de T generados en cada
divisin.

CAPITULO

14

OPTIMIZACIN DE CONSULTAS
Este captulo describe cmo se optimizan las consultas. Comienza con las estadsticas empleadas para la
optimizacin de las consultas y describe en lneas generales como emplear estas estadsticas para estimar
selecciones y tamaos del resultado de las consultas, para realizar una estimacin de costes. Las reglas de
equivalencia se tratan a continuacin, seguidas por una descripcin de un modelo de algoritmo de
optimizacin de consultas, despus del clsico algoritmo de optimizacin del Sistema R y alcanza la
optimizacin de las sub consultas anidadas. El captulo termina con una descripcin de vistas materializadas,
su papel en la optimizacin y una descripcin de algoritmos de mantenimiento de vistas incremental.
Debera enfatizarse que las estimaciones del tamao y las selecciones de las consultas son
aproximadas, incluso si las suposiciones hechas como es el caso de la uniformidad, se cumplen. Adems, las
estimaciones de costes por diversos algoritmos presentados en el Captulo 13, consideran slo una mnima
cantidad de memoria y son, as, estimaciones en el peor de los casos con respecto a la disponibilidad del
espacio de memoria intermedia. Como resultado, las estimaciones de costes nunca son muy precisas. Como
quiera que experiencias prcticas han demostrado que tales estimaciones tienden a ser razonablemente
exactas, los planes de optimizacin con respecto al coste estimado raramente son mucho peores que los planes
de optimizacin verdaderos.
No se espera que los estudiantes memoricen las estimaciones de tamao y se acentan slo los
procesos por los que se alcanzan las estimaciones, no los valores exactos. La precisin en trminos de coste
estimado no es un objetivo importante, por lo que estimaciones que parten de unas pocas operaciones de E/S
pueden ser consideradas aceptables.
Si est disponible para el uso de los estudiantes un sistema de bases de datos comercial, se puede
disear un trabajo de laboratorio en el que los estudiantes midan la aceleracin del rendimiento que aportan
los ndices. Numerosos productos de bases de datos comerciales tienen una prestacin de plan de
explicacin, que permite al usuario encontrar el plan de evaluacin empleado en una consulta. Merece la
pena pedir a los estudiantes que analicen los planes generados por diferentes consultas, con y sin ndices. Una
tarea ms desafiante es disear pruebas para ver cmo de inteligente es el optimizador de consultas y adivinar,
a partir de estos experimentos, cules de las tcnicas de optimizacin cubiertas en el captulo se emplean en el
sistema.
Cambios a la tercera edicin:
El principal cambio a la edicin anterior es que el captulo sobre procesamiento de consultas se ha dividido en
dos.
La cobertura de la estimacin del tamao para diferentes operaciones, que anteriormente estaba tratada con
algoritmos para las operaciones, se ha separado ahora en un apartado independiente (Apartado 14.2). Algunas
de las formulas para la estimacin de estadsticas se han simplificado y se han aadido una pocas nuevas.
Se ha aportado seudocdigo para los algoritmos de programacin dinmica para la optimizacin del orden de
las reuniones. Hay un nuevo apartado sobre la optimizacin de sub consultas anidadas, que forman una parte
importante de la optimizacin del SQL. El apartado sobre vistas materializadas es tambin nuevo en esta
edicin.

Ejercicios
14.1
El agrupamiento de los ndices puede permitir un acceso ms rpido a los datos de lo que permiten
los ndices no agrupados. Indquese el momento en que se deben crear ndices no agrupados pese a las
ventajas de los ndices agrupados. Explquese la respuesta.
Respuesta: Slo puede haber un ndice agrupado para un fichero, basado en la clave de ordenacin.
Cualquier consulta que necesite buscar sobre las otras claves no ordenadas necesitar un ndice no agrupado.
Si la consulta accede a la mayora de las tuplas en el fichero, puede ser ms eficiente ordenar el fichero sobre
la clave deseada, en vez de emplear el ndice no agrupado.
14.2
Considrense las relaciones r1(A, B, C), r2(C, D, E) y r3(E, F), con claves primarias A, C y E,
respectivamente. Supngase que r1 tiene 1.000 tuplas, r2 tiene 1.500 tuplas y r3 tiene 750 tuplas. Estmese el
tamao de r1 |x| r2 |x| r3y disese una estrategia eficiente para el clculo de la reunin.
1

Respuesta:
La relacin resultante de la reunin de r1, r2, y r3 ser la misma, no importa el camino con el que se renan,
debido a las propiedades asociativa y conmutativa de las reuniones. As, se considerar el tamao basado en la
estrategia de ((r1 |x| r2) |x| r3). Reuniendo r1 con r2 se conseguir una relacin de, a lo sumo, 1.000 tuplas,
dado que C es una clave para r2. Igualmente, reuniendo ese resultado con r3 se conseguir una relacin de, a
lo sumo, 1.000 tuplas, porque E es una clave para r3. Por lo tanto la relacin final tendr, como mximo,
1.000 tuplas.
1

Una estrategia eficiente para el clculo de esta reunin sera crear un ndice sobre el atributo C para la
relacin r2 y sobre E para r3. Entonces, por cada tupla en r1 se tiene lo siguiente:
a.
Emplear el ndice para r2 para buscar, a lo sumo, una tupla que se corresponda con el valor de C, en
r1.
b.
Emplear el ndice creado sobre E para buscar en r3, a lo sumo, una tupla que se corresponda con el
valor nico de E en r2
14.3
Considrense las relaciones r1(A, B, C), r2(C, D, E) y r3(E, F) del Ejercicio 14.2. Supngase que no
hay claves primarias, excepto el esquema completo. Sean V (C, r1) 900, V (C, r2) 1.100, V (E, r2) 50 y V (E,
r3) 100.
Supngase que r1 tiene 1.000 tuplas, r2 tiene 1.500 tuplas y r3 tiene 750 tuplas. Estmese el tamao de r1 |x| r2
|x| r3 y disese una estrategia eficiente para calcular la reunin.
Respuesta: El tamao estimado de la relacin se puede determinar calculando el nmero medio de tuplas que
se reuniran con cada tupla de la segunda relacin. En este caso, por cada tupla de r1, 1.500/V (C, r2) = 15/11
tuplas (por trmino medio) de r2 se reuniran con ella. La relacin intermedia tendra 15.000/11 tuplas. Esta
relacin se rene con r3 para conseguir un resultado de aproximadamente 10.227 tuplas (15.000/11 750/100
= 10.227). Una buena estrategia reunira primero r1 y r2, dado que la relacin intermedia es de tamao
parecido a r1 r2. Despus se rene r3 a este resultado.
14.4
Supngase que se dispone de un rbol B+ para ciudad-sucursal para la relacin sucursal y que no se
dispone de ningn otro ndice. Indquese la mejor manera de tratar las siguientes selecciones que implican a la
negacin.
a.
(ciudad-sucursal <Arganzuela)(sucursal)
b.
(ciudad-sucursal =Arganzuela)(sucursal)
c.
(ciudad-sucursal <Arganzuela v activo <5000)(sucursal)

Respuesta:
a.
Emplear el ndice para localizar la primera tupla cuyo campo ciudad-sucursal tenga valor
Arganzuela. Desde esta tupla, seguir las cadenas de punteros hasta el final, recuperando todas las tuplas.
b.
Para esta consulta el ndice no cumple ningn objetivo. Se puede rastrear secuencialmente el fichero
y seleccionar todas las tuplas cuyo campo ciudad-sucursal sea diferente de Arganzuela.
c.
Esta consulta es equivalente a la consulta
s(ciudad-sucursal Arganzuela

activo<5000)(sucursal)

Empleando el ndice ciudad-sucursal se pueden recuperar todas las tuplas con valor ciudad-sucursal mayor o
igual que Arganzuela, siguiendo las cadenas de los punteros desde la primera tupla Arganzuela. Tambin
se aplica el criterio adicional, sobre cada tupla, de activo < 5.000.
14.5
Supngase que se dispone de un rbol B+ para (nombre-sucursal, ciudad-sucursal) para la relacin
sucursal. Indquese la mejor manera de tratar la seleccin siguiente.
(ciudad-sucursal

<Arganzuela )

)(sucursal)

(activo

<5000)

(nombre-sucursal <Centro

Respuesta: Empleando el ndice se localiza la primera tupla con nombre-sucursal Centro.


Entonces los punteros seguirn recuperando sucesivas tuplas, mientras que ciudad-sucursal sea menor que
Arganzuela. De entre las tuplas recuperadas se rechazarn las que no cumplan la condicin (activo <
5.000).
14.6
Demustrese que se cumplen las equivalencias siguientes. Explquese el modo en que se pueden
aplicar para mejorar la eficiencia de determinadas consultas:
a E1 |x|? (E2 E3) = (E1 |x|? E2 E1 |x|? E3).
b. ? ( A G F (E)) = A G F (? (E)), donde slo utiliza atributos de A.
c. ? (E1 ]x| E2) = ? (E1) ]x| E2, donde slo utiliza atributos de E1.
Respuesta:
a E1 |x|q (E2 E3) = (E1 |x|q E2 E1 |x|q E3).
e renombra (E1 |x|q (E2 E3)) como R1, (E1 |x|q E2) como R2 y (E1 |x|q E3) como R3. Es claro que si una
tupla t pertenece a R1, tambin pertenece a R2. Si una tupla t pertenece a R3, t[atributos de E3] will pertenecer
a E3, por lo que t no puede pertenecer a R1. Desde lo anterior se puede decir que
"t, t R1 t (R2 - R3)
Obviamente, si una tupla t pertenece a R2 - R3, entonces t[atributos de R2] E2 y t[atributos de R2] E3. Por
lo tanto:
"t, t (R2 - R3) t R1
Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es til porque la evaluacin de
la reunin por el lado derecho producir numerosas tuplas que, finalmente, se eliminarn del resultado. La
expresin del lado izquierdo se puede evaluar ms eficientemente.

sq( AGF (E)) = AGF (sq(E)), donde q utiliza slo atributos de A.


q utiliza slo atributos de A. Por lo tanto, si cualquier tupla t en la salida de AGF (E) se filtra mediante
la seleccin del lado izquierdo, todas las tuplas en E cuyos valores en A sean iguales a t[A] se filtran por la
seleccin del lado derecho. Por lo tanto:

"t, t sq( AGF (E)) t AGF (sq(E))


Empleando un razonamiento similar, se puede concluir que
"t, t AGF (sq(E)) t sq(AGF (E))
Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es til porque la evaluacin
del lado derecho evita realizar la agregacin en grupos que, de todas formas, se eliminarn del resultado. As,
la expresin del lado derecho se puede evaluar ms eficientemente que la del lado izquierdo.
sq(E1 ]x| E2) = sq(E1) ]x| E2 donde slo utiliza atributos de E1.
q utiliza slo atributos de E1. Por lo tanto, si cualquier tupla t en la salida de (E1 ]x| E2) se filtra
mediante la seleccin del lado izquierdo, todas las tuplas en E1 cuyos valores sean iguales a t[E1] se filtran por
la seleccin del lado derecho. Por lo tanto:
c.

"t, t sq(E1 ]x| E2) t sq(E1) ]x| E2


1

Empleando un razonamiento similar, se puede concluir que


"t, t sq(E1) ]x| E2 t sq(E1 ]x| E2)
1

Las dos ecuaciones anteriores implican la equivalencia dada. Esta equivalencia es til porque la evaluacin
del lado derecho evita que se produzcan muchas tuplas de salida que, de todas formas, se eliminarn del
resultado. As, la expresin del lado derecho se puede evaluar ms eficientemente que la del lado izquierdo.
14.7
Mustrese el modo de obtener las equivalencias siguientes mediante una secuencia de
transformaciones utilizando las reglas de equivalencia del Apartado 14.3.1.
a. sq1q2 q3(E) = sq1(sq2(sq3(E)))
b.
sq1q2(E1 |x|q3 E2) = sq1(E1 |x|q3 (sq2 (E2))), donde 2 slo implica atributos de E2
Respuesta:
a.
Empleando la regla 1, sq1q2 q3(E) se convierte en sq1(sq2q3(E)). Aplicando de nuevo la regla 1 se
tiene sq1(sq2(sq3(E))).
b
sq1q2(E1 |x|q3 E2), aplicando la regla 1 se convierte en sq1(sq2(E1 |x|q3 E2)) Aplicando la regla 7.a
esto se convierte en sq1(E1 |x|q3 (sq2 (E2))).
14.8
Para cada uno de los siguientes pares de expresiones, dense ejemplos de relaciones que muestren que
las expresiones no son equivalentes.
a.
A (R - S) y A (R) A (S)
b.
B < 4 ( A G max (B) (R)) y A G max (B) ( B < 4 (R))
c.
En las expresiones anteriores, si las dos apariciones de max se sustituyeran por min, indicar si las
expresiones seran equivalentes.
d.
(R ]x| S) ]x| T y R ]x| (S ]x| T)
En otras palabras, la reunin externa por la izquierda no es asociativa. (Sugerencia: Supngase que los
esquemas de las tres relaciones son R(a, b1), S(a, b2) y T (a, b3), respectivamente.)
e.
(E 1 ]x| E2) y E 1 ]x| (E 2), donde utiliza slo atributos de E 2

Respuesta:
a.
R = {(1, 2)}, S = {(1, 3)} El resultado de la expresin del lado izquierdo es {(1)}, mientras que el
resultado de la expresin del lado derecho est vaco.
b
R = {(1, 2), (1, 5)} La expresin del lado izquierdo tiene un resultado vaco, mientras que la del lado
derecho tiene el resultado {(1, 2)}.
c.
S, al reemplazar los max por los min, las expresiones sern equivalentes. Cualquier tupla que la
seleccin en los lados de la derecha elimine, no pasara la seleccin sobre los lados de la izquierda, si fuera el
mnimo valor y, de cualquier manera, sera eliminada si no fuera el valor mnimo.
d.
R = {(1, 2)}, S = {(2, 3)}, T = {(1, 4)}. La expresin de la izquierda da {(1, 2, nulo, 4)}, mientras que
la de la derecha da {(1, 2, 3, nulo)}.
e.
Sea R del esquema (A,B) y S del (A,C). Sean R = {(1, 2)}, S = {(2, 3)} y la expresin C = 1. El
resultado de la expresin del lado izquierdo est vaco, mientras que el resultado de la expresin del lado
derecho es {(1, 2, nulo)}.
14.9
SQL permite las relaciones con duplicados (Captulo 4).
a.
Defnanse las versiones de las operaciones bsicas del lgebra relacional , , , |x|, -, y que
trabajan en relaciones con duplicados, de manera consistente con SQL.
b.
Comprubense cules de las reglas de equivalencia, de la 1 a la 7.b, se cumplen para la versin
multiconjunto del lgebra relacional definida en el apartado a.
Respuesta:
a.
Aqu se definen las versiones para multi conjuntos de los operadores del lgebra relacional.
Dadas las relaciones de multi conjuntos r1 y r2,
i.
s
Sea c1 la copia de la tupla t1 en r1. Si t1 cumple la seleccin sq, entonces hay c1 copias de t1 en sq(r1), de lo
contrario no hay ninguna.
ii.

Por cada copia de la tupla t1 en r1, hay una copia de la tupla A(t1) en A(r1), donde A(t1) denota la
proyeccin de la tupla concreta t1.
iii

Si hay c1 copias de la tupla t1 en r1 y c2 copias de la tupla t2 en r2, entonces hay c1 * c2 copias de la tupla t1.t2
en r1 r2.
iv |x|
El resultado ser lo mismo que un producto cruzado seguido de una seleccin.
v
Si hay c1 copias de la tupla t en r1 y c2 copias de la tupla t en r2, entonces habr c1 - c2 copias de t en r1 - r2,
con tal que c1 - c2 sea positivo.
vi

Si hay c1 copias de la tupla t en r1 y c2 copias de la tupla t en r2, entonces habr c1 + c2 copias de t en r1 r2.
vii

Si hay c1 copias de la tupla t en r1 y c2 copias de la tupla t en r2, entonces habr min(c1, c2) copias de t en r1
r2.

b
Todas las reglas de equivalencia, de la 1 a la 7.b del Apartado 14.3.1, se mantienen para la versin
multiconjunto del lgebra relacional definida en la primera parte.
Existen reglas de equivalencia que se cumplen para el lgebra relacional ordinaria, pero no para la
versin de multi conjuntos. Por ejemplo, considrese la regla:
A B = A B - (A - B) - (B - A)
Esto es obviamente vlido en el lgebra relacional sencillo. Considrese un ejemplar de multiconjunto en el
que una tupla t aparece 4 veces en A y 3 veces en B; t aparecer 3 veces en el resultado de la expresin del
lado izquierdo, pero 6 veces en el del lado derecho. La razn por la que esta regla no se mantiene en la
versin multiconjunto, est en la asimetra de la semntica de la unin e interseccin de multi conjuntos.
14.10 ** Demustrese que, con n relaciones, hay (2(n-1))!/(n-1)! ordenes de reunin diferentes.
Sugerencia: Un rbol binario completo es aqul en el que cada nodo interno tiene exactamente dos hijos.
Utilcese el hecho de que el nmero de rboles binarios completos diferentes con n nodos hojas es
Si se desea, se puede obtener la frmula para el nmero de rboles binarios completos con n nodos, a partir
de la frmula para el nmero de rboles binarios con n nodos. El nmero de rboles binarios con n nodos es
; este nmero se conoce como nmero de Catalan y su obtencin puede hallarse en cualquier libro
de texto estndar sobre estructuras de datos o algoritmos.
Respuesta: Cada orden de reunin es un rbol binario completo (cada nodo sin hojas tiene exactamente dos
hijos) con las relaciones como hojas. El nmero de rboles binarios completos diferentes con n nodos hojas es
(consltese cualquier libro de texto sobre Estructuras Discretas, por ejemplo Fundamentals of Data
Structures por Horowitz y Sahni, para una prueba). Multiplicando esto por n!, por el nmero de
permutaciones de las n hojas, se obtiene el resultado deseado.
14.11 ** Demustrese que el orden de reunin de menor coste puede calcularse en un tiempo de O(3n).
Supngase que se puede almacenar y examinar la informacin sobre un conjunto de relaciones (como el orden
ptimo de reunin para el conjunto y el coste de ese orden de reunin) en tiempo constante. (Si se encuentra
difcil este ejercicio, demustrese al menos la cota de tiempo menos estricta de O(22n).)
Respuesta: Considrese el algoritmo de programacin dinmica dado en la Figura 14.5 del libro de texto. Por
cada subconjunto con k + 1 relaciones, el orden de reunin ptimo se puede calcular con el tiempo 2k+1. Esto
es as porque, para un par concreto de subconjuntos A y B, se necesita tiempo constante y hay a lo sumo 2k+12 subconjuntos diferentes que A puede denotar. As, sobre todos los

subconjuntos de tamao k + 1, este

coste es
. Sumando sobre todos los k desde 1 hasta n-1, se obtiene la expansin binomial de ((1 +
x)n - x) con x = 2. As, el coste total es menor que 3n.
14.12 Demustrese que, si slo se toman en consideracin los rboles de reunin en profundidad por la
izquierda, como en el optimizador System R, el tiempo empleado en buscar el orden de reunin ms eficiente
es del orden de n2n. Supngase que slo hay un orden interesante.
Respuesta: La deduccin del tiempo empleado es similar al caso general, excepto que en vez de considerar
2k+1 - 2 subconjuntos de tamao menor o igual que k para A, slo es necesario considerar k + 1 subconjuntos
de tamao exactamente igual a k. Esto es as porque el operando de la derecha de la reunin ms alta ha de ser
una relacin simple. Por lo tanto, el coste total de encontrar el mejor orden de reunin para todos los
subconjuntos de tamao k + 1 es

, el cual es igual a n

. Sumando sobre todos los k desde

1 hasta n-1, empleando la expansin binomial de ((1 + x)n - 1) con x = 1, se obtiene un coste total menor que
n2n-1.
14.13 Se dice que un conjunto de reglas de equivalencia est completo si, siempre que dos expresiones son
equivalentes, se puede obtener una de la otra mediante una secuencia de utilizaciones de las reglas de
equivalencia. Indquese si el conjunto de reglas de equivalencia que se consider en el Apartado 14.3.1 es
completo. Sugerencia: Considerar la equivalencia 3 = 5 (r) = { }.
Respuesta: Dos expresiones relacionales se definen equivalentes, cuando sobre todas las relaciones de
entrada, generan la misma salida. El conjunto de reglas de equivalencia considerado en el Apartado 14.3.1 no
es completo. Las expresiones 3=5(r) y { } son equivalentes, pero no se puede demostrar empleando slo estas
reglas.
14.14 Decorrelacin:
a.
Escrbase una consulta anidada sobre la relacin cuenta para buscar, para cada sucursal cuyo nombre
comience por B, todas las cuentas con el saldo mximo de cada sucursal.
b.
Rescrbase la consulta anterior sin emplear consultas anidadas; en otras palabras, decorrelacinese la
consulta.
c.
Disese un procedimiento (parecido al descrito en el Apartado 14.4.5) para decorrelacionar estas
consultas.
Respuesta:
a.
La consulta anidada es la siguiente:
select S.nmero-cuenta
from cuenta.S
where S.nombre-sucursal like B% and
S.saldo =
(select max(T.saldo)
from cuenta T
where T.nombre-sucursal = S.nombre-sucursal)
b

La consulta descorrelacionada es la siguiente:


create table t1 as
select nombre-sucursal, max (saldo)
from cuenta
group by nombre-sucursal
select nmero-cuenta
from cuenta, t1
where cuenta.nombre-sucursal like B% and
cuenta.nombre-sucursal = t1.nombre-sucursal and
cuenta.saldo = t1.saldo

c.

En general, considrense consultas de la forma:


select
from L1
where P1 and
A1 op
(select f(A2)
from L2
where P2)

donde f es alguna funcin agregada sobre los atributos A2 y op es algn operador binario booleano. La
consulta se puede rescribir como
create table t1(V,Ag2) as
select V, f(A2)
from L2
where P12
group by V
select
from L1, t1
where P1 and P22 and
A1 op t1.Ag2
donde
i.
V contiene todos los atributos que se emplean en la selecciones que implican variables de
correlacin en la consulta anidada
ii.
el predicado P12 contiene los predicados de P2 sin las selecciones que implican las variables de
correlacin
iii
P22 introduce las selecciones que implican las variables de correlacin. (Si los predicados en P2 2
hacen referencia a los nombres de relacin en L2, deben rescribirse para referirse a la relacin t1.)
14.15 Descrbase el modo de conservar de manera incremental el resultado de las operaciones siguientes,
tanto para inserciones como para eliminaciones.
a.
Unin y diferencia de conjuntos
b.
Reunin externa por la izquierda
Respuesta:
a.
Dada la vista materializada v = r s, cuando se inserta una tupla en r, se verifica si est presente en
v y si no es as, se aade a v . Cuando una tupla se elimina de r, se comprueba si est en s y, si no est, se
elimina de v. La inserciones y las eliminaciones en s se tratan de manera simtrica.
Para la diferencia de conjuntos, dada una vista v = r - s, cuando se inserta una tupla en r, se verifica
si est presente en s y, si no es as, se aade a v. Cuando una tupla se elimina de r, se elimina de v si est
presente. Cuando una tupla se inserta en s, se borra de v si est presente. Cuando una tupla se elimina de s, se
comprueba si est en r y, si lo est, se aade a v.
b.
Dada una vista materializada v = r ]x| s, cuando se inserta un conjunto de tuplas ir en r, se aaden las
tuplas ir ]x| s a la vista. Cuando ir se elimina de r, se elimina ir ]x| s de la vista. Cuando un conjunto de tuplas
is se inserta en s, se calcula r |x| is. Se encuentran todas las tuplas de r que previamente no se correspondieron
con ninguna tupla de s(es decir, aquellas que se rellenaron con nulos en in r ]x| s), pero que se corresponden
con is.
Se eliminan de la vista todas las entradas rellenadas con nulos y se aaden las tuplas r |x| s a la vista.
Cuando is se elimina de s, se eliminan las tuplas r |x| is de la vista. Se buscan tambin todas las tuplas en r que
se corresponden con is, pero que no se corresponden con ninguna otra tupla en s. Se aaden todas estas a la
vista, despus de rellenarlas con valores nulos.
1

14.16 Se da un ejemplo de expresin que defina una vista materializada y dos situaciones (conjuntos de
estadsticas para las relaciones de entrada y sus diferenciales), tales que la conservacin incremental de la
vista sea mejor que su reclculo en una de las situaciones y el reclculo sea mejor en la otra.
Respuesta: Sean tres relaciones r, s y t. Considrese una vista materializada sobre estas, definida por (r |x| s |x|
t). Supngase que la relacin r no tiene ningn atributo en comn con s o t, mientras que s y t tienen relacin
de clave externa Cada una de ellas tiene 1.000 tuplas, y se aaden a r 100 tuplas. El reclculo es mejor,
porque (s |x| t) se puede calcular primero, el cual tendr 1.000 tuplas. Entonces puede reunirse con t. En la
1

conservacin incremental de la vista, el incremento en t primero se reunir con s o con t, lo cual tendr
100.000 tuplas (producto cartesiano). Esta enorme relacin se reunir entonces con t, lo cual ser muy
costoso.
Sin embargo, si se aaden 100 tuplas a s en vez de a r, en la situacin anterior, el mantenimiento
incremental de la vista ser claramente mejor, pues un incremento en s se puede reunir con t para obtener una
relacin de tamao 100, la cual se puede reunir con r.

CAPITULO

15

TRANSACCIONES
Este captulo aporta una visin general del procesamiento de transacciones. Primero motiva los problemas de
atomicidad, consistencia, aislamiento y durabilidad, e introduce la nocin de transacciones ACID.
Posteriormente presenta algunos esquemas simples y sus inconvenientes, por lo que incentiva las tcnicas
descritas en los Captulos 16 y 17. El resto del captulo describe la nocin de planificacin y los conceptos de
secuencialidad.
Se recomienda enormemente cubrir este captulo en un primer curso de bases de datos, dado que
introduce conceptos que todo estudiante de bases de datos debera conocer. En los Captulos 16 y 17 se
cubren los detalles sobre como implantar las propiedades de las transacciones.
En la presentacin inicial sobre los requerimientos ACID, el requerimiento de aislamiento sobre
transacciones concurrentes no insiste en la secuencialidad. Segn Haerder y Reuter [1983], el aislamiento slo
requiere que los sucesos de una transaccin permanezcan ocultos de otras transacciones que se estn
ejecutando en modo concurrente, con el objeto de permitir una vuelta atrs. Sin embargo al final del captulo,
y en la mayor parte del libro (salvo en el Captulo 24), se emplea la poderosa condicin de secuencialidad
como un requerimiento de las transacciones concurrentes.
Cambios a la tercera edicin:
Se ha eliminado de este captulo (y del libro) la comprobacin de la secuencialidad de las vistas, dado que no
tiene aplicacin prctica.

Ejercicios
15.1

Lstense las propiedades ACID. Explquese la utilidad de cada una de ellas.

Respuesta: Las propiedades ACID y las necesidades para cada una de ellas, son:
Consistencia:
La ejecucin de una transaccin en aislamiento (es decir, son ninguna otra transaccin ejecutndose
concurrentemente), preserva la consistencia de la base de datos. Generalmente, esto es responsabilidad del
programador de la aplicacin que codifica las transacciones.
Atomicidad:
O todas las operaciones de la transaccin se reflejan correctamente en la base de datos, o ninguna.
Claramente, la falta de atomicidad conducir a la inconsistencia de la base de datos.
Aislamiento:
Cuando varias transacciones se ejecutan concurrentemente, debera ser el caso en que, para cada par
de transacciones Ti y Tj, se cumple que para los efectos de Ti, o bien Tj ha terminado su ejecucin antes de
que comience Ti , o bien que Tj ha comenzado su ejecucin despus de que Ti termine. De este modo, cada
transaccin ignora al resto de las transacciones que se ejecuten concurrentemente en el sistema. El punto de
vista del usuario de un sistema transaccional requiere la propiedad de aislamiento y la propiedad de que las
planificaciones concurrentes llevan al sistema de un estado consistente a otro. Estos requerimientos se
cumplen asegurando que slo se permiten las planificaciones secuenciales, de transacciones que preservan la
consistencia individualmente.
Durabilidad:
Tras la finalizacin con xito de una transaccin, los cambios realizados en la base de datos
permanecen, incluso si hay fallos en el sistema.
15.2
Supngase que existe un sistema de base de datos que nunca falla. Se necesita un gestor de
recuperaciones para este sistema?
Respuesta: Incluso en este caso, se necesita un gestor de recuperaciones para realizar el retroceso de las
transacciones abortadas.
15.3
Considrese un sistema de archivos como el de su sistema operativo preferido.
a.
Cules son los pasos implicados en la creacin y borrado de archivos y en la escritura de datos
sobre un archivo?
b.
Explquese por qu son relevantes los aspectos de atomicidad y durabilidad en la creacin y borrado
de archivos y en la escritura de datos sobre archivos. Raznese la respuesta.
Respuesta: Intervienen varios pasos en la creacin de un archivo. Se asigna un rea de almacenamiento al
archivo en el sistema de archivos, se le da un nico nmero-i y se inserta una entrada del nodo-i en la lista-i.
El borrado de archivos implica exactamente los pasos opuestos.
Para el usuario del sistema de ficheros en UNIX, la durabilidad es importante por razones evidentes,
pero la atomicidad no es relevante en general, dado que el sistema de ficheros no soporta transacciones. Para
el implantador del sistema de ficheros, no obstante, muchas de las acciones internas del sistema de ficheros
necesitan disponer de semnticas transaccionales. Todos los pasos implicados en la creacin / borrado de
archivos deben ser atmicos, de lo contrario habr archivos no referenciables o reas sin usar en el sistema de
archivos.
15.4

Los implantadores de sistemas de bases de datos prestan mucha ms atencin a las propiedades

ACID que los implantadores de sistemas de archivos. Por qu tiene sentido esto?
Respuesta: Las bases de datos generalmente realizan tareas cruciales, cuyos efectos necesitan ser atmicos y
duraderos y cuyos resultados afectan al mundo real de forma permanente. Ejemplos de tales tareas son las
transacciones monetarias, reservas de plazas, etc. Por lo tanto, han de asegurarse las propiedades ACID. En
contraste, la mayora de los usuarios de los sistemas de ficheros no estaran dispuestos a pagar el precio
(dinero, espacio en disco, tiempo) de soportar las propiedades ACID.
15.5
Durante su ejecucin, una transaccin pasa a travs de varios estados hasta que se compromete o
aborta. Lstense todas las secuencias posibles de estados por los que pueda pasar una transaccin. Explquese
por qu puede ocurrir cada una de la transiciones de estados.
Respuesta: Las secuencias de estados posibles son:
a.
activagparcialmente comprometidagcomprometida. Esta es la secuencia normal que seguir una
transaccin con xito. Despus de ejecutar todas sus instrucciones, accede al estado parcialmente
comprometida. Despus de que se ha grabado en disco suficiente informacin de recuperacin, la transaccin
finalmente accede al estado comprometida.
b.
activagparcialmente comprometidagabortada. Despus de ejecutar la ltima instruccin de la
transaccin, accede al estado parcialmente comprometida. Pero antes de grabar en disco suficiente
informacin de recuperacin, puede tener lugar un fallo en el hardware destruyendo el contenido de la
memoria. En este caso, los cambios realizados en la base de datos se deshacen y la transaccin accede al
estado abortada.
c.
activagfallidagabortada. Despus de iniciarse la transaccin, si se descubre en algn momento
que no puede continuar la ejecucin normal (debido a errores de programacin o a errores externos ), entra en
el estado fallido. Entonces la transaccin es retrocedida, despus de lo cual entra en el estado abortada.
15.6
Justifquese lo siguiente: La ejecucin concurrente de transacciones es ms importante cuando los
datos se deben extraer de disco (lento) o cuando las transacciones duran mucho y es menos importante cuando
hay pocos datos en memoria y las transacciones son muy cortas.
Respuesta: Si una transaccin dura mucho o extrae datos desde un disco lento, lleva mucho tiempo
completarla. En ausencia de concurrencia, otras transacciones tendrn que esperar por un largo perodo de
tiempo. El tiempo de respuesta medi se incrementar. Tambin, cuando la transaccin est leyendo datos del
disco, la CPU pierde el tiempo. As, los recursos no se emplean correctamente. Por lo tanto, la ejecucin
concurrente se hace importante en este caso. Sin embargo, cuando las transacciones son cortas o los datos
estn disponibles en memoria, estos problemas no suceden.
15.7

Explquese la diferencia entre los trminos planificacin secuencial y planificacin secuenciable.

Respuesta: Una planificacin en la que todas las instrucciones que pertenecen a una nica transaccin
aparecen juntas, se denomina planificacin secuencial. Una planificacin secuenciable tiene una restriccin
ms dbil que la que debera ser equivalente para alguna planificacin secuencial. Hay dos definiciones de
equivalencia de planificaciones: equivalentes en cuanto a conflictos y equivalentes en cuanto a vistas. Ambas
se describen en el captulo.

15.8

Considrense las dos transacciones siguientes:


T1:

leer(A);
leer(B);
si A = 0 entonces B := B + 1;
escribir(B).

T2:

leer(B);
leer(A);
si B = 0 entonces A := A + 1;
escribir(A).

Sea el requerimiento de consistencia A = 0 B = 0, siendo los valores iniciales A = B = 0.


a.
Demustrese que toda ejecucin secuencial en la que aparezcan estas transacciones conserva la
consistencia de la base de datos.
b.
Mustrese una ejecucin concurrente de T1 y T2 que produzca una planificacin no secuenciable.
c.
Existe una ejecucin concurrente de T1 y T2 que produzca una planificacin secuenciable?
Respuesta:
a.
Hay dos ejecuciones posibles: T1 T2 y T2 T1.
Caso 1:
inicialmente
despus de T1
despus de T2
Caso 2:

A
0
0
0

B
0
1
1

Consistencia encontrada: A = 0 B = 0 T F = T
inicialmente
despus de T1
despus de T2

A
0
1
1

B
0
0
0

Consistencia encontrada: A = 0 B = 0 F T = T
b

Cualquier intercalado de T1 y T2 resulta en una planificacin no secuenciable.

Figura 15.18.

Grafo de precedencia.

T1
leer(A)

T2
leer(B)
leer(A)

leer(B)
si A = 0 entonces B = B
+1
si B = 0 entonces A = A
+1
escribir(A)
escribir(B)
c.
No hay ninguna ejecucin paralela resultante en una planificacin secuenciable. Del apartado a se
sabe que una planificacin secuenciable resulta en A = 0 B = 0 . Supngase que se empieza con T1 leer(A) .
Entonces, cuando la planificacin termine, no importa cuando se ejecutan los pasos de T2, B = 1 . Supngase
ahora que se empieza ejecutando T2 antes de completar T1 . Entonces T2 leer(B) dar a B un valor de 0 . As,
cuando se complete T2, A = 1 . As, B = 1 A = 1 g (A = 0 B = 0).
Anlogamente empezando con T2 leer(B).
15.9
Puesto que toda planificacin secuenciable en cuanto a conflictos es secuenciable en cuanto a vistas,
por qu se hace hincapi en la secuencialidad en cuanto a conflictos, en vez de en la secuencialidad en
cuanto a vistas?
Respuesta: La mayora de los protocolos de control de concurrencia (protocolos para asegurar que slo se
generan planificaciones secuenciables), empleados en la prctica, estn basados en la secuencialidad en
cuanto a conflictos realmente permiten slo un subconjunto de planificaciones secuenciales en cuanto a
conflictos. La forma general de secuencialidad en cuanto a vistas es muy costosa de comprobar y slo una
forma muy restringida de ella se emplea para el control de concurrencia.
15.10 Considrese el grafo de precedencia de la Figura 15.18. Es secuenciable en cuanto a conflictos la
planificacin correspondiente? Raznese la respuesta.
Respuesta: Hay una planificacin secuenciable correspondiente al grafo de precedencia siguiente, dado que
el grafo es acclico. Una posible planificacin se obtiene haciendo una ordenacin topolgica, es decir, T1, T2,
T3, T4, T5.

15.11 Qu es una planificacin recuperable? Por qu es conveniente la recuperabilidad de las


planificaciones?
Hay circunstancias bajo las cuales puede ser conveniente permitir planificaciones no recuperables? Raznese
la respuesta.

Respuesta: Una planificacin recuperable es aqulla en la que para todo par de transacciones Ti y Tj , tales
que Tj lee elementos de datos que ha escrito previamente Ti, la operacin comprometer de Ti aparece antes que
la de Tj. Las planificaciones recuperables son convenientes porque el fallo de una transaccin podra, de lo
contrario, llevar al sistema a un estado de inconsistencia irreversible. Las planificaciones no recuperables
pueden necesitarse, algunas veces, cuando las actualizaciones se deben hacer visibles pronto debido a
ligaduras temporales, incluso si no han sido comprometidas an, lo cual puede ser requerido para
transacciones muy largas.
15.12 Qu es una planificacin sin cascada? Por qu es conveniente la planificacin sin cascada?
Hay circunstancias bajo las cuales puede ser conveniente permitir planificaciones que no sean sin cascada?
Raznese la respuesta.
Respuesta: Una planificacin sin cascada es aqulla para la que todo par de transacciones Ti y Tj , tales que Tj
lee un elemento de datos que ha escrito previamente Ti, la operacin comprometer de Ti aparece antes que la
operacin de lectura de Tj. Las planificaciones sin cascada son convenientes porque el fallo de una
transaccin no conduce al aborto de ninguna otra transaccin. Naturalmente, esto se consigue a costa de una
menor concurrencia.
Si los fallos suceden raramente, de tal manera que se pueda pagar el precio de abortos en cascada por el
incremento de concurrencia, podran ser convenientes planificaciones que no sean sin cascada.

CAPITULO

16

CONTROL DE CONCURRENCIA
Este captulo describe como controlar las ejecuciones concurrentes en una base de datos, con el objeto de
garantizar las propiedades de aislamiento de las transacciones. Una variedad de protocolos se definen con este
propsito. Si se dispone de poco tiempo, se pueden omitir algunos protocolos. Se recomienda cubrir, al
menos, bloqueo de dos fases (Apartado 16.1.1), hasta 16.1.3, deteccin y recuperacin de interbloqueos
(Apartado 16.6, omitiendo el Apartado 16.6.1), el fenmeno fantasma (Apartado 16.7.3) y los conceptos tras
el control de la concurrencia de ndices (parte de introduccin del Apartado 16.9). Por lo tanto, se cubriran la
mayor parte de las tcnicas empleadas.
Merece la pena apuntar como los protocolos de bloqueo basados en grafos generalizan protocolos
sencillos, tales como la adquisicin ordenada de bloqueos, la cual pueden haber estudiado los estudiantes en
un curso de sistemas operativos. Aunque los protocolos de marcas temporales por s mismos no son
ampliamente usados, el bloqueo de dos fases multi versin (Apartado 16.5.2) est aumentando de
importancia, dado que permite ejecutar grandes transacciones de slo lectura concurrentemente con
actualizaciones.
El fenmeno fantasma es a menudo mal interpretado por los estudiantes, mostrando que el bloqueo
de dos fases es incorrecto. Vale la pena remarcar que las transacciones que exploran una relacin deben leer
algunos datos para encontrar qu tuplas estn en la relacin; mientras que estos datos estn bloqueados en un
modo de dos fases, el fenmeno fantasma no avanzar.
Cambios a la tercera edicin:
Este captulo ha sido reorganizado a partir de la edicin anterior. Algunas de las materias del captulo de
Control de Concurrencia de la segunda edicin (Captulo 11), tales como planificaciones y pruebas para
secuencializacin, se han trasladado al Captulo 15 de la tercera edicin. Los apartados sobre la gestin de
interbloqueos (Apartado 16.6) y la concurrencia en estructuras de ndice (Apartado 16.9) se han trasladado
desde el Captulo 12 de la segunda edicin (Procesamiento de Transacciones). El apartado sobre bloqueo de
dos fases multi versin es nuevo.

Ejercicios
16.1
Demustrese que el protocolo de bloqueo de dos fases asegura la secuencialidad en cuanto a
conflictos y que se pueden secuenciar las transacciones a travs de sus puntos de bloqueo.
Respuesta:
16.2

Considrense las dos transacciones siguientes:


T31:

leer(A);
leer(B);
si A = 0 entonces B := B + 1;
escribir(B).

T32:

leer(B);
leer(A);
si B = 0 entonces A := A + 1;
escribir(A).

Adanse a las transacciones T31 y T32 las instrucciones de bloqueo y desbloqueo, para que sigan el protocolo
de dos fases. Puede producir la ejecucin de estas transacciones un interbloqueo?
Respuesta:
a.
Instrucciones de bloqueo y desbloqueo:
T31:
bloquear-S(A)
leer(A)
bloquear-X(B)
leer(B)
si A = 0
entonces B := B + 1
escribir(B)
desbloquear(A)
desbloquear(B)
T32:

bloquear-S(B)
leer(B)
bloquear-X(A)
leer(A)
si B = 0
entonces A := A + 1
escribir(A)
desbloquear(B)
desbloquear(A)

b
La ejecucin de estas transacciones puede dar lugar a interbloqueos Por ejemplo, considrese la
siguiente planificacin parcial:
T31
bloquear-S(A)

T32
bloquear-S(B)
leer(B)

leer(B)
bloquear-X(B)
bloquear-X(A)
Las transacciones ahora estn interbloqueadas
16.3

Qu beneficio proporciona el bloqueo estricto de dos fases? Qu inconvenientes tiene?

Respuesta: Dado que slo produce planificaciones sin cascada, la recuperacin es muy fcil. Pero el conjunto
de planificaciones que se puede obtener es un subconjunto de los que se obtiene desde el bloqueo sencillo de
dos fases, con lo que se reduce la concurrencia.
16.4
Qu beneficio proporciona el bloqueo riguroso de dos fases? Comprese con otras formas de
bloqueo de dos fases.
Respuesta: El bloqueo riguroso de dos fase tiene las ventajas del bloqueo estricto de dos fases. Adems tiene
las propiedades de que para dos transacciones conflictivas, su orden de compromiso es su orden de
secuencialidad. En algunos sistemas lo usuarios pueden esperar este comportamiento.
16.5
Muchas implementaciones de sistemas de bases de datos utilizan el bloqueo estricto de dos fases.
Indquense tres razones que expliquen la popularidad de este protocolo.
Respuesta: Es relativamente sencillo de implementar, debido a las planificaciones sin cascada impone unos
costes de retroceso bajos y generalmente permite un nivel aceptable de concurrencia.
16.6
Considrese una base de datos organizada como un rbol con raz. Supngase que se inserta un nodo
ficticio entre cada par de nodos. Demustrese que, si se sigue el protocolo de rbol con este nuevo rbol, se
obtiene una mejor concurrencia que con el rbol original.
Respuesta: La prueba est en Buckley y Silberschatz, Concurrency Control in Graph Protocols by Using
Edge Locks, Proc. ACM SIGACT-SIGMOD Simposio sobre los Principios de Sistemas de Base de Datos,
1984.
16.7
Demustrese con un ejemplo que hay planificaciones que son posibles con el protocolo de rbol, que
no lo son con protocolos de bloqueo de dos fases y viceversa.

Respuesta: Considrese el grafo de base de datos estructurada en rbol que se presenta a continuacin.

Planificacin posible bajo el protocolo de rbol, pero no bajo el de bloqueo de dos fases:
T1
bloquear(A)
bloquear(B)
desbloquear(A)

T2

bloquear(A)
bloquear(C)
desbloquear(B)
bloquear(B)
desbloquear(A)
desbloquear(B)
desbloquear(C)
Planificacin posible bajo el bloqueo de dos fases, pero no bajo el protocolo de rbol:
T1
bloquear(A)

T2
bloquear(B)

bloquear(C)
desbloquear(B)
desbloquear(A)
desbloquear(C)
16.8
Considrese la siguiente extensin del protocolo de bloqueo de rbol, que permite bloqueos
compartidos y exclusivos:
Una transaccin puede ser de slo lectura, en cuyo caso slo puede solicitar bloqueos compartidos, o bien
puede ser de actualizacin, en cuyo caso slo puede solicitar bloqueos exclusivos.
Cada transaccin debe seguir las reglas del protocolo de rbol. Las transacciones de slo lectura pueden
bloquear primero cualquier elemento de datos, mientras que las transacciones de actualizacin deben bloquear
primero la raz.
Demustrese que este protocolo garantiza la secuencialidad y la ausencia de interbloqueos.
Respuesta: La prueba est en Kedem y Silberschatz, Locking Protocols: en exclusiva para Shared Locks,
JACM Vol. 30, 4, 1983.

16.9
Considrese el siguiente protocolo de bloqueo basado en grafos, el cual slo permite modos de
bloqueo exclusivos y que funciona con grafos de datos con forma de grafo acclico dirigido con raz.
Una transaccin puede bloquear en primer lugar cualquier nodo.
Para bloquear cualquier otro nodo, la transaccin debe poseer un bloqueo sobre la mayora de los padres de
dicho nodo.
Demustrese que este protocolo garantiza la secuencialidad y la ausencia de interbloqueos.
Respuesta: La prueba est en Kedem y Silberschatz, Controlling Concurrency Using Locking Protocols,
Proc. Annual IEEE Simposio sobre Fundamentos de la Ciencia de la Computacin, 1979.
16.10 Considrese el siguiente protocolo de bloqueo basado en grafos que slo permite bloqueos
exclusivos y que funciona con grafos de datos con forma de grafo dirigido acclico con raz.
Una transaccin puede bloquear en primer lugar cualquier nodo.
Para bloquear cualquier otro nodo, la transaccin debe haber visitado a todos los padres de dicho nodo y
debe poseer un bloqueo sobre uno de los padres del vrtice.
Demustrese que este protocolo garantiza la secuencialidad y la ausencia de interbloqueos.
Respuesta: La prueba est en Kedem y Silberschatz, Controlling Concurrency Using Locking Protocols,
Proc. Annual IEEE Simposio sobre Fundamentos de la Ciencia de la Computacin, 1979.
16.11 Considrese una variante del protocolo de rbol llamada protocolo de bosque. La base de datos est
organizada como un bosque de rboles con raz. Cada transaccin Ti debe seguir las siguientes reglas:
El primer bloqueo en cada rbol puede hacerse sobre cualquier elemento de datos.
Se pueden solicitar el segundo y posteriores bloqueos, slo si el padre del nodo solicitado est bloqueado
actualmente.
Se pueden desbloquear los elementos de datos en cualquier momento.
Ti no puede volver a bloquear un elemento de datos despus de haberlo desbloqueado.
Demustrese que el protocolo de bosque no asegura la secuenciabilidad.
Respuesta: Tmese un sistema con dos rboles:

Se tienen dos transacciones, T1 y T2. Considrese la siguiente planificacin legal:

T1
bloquear(n1)
bloquear(n3)
escribir(n3)
desbloquear(n3)

T2

bloquear(n2)
bloquear(n5)
escribir(n5)
desbloquear(n5)
bloquear(n5)
leer(n5)
desbloquear(n5)
desbloquear(n1)
bloquear(n3)
leer(n3)
desbloquear(n3)
desbloquear(n2)
Esta planificacin no es secuenciable.
16.12 El bloqueo no se hace explcitamente en lenguajes de programacin persistentes. En vez de esto, se
deben bloquear los objetos (o sus pginas correspondientes) cuando se accede a dichos objetos.
Muchos de los ms modernos sistemas operativos permiten al usuario definir protecciones de acceso (sin
acceso, lectura, escritura) para las pginas y los accesos a memoria que violen las protecciones de acceso dan
como resultado una violacin de proteccin (vase la orden mprotect de Unix , por ejemplo). Descrbase
la forma en que se puede usar el mecanismo de proteccin de acceso para bloqueos a nivel de pgina en
lenguajes de programacin persistentes. (Sugerencia: La tcnica es algo parecida a la que se empleaba para el
rescate hardware en el Apartado 11.9.4).
Respuesta: El mecanismo de proteccin de acceso se puede emplear para implementar bloqueos a nivel de
pgina. Considrense primero las lecturas. Se permite a un proceso leer una pgina slo despus de que
bloquee la lectura de la pgina. Esto se implementa por medio de mprotect, para desactivar inicialmente
los permisos de lectura a todas las pginas, para el proceso. Cuando el proceso intenta acceder a una direccin
en una pgina, tiene lugar una violacin de la proteccin. El gestor asociado con la violacin de la proteccin
solicita, entonces, un bloqueo de lectura sobre la pgina y, despus de que se adquiere el bloqueo, se hace uso
de mprotect para permitir que el proceso acceda a leer la pgina y, finalmente, permitir que contine. El
acceso a la escritura se maneja de forma similar.
16.13 Considrese una base de datos que tiene la operacin atmica incrementar, adems de las
operaciones leer y escribir. Sea V el valor del elemento de datos X. La operacin
incrementar (X) en C
asigna el valor de X a V + C en un paso atmico. El valor de X no est disponible para la transaccin hasta que
no se ejecute posteriormente una operacin leer (X). La Figura 16.17 muestra una matriz de compatibilidad de
bloqueos para tres tipos de bloqueo: modo compartido, exclusivo y de incremento.

C
X
I
Figura 16.17.

C
cierto
falso
falso

X
falso
falso
falso

I
falso
falso
cierto

Matriz de compatibilidad de bloqueos

a.
Demustrese que, si todas las transacciones bloquean el dato al que acceden en el modo
correspondiente, entonces el bloqueo de dos fases asegura la secuencialidad.
b.
Demustrese que la inclusin del bloqueo en modo incrementar permite una mayor concurrencia.
(Sugerencia: Considrense las transacciones de fondos en el ejemplo bancario).
Respuesta: La prueba est en Korth, Locking Primitives in a Database System, JACM Vol. 30, 1983.
16.14 En la ordenacin por marcas temporales, marca_temporal(Q) indica la mayor marca temporal de
todas las transacciones que hayan ejecutado escribir(Q) con xito. Supngase que, en lugar de ello,
marca_temporal-E(Q) se define como la marca temporal de la transaccin ms reciente que haya ejecutado
escribir(Q) con xito. Hay alguna diferencia al cambiar esta definicin? Raznese la respuesta.
Respuesta: No habra ninguna diferencia. El protocolo de escritura es tal que la ltima transaccin para
escribir un elemento es, tambin, la que se ha hecho con mayor marca temporal.
16.15 Cuando se retrocede una transaccin en el protocolo de ordenacin por marcas temporales, se le
asigna una nueva marca temporal. Por qu no puede conservar simplemente su antigua marca temporal?
Respuesta: Una transaccin es retrocedida porque una transaccin ms nueva ha ledo o escrito el dato que,
se supone, iba a escribir. Si la transaccin retrocedida se reintrodujera con igual marca temporal, la misma
razn para el retroceso sera todava vlida y la transaccin habra de retrocederse de nuevo. Esto continuara
indefinidamente.
16.16

En el protocolo de granularidad mltiple, qu diferencia hay entre bloqueo implcito y explcito?

Respuesta: Cuando una transaccin bloquea explcitamente un nodo en modo exclusivo o compartido,
bloquea implcitamente, en el mismo modo, a todos los descendientes de ese nodo. La transaccin no tiene
necesidad de bloquear explcitamente los nodos descendientes. No hay diferencia en las funcionalidades de
estos bloqueos, la nica diferencia est en la forma en que se adquieren y en lo probado de su presencia.
16.17 Aunque el modo IXC es til para el bloqueo de granularidad mltiple, no se usa un modo exclusivo e
intencional-compartido (ICX). Por qu no es til?
Respuesta: Un bloqueo exclusivo es incompatible con cualquier otro tipo de bloqueo. Una vez que se
bloquea un nodo en modo exclusivo, ninguno de los descendientes puede ser accedido simultneamente, en
ningn modo, por cualquier otra transaccin Por lo tanto, no tiene sentido una declaracin exclusiva e
intencional-compartida.
16.18 La utilizacin de un bloqueo de granularidad mltiple puede necesitar ms o menos bloqueos que un
sistema equivalente con una granularidad simple de bloqueo. Aprtense ejemplos de ambas situaciones y
comprese el aumento relativo de la concurrencia que se permite.
Respuesta: Si una transaccin necesita acceder a un gran conjunto de elementos, el bloqueo de granularidad

mltiple requiere menos bloqueos mientras que, si slo un elemento necesita ser accedido, el sistema de
bloqueo de granularidad simple permite esto con slo un bloqueo. Debido a que todos los elementos de los
datos deseados estn bloqueados y desbloqueados juntos en el esquema de granularidad mltiple, el coste del
bloqueo es bajo pero la concurrencia se reduce.
16.19 Considrese el esquema de control de concurrencia basado en la validacin del Apartado 16.3.
Demustrese que si se elige Validacin (Ti), en lugar de Inicio(Ti), como marca temporal de la transaccin Ti,
se puede esperar un mejor tiempo de respuesta, con tal que la tasa de conflictos entre las transacciones sea
realmente baja.
Respuesta: En el esquema de control de concurrencia del Apartado 16.3, elegir Inicio(Ti) como la marca
temporal de Ti aporta un subconjunto de planificaciones permitido, eligiendo Validacin (Ti) como la marca
temporal. Emplear Inicio(Ti) significa que quienquiera que haya empezado primero, debe terminar primero.
Las transacciones claramente podran iniciar la fase de validacin en el mismo orden en que comienzan a
ejecutarse, pero esto es demasiado restrictivo. Dado que elegir Validacin(Ti) causa menos transacciones no
conflictivas al reiniciar, aporta el mejor tiempo de respuesta.
16.20 Demustrese que hay planificaciones que son posibles con el protocolo de bloqueo de dos fases, pero
que no lo son con el protocolo de marcas temporales y viceversa.
Respuesta: Una planificacin que se permite en el protocolo de bloqueo de dos fases, pero no en el de marcas
temporales es:
Paso
1
2
3
4
5
6
7
8
9

T0
bloquear-S(A)
leer(A)

T1

observaciones precedentes

bloquear-X(B)
escribir(B)
desbloquear(B)
bloquear-S(B)
leer(B)
desbloquear(A)
desbloquear(B)

T1 g T0

Esta planificacin no est permitida en el protocolo de marcas temporales porque en el paso 7 la marca
temporal W de B es 1.
Una planificacin que se permite en el protocolo de marcas temporales, pero no en el de bloqueo de dos fases
es:
Paso
1
2
3
4
5

T0
escribir(A)

T1

T2

escribir(A)
escribir(A)
escribir(B)
escribir(B)

Esta planificacin no puede tener instrucciones bloqueadas aadidas para hacerla legal bajo el protocolo de
bloqueo de dos fases, porque T1 debe desbloquear (A) entre los pasos 2 y 3, y debe bloquear (B) entre los
pasos 4 y 5.

16.21 Para cada una de los protocolos siguientes, descrbanse los aspectos de aplicacin prctica que
sugieran emplear el protocolo y los que sugieran no usarlo:
Bloqueo de dos fases
Bloqueo de dos fases con granularidad mltiple
Protocolo de rbol
Ordenacin por marcas temporales
Validacin
Ordenacin por marcas temporales multi versin
Bloqueo de dos fases multi versin
Respuesta:
Bloqueo de dos fases: Se emplea en aplicaciones sencillas donde es aceptable una granularidad simple. Si
hay transacciones grandes de slo lectura, los protocolos multi versin lo haran mejor. Tambin, si se deben
evitar interbloqueos a toda costa, sera preferible el protocolo de rbol.
Bloqueo de dos fases con granularidad mltiple: Se emplean en aplicaciones mixtas, donde algunas
aplicaciones acceden a registros individuales y otras acceden a relaciones enteras o a partes importantes de
ellas. Los inconvenientes del anterior bloqueo de dos fases tambin aplican a este protocolo.
Protocolo de rbol: Utilcese si todas las aplicaciones tienden a acceder a elementos de datos en un orden
coherente con un orden parcial particular. Este protocolo est libre de interbloqueos pero, a menudo, las
transacciones tendrn que bloquear nodos no deseados para acceder a los nodos deseados.
Ordenacin por marcas temporales: Se emplea si la aplicacin demanda una ejecucin concurrente que sea
equivalente a una ordenacin secuencial particular (por ejemplo, el orden de llegada), en vez de cualquier
ordenacin secuencial. Aunque los conflictos se gestionen mediante el retroceso de transacciones en vez de
esperas y planificaciones, no son recuperables. Para hacerlos recuperables se han de tolerar costes adicionales
e incrementos en los tiempos de respuesta. No es adecuado si hay grandes transacciones de slo lectura, dado
que morirn de inanicin. No hay interbloqueos.
Validacin: Si es baja la probabilidad de que entren en conflicto dos transacciones que se ejecutan
concurrentemente, el protocolo se puede emplear ventajosamente para mejorar la concurrencia y los tiempos
de respuesta, con costes bajos. No es adecuado con tasas de conflictos elevadas, cuando se va a hacer mucho
trabajo intil.
Ordenacin por marcas temporales multi versin: Se emplea si la ordenacin por marcas temporales es
apropiada, pero es deseable para solicitudes de lectura que nunca esperan. Comparte la otras desventajas del
protocolo de ordenacin por marcas temporales.
Bloqueo de dos fases multi versin: Este protocolo permite comprometer siempre transacciones de slo
lectura sin espera. Las transacciones de actualizacin siguen el bloqueo de dos fases, de este modo permiten la
recuperacin de planificaciones con conflictos solucionadas mediante la espera, en vez de el retroceso. Pero
vuelve el problema de los interbloqueos, aunque las transacciones de slo lectura no pueden implicarse en
ellos. Aunque el manteniendo de versiones mltiples incrementa los costes de espacio y tiempo, el bloqueo
sencillo de dos fases pude ser preferible en situaciones poco conflictivas.
16.22 En una versin modificada del protocolo de marcas temporales se necesita comprobar un bit de
compromiso para saber si una peticin de lectura debe esperar, o no. Explquese como puede evitar el bit de
compromiso que aborten en cascada. Por qu no se necesita hacer esta comprobacin con las peticiones de
escritura?
Respuesta: Empleando el bit de compromiso, se hace una peticin de lectura para esperar si la transaccin
que escribi el elemento del dato no se ha comprometido an. Por lo tanto, si la transaccin de escritura falla
antes del compromiso, se puede abortar slo esa transaccin. La lectura en espera acceder a la versin

anterior, en caso de un sistema multi versin, o al valor almacenado del elemento de datos despus del aborto,
en el caso de un sistema de versin simple. Para las escrituras, la comprobacin de este bit de compromiso es
innecesaria. Esto es as porque, o bien la escritura es ciega y por lo tanto independiente del valor antiguo del
elemento del dato, o haba una lectura anterior, en cuyo caso la prueba ya se haba aplicado.
16.23 Explquese por qu la siguiente tcnica de ejecucin de transacciones puede proporcionar mayor
rendimiento que la utilizacin del bloqueo estricto de dos fases: Primero se ejecuta la transaccin sin adquirir
ningn bloqueo y sin realizar ninguna escritura a la base de datos, como en las tcnicas basadas en la
validacin, pero, a diferencia de ellas, no se realiza otra validacin o escritura en la base de datos. En cambio,
se vuelve a ejecutar la transaccin utilizando bloqueo estricto de dos fases. (Sugerencia: Considrense esperas
para la E/S de disco).
Respuesta: PENDIENTE DE RESOLVER
16.24

Bajo qu condiciones es menos costoso evitar los interbloqueos que permitirlos y luego detectarlos?

Respuesta: El evitar los interbloqueos es preferible si las consecuencias de abortar son serias (como en
transacciones interactivas) y si hay conflictos importantes resultando una alta probabilidad de interbloqueo.
16.25

Si se evitan los interbloqueos, sigue siendo posible que haya inanicin? Raznese la respuesta.

Respuesta: Una transaccin puede convertirse en la vctima de retrocesos de prevencin de interbloqueos,


arbitrariamente en muchas ocasiones, creando as una situacin potencial de inanicin.
16.26 Supngase el protocolo de ordenacin por marcas temporales y dos transacciones, una que escribe
dos elementos de datos p y q y otra que lee los mismos dos elementos de datos. Obtngase una planificacin
por medio de la cual la comprobacin por marcas temporales para una operacin escribir falle y provoque el
reinicio de la primera transaccin, provocando a su vez una cancelacin en cascada de la otra transaccin.
Mustrese cmo esto podra acabar en inanicin de las dos transacciones. (Tal situacin, donde dos o ms
procesos realizan acciones, pero no se puede completar la tarea porque se interacciona con otros procesos, se
denomina interbloqueo).
Respuesta: PENDIENTE DE RESOLVER
16.27 Explquese el fenmeno fantasma. Por qu produce este fenmeno una ejecucin concurrente
incorrecta, a pesar de utilizar el protocolo de bloqueo de dos fases?
Respuesta: El fenmeno fantasma surge cuando, debido a una insercin o borrado, dos transacciones entran
en conflicto lgico a pesar de no bloquearse ninguno de los elementos de los datos en comn. El caso de la
insercin se describe en el libro. El borrado tambin puede conducir a este fenmeno. Supngase que Ti borra
una tupla de una relacin mientras Tj rastrea la relacin. Si Ti borra la tupla y despus Tj lee la relacin, Ti
debera secuencializarse antes que Tj . An no hay ninguna tupla sobre la que Ti y Tj estn en conflicto.
Una interpretacin del bloqueo de dos fases, como simplemente el bloqueo de las tuplas accedidas en
una relacin, es incorrecta. Hay tambin un ndice o un dato de relacin que tiene informacin sobre las tuplas
en la relacin. Esta informacin es leda por cualquier transaccin que rastrea la relacin y modificada por
transacciones que actualizan, insertan o borran en o desde relacin. Por lo tanto, el bloqueo tambin debe
realizarse sobre el ndice o el dato de relacin, evitando el fenmeno fantasma.

16.28

Disese un protocolo basado en marcas temporales que evite el fenmeno fantasma.

Respuesta: En el texto se han considerado dos mtodos para afrontar el fenmeno fantasma por medio de
bloqueos. El mtodo de granularidad gruesa, obviamente, funciona tambin para las marcas temporales. El
mtodo basado en el ndice de rbol B+ se puede adaptar al de marcas temporales, tratando los cajones de
ndices como elementos de datos con marcas temporales asociadas con ellos y exigiendo que todos los
accesos de lectura empleen un ndice. Ahora se demostrar que este mtodo sencillo funciona. Supngase una
transaccin Ti que quiere acceder a todas las tuplas con un determinado rango de valores de claves de
bsqueda, empleando un ndice de rbol B+ sobre esa clave de acceso. Ti necesitar leer todos los cajones de
ndices que tienen los valores clave en ese rango. Se puede ver que no se necesitar ningn borrado o
insercin de una tupla, con un valor clave en el mismo rango, para escribir uno de los cajones de ndices
ledos por Ti. As, el conflicto lgico se convierte en un conflicto sobre un cajn de ndices y se evita el
fenmeno fantasma.
16.29 Explquese la razn por la que se emplea la consistencia de grado dos. Qu desventajas tiene esta
tcnica?
Respuesta: PENDIENTE DE RESOLVER
16.30 Supngase que se emplea el protocolo de rbol del Apartado 16.1.5 para administrar el acceso
concurrente a un rbol B+. Puesto que puede haber una divisin en una insercin que afecte a la raz, se
deduce que una operacin insercin no puede liberar ningn bloqueo hasta que se complete la operacin
entera. Bajo que circunstancias es posible liberar antes un bloqueo?
Respuesta: Nota: El protocolo de rbol del Apartado 16.1.5, referido en esta pregunta, es diferente del
protocolo de granularidad mltiple del Apartado 16.4 y del protocolo de concurrencia de rbol B+ del
Apartado 16.9.
Ahora se presenta una estrategia para liberar bloqueos pronto. Bajando el rbol desde la raz, si el
hijo del nodo visitado actualmente no est lleno, se liberan los bloqueos mantenidos sobre todos los nodos
excepto el nodo actual, se solicita un bloqueo X sobre el nodo hijo, despus de liberar el bloqueo sobre el
nodo actual y, entonces ,se desciende al hijo. Por otra parte, si el hijo est lleno, se retienen todos los bloqueos
mantenidos, se solicita un bloqueo X sobre el hijo y se desciende a l despus de bloquearlo. Al alcanzar el
nodo hoja se inicia el procedimiento de insercin. Esta estrategia resulta en mantener los bloqueos slo sobre
los nodos del rbol de ndice lleno, desde la hoja hacia arriba e incluyendo el primer nodo no lleno.
Es posible una optimizacin a la estrategia anterior. Incluso si el hijo del nodo actual est lleno, se
pueden todava liberar los bloqueos sobre todos los nodos, excepto el actual. Pero despus de obtener el
bloqueo X sobre el nodo hijo, se divide inmediatamente. Liberando el bloqueo sobre el nodo actual y
manteniendo slo el bloqueo sobre el hijo dividido apropiado, se desciende sobre l convirtindolo en el nodo
actual. Con esta optimizacin, en cualquier momento se mantienen como mximo dos bloqueos, de un nodo
padre y un nodo hijo.
16.31 Aprtense ejemplos de planificaciones para mostrar que si cualquier bsqueda, insercin o borrado
no bloquea el siguiente valor clave, el fenmeno fantasma podra ser indetectable.
Respuesta: PENDIENTE DE RESOLVER

CAPITULO

17

SISTEMAS DE RECUPERACIN
Este captulo cubre modelos de fallos y una variedad de tcnicas de recuperacin de errores. La recuperacin
en un sistema de base de datos real que soporta transacciones concurrentes es bastante complicada. Para
ayudar al estudiante a comprender mejor los conceptos, el captulo presenta modelos de recuperacin en
creciente grado de complejidad. El captulo comienza con un modelo sencillo de recuperacin, sin tener en
cuenta el concepto de concurrencia. Posteriormente, se ampla el modelo para gestionar transacciones
concurrentes con bloqueos estrictos de dos fases. Hacia el final del captulo, se presenta un algoritmo de
recuperacin avanzada que soporta la liberacin temprana de algunos tipos de bloqueo para mejorar la
concurrencia, por ejemplo en estructuras de ndices. Finalmente, se esbozan las variantes del algoritmo
ARIES, ampliamente usado en la prctica.
ARIES incluye las caractersticas de los algoritmos de recuperacin avanzada, junto con diversas
optimizaciones que incrementan la velocidad de recuperacin.
Se recomienda que, al menos, se traten los apartados hasta, e incluyendo, la Recuperacin Basada en
el Registro Histrico (Apartado 17.4). La paginacin en la sombra (Apartado 17.5) no se usa mucho, pero es
til por razones pedaggicas, para mostrar que existen alternativas a la recuperacin basada en el registro
histrico.
La recuperacin con transacciones concurrentes (Apartado 17.6) es una seccin interesante y debera ser
tratada junto con la Gestin de la Memoria Intermedia (Apartado 17.7), si es posible. El Apartado 17.9, que
cubre el algoritmo de recuperacin avanzada y ARIES, debera omitirse de todos los cursos, salvo los
avanzados. Sin embargo puede emplearse como material de trabajo individual para los estudiantes bien
preparados, incluso en un curso de introduccin.
Hay algunos puntos a tener en cuenta:
Al leer el Apartado 17.2.2 (Implementacin del almacenamiento estable), se debera retomar la discusin del
apartado 11.2.1, de que la escritura sobre un bloque de disco parcial puede detectarse con una alta
probabilidad empleando sumas de chequeo.
En el apartado 17.4.3, aunque el modelo asumido es uno donde las transacciones se ejecutan
secuencialmente, el procedimiento de recuperacin establece que para todas las transacciones Tk en T que no
tienen ningn <Tk comprometida> registrado en el registro histrico, ejectese deshacer(Tk). Ms de una de
tales transacciones puede existir, debido a fallos en las transacciones sucesivas.
Cambios a la tercera edicin:
Los principales cambios son (a) ahora se incluye el algoritmo de recuperacin ARIES (Apartado 17.9.6), y (b)
el apartado sobre sistemas de copia de seguridad remotos (Apartado 17.10) se ha trasladado a este captulo
desde su posicin inicial en el Captulo 20. El ltimo cambio est motivado por la necesidad creciente de la
alta disponibilidad, la cual se reflejar en un amplio incremento del empleo de sistemas de copia de seguridad
remotos. La aportacin de alta disponibilidad tambin puede considerarse una trabajo de los sistemas de
recuperacin, dado que los mismos registros histricos pueden emplearse para ambas tareas.

Ejercicios
17.1
Explquese la diferencia entre los tres tipos de almacenamiento voltil, no voltil y estable- en
trminos de coste.
Respuesta: El almacenamiento voltil es el que falla cuando hay una cada en el suministro elctrico. La
memoria cach, la memoria principal y los registros, son ejemplos de almacenamiento voltil. El
almacenamiento no voltil es aquel que retiene su contenido, a pesar de fallos en el suministro elctrico. Un
ejemplo es el disco magntico. El almacenamiento estable es aqul que tericamente sobrevive a cualquier
tipo de fallo (salvo un completo desastre!. Este tipo de almacenamiento slo puede conseguirse mediante la
replicacin de los datos.
En trminos de coste de E/S, la memoria voltil es la ms rpida y el almacenamiento no voltil es
generalmente varias veces ms lento. El almacenamiento estable es mas lento que el no voltil, debido al
coste que supone replicar los datos.
17.2
a.
b.

No se puede implementar el almacenamiento estable.


Explquese por qu no.
Explquese como tratan este problema los sistemas de bases de datos.

Respuesta:
a.
El almacenamiento estable no puede implementarse realmente, porque todos los dispositivos de
almacenamiento estn compuestos de hardware y todo el hardware es vulnerable a fallos en los dispositivos
mecnicos o elctricos.
b.
Los sistemas de bases de datos se aproximan al almacenamiento estable, grabando los datos
simultneamente en varios dispositivos de almacenamiento. Aun cuando uno de los dispositivos caiga, los
datos estarn disponible en un dispositivo diferente. As, la prdida de datos se convierte en algo
extremadamente improbable.
17.3
Comprense, en trminos de facilidad de implementacin y sobrecarga, las versiones de
modificacin inmediata y modificacin diferida, de las tcnicas de recuperacin basadas en registro histrico.
Respuesta:
La tcnica de recuperacin que emplea un registro histrico con modificaciones diferidas, tiene las
siguientes ventajas sobre la que emplea modificaciones inmediatas:
a.
La tcnica es ms fcil y sencilla de implementar, dado que se necesitan menos operaciones y
rutinas, es decir, no hay DESHACER.
b.
La tcnica requiere menos sobrecarga, dado que no es necesario hacer operaciones extras de E/S
hasta el momento del compromiso (los registros del registro histrico se pueden almacenar en memoria todo
el tiempo).
c.
Dado que los valores antiguos de los datos no han de estar presentes en los registros del registro
histrico, esta tcnica requiere menos espacio de almacenamiento.
Los inconvenientes de la tcnica de modificacin diferida son:
a.
Cuando se necesita acceder a un elemento de datos, la transaccin ya no puede leer directamente la
pgina correcta desde la memoria intermedia de la base de datos porque una escritura previa, hecha por la
misma transaccin sobre el mismo elemento de datos, puede no haberse propagado an a la base de datos.
Podra haber actualizado una copia del elemento de datos y haber diferido la modificacin en curso de la base
de datos. Por lo tanto, encontrar la versin correcta de un elemento de datos resulta ms caro.
b.

Esta tcnica permite menos concurrencia que la de recuperacin con actualizaciones inmediatas.

Esto es as porque los bloqueos de las escrituras se conservan por las transacciones, hasta el momento del
compromiso.
c.
Para una transaccin de larga duracin con numerosas actualizaciones, el espacio de memoria
ocupado por los registros del registro histrico y las copias locales de elementos de datos, puede llegar a ser
demasiado alto.
17.4
Supngase que un sistema emplea modificacin inmediata. Demustrese, con un ejemplo, como
podra darse un estado inconsistente en la base de datos, si no se escriben en almacenamiento estable los
registros del registro histrico de una transaccin, antes de que el dato actualizado por la transaccin se
escriba a disco.
Respuesta: Considrese el esquema de una banco y una transaccin que transfiere 50 desde una cuenta A a
una cuenta B. La transaccin tiene los siguientes pasos:
a.
leer(A,a1)
b
a1 := a1 - 50
c.
escribir(A,a1)
d.
leer(B,b1)
e.
b1 := b1 + 50
f.
escribir(B,b1)
Supngase que el sistema se cae despus que la transaccin se compromete, pero antes de que sus registros
del registro histrico sean desviados al almacenamiento estable. Asmase tambin que, en el momento de la
cada, realmente slo se haba propagado al disco el tercer paso de la actualizacin de A, mientras que la
pgina de la memoria intermedia conteniendo B no se haba grabado todava sobre disco. Cuando ese levanta
el sistema est en un estado inconsistente y no es posible la recuperacin porque no hay, en el
almacenamiento estable, registros del registro histrico que se correspondan a esta transaccin.
17.5
Explquese el propsito del mecanismo de los puntos de revisin. Con qu frecuencia deberan
realizarse los puntos de revisin? Explquese cmo afecta la frecuencia de los puntos de revisin:
Al rendimiento del sistema cuando no ocurre ningn fallo
Al tiempo que tarda en recuperarse de una cada del sistema
Al tiempo que tarda en recuperarse de una cada del disco
Respuesta: El punto de revisin se hace con la tcnica de recuperacin basada en el registro histrico, para
reducir el tiempo necesario para la recuperacin despus de una cada. Si no hay punto de revisin debe
recorrerse todo el registro histrico despus de una cada y, a partir de l, deshacer/rehacer todas las
transacciones. Si se ha realizado un punto de revisin, la mayor parte de los registros del registro histrico
anteriores al punto de revisin se pueden ignorar en el momento de la recuperacin.
Otra razn para realizar puntos de revisin es eliminar los registros del registro histrico del
almacenamiento estable cuando se llena.
Dado que los puntos de revisin causan algo de prdida en el rendimiento mientras estn teniendo
lugar, debera reducirse su frecuencia si no es crtica una recuperacin rpida. Si es necesaria una
recuperacin rpida, se debera incrementar la frecuencia de los puntos de revisin. La frecuencia de los
puntos de revisin es inevitable si es pequea la cantidad de almacenamiento estable disponible. Los puntos
de revisin no tienen efecto sobre la recuperacin desde una cada del disco; los volcados de archivo son
equivalentes a los puntos de revisin para la recuperacin desde cadas de disco.
17.6
Cuando el sistema se recupera de una cada (vase el Apartado 17.6.4), construye una lista-deshacer
y una lista-rehacer. Explquese por qu deben procesarse en orden inverso los registros del registro histrico
de transacciones que se encuentran en la lista-deshacer, mientras que los registros del registro histrico
correspondientes a las transacciones de la lista-rehacer se procesan hacia delante.

Respuesta: La primera fase de la recuperacin es deshacer los cambios hechos por las transacciones fallidas,
para que todos los elementos de datos que han sido modificados por ellas retornen a los valores que tenan
antes de que se iniciara la primera de las transacciones fallidas. Si varias de las transacciones fallidas
hubieran modificado el mismo elemento de datos, el procesamiento hacia delante de los registros del registro
histrico para las transacciones de la lista deshacer, hara que el elemento de datos tomara el valor que tena
antes de que se iniciara la ltima transaccin fallida que modific ese elemento de datos. Esto es claramente
errneo y se puede ver que el proceso inverso aporta el resultado deseado.
La segunda fase de la recuperacin es rehacer los cambios hechos por las transacciones
comprometidas, para que todos los elementos de datos que han sido modificados por ellas sean restaurados a
los valores que tenan despus de que terminara la ltima de las transacciones comprometidas.
Se puede ver que slo procesando hacia delante los registros del registro histrico que pertenecen a las
transacciones de la lista rehacer, se puede garantizar esto.
17.7
Comprense, en trminos de facilidad de implantacin y sobrecarga, el esquema de recuperacin con
paginacin en la sombra con los esquemas de recuperacin basados en el registro histrico.
Respuesta: La tcnica de paginacin en la sombra es fcil de implementar para sistemas transaccionales
sencillos, pero difcil para sistemas transaccionales mltiples. En particular, es muy duro permitir mltiples
actualizaciones concurrentes sobre la misma pgina. La paginacin en la sombra podra sufrir una sobrecarga
de espacio extra, pero la recogida de basura puede ocuparse de eso. La sobrecarga de E/S para la paginacin
en la sombra es generalmente ms alta que la de las tcnicas basadas en el registro histrico, dado que las
tcnicas basadas en la sombra necesitan grabar un registro por actualizacin sobre el registro histrico,
mientras que la tcnica de paginacin en la sombra necesita grabar un bloque por cada bloque actualizado.
17.8
Considrese una base de datos compuesta por 10 bloques consecutivos en el disco (bloque 1, bloque
2, . . ., bloque 10). Mustrese el estado de la memoria intermedia y una posible ordenacin fsica de los
bloques despus de las siguientes modificaciones, suponiendo que se utiliza paginacin en la sombra, que la
memoria intermedia en memoria principal slo puede contener tres bloques y que se emplea la estrategia
menos recientemente utilizada para gestionar la memoria intermedia.
leer bloque 3
leer bloque 7
leer bloque 5
leer bloque 3
leer bloque 1
modificar bloque 1
leer bloque 10
modificar bloque 5
Respuesta: La ordenacin inicial de los bloques del disco es: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Supngase que los dos bloques siguientes al bloque 10, sobre el disco, son los dos primeros bloques en la lista
de bloques libres.
a.
Los tres primeros pasos leer dan como resultado los bloques 3, 7 y 5, siendo colocados en la
memoria intermedia.
b.

El cuarto paso leer no requiere acceder al disco.

c.
El quinto paso leer requiere leer el bloque 1. El bloque 7 es el que menos recientemente se ha
empleado en la memoria intermedia, por lo que se reemplaza por el bloque 1.
d.
El sexto paso es para modificar el bloque 1. El primer bloque libre se elimina de la lista de bloques
libres y la entrada 1 en la tabla de pginas actual se hace que apunte a l. Se modifica el bloque 1 en la
memoria intermedia. Cuando bloques sucios se vuelven a desviar al disco en el momento de comprometer la
transaccin, se deberan grabar sobre el disco los bloques que apuntaban a la tabla de pginas actual
modificada.

e.
El sptimo paso hace que se lea el bloque 10. El bloque 5 se sobrescribe en la memoria intermedia,
dado que es el que menos recientemente se ha usado.
f.
En el octavo paso, el bloque 3 se reemplaza por el cloque 5 y, despus, el bloque 5 se modifica
como en el sexto paso.
Por lo tanto, la ordenacin final de los bloques en el disco es: 2, 3, 4, 6, 7, 8, 9, 10, 1, 5. El conjunto de
bloques en la memoria intermedia es: 5 (modificado), 10, 1 (modificado). Estos deben ser desviados a los
respectivos bloques del disco apuntados por la tabla de pginas actual, antes que la transaccin lleve a cabo el
proceso de comprometer.
17.9
Explquese cmo el gestor de la memoria intermedia puede conducir a la base de datos a un estado
inconsistente, si algunos registros del registro histrico pertenecientes a un bloque no se escriben en
almacenamiento estable, antes de escribir en el disco el citado bloque.
Respuesta: Si un elemento de datos x se modifica sobre el disco mediante una transaccin, antes de que el
correspondiente registro del registro histrico sea grabado sobre almacenamiento estable, el nico registro del
valor antiguo de x est en la memoria principal, donde podra perderse en caso de una cada. Si la transaccin
no hubiera finalizado an, en el momento de la cada, resultara una inconsistencia irrecuperable.
17.10 Explquense las ventajas del registro histrico lgico. Proporcinense ejemplos de una situacin en
la que sea preferible el registro histrico lgico, frente al registro histrico fsico y de una situacin en la que
sea preferible el registro histrico fsico al registro histrico lgico.
Respuesta: El registro histrico lgico tiene menos requerimientos de espacio y, con el registro de deshacer
lgico, permite liberar antes los bloqueos. Esto es conveniente en situaciones como el control de concurrencia
para estructuras de ndices, donde se requiere un muy alto grado de concurrencia. Una ventaja de emplear el
registro de rehacer fsico es que son posibles los puntos de revisin difusos. As, en un sistema que necesita
realizar frecuentes puntos de revisin, esto reduce la sobrecarga.
17.11 Explquense las razones por las que la recuperacin en transacciones interactivas es ms difcil de
tratar que la recuperacin en transacciones por lotes. Existe una forma simple de tratar esta dificultad?
(Sugerencia: Considrese una transaccin de cajero automtico en la que se retira dinero).
Respuesta: Las transacciones interactivas son ms difciles de recuperar que las transacciones por lotes,
debido a que algunas acciones pueden ser irrevocables. Por ejemplo, una instruccin de salida (escritura)
puede haber encendido un misil o causado que una mquina de un banco de dinero a un cliente. La mejor
manera de gestionar esto es intentar ejecutar todas las instrucciones al final de la transaccin. As, si la
transaccin aborta a la mitad, no se habr hecho ningn dao.
17.12 A veces hay que deshacer una transaccin despus de que se haya comprometido porque se ha
ejecutado errneamente, debido por ejemplo a la introduccin incorrecta de datos de un cajero.
a.
Se da un ejemplo para demostrar que el uso de un mecanismo normal para deshacer esta transaccin
podra conducir a un estado inconsistente.
b.
Una forma de manejar esta situacin es llevar la base de datos a un estado anterior al compromiso de
la transaccin errnea (denominado recuperacin a un instante). En este esquema, se deshacen los efectos de
las transacciones comprometidas despus. Sugirase una modificacin del mecanismo de recuperacin
avanzada para implementar la recuperacin a un instante.
c.
Las transacciones correctas se pueden volver a ejecutar lgicamente, pero no se pueden reejecutar
usando sus registros del registro histrico. Por qu?

Respuesta:
Considrese una cuenta bancaria A con un saldo de 100. Sean dos transacciones T1 y T2, cada una
depositando 10 en la cuenta. As, el saldo sera de 20 despus que ambas transacciones se ejecutaran.
Supongamos que las transacciones se ejecutan secuencialmente: T1 primero y despus T2 . Los registros del
registro histrico, correspondientes a las actualizaciones de A por las transacciones T1 y T2, seran < T1,A,
100, 110 > y < T2,A, 110, 120 > respectivamente.
Supngase que se desea deshacer la transaccin T1. El mecanismo normal para deshacer la transaccin
reemplazar el valor en cuestin A en este ejemplo por el campo del antiguo valor en el registro del
registro histrico. De este modo, si se deshace la transaccin T1 empleando el mecanismo normal para
deshacer transacciones, el saldo resultante sera 100 y se habran, en efecto, deshecho las dos transacciones,
mientras se intentaba deshacer slo la transaccin T1.
... PENDIENTE.
Considrese de nuevo un ejemplo a partir del primer elemento. Supngase que ambas transacciones se
deshacen y el saldo retorna al valor original de 100.
Ahora se desea rehacer la transaccin T2. Si se rehace el registro del registro histrico < T2,A, 110, 120 >
correspondiente a la transaccin T2, el saldo se convertira en 120 y se habran, en efecto, rehecho las dos
transacciones, mientras que se intentaba rehacer slo la transaccin T2.
17.13 En los lenguajes de programacin persistentes no se realiza explcitamente el registro histrico de las
modificaciones.
Descrbase como pueden usarse las protecciones de acceso a las pginas que proporcionan los sistemas
operativos modernos, para crear imgenes anteriores y posteriores de las pginas que son modificadas.
(Sugerencia: Vase el Ejercicio 16.12)
Respuesta: Esto se implementa por medio de mprotect, para desactivar inicialmente los accesos a todas las
pginas, para el proceso. Cuando el proceso intenta acceder a una direccin en una pgina, tiene lugar una
violacin de la proteccin. El gestor asociado con la violacin de la proteccin solicita, entonces, un bloqueo
de escritura sobre la pgina y, despus que se adquiere el bloqueo, escribe el contenido inicial ( imagen
anterior ) de la pgina sobre el registro histrico. Emplea entonces mprotect para permitir el acceso de
escritura a la pgina por el proceso y, finalmente, permitir que contine el proceso. Cuando la transaccin est
lista para el compromiso, y antes de que libere el bloqueo sobre la pgina, escribe el contenido de la pgina
(imagen posterior) sobre el registro histrico. Estas imgenes anterior y posterior se pueden emplear en la
recuperacin despus de una cada.
Esta tcnica se puede optimizar para no escribir la pgina entera sobre el registro histrico para el
registro deshacer, con tal que el programa clave la pgina en memoria.
17.14 ARIES asume que hay espacio en cada pgina para un NSR. Al manejar objetos grandes que abarcan
varias pginas, tales como archivos del sistema operativo, un objeto puede usar una pgina completa, sin dejar
espacio para el NSR. Sugirase una tcnica para manejar esta situacin; esta tcnica debe soportar
operaciones rehacer fsicas, pero no es necesario que soporte operaciones rehacer fisiolgicas.
Respuesta: PENDIENTE. Array independiente.
17.15

Explquese la diferencia entre una cada del sistema y un desastre.

Respuesta: En una cada del sistema la CPU se viene abajo y el disco tambin se puede caer. Pero se supone
que el almacenamiento estable del sitio supera las cadas del sistema. En un desastre, todo en el sitio queda
destruido. Es necesario distribuir el almacenamiento estable para superar los desastres.

17.16 Para cada uno de los siguientes requisitos, identifquese la mejor opcin del grado de durabilidad en
un sistema remoto de copia de seguridad:
a.
Prdida de datos que se debe evitar pero se puede tolerar alguna prdida de disponibilidad.
b.
El compromiso de transacciones se debe realizar rpidamente, perdiendo algunas transacciones
comprometidas en caso de desastre.
c.
Se requiere un alto grado de disponibilidad y durabilidad, pero es aceptable un mayor tiempo de
ejecucin para el protocolo de compromiso de transacciones.
Respuesta:
a.
Dos muy seguro es adecuado aqu porque garantiza la durabilidad de las actualizaciones mediante
transacciones comprometidas, aunque slo pueda llevarse a cabo si el sitio principal y el de copia de
seguridad estn en funcionamiento. La disponibilidad es baja, pero se ha mencionado que esto es aceptable.
b.
El compromiso de uno seguro es tan rpido que no ha de esperar a que el registro histrico alcance
el sitio de la copia de seguridad. Dado que la prdida de datos se puede tolerar, es la mejor opcin.
c.
Con el compromiso de dos seguro, la probabilidad de prdida de datos es muy baja y tambin
compromete que se puede llevar a cabo mientras que, al menos, el sitio principal est operativo. De este
modo, la disponibilidad es alta. Los compromisos llevan ms tiempo que en el protocolo uno seguro, pero eso
ha sido mencionado como aceptable.

CAPITULO

18

ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS


Este captulo es adecuado para un curso de introduccin. Se recomienda cubrirlo al menos como material de
trabajo individual, dado que los estudiantes son bastante susceptibles para el empleo de arquitecturas de bases
de datos no centralizadas (particularmente cliente-servidor), cuando acceden al mundo real. La materia de este
captulo podra ser potencialmente sustituida por el protocolo de compromiso de dos fases (C2F), (apartado
19.4.1 del captulo 19) para proporcionar a los estudiantes una visin general de los detalles ms importantes
de las arquitecturas de bases de datos no centralizadas.
Cambios a la tercera edicin:
El tratamiento de las estructuras de los procesos de bases de datos (apartado 18.2.1) es nuevo en esta edicin.
Se ha actualizado el alcance de la tecnologa de red y se han cubierto brevemente las redes de rea de
almacenamiento.

Ejercicios
18.1
Por qu es relativamente fcil trasladar una base de datos desde una mquina con un nico
procesador a otra con varios procesadores, si no es necesario paralelizar las consultas individuales?
Respuesta: La transferencia es relativamente fcil para una mquina con varios procesadores con memoria
compartida.
Las bases de datos diseadas para las mquinas monoprocesador ya disponen de multitarea permitiendo que
varios procesos se ejecuten a la vez en el mismo procesador, usando tiempo compartido, mientras que de cara
al usuario parece que los procesos se estn ejecutando en paralelo. De esta manera, desde un punto de vista
lgico, las mquinas paralelas de grano grueso parecen ser idnticas a las mquinas monoprocesador,
haciendo que la transferencia sea relativamente fcil.
Transferir una base de datos a un disco compartido o a una arquitectura de varios procesadores sin
compartimiento, es un poco ms duro.
18.2
Las arquitecturas servidoras de transacciones son populares entre las bases de datos relacionales
cliente-servidor, donde las transacciones son cortas. Por el contrario, las arquitecturas servidoras de datos son
populares entre los sistemas cliente-servidor de bases de datos orientadas a objetos, donde las transacciones
son relativamente largas. Dense dos razones por las que los servidores de datos puedan ser populares entre las
bases de datos orientadas a objetos y no lo sean entre las bases de datos relacionales.
Respuesta: Los servidores de datos son buenos si la transferencia de datos es pequea respecto al clculo, el
cual es a menudo el caso en aplicaciones de bases de datos orientadas a objetos, tales como el diseo asistido
por computadora. En contraste, en las tpicas aplicaciones de bases de datos relacionales como el
procesamiento de transacciones, una transaccin realiza pequeos clculos pero puede acceder a varias
pginas, lo cual implicar la transferencia de una gran cantidad de datos, con poco beneficio en una
arquitectura servidora de datos. Otra razn es que estructuras como los ndices son muy usadas en las bases de
datos relacionales y llegan a convertirse en elementos de conflicto en una arquitectura servidora de datos,
requiriendo frecuentes transferencias de datos. En las tpicas aplicaciones de hoy en da de bases de datos
orientadas a objetos, tales como el diseo asistido por computadora, no hay esos puntos de conflicto
frecuente.
18.3
En lugar de almacenar estructuras compartidas en memoria compartida, una arquitectura alternativa
sera almacenarlas en la memoria local de un proceso especial y acceder a los datos compartidos mediante la
comunicacin entre procesos con el proceso. Cules seran los inconvenientes de una arquitectura as?
Respuesta: Los inconvenientes seran que, para adquirir bloqueos, se solicitaran dos mensajes entre
procesos, uno para la solicitud y otro para confirmar la concesin. La comunicacin entre procesos es mucho
ms costosa que los accesos a memoria, por lo que el coste de bloqueos se incrementara. El proceso de
almacenar las estructuras compartidas podra tambin convertirse en un cuello de botella.
El beneficio de esta alternativa es que la tabla de bloqueos est mejor protegida de actualizaciones
errneas, dado que slo un proceso puede acceder a ella.
18.4
La mquina que hace de servidor en los sistemas cliente-servidor tpicos es mucho ms potente que
los clientes, es decir, su procesador es ms rpido, puede tener varios procesadores, tiene ms memoria y
discos de mayor capacidad. En vez de esto, considrese el caso en que los clientes y el servidor tuvieran
exactamente la misma potencia. Tendra sentido construir un sistema cliente-servidor en ese caso? Por qu?
Qu caso se ajustara mejor a una arquitectura servidora de datos?
Respuesta: Con clientes potentes, todava cobra sentido tener un sistema cliente servidor, en vez de un
sistema completamente centralizado. Si se emplea la arquitectura servidora de datos, los clientes potentes
pueden descargarse todo el tiempo y trabajar procesando transacciones de cmputo intensivo del servidor,

liberndolo para que realice slo el trabajo de cumplir los requisitos de lectura-escritura; incluso si se emplea
el modelo de servidor de transacciones, los clientes todava se ocupan del trabajo del interface de usuario, el
cual es tpicamente de cmputo muy intensivo.
Un sistema completamente distribuido podra resultar atractivo en presencia de clientes potentes,
pero los sistemas cliente servidor todava tienen la ventaja de tcnicas de recuperacin y control de
concurrencia ms sencillos de implementar en un solo servidor, en vez de tener estas acciones distribuidas en
todas las mquinas.
18.5
Considrese un sistema de bases de datos orientadas a objetos sobre una arquitectura cliente servidor,
en la que el servidor acta como servidor de datos.
a.
Cul es el efecto de la velocidad de interconexin entre el cliente y el servidor, en los casos de
envo de pginas y de objetos?
b.
Si se utiliza envo de pginas, la cach de datos en el cliente puede organizarse como una cach de
objetos o de pginas. La cach de pginas almacena los datos en unidades de pginas, mientras que la cach
de objetos almacena los datos en unidades de objetos. Supngase que los objetos son ms pequeos que una
pgina. Descrbase una ventaja de la cach de objetos frente a la de pginas.
Respuesta:
a.
Se supone que los objetos son ms pequeos que una pgina y caben en ella. Si el enlace de
interconexin es lento es mejor elegir el envo de objetos, pues en el envo de pginas se gastar mucho
tiempo en enviar objetos que posiblemente nunca se necesitarn. Incluso con una interconexin rpida, las
sobrecargas y latencias de las comunicaciones, no el volumen real de datos a enviar, se convierten en un
cuello de botella. En este escenario sera preferible el envo de pginas.
b.
Dos ventajas de tener una cach de objetos en vez de una cach de pginas, incluso si se emplea el
envo de pginas, son:
i.
Cuando un cliente se ejecuta fuera del espacio cach, puede reemplazar objetos sin reemplazar
pginas enteras. La reduccin de la granularidad del almacenamiento cach podra dar como resultado un
mejor ratio de aciertos cach.
ii.
Es posible para el servidor pedir a los clientes la devolucin de algunos de los bloqueos que
almacenan, pero que no necesitan (liberacin de bloqueos). De este modo, existe la posibilidad de mayor
concurrencia. Si se emplea cach de pginas, esto no es posible.
18.6
Qu es la liberacin de bloqueos y bajo qu condiciones es necesaria? Por qu no es necesario si la
unidad de envo de datos es un elemento?
Respuesta: En un sistema cliente servidor con envo de pginas, cuando un cliente solicita un elemento el
servidor generalmente concede un bloqueo, no sobre el elemento solicitado, sino sobre la pgina que lo
contiene, concediendo de este modo implcitamente bloqueos sobre todos los elementos de la pgina. Los
otros elementos de la pgina se dice que estn preextrados. Si algn otro cliente posteriormente solicita uno
de los elementos preextrados, el servidor puede pedir al propietario del bloqueo de la pgina que retorne el
bloqueo sobre este elemento. Si el dueo del bloqueo de la pgina no necesita este elemento, desbloquea el
bloqueo de la pgina que contiene al elemento, bloquea sobre todos los elementos a los que est accediendo
en realidad y, despus, devuelve los bloqueos de los elementos no deseados. El servidor puede entonces
conceder el ltimo bloqueo solicitado.
Si la unidad de datos enviados es un elemento, no hay bloqueos de granularidad gruesa; incluso si se
emplea pre extraccin, se implementa generalmente mediante la concesin de bloqueos individuales sobre
cada uno de los elementos preextrados. De este modo, cuando el servidor solicita la devolucin de un
bloqueo, no es necesario desbloquear, el bloqueo requerido slo se devuelve si el cliente no lo utiliza.
18.7
Suponga que se encuentra a cargo de las operaciones de la base de datos de una empresa cuyo
trabajo principal es el de procesar transacciones. Suponga que la empresa crece rpidamente cada ao y que el

sistema informtico actual se ha quedado pequeo. Cuando escoja una nueva computadora paralela, qu
factor ser ms importante: la ganancia de velocidad, la ampliabilidad por lotes o la ampliabilidad de las
transacciones? Por qu?
Respuesta: Con el aumento del grado de las operaciones, se espera que aumente el nmero de transacciones
remitidas por unidad de tiempo. Por otro lado, no sera de esperar que la mayora de la transacciones
individuales crecieran ms ni que, dada una transaccin, se requiriese que se ejecutara ms rpidamente ahora
de cmo lo que haca antes. Por lo tanto, la ampliabilidad de las transacciones es la medida mas relevante en
este escenario.
18.8
Supngase una transaccin escrita en C con cdigo SQL incorporado, que emplea el 80% del tiempo
en ejecutar el cdigo SQL y el 20% restante en el cdigo C. Qu ganancia de velocidad puede esperarse si
slo se paraleliza el cdigo SQL? Justifquese la respuesta.
Respuesta: Dado que la parte que no puede ser paralelizada representa el 20% del tiempo de ejecucin total,
la mejor ganancia de velocidad que se puede esperar ha de ser menor que 5.
18.9
En un sistema de procesamiento de transacciones, cules son los factores que trabajan en contra de
la ampliabilidad lineal?. Cul de esos factores es probablemente el ms importante en cada una de las
siguientes arquitecturas: memoria compartida, disco compartido y sin compartimiento?
Respuesta: El aumento de los conflictos por los recursos compartidos impide la ampliabilidad lineal con el
aumento del paralelismo. En un sistema de memoria compartida, los conflictos por memoria (lo cual implica
conflictos del bus) dar como resultado una cada de la escalabilidad con incremento del paralelismo. En un
sistema de disco compartido, hay conflicto por los accesos al disco y al bus, lo cual afecta a la ampliabilidad.
En un sistema sin compartimiento, la sobrecarga de las comunicaciones entre procesos sern el principal
factor de impedimento. Dado que no hay memoria compartida, la adquisicin de bloqueos y otras actividades
que requieren el paso de mensajes entre procesos, tomarn ms tiempo con el incremento de paralelismo.
18.10 Considrese un banco que dispone de un conjunto de sedes, en cada una ejecutndose un sistema de
base de datos.
Supngase que la transferencia electrnica de dinero entre ellas es el nico modo de interaccin de las bases
de datos. Pude calificarse como distribuido un sistema as? Por qu?
Respuesta: En un sistema distribuido, todos los sitios generalmente ejecutan el mismo software de gestin de
base de datos y comparten un esquema global. Cada sitio aporta un entorno para la ejecucin, tanto de
transacciones globales iniciadas en sitios remotos, como de transacciones locales. El sistema descrito en la
pregunta no tiene estas propiedades y, por lo tanto, no puede calificarse como una base de datos distribuida.
18.11 Considrese una red basada en lneas de acceso telefnico, en la que los sitios se comunican
peridicamente, por ejemplo, todas las noches. Estas redes suelen tener un servidor y varios clientes. Los
sitios que actan como clientes estn conectados slo con el servidor e intercambian los datos con el resto de
clientes, almacenndolos en el servidor y recuperando los almacenados por otros clientes en el servidor. Cul
es la ventaja de tal arquitectura frente a una en la que un sitio pueda intercambiar datos con otro mediante
acceso telefnico directo?
Respuesta: Con el servidor central, cada sitio no ha de recordar con qu sitio contactar, cuando se solicita un
determinado elemento de datos. El servidor central slo necesita recordar esto, de tal modo que los elementos
de los datos pueden moverse alrededor fcilmente, dependiendo de los sitios a los que acceden los elementos
ms frecuentemente. Otras tareas de mantenimiento tambin estn centralizadas en vez de distribuidas,
haciendo el sistema ms fcil de desarrollar y mantener. Naturalmente, est el inconveniente de un cierre
total, en caso de que el servidor llegue a estar no disponible. Incluso si est ejecutndose, puede convertirse en

un cuello de botella porque cada peticin ha de encaminarse travs de l.

CAPITULO

19

BASES DE DATOS DISTRIBUDAS


Las bases de datos distribuidas, en general, y las bases de datos heterogneas, en particular, estn aumentando
de importancia, dado que las organizaciones intentan integrar sus bases de datos a travs de fronteras fsicas y
organizacionales. La interconexin de estas bases de datos para crear una base de datos distribuida o mltiple
es, de hecho, crucial para la competitividad de muchas compaas. Este captulo reconsidera las cuestiones
tratadas anteriormente en el texto, tales como el procesamiento de consultas y el control de concurrencias y
recuperaciones, desde el punto de vista de las bases de datos distribuidas.
Este es un captulo extenso y apropiado slo para un curso avanzado. Se pueden elegir temas
sencillos para su inclusin en un curso de introduccin. Una buena alternativa incluye almacenamiento
distribuido, heterogeneidad y compromiso de dos fases.
Cambios a la tercera edicin:
Este captulo ha cambiado significativamente respecto de la edicin anterior.
El nfasis en la transparencia de la edicin anterior ha sido abandonado y, en su lugar, el captulo comienza
considerando la diferencia entre bases de datos distribuidas heterogneas y homogneas.
Se han abandonado todos los detalles del compromiso de tres fases, dado que no se usa mucho en la
prctica.
Se ha dado cobertura a los modelos alternativos del procesamiento de transacciones en el Apartado 19.4.3,
con nfasis en el enfoque basado en los mensajes persistentes para las transacciones distribuidas.
La duplicidad con niveles dbiles de consistencia, la cul es ampliamente usada en la prctica, se cubre
ahora en el Apartado 19.5.3.
Se han eliminado los algoritmos distribuidos para la deteccin de interbloqueos, dado que son demasiado
complicados y caros para ser prcticos.
Se ha introducido un tratamiento detallado de la gestin de fallos, para la alta disponibilidad aportada en las
bases de datos distribuidas (Apartado 19.6).
Las bases de datos heterogneas se tratan ahora con mayor detalle en el Apartado 19.8, mientras que los
detalles de los niveles dbiles de secuencialidad en las bases de datos mltiples se han trasladado al captulo
24.
Se ha introducido en esta edicin (Apartado 19.9) el tratamiento de sistemas de directorio, con nfasis en
LDAP.

Ejercicios
19.1

Disctanse las ventajas relativas de las bases de datos centralizadas y de las distribuidas.

Respuesta:
Un sistema de bases de datos distribuido permite al usuario un acceso transparente y adecuado a los datos
que no estn almacenados en el sitio, mientras permite a cada sitio el control sobre sus propios datos locales.
Una base de datos distribuida puede ser ms segura que un sistema centralizado porque, si un sitio falla, la
base de datos puede seguir funcionando pero, si el sistema centralizado falla, la base de datos no puede
continuar por ms tiempo con su operacin normal. Adems, una base de datos distribuida permite la
ejecucin paralela de consultas y posibilita la divisin de una consulta en varias partes, para incrementar la
productividad.
Un sistema centralizado en ms fcil de disear e implementar. Un sistema centralizado es ms barato de
operar porque no se han de enviar mensajes.
19.2
Explquense las diferencias entre transparencia de la fragmentacin, transparencia de las rplicas y
transparencia de la ubicacin.
Respuesta:
a.
Con transparencia de la fragmentacin, el usuario del sistema no es consciente de ninguna
fragmentacin que el sistema haya implementado. Un usuario puede formular consultas contra relaciones
globales y el sistema realizar la transformacin necesaria para generar el resultado correcto.
b.
Con transparencia de las rplicas el usuario no es consciente de ninguna replicacin de datos. El
sistema debe impedir operaciones inconsistentes sobre los datos. Esto requiere algoritmos de control de
concurrencia ms complejos.
c.
Transparencia de la ubicacin significa que el usuario no es consciente de donde estn almacenados
los datos.
El sistema debe encaminar los datos solicitados hacia los sitios apropiados.
19.3
Indquese lo que diferencia a una base de datos distribuida diseada para una red de rea local, de
otra diseada para una red de rea amplia.
Respuesta: La transferencia de datos sobre una red de rea local (LAN) es mucho ms rpida sobre una red
de rea ancha (WAN). As, la replicacin y la fragmentacin no aumentarn la productividad y la velocidad
sobre una LAN, tanto como en una WAN. Pero incluso en una LAN, la replicacin tiene su utilidad
incrementando la fiabilidad y disponibilidad.
19.4
Indquese en qu momento resulta til tener rplicas de los datos o tenerlos fragmentados.
Explquese la respuesta.
Respuesta: La replicacin es til cuando hay numerosas transacciones de slo lectura en diferentes sitios,
esperando acceder a los mismos datos. Todas ellas se pueden ejecutar rpidamente en paralelo, accediendo a
datos locales. Pero las actualizaciones se hacen difciles con la replicacin.
La fragmentacin es til si las transacciones sobre diferentes sitios tienden a acceder a partes diferentes de la
base de datos.

19.5
Explquense los conceptos de transparencia y de autonoma. Indquese el motivo de que estos
conceptos sean deseables desde el punto de vista de los factores humanos.
Respuesta: La autonoma es el grado de control que tiene un sitio concreto sobre la base de datos local. Es
importante porque los usuarios del sitio quieren accesos rpidos y correctos a los elementos de datos locales.
Esto es especialmente cierto cuando se consideran los datos locales a los que ms frecuentemente se acceder
en una base de datos. La transparencia oculta la naturaleza distribuida de la base de datos. Esto es importante
porque no se debera exigir a los usuarios conocer nada sobre la localizacin, replicacin, fragmentacin u
otros aspectos de la implementacin de la base de datos.
19.6
Para crear un sistema distribuido con elevada disponibilidad hay que conocer los tipos de fallos que
pueden producirse.
a.
Indquense los tipos de fallos posibles en los sistemas distribuidos.
b.
Indquense los elementos de la lista de la pregunta a, que tambin sean aplicables a un sistema
centralizado.
Respuesta:
a.
Los tipos de fallos que pueden ocurrir en un sistema distribuido incluyen
i.
Fallo de la computadora (fallo de un sitio).
ii.
Fallo del disco.
iii
Fallo de comunicaciones.
b.

Los dos primeros tipos de fallos tambin pueden suceder en sistemas centralizados.

19.7
Considrese un fallo que se produce durante la ejecucin de C2F para una transaccin. Para cada
fallo posible de los indicados en el Ejercicio 19.6.a, explquese el modo en que C2F asegura la atomicidad de
la transaccin a pesar del fallo.
Respuesta: Una prueba de que C2F garantiza compromisos/abortos atmicos, a pesar de fallos en sitios y
enlaces, es lo que sigue. La idea principal es que, despus que todos los sitios contesten con un mensaje <T
preparada>, slo el coordinador de una transaccin puede tomar una decisin de compromiso o aborto.
Cualquier compromiso o aborto posterior por un sitio, slo puede tener lugar despus que constate la decisin
del coordinador, bien directamente desde el coordinador o indirectamente desde otro sitio. Supngase que se
enumeran los casos para el aborto de un sitio y despus para el compromiso.
a.
Un sitio puede abortar una transaccin T (grabando un registro del registro histrico <T abortada>)
slo bajo las siguientes circunstancias:
i.
No se ha grabado an un registro del registro histrico <T preparada>. En este caso el coordinador
no podra tenerlo y no recibir un mensaje <T preparada> o <T comprometida> desde este sitio. Por lo
tanto, slo el coordinador puede tomar una decisin de abortar.
ii.
Se ha grabado un registro del registro histrico <T preparada>, pero al consultar descubre que
algn otro sitio tiene un registro del registro histrico <T abortada>. En este caso lo correcto es abortar,
porque ese otro sitio habra constatado la decisin del coordinador (directa o indirectamente) antes de abortar.
iii
Es el propio coordinador. En este caso ningn sitio habra comprometido, o comprometer en el
futuro, porque las decisiones de comprometer slo las puede realizar el coordinador.
b.
Un sitio puede comprometer una transaccin T (grabando un registro del registro histrico <T
comprometida>) slo bajo las siguientes circunstancias:
i.
Se ha grabado un registro del registro histrico <T preparada> y al consultar descubre que algn
otro sitio tiene un registro del registro histrico <T comprometida>. En este caso lo correcto es
comprometer, porque ese otro sitio habra constatado la decisin del coordinador (directa o indirectamente)

antes de comprometer.
ii.
Es el propio coordinador. En este caso ningn otro sitio participante puede abortar o habra
abortado, porque las decisiones de hacerlo slo las puede realizar el coordinador.
19.8
Considrese un sistema distribuido con dos sitios, A y B. Indquese si el sitio A puede distinguir
entre:
B deja de funcionar.
El enlace entre A y B deja de funcionar.
B est extremadamente sobrecargado y su tiempo de respuesta es cien veces el habitual.
Indquense las implicaciones de la respuesta para la recuperacin de los sistemas distribuidos.
Respuesta: El sitio A no puede distinguir entre los tres casos hasta que se reanude la comunicacin con el
sitio B. La accin que realice mientras B est inaccesible debe ser correcta, independientemente de cual de
estas situaciones haya ocurrido realmente, y debe ser tal que B pueda reintegrarse consistentemente en el
sistema distribuido, una vez que se restaure la comunicacin.
19.9
El esquema de mensajera persistente descrito en este captulo, depende de las marcas temporales
combinadas con el desecho de los mensajes recibidos, si son demasiado antiguos.
Propngase un esquema alternativo basado en los nmeros de secuencia, en lugar de las marcas temporales.
Respuesta: Se puede tener un esquema basado en nmeros secuenciales, similar al basado en marcas
temporales. Se marca cada mensaje con un nmero secuencial que es nico para el par (sitio emisor, sitio
receptor). El nmero se incrementa en 1 por cada nuevo mensaje enviado desde el sitio emisor al receptor.
El sitio receptor lo almacena y reconoce que ha recibido el mensaje, slo si tambin ha recibido
todos los mensajes de nmeros inferiores; el mensaje se almacena en la relacin mensajes-recibidos.
El sitio emisor retransmite un mensaje hasta que recibe un acuse de recibo del sitio receptor,
conteniendo el nmero de secuencia del mensaje transmitido, o uno superior. Una vez que se recibe el acuse
de recibo, se puede borra el mensaje de la cola de su cola de envo.
El sitio de recepcin elimina todos los mensajes que recibe con un nmero de secuencia inferior al
del menor mensaje almacenado, desde el sitio de envo. El sitio de recepcin elimina todos los mensajes de la
relacin mensajes-recibidos, excepto los de nmero ms recientes de cada sitio emisor (los mensajes slo se
pueden eliminar despus de ser procesados localmente).
Ntese que esta tcnica requiere una sobrecarga fija (y pequea) en el sitio receptor, por cada sitio
emisor, independientemente del nmero de mensajes recibidos. En cambio, la tcnica de marcas temporales
requiere un espacio extra por cada mensaje. La tcnica de marcas temporales tendra una sobrecarga de
almacenamiento menor, si el nmero de mensajes recibidos dentro del intervalo de interrupcin fuera pequeo
comparado con el nmero de sitios mientras que, de lo contrario, la tcnica de nmeros secuenciales tendra
una sobrecarga inferior.
19.10 Se da un ejemplo en que el enfoque de leer uno, escribir todos los disponibles conduzca a un estado
errneo.
Respuesta: Considrese el saldo de una cuenta, replicado en N sitios. Supngase un saldo actual de 100
consistente en todos los sitios. Sean dos transacciones T1 y T2, cada una depositando 10 en la cuenta. As, el
saldo sera de 120 despus que ambas transacciones se ejecutaran. Supongamos que las transacciones se
ejecutan secuencialmente: T1 primero y despus T2 . Supngase que uno de los sitios, por ejemplo s, no est
disponible cuando se ejecute T1 y que la transaccin T2 lea el saldo desde el sitio s. Se puede ver que el saldo
en el sitio principal sera, al final, de 110.
19.11

Si se aplica una versin distribuida del protocolo de granularidad mltiple del Captulo 16 a una base

de datos distribuida, el sitio responsable del DAG puede convertirse en un cuello de botella. Supngase que se
modifica ese protocolo de la manera siguiente:
Slo se permiten en la raz bloqueos en modo tentativo.
A todas las transacciones se les conceden, de manera automtica, todos los bloqueos en modo tentativo
posibles.
Mustrese que estas modificaciones alivian el problema sin permitir planificaciones no secuenciables.
Respuesta: La secuencialidad est asegurada dado que no se han cambiado las reglas del protocolo de
granularidad mltiple. Dado que las transacciones acuerdan automticamente todos los bloques tentativos
sobre el nodo raz y que no se dan otros tipos de bloqueos en l, no hay necesidad de enviar ninguna peticin
de bloqueo a la raz. De este modo se libera el cuello de botella.
19.12 Explquese la diferencia entre la rplica de datos en los sistemas distribuidos y el mantenimiento de
sitios remotos de respaldo.
Respuesta: En los sistemas de respaldo remotos todas las transacciones se realizan en el sitio principal y los
datos se replican sobre el sitio remoto de respaldo. El sitio remoto de respaldo se mantiene sincronizado con
las actualizaciones sobre el sitio principal mediante el envo de todos los registros del registro histrico.
Siempre que falla el sitio principal, el sitio de respaldo remoto asume los procesos. Los sistemas distribuidos
ofrecen mayor disponibilidad teniendo mltiples copias de los datos en diferentes sitios, mientras que los
sistemas remotos de respaldo ofrecen menor disponibilidad a un coste inferior y sobrecargas de ejecucin.
En un sistema distribuido, el cdigo de la transaccin se ejecuta en todos los sitios, mientras que en
un sistema remoto de respaldo slo se ejecuta en el sitio principal. La transacciones de los sistemas
distribuidos siguen el compromiso de dos fases para tener los datos en estado consistente, mientras que un
sistema remoto de respaldo no sigue el compromiso de dos fases y evita las sobrecargas relacionadas.
19.13 Se da un ejemplo en el que la rplica perezosa pueda conducir a un estado inconsistente de la base de
datos, aunque las actualizaciones obtengan un bloqueo exclusivo sobre la copia principal (maestra).
Respuesta: Considrese el saldo de una cuenta, replicado en N sitios. Supngase un saldo actual de 100
consistente en todos los sitios. Sean dos transacciones T1 y T2, cada una depositando 10 en la cuenta. As, el
saldo sera de 120 despus que ambas transacciones se ejecutaran. Supongamos que las transacciones se
ejecutan secuencialmente: T1 primero y despus T2 . Supngase que la copia del saldo en uno de los sitios, por
ejemplo s, no sea consistente debido a una estrategia de rplica perezosa con la copia principal despus de
que se ejecute la transaccin T1 y que la transaccin T2 lea esta copia del saldo. Se puede ver que el saldo en
el sitio principal sera, al final, de 110.
19.14 Estdiense y resmanse las facilidades que el sistema de bases de datos que se est utilizando ofrece,
para tratar los estados inconsistentes que pueden alcanzarse con la propagacin perezosa de las
actualizaciones.
Respuesta: PENDIENTE.
19.15 Disctanse las ventajas e inconvenientes de los dos mtodos presentados en el Apartado 19.5.2, para
la generacin de marcas temporales nicas globalmente.
Respuesta: El enfoque centralizado tiene el problema de un posible cuello de botella en el sitio principal y el
de elegir un nuevo sitio central si dejara de funcionar. El enfoque centralizado tiene el problema de que deben
intercambiarse muchos mensajes para mantener el sistema justo, o un sitio puede situarse por delante de todos
los otros y dominar la base de datos.

19.16
Considrese el siguiente algoritmo de deteccin de interbloqueo. Cuando la transaccin Ti, en el
sitio S1, solicita un recurso a Tj, en el sitio S3, se enva un mensaje de solicitud con la marca temporal n. Se
inserta el arco (Ti, Tj, n) en el grafo local de espera de S1. El arco (Ti, Tj, n) slo se inserta en el grafo local de
espera de S3 , si Tj ha recibido el mensaje de solicitud y no se puede conceder de manera inmediata el recurso
solicitado. La solicitud de Ti a Tj en el mismo sitio se trata de la manera habitual; no se asocia ninguna marca
temporal con el arco (Ti, Tj). El coordinador central invoca el algoritmo de deteccin enviando el mensaje de
inicio a cada sitio del sistema.
Al recibir este mensaje, cada sitio enva al coordinador su grafo local de espera.
Obsrvese que ese grafo contiene toda la informacin local que el sitio tiene sobre el estado del grafo real. El
grafo de espera refleja un estado instantneo del sitio, pero no est sincronizado con respecto a ningn otro
sitio. Cuando el controlador ha recibido una contestacin de cada sitio crea un grafo de la manera siguiente:
El grafo contiene un vrtice para cada transaccin del sistema.
El grafo tiene un arco (Ti, Tj) si y slo si
Hay un arco (Ti, Tj) en uno de los grafos de espera.
Aparece un arco (Ti, Tj, n) (para algn n) en ms de un grafo de espera.
Prubese que, si hay un ciclo en el grafo creado, el sistema se halla en estado de interbloqueo y que, si no hay
ningn ciclo en el grafo creado, el sistema no se hallaba en estado de interbloqueo cuando comenz la
ejecucin del algoritmo.
Respuesta: Supngase un ciclo Ti g Tj g g Tm g Ti que existe en el grafo construido por el
controaldor. Los arcos del grafo sern locales de la forma (Tk, Tl) o distribuidos de la forma (Tk, Tl, n). Cada
arco local (Tk, Tl) implica indudablemente que Tk est esperando a Tl. Dado que un arco distribuido (Tk, Tl, n)
se inserta en el grafo slo si la peticin de Tk ha alcanzado Tl y Tl no puede liberar el bloqueo
inmediatamente, Tk est, efectivamente, esperando a Tl . Por lo tanto, cada arco del ciclo representa, de hecho,
una transaccin esperando a otra. Para una prueba detallada de que esto implica un interbloqueo, consltese
Stuart et al [1984].
Ahora se va a probar la implicacin opuesta. Tan pronto como se descubre que Tk est esperando a Tl:
a.
se aade un arco local (Tk, Tl) si ambas estn en el mismo sitio.
b.
El arco (Tk, Tl, n) se aade en ambos sitios si Tk y Tl estn en sitios diferentes.
Por lo tanto, si el algoritmo fuera capaz de agrupar en el mismo instante todos los grafos locales de espera, se
descubrira definitivamente un ciclo en el grafo construido, en caso de que haya una espera circular en ese
instante. Si hay una espera circular en el instante en que el algoritmo comienza la ejecucin, ninguno de los
arcos que participan en ese ciclo pueden desaparecer hasta que termine el algoritmo. Por lo tanto, incluso si el
algoritmo no puede agrupar todos los grafos locales al mismo tiempo, se detectar igualmente a cualquiera de
los ciclos que existan justo antes de que se iniciase.
19.17

Considrese una relacin que est fragmentada horizontalmente por nmero-planta:


empleado (nombre, direccin, sueldo, nmero-planta)

Supngase que cada fragmento tiene dos rplicas: una almacenada en el sitio de Madrid y otra almacenada
localmente en el sitio de la planta. Descrbase una buena estrategia de procesamiento de las consultas
siguientes formuladas en el sitio de Lima.
a.
Hallar todos los empleados de la planta de Managua.
b.
Hallar el sueldo promedio de todos los empleados.
c.
Hallar el empleado mejor pagado de cada uno de los sitios siguientes: Buenos Aires, Rosario,
Crdoba, Baha Blanca.
d.
Hallar el empleado peor pagado de la compaa.

Respuesta:
a.
i.
ii.
b

i.
ii.

Enviar la consulta nombre(empleado) a la planta de Managua.


Permitir que Managua devuelva la respuesta
Calcular el promedio en Madrid.
Enviar la respuesta a Lima.

c.
i.
Enviar la consulta para encontrar el empleado mejor pagado a Buenos Aires, Rosario,
Crdoba y Baha Blanca.
ii.
Calcular las consultas en estos sitios.
iii
Devolver las respuestas a Lima.
d.

i.
ii.
iii

Enviar la consulta, para encontrar el empleado peor pagado, a Madrid.


Calcular la consulta en Madrid.
Enviar la respuesta a Lima.

19.18

Considrense las relaciones


empleado (nombre, direccin, sueldo, nmero-planta)
mquina (nmero-mquina, tipo, nmero-planta)

Supngase que la relacin empleado est fragmentada horizontalmente por nmero-planta y que cada
fragmento se almacena localmente en el sitio de su planta correspondiente. Supngase que la relacin
mquina se almacena entera en el sitio de Sucre. Descrbase una buena estrategia para el procesamiento de
cada una de las consultas siguientes.
a.
Hallar todos los empleados de la planta que contiene el nmero de mquina 1130.
b.
Hallar todos los empleados de las plantas que contienen mquinas cuyo tipo sea trituradora.
c.
Hallar todas las mquinas de la planta de Almadn.
d.
Hallar empleado |x| mquina.
Respuesta:
a.
i.
Realizar nmero-planta (snmero-mquina = 1130 (mquina)) en Sucre.
ii.
Enviar la consulta nombre (empleado) a todos los sitios que estn en el resultado de la
consulta previa.
iii
Estos sitios calculan las respuestas.
iv
Unir las respuestas en el sitio destino.
b
Esta estrategia es la misma que la 0.a, salvo que el primer paso debera realizar
nmero-planta (stipo =trituradora (mquina)) en Sucre.
c.
i.
Realizar snmero-planta = x (mquina) en Sucre, donde x es el nmero de planta para Almadn.
ii.
Enviar las respuestas al sitio de destino.
d.
Estrategia 1:
i.
Agrupar mquina en Sucre por nmero de planta.
ii.
Enviar los grupos a los sitios con el correspondiente nmero de planta.
iii
Realizar una reunin local entre los datos locales y los recibidos.
iv
Unir los resultados en el sitio destino.
Estrategia 2: Enviar la relacin mquina a Sucre y todos los fragmentos de la relacin empleado al
sitio de destino. Entonces, realizar la reunin en el sitio de destino.
Hay paralelismo en el clculo de la reunin, de acuerdo con la primera estrategia, pero no con la segunda. No
obstante, en una WAN, la cantidad de datos a enviar es el principal factor de coste. Se espera que cada planta
tendr ms de una mquina, por lo que el resultado de la reunin local en cada sitio ser un producto cruzado
de las tuplas de los empleados y las mquinas de la planta. El tamao de este producto cruzado es mayor que
el del fragmento de empleado en el sitio. Como consecuencia de la segunda estrategia, llevar a una

disminucin del envo de datos y ser ms eficiente.


19.19 Para cada una de las estrategias del Ejercicio 19.18, indquese el modo en que la eleccin de la
estrategia depende:
a.
Del sitio en el que se formul la consulta
b.
Del sitio en el que se desea obtener el resultado
Respuesta:
a.
Suponiendo que el coste de enviar la consulta es mnimo, el sitio al que la consulta sea remitida no
afecta a la estrategia para evaluar la consulta.
b.
Por la primera consulta, se averigua que los nmeros de planta donde est presente el nmero de
mquina 1130, se corresponden con Sucre. Entonces, las tuplas de los empleados en todas estas plantas se
envan al sitio de destino. Se puede ver que esta estrategia es ms o menos independiente del sitio de destino.
Lo mismo se puede decir de la segunda consulta. Para la tercera consulta, la seleccin se realiza en Sucre y
los resultados se envan al sitio de destino. Esta estrategia es, obviamente, independiente del sitio de destino.
Para la cuarta consulta se tienen dos estrategias. La primera realiza reuniones locales en todos los
sitios de las plantas y sus resultados se unen en el sitio de destino. En la segunda estrategia, la relacin
mquina en Sucre, as como todos los fragmentos de la relacin empleado, se envan primero al destino,
donde se realiza la operacin reunin. No hay una forma evidente de optimizar estas dos estrategias segn el
sitio de destino. En la respuesta al Ejercicio 19.18 se vio la razn por la que la segunda estrategia se esperaba
que, como resultado, diera menos envos de datos que la primera. Esa razn es independiente del sitio de
destino y por lo tanto se puede, en general, preferir la estrategia dos a la uno, sin importar el sitio de destino.
19.20

Calclese r |x s para las relaciones de la Figura 19.1.

Respuesta: El resultado es el siguiente:


r|xs

19.21

A
1
5

B
2
3

C
3
2

Es necesariamente ri|xrjigual a rj|xri? En qu circunstancias es cierto que ri|xrj=rj|xri?

Respuesta: En general, ri|xrjrj|xri Esto se puede ver fcilmente desde

Figura 19.1

Relaciones para el Ejercicio 19.20.

el Ejercicio 19.20, en el cual r|xss|xrr|xs


s|xr

C
3
3
2

D
4
6
3

E
5
8
2

Por definicin, ri |x rj = Ri (ri |x| rj) y rj |x ri= Rj (ri |x| rj ), donde Ri y Rj son los esquemas de ri y rj
respectivamente. Para que Ri (ri |x| rj) sea siempre igual a Rj (ri |x| rj ), los esquemas Ri y Rj deben ser el
mismo.
1

19.22 Dado que la funcionalidad LDAP puede implementarse sobre un sistema de bases de datos, indquese
la necesidad de la norma LDAP.
Respuesta: Las razones son:
Los protocolos de acceso a directorios son protocolos simplificados que atienden a un tipo limitado
de accesos a datos.
Los sistemas de directorio ofrecen un mecanismo sencillo para nombrar a los objetos de manera
jerrquica, que pueden utilizarse en un sistema distribuido de directorio para especificar la informacin que se
almacena en cada servidor de directorio. El sistema de directorios puede configurarse para que enve de
manera automtica a un sitio las consultas formuladas en el otro, sin intervencin del usuario.

19.23 Descrbase el modo en que se puede utilizar LDAP para ofrecer varias vistas jerrquicas de los datos
sin replicar los datos del nivel bsico.
Respuesta: Esto se puede hacer empleando referencias. Por ejemplo, una organizacin puede mantener su
informacin sobre departamentos geogrficamente (es decir, todos los departamentos en un sitio de la
organizacin) o por estructuras (es decir, informacin sobre un departamento desde todos los sitios). Estas dos
jerarquas se pueden mantener definiendo dos esquemas diferentes, con informacin de los departamentos en
un sitio como la informacin de base. Las entradas en las dos jerarquas se referirn a la entrada de la
informacin base, empleando referencias.

CAPITULO

20

BASES DE DATOS PARALELAS


Este captulo est indicado para un curso avanzado, pero tambin puede emplearse en proyectos de estudio
independientes por estudiantes de primer curso. El captulo trata diversos aspectos del diseo de sistemas de
bases de datos paralelas particionamiento de datos, paralelizacin de operaciones relacionales individuales y
paralelizacin de expresiones relacionales. El captulo tambin trata brevemente algunos aspectos de sistemas,
tales como la coherencia cach y la resistencia a fallos.
Las aplicaciones ms importantes de las bases de datos paralelas hoy son los almacenamientos y los
anlisis de grandes cantidades de datos. Por eso, los particionamientos de datos y los procesos de consultas
paralelas se tratan con significativo detalle. La optimizacin de las consultas, por la misma razn, tambin es
importante. Sin embargo, la optimizacin de consultas paralelas todava no es un problema completamente
resuelto; la bsqueda exhaustiva, empleada por la optimizacin de consultas secuenciales, es demasiado cara
en un sistema paralelo, forzando el empleo de heursticos. As, la optimizacin de consultas paralelas est en
un rea de investigacin continua.
La descripcin de algoritmos de procesamiento de consultas paralelas, est basada en el modelo sin
compartimiento. Se puede pedir a los estudiantes que estudien como mejorar los algoritmos, si en su lugar se
emplean mquinas de memoria compartida.
Cambios a la tercera edicin:
No hay cambios de importancia a la edicin anterior.

Ejercicios
20.1
Para cada una de las tres tcnicas de divisin, a saber, por turno rotatorio, por asociacin y en rangos,
aprtese un ejemplo de una consulta para la que esa tcnica de divisin proporcione la respuesta ms rpida.
Respuesta:
Divisin por turno rotatorio:
Cuando las relaciones son grandes y las consultas leen relaciones enteras, el turno rotatorio da una
buena aceleracin y un tiempo de respuesta rpido.
Divisin por asociacin:
Para consultas concretas aporta la respuesta ms rpida, dado que cada disco puede procesar una
consulta simultneamente. Si la divisin por asociacin es uniforme, incluso las exploraciones secuenciales de
relaciones completas se pueden realizar eficientemente.
Divisin en rangos:
Para las consultas de rangos, que acceden a pocas tuplas, aporta una respuesta rpida.
20.2
Al llevar a cabo una seleccin de rango en un atributo dividido en rangos, es posible que slo haga
falta acceder a un disco. Descrbanse las ventajas e inconvenientes de esta propiedad.
Respuesta: Si hay pocas tuplas en el rango consultado, cada consulta se puede procesar rpidamente en un
slo disco. Esto permite una ejecucin paralela de las consultas, con lo que se reduce la sobrecarga de iniciar
consultas en varios discos.
Por otro lado, si hay muchas tuplas en el rango consultado, a cada consulta le lleva mucho tiempo la
ejecucin, a la vez que no hay paralelismo en su ejecucin. Adems, algunos discos se pueden convertir en
puntos calientes, incrementando an ms el tiempo de respuesta.
La divisin en rangos hbridos, en la que pequeos rangos (de unos pocos bloques cada uno) se
dividen en forma de turnos rotatorios, aporta las ventajas de una divisin en rangos sin sus inconvenientes.
20.3
Indquense los factores que puedan dar lugar a un sesgo, cuando se divide una relacin basndose en
uno de sus atributos utilizando:
a.
Divisin por asociacin
b.
Divisin en rangos
En cada uno de los casos anteriores, indquese lo que se puede hacer para reducir el sesgo.
Respuesta:
a.
Divisin por asociacin:
Demasiados registros con el mismo valor de los atributos de la asociacin, o una funcin de
asociacin elegida pobremente sin las propiedades de aleatoriedad y uniformidad, pueden terminar en una
divisin sesgada. Para mejorar esta situacin, se debera experimentar con mejores funciones de asociacin
para esa relacin.
b.

Divisin en rangos:
Una distribucin no uniforme en los valores de los atributos de la divisin (incluyendo valores
duplicados en los atributos de la divisin), que no se ha tenido en cuenta por un mal vector de divisin, es la
principal razn de las divisiones sesgadas. Ordenando la relacin en funcin de los atributos de divisin y
dividindola en n rangos con igual nmero de tuplas cada uno, se tendr un buen vector de divisin con un
sesgo muy bajo.
20.4

Indquese la forma de paralelismo (entre consultas, entre operaciones o en operaciones) que sea

probablemente ms importante para cada una de las tareas siguientes.


a.
Incrementar la productividad de un sistema con muchas consultas pequeas
b.
Incrementar la productividad de un sistema con unas pocas consultas grandes, cuando el nmero de
discos y procesadores es grande.
Respuesta:
a.
Cuando hay muchas consultas pequeas, el paralelismo entre consultas aporta una buena
productividad. Paralelizar cada una de estas pequeas consultas incrementara la sobrecarga inicial, sin una
reduccin significativa del tiempo de respuesta.
b.
Con unas cuantas consultas grandes el paralelismo entre consultas es esencial para alcanzar tiempos
de respuesta rpidos. Dado que hay gran nmero de procesadores y discos, slo el paralelismo en operaciones
puede sacar partido del hardware paralelo para consultas que tpicamente tienen pocas operaciones, pero que
necesitan procesar cada una un gran nmero de tuplas.
20.5
Con el paralelismo encauzado, suele resultar adecuado llevar a cabo varias operaciones de un cauce
en un mismo procesador, aunque haya disponibles muchos procesadores.
a.
Explquese el motivo.
b.
Seran vlidos los argumentos anteriores si la mquina utilizara una arquitectura de memoria
compartida? Explquense los motivos.
c.
Seran vlidos los argumentos anteriores con paralelismo independiente? (Es decir, hay casos en
que, incluso si las operaciones no se encauzan y hay muchos procesadores disponibles, sigue siendo
conveniente llevar a cabo varias operaciones en el mismo procesador?)
Respuesta:
a.
La ganancia de velocidad que se obtiene paralelizando las operaciones se compensara con la
sobrecarga de la transferencia de datos, dado que cada tupla producida por un operador habra de transferirse
a su consumidor, que se est ejecutando en un procesador diferente.
b.
En una arquitectura de memoria compartida la transferencia de tuplas es muy eficiente. Por lo tanto,
el argumento anterior no se mantiene mucho.
c.
Incluso si dos operaciones son independientes, puede ser que ambas suministren sus resultados a un
tercer operador en comn. En ese caso, ejecutar las tres en el mismo procesador puede ser mejor que transferir
tuplas entre los procesadores.
20.6
Se da un ejemplo de una reunin , que no sea una equirreunin simple, para la que pueda utilizarse
paralelismo de particiones. Qu atributos deberan utilizarse para la divisin?
Respuesta: Se dan dos ejemplos de tales reuniones.
a.
r |x| (r.A = s.B) (r.A < s.C) s
Aqu se tiene condiciones extra que se pueden verificar despus de la reunin.
Por lo tanto, el paralelismo de particiones es til.
b.

r |x| (r.A (?s.B/20?)*20) (r.A<((?s.B/20?)+1)*20) s


Esta es una consulta en la que una tupla r y una tupla s se renen entre s, en el caso de que caigan
dentro del mismo rango de valores. Por lo tanto, el paralelismo de particiones aplica naturalmente a este
escenario.
Para ambas consultas, r debera estar particionada sobre el atributo A y s sobre el atributo B.
20.7
Considrese el procesamiento de reuniones utilizando fragmentos y rplicas simtricos con divisin
en rangos. Cmo se puede optimizar la evaluacin si la condicin de reunin es de la forma | r.A - s.B| k,

donde k es una constante pequea. Aqu, | x | denota el valor absoluto de x. Una reunin con una condicin de
reunin as, se denomina reunin de banda.
Respuesta: La relacin r est dividida en n divisiones, r0, r1, . . . , rn-1 y s est tambin dividida en n
divisiones, s0, s1, . . . , sn-1. Las divisiones estn replicadas y asignadas a los procesadores como se muestra en
la figura siguiente.

Cada fragmento est replicado slo en 3 procesadores, a diferencia del caso general, donde est
replicado sobre n procesadores. El nmero de procesadores requeridos ahora es aproximadamente 3n, en vez
de n2 del caso general. Por lo tanto, dado el mismo nmero de procesadores, se pueden dividir las relaciones
en ms fragmentos con esta optimizacin, es decir, haciendo ms rpida la reunin local.
20.8
Descrbase una buena manera de paralelizar lo siguiente.
a.
la operacin diferencia
b.
la agregacin utilizando la operacin count
c.
la agregacin utilizando la operacin count distinct
d.
la agregacin utilizando la operacin avg
e.
la reunin exterior por la izquierda, si la condicin de reunin slo implica igualdad
f.
la reunin exterior por la izquierda, si la condicin de reunin implica comparaciones distintas de la
igualdad
g.
la reunin exterior completa, si la condicin de reunin implica comparaciones distintas de la
igualdad
Respuesta:
a.
Se puede paralelizar la operacin diferencia dividiendo las relaciones en todos los atributos y
calculando las diferencias localmente, en cada procesador.
Como en la agregacin, el coste de transferir las tuplas durante la divisin se puede reducir calculando las
diferencias parcialmente en cada procesador, antes de la divisin.
b.
Supngase la referencia al atributo group-by como atributo A y al atributo sobre el que opera la
funcin agregacin, como atributo B. count se realiza como sum (mencionada en el libro) salvo que, en vez
de la suma, lo que se transfiere al procesador de destino correcto es un recuento del nmero de valores del
atributo B, por cada valor del atributo A. Despus de la divisin, los recuentos parciales desde todos los
procesadores se suman localmente en cada procesador, para obtener el resultado final.

c.
Por esto, los recuentos parciales no se pueden sumar localmente antes de la divisin. En cambio,
cada procesador transfiere todos los valores nicos de B, por cada valor de A, al procesador de destino
correcto. Despus de la divisin, cada procesador cuenta localmente el nmero de tuplas nicas por cada valor
de A y, a continuacin, obtiene el resultado final.
d.
De nuevo, esto se puede implementar como sum salvo que, por cada valor de A, un sum de los
valores de B, as como un count del nmero de tuplas del grupo, se transfiere durante la divisin.
Seguidamente cada procesador produce su resultado local, dividiendo la suma total por el nmero total de
tuplas, para cada valor de A asignado a su divisin.
e.
Esto se puede realizar como una reunin natural dividida. Despus de la divisin, cada procesador
calcula localmente la reunin externa por la izquierda, empleando cualquiera de la estrategias del Captulo 13.
f.
La reunin externa por la izquierda se puede calcular empleando una ampliacin de la tcnica
Fragmentos y Rplicas, para calcular no equirreuniones. Considrese r ]x| s. Las relaciones estn divididas y r
|x| s se calcula en cada sitio. Tambin se agrupan las tuplas de r que no se correspondieron con ninguna tupla
de s; Supngase que se denota como di al conjunto de estas tuplas colgantes en el sitio i. Despus de realizar
el paso anterior en cada sitio, por cada fragmento de r, se toma la interseccin de los dis desde cada
procesador en el que estaba replicado el fragmento de r. Las intersecciones dan el conjunto real de tuplas
colgantes; estas tuplas se rellenan con nulos y se aaden al resultado. Las intersecciones, seguidas por la suma
de las tuplas rellenadas al resultado, se pueden hacer en paralelo mediante divisiones.
g.
El algoritmo es bsicamente lo mismo que antes, salvo que cuando se combinan los resultados, el
procesamiento de las tuplas colgantes debe hacerse para ambas relaciones.
20.9
Recurdese que los histogramas se utilizan para generar particiones en rangos con carga equilibrada.
a.
Supngase que se tiene un histograma en el que los valores varan de 1 a 100 y estn divididos en 10
rangos, 1-10, 11-20, . . ., 91100, con frecuencias 15, 5, 20, 10, 10, 5, 5, 20, 5, y 5, respectivamente. Se da
una funcin de divisin en rangos con carga equilibrada para dividir los valores en cinco particiones.
b.
Propngase un algoritmo para procesar una divisin en rangos con carga equilibrada con p
particiones, dado un histograma de las distribuciones de frecuencias que contiene n rangos.
Respuesta:
a.
Un vector de divisin que proporciona 5 particiones con 20 tuplas en cada una es: [21, 31, 51, 76] .
Las 5 particiones obtenidas son 1-20, 21-30, 31-50, 51-75 y 76-100. La suposicin hecha respecto a este
vector de divisin es que, en un rango del histograma, cada valor es igualmente probable.
b.
Considrese llamar a los rangos del histograma como h1, h2, . . , hh, y a las particiones como p1, p2, .
.. , pp. Supngase que las frecuencias de los rangos del histograma son n1, n2, . . . , nh . Cada particin debera
contener N/p tuplas, donde N = S hi=1 ni.
Para construir el vector de divisin con carga equilibrada, se necesita determinar el valor de la tupla kth1, el
valor de la tupla kth2 y as sucesivamente, donde k1 = N/p, k2 = 2N/p etc, hasta kp-1 . El vector de divisin ser
entonces [k1, k2, . . . , kp-1] . El valor de la tupla kthi se determina como sigue. Primero se determina el rango hj
del histograma en el que falla. Suponiendo que todos los valores en un rango son igualmente probables, el
valor kthi ser
sj + (ej - sj) * (kij / nj)

donde
sj :
ej :
kij :

primer valor en hj
ltimo valor en hj
ki - S j-1l=1 nl

20.10

Descrbanse las ventajas e inconvenientes de utilizar paralelismo encauzado.

Respuesta:
Ventajas:
No es necesario grabar relaciones intermedias a disco, slo para leerlas de nuevo inmediatamente.
Inconvenientes:
a.
No puede aprovechar los altos grados de paralelismo, dado que las tpicas consultas no tienen gran
nmero de operaciones.
b.
No es posible encauzar los operadores que necesitan atender a todas las entradas antes de producir
cualquier salida.
c.
Dado que cada operacin se ejecuta en un mismo procesador, las ms costosas tardan mucho en
terminar. Entonces, a pesar del paralelismo, la ganancia de velocidad ser baja.
20.11 Algunos sistemas paralelos de bases de datos guardan otra copia de cada elemento de los datos en
discos conectados a un procesador diferente , para evitar la prdida de los datos si falla uno de los
procesadores.
a.
Por qu es conveniente dividir las copias de los elementos de los datos de un procesador entre
varios procesadores?
b.
Cules son las ventajas e inconvenientes de utilizar almacenamiento RAID, en lugar de guardar otra
copia de cada elemento de datos?
Respuesta:
a.
Las copias de los elementos de los datos de un procesador deberan estar divididas entre otros
procesadores, en vez de almacenarse en el mismo procesador, por las siguientes razones:
para distribuir mejor entre los procesadores restantes el trabajo que debera hacerse, si el procesador fallara.
incluso en ausencia de fallos, esta tcnica puede en cierto modo ocuparse de los puntos calientes creados por
transacciones de slo lectura.
b.
RAID nivel 0 almacena una copia extra de cada elemento de datos (creacin de imagen). As, esto
es similar a la creacin de imgenes realizada por la propia base de datos, excepto que el sistema de la base de
datos no se ha de molestar por los detalles de llevar a cabo la creacin de imgenes. Slo facilita la grabacin
al sistema RAID que, automticamente, realiza la creacin de imgenes. A continuacin se presentan loas
ventajas e inconvenientes de los otros niveles RAID, en comparacin con la creacin de imgenes.
Ventajas de los niveles RAID superiores:
i.
Menos caros que la creacin de imgenes, en trminos de requerimientos de espacio en disco.
ii.
Mejor velocidad de transferencia para grandes lecturas. De este modo, si predominan estos tipos de
consultas, RAID tiene un tiempo de respuesta ms rpido que la creacin de imgenes.
Inconvenientes de los niveles RAID superiores:
i.
Las escrituras son ms caras.
ii.
La reconstruccin de un disco destruido es ms cara.

CAPITULO

21

DESARROLLO DE APLICACIONES Y ADMINISTRACIN

Ejercicios
21.1
Cul es la razn principal por la que los servlets dan mejor rendimiento que los programas que
utilizan la interfaz de pasarela comn (common gateway interface, CGI), pese a que los programas Java suelen
ejecutarse ms lentamente que los programas C o C++?
Respuesta: El interface CGI inicia un proceso nuevo para atender a cada solicitud, lo que tiene una
sobrecarga significativa sobre el sistema operativo. Por otro lado, los servlets se ejecutan como hebras de un
proceso existente, evitando estas sobrecargas. Adems, el proceso que ejecuta la hebras podra ser el propio
proceso del servidor Web, evitando comunicaciones entre procesos que pueden ser costosas. As, para tareas
de tamao moderado, la sobrecarga de Java es menor que la sobrecargas ahorradas al evitar crear y comunicar
procesos.
Para tareas que implican mucha actividad de la CPU, este puede no ser el caso, y empleando CGI
con un programa C o C++, se puede mejorar el rendimiento.
21.2
Indquense algunas de las ventajas y de los inconvenientes de los protocolos sin conexin frente a los
protocolos que mantienen las conexiones.
Respuesta: La mayora de los ordenadores pueden aceptar un nmero limitado de conexiones simultneas.
Con los protocolos sin conexin las conexiones se interrumpen tan pronto como se atiende la peticin y, de
esta manera, otros clientes pueden abrir conexiones. De esta manera, se pueden atender ms clientes al mismo
tiempo. Una peticin se puede dirigir a cualquier servidor para equilibrar la carga y, si un servidor cae, otro
puede tomar el control sin que el cliente se percate del problema.
El inconveniente de los protocolos sin conexiones es que, cada vez que se enva una peticin, ha de
reestablecerse la conexin. Tambin se ha de enviar cada vez informacin sobre la sesin, en forma de
cookies o campos ocultos. Esto los hace ms lentos que los protocolos que mantienen la conexin, en caso de
que se requiera informacin de estado.
21.3
Indquense tres maneras en que se puede utilizar el almacenamiento en cach para acelerar el
rendimiento de los servidores Web.
Respuesta: El almacenamiento cach se puede emplear para mejorar el rendimiento, explotando las
similitudes entre las transacciones.
a.
Si el cdigo de la aplicacin para la atencin de cada solicitud necesita abrir una conexin a la base
de datos, que consume tiempo, se puede haber creado con antelacin un fondo de conexiones abiertas para
que cada peticin utilice una de ellas.
b.
Los resultados de una consulta generada por una peticin se pueden almacenar en cach. Si la
misma peticin llega de nuevo, o se genera la misma consulta, se puede emplear el resultado cach en vez de
establecer una nueva conexin a la base de datos.
c.
Se puede almacenar en cach la pgina Web final, generada en respuesta a la peticin. Si la misma
peticin llega de nuevo, se puede sacar la pgina almacenada en la memoria cach.

21.4
a.
Cules son los tres niveles principales en los que se puede ajustar un sistema de bases de
datos para mejorar su rendimiento?
b.
Aprtense dos ejemplos del modo en que se puede realizar el ajuste para cada uno de los
niveles.
Respuesta:
a.
Se hace referencia al ajuste del rendimiento de un sistema de base de datos, como es el caso de la
modificacin de algunos componentes del sistema para mejorar los tiempos de respuesta de las transacciones,
o la productividad de las transacciones en su conjunto. Los sistemas de bases de datos se pueden ajustar a
diferentes niveles para aumentar el rendimiento; a saber:
i.
Diseo del esquema y las transacciones
ii.
Gestin de la memoria intermedia y de las transacciones
iii
Estructuras de acceso y almacenamiento
iv
Hardware: discos, CPU, busses etc.
b.
Se describen algunos ejemplos, para ajustar el rendimiento, de algunos de los principales
componentes de un sistema de base de datos.
i.
Ajuste del esquema:
En este captulo se han visto dos ejemplos de ajustes de esquema; a saber; divisin vertical de una
relacin (recprocamente, reunin de dos relaciones) y desnormalizacin (recprocamente, normalizacin).
Estos ejemplos reflejan el escenario general y las ideas que contiene se pueden aplicar para ajustar otros
esquemas.
ii.

Ajuste de las transacciones:


Un enfoque empleado para acelerar la ejecucin de las consultas es mejorar su planificacin.
Supngase que se necesita la reunin naturas de dos relaciones, por ejemplo cuenta e impositor, desde el
ejemplo de la base de datos de un banco. Una reunin por mezcla-ordenacin (Apartado 13.5.4) sobre el
atributo nmero-cuenta puede ser ms rpida que una simple reunin en bucle anidado sobre las relaciones.
Otras maneras de ajustar transacciones son, descomponiendo las transacciones de actualizacin de
larga duracin y combinando conjuntos de consultas relacionadas en una sola consulta. Ejemplos genricos de
estos enfoques se dan en este captulo.
Para los sistemas cliente servidor, en donde la consulta ha de transmitirse desde el cliente al servidor,
el propio tiempo de transmisin de la consulta puede suponer una parte importante del coste total de la
consulta. Empleando procedimientos almacenados se puede reducir significativamente el tiempo de respuesta
de las consultas.
iii

Ajuste del gestor de la memoria intermedia:


El gestor de la memoria intermedia puede incrementar o disminuir el nmero de pginas de la
memoria intermedia, para modificar las tasas de fallo de pgina. Sin embargo, debe notarse que un gran
nmero de pginas puede significar altos costes en la gestin de pestillos y en el mantenimiento de otras
estructuras de datos, como las listas libres y las tablas de mapas de pginas.
iv

Ajuste del gestor de las transacciones:


La planificacin de las transacciones afecta al rendimiento del sistema. Una consulta que calcula
estadsticas para los clientes de cada sucursal del banco, necesitar explorar las relaciones cuenta e impositor.
Durante estas exploraciones no se permitir actualizar el saldo de ningn cliente. As, el tiempo de respuesta
para las transacciones de actualizacin es alto. Las consultas largas se ejecutan mejor cuando hay pocas
tuplas, como es el caso de la noche.
Los puntos de revisin tambin suponen un coste. Si el tiempo de recuperacin no es crtico, es
preferible examinar un registro histrico grande (durante la recuperacin), en vez de gastar mucho tiempo
(puntos de revisin) durante la operacin normal. Por lo tanto, puede merecer la pena ajustar los intervalos de
los puntos de revisin, de acuerdo con la tasa de cadas y los tiempos de recuperacin requeridos
v

Ajuste de las estructuras de acceso y almacenamiento:


El tiempo de respuesta de una consulta se puede mejorar creando un ndice apropiado sobre la
relacin. Por ejemplo, considrese una consulta en la que una impositora pregunta sobre su saldo en una

determinada cuenta. Esta consulta implicara la exploracin de la relacin cuenta, si no tiene ningn ndice
sobre nmero-cuenta. Consideraciones similares sobre la indexacin tambin aplican al clculo de reuniones,
es decir, un ndice sobre nmero-cuenta en la relacin cuenta, evita explorar cuenta cuando una se realiza con
impositor una reunin natural de cuenta.
En cambio, la indexacin puede perjudicar el rendimiento de las transacciones de actualizacin.
Supngase que es necesario actualizar el saldo frecuentemente.
Supngase tambin que hay un ndice sobre saldo (presumiblemente pata consultas por rangos) en
cuenta. Ahora, por cada actualizacin del valor del saldo, el ndice tambin habr de actualizarse. Adems, las
actualizaciones concurrentes sobre la estructura de ndices requerirn una sobrecarga adicional por bloqueos.
Ntese que ,si no hubiera ndice sobre saldo, el tiempo de respuesta de cada actualizacin no sera mayor. El
tipo de ndice elegido tambin afecta al rendimiento. En una consulta por rangos, un ndice conservando el
orden (como los rboles B) es mejor que un ndice asociativo.
Los agrupamientos de datos afecta al tiempo de respuesta de algunas consultas. Por ejemplo,
supngase que las tuplas de la relacin cuenta estn agrupadas por nombre-sucursal. Entonces, el tiempo
medio de ejecucin para una consulta que encuentra el saldo total depositado en una determinada sucursal,
puede mejorar. Tener un ndice agrupado sobre nombre-sucursal aporta ms ventajas.
Si el sistema de la base de datos tiene ms de un disco, los desagrupamientos de datos posibilitar
accesos paralelos. Supngase que se tienen cinco discos y una hipottica situacin donde cada cliente tiene
cinco cuentas y cada cuenta tiene gran cantidad de informacin histrica a la que se necesita acceder.
Almacenando una cuenta por cliente por disco, se dispondr de acceso paralelo en todas las cuentas
de un determinado cliente. As, la velocidad de una exploracin sobre impositor aumentar alrededor de cinco
veces
vi

Ajuste del hardware:


El hardware del sistema de la base de datos generalmente se compone de discos, procesador y la
arquitectura de interconexiones (busses, etc.). Cada uno de estos componentes puede ser un cuello de botella y
aumentando el nmero de discos o el tamao de sus bloques, o empleando un procesador ms rpido o
mejorando la arquitectura del bus, se puede obtener una mejora en el rendimiento del sistema.
21.5
Cul es el motivo para separar una transaccin de larga duracin en una serie de transacciones ms
breves? Qu problemas pueden surgir como consecuencia y cmo pueden evitarse?
Respuesta: Las transacciones de actualizacin de larga duracin hacen que se grabe mucha informacin
sobre el registro histrico y, por lo tanto, amplan el intervalo de puntos de revisin as como el tiempo de
recuperacin despus de una cada. Una transaccin que realiza numerosas actualizaciones puede, incluso,
originar el desbordamiento del registro histrico del sistema antes de que se comprometa la transaccin.
Para evitar estos problemas con las transacciones de actualizacin de larga duracin, puede ser
aconsejable descomponer la transaccin en otras ms pequeas. Esto se puede ver como una transaccin de
grupo, se divide en muchas transacciones pequeas de mini lotes. Se obtiene el mismo efecto ejecutando la
transaccin de grupo y las transacciones de mini lotes, las cuales estn planificadas en el orden en que
aparecen sus operaciones en la transaccin de grupo.
Sin embargo, ejecutar las transacciones de mini lotes en lugar de la transaccin de grupo tiene
algunos costes, como es el caso de un esfuerzo extra cuando falla el sistema de recuperacin.
Tambin, incluso si la transaccin de grupo cumple el requerimiento de aislamiento, el mini lote
puede que no lo haga. As, el gestor de transacciones puede liberar los bloqueos mantenidos por los mini
lotes, slo cuando la ltima transaccin del mini lote complete su ejecucin.
21.6
Supngase que un sistema ejecuta tres tipos de transacciones. Las transacciones de tipo A se ejecutan
a razn de cincuenta por segundo, las transacciones de tipo B se ejecutan a cien por segundo y las
transacciones de tipo C se ejecutan a doscientas por segundo. Supngase que la mezcla de transacciones tiene
un veinticinco por ciento del tipo A, otro veinticinco por ciento del tipo B y un cincuenta por ciento del tipo
C.
a.

Cul es el flujo promedio de transacciones del sistema, suponiendo que no hay interferencia entre

las transacciones?
b.
Qu factores pueden generar interferencias entre las transacciones de los diferentes tipos, haciendo
que el flujo calculado sea incorrecto?
Respuesta:
a.
Supngase que hay 100 transacciones en el sistema. La mezcla de transacciones podra ser de 25
transacciones de cada tipo A y B, junto con 50 transacciones del tipo C. De este modo, el tiempo empleado en
ejecutar slo las transacciones del tipo A es 0,5 segundos y el de las transacciones slo del tipo B o slo del
tipo C, es de 0,25 segundos. Dado que las transacciones no interfieren, el tiempo total empleado en ejecutar
las 100 transacciones es 0,5+0,25+0,25 = 1 segundo, es decir, la productividad media sobre todas las
transacciones en de 100 transacciones por segundo.
b.
Una de las ms importantes causas de interferencias en las transacciones es la contencin de
bloqueos. En el ejemplo anterior, supngase que las transacciones de los tipos A y B son transacciones de
actualizacin y que las del tipo C son consultas. Debido a la falta de correspondencia de la velocidad entre el
procesador y el disco, es posible que una transaccin del tipo A est manteniendo un bloqueo sobre un
elemento de datos caliente y est esperando a que se complete una escritura sobre el disco, mientras otra
transaccin (posiblemente del tipo B o C) est esperando que A libere el bloqueo. En este escenario se
malgastan algunos ciclos de CPU. Por lo tanto, la productividad observada sera menor que la calculada.
Por el contrario, si las transacciones de tipos Ay B estn en el lmite del disco y las del tipo C en el
lmite de la CPU y no hay contencin de bloqueos, la productividad observada puede ser incluso mejor que la
calculada.
La contencin de bloqueos puede conducir a interbloqueos, en cuyo caso se abortarn algunas
transacciones. Los abortos y reinicios de transacciones (que pueden emplearse por una tcnica optimista de
control de concurrencia) contribuyen a que la productividad observada sea menor que la calculada.
Factores tales como los lmites en los tamaos de las estructuras de los datos y la variacin en el
tiempo empleado por las funciones de contabilidad del gestor de transacciones, pueden causar tambin una
diferencia entre los valores de la productividad observada y calculada.
21.7
Supngase que el precio de la memoria cae a la mitad y la velocidad de acceso al disco (nmero de
accesos por segundo) se dobla, mientras el resto de los factores permanecen iguales. Cul sera el efecto de
este cambio en las reglas de los cinco minutos y del minuto?
Respuesta: Estos cambios no tendrn ningn efecto sobre las reglas de los cinco minutos y del minuto. El
valor de n, es decir, la frecuencia de los accesos a pgina en el punto de ni ganar ni perder es proporcional,
manteniendo constantes otros factores, al producto del precio de la memoria por la velocidad del acceso a
disco. As, cuando el precio de la memoria baja a la mitad y se dobla la velocidad de acceso, n permanece
constante.
21.8
Indquense algunas de las caractersticas de las pruebas TPC que ayudan a hacer las medidas realistas
y dignas de confianza.
Respuesta: Algunas de las caractersticas que hacen a las pruebas TPC realistas y fiables son:
a.
Asegurar el pleno soporte de las propiedades ACID de las transacciones.
b.
Calcular la productividad observando el rendimiento de extremo a extremo.
c.
Haciendo proporcionales los tamaos de las relaciones a las tasas esperadas de llegada de
transacciones y
d.
Midiendo en euros el coste por unidad de produccin.

21.9

Por qu se sustituy al ndice TPC-D por los pruebas TPC-H y TPC-R?

Respuesta: Varias consultas TPC-D pueden acelerarse significativamente empleando vistas materializadas y
otra informacin redundante, pero deberan tenerse en cuenta la sobrecarga de emplearlas. Por lo tanto, TPC-R
y TPC-H se introdujeron como modificaciones al TPC-D; los dos emplean el mismo esquema y la misma carga
de trabajo. TPC-R modela consultas de informes peridicos y se permite que la base de datos que ejecuta el
ndice utilice vistas materializadas. Por otro lado, TPC-H modela consultas ad hoc y prohbe las vistas
materializadas y otra informacin redundante.
21.10 Indquense algunas ventajas e inconvenientes de las normas anticipativas frente a las normas
reaccionarias.
Respuesta: En ausencia de una norma anticipativa, puede resultar difcil compatibilizar los diferentes
productos desarrollados por varias organizaciones. As, puede ser duro formular una norma reaccionaria, sin
sacrificar alguno de los proyectos de desarrollo de productos. Este problema ha sido afrontado por la norma
ODMG, al normalizar la sintaxis de punteros y los mecanismos de acceso.
Por otro lado, una norma reaccionaria es usual que se forme despus de utilizar el producto
intensamente y, por lo tanto, tiene una ventaja sobre una norma anticipativa, que se construye a partir de
experiencias pragmticas. En la prctica, se ha encontrado que algunas normas anticipativas tienden a ser
demasiado ambiciosas. SQL-3 es un ejemplo de una norma que es compleja y tiene un gran nmero de
caractersticas. Algunas de estas caractersticas se pueden implementar en ningn sistema durante mucho
tiempo y otras, sin duda, se encontrarn inadecuadas.
21.11 Supngase que alguien suplanta a una empresa y obtiene un certificado de una autoridad emisora de
certificados. Cul es el efecto sobre las cosas (como las rdenes de compra o los programas) certificadas por
la empresa suplantada y sobre las certificadas por otras empresas?
Respuesta: El problema clave con los certificados digitales (cuando se usan fuera de lnea, sin contactar con
el emisor del certificado) es que no hay manera de eliminarlos.
Por ejemplo (esto ha sucedido realmente, pero se han cambiado los nombres de las partes) una
persona C dice ser un empleado de la compaa X y obtiene un nuevo certificado de clave pblica de la
autoridad de certificacin A. Supngase que la autoridad A pens equivocadamente que C estaba actuando en
nombre de la compaa X, entrega a C un certificado cert. Ahora, C puede comunicar con la persona Y, quien
verifica el certificado cert presentado por C y cree que la clave pblica contenida en cert pertenece realmente
a X. Ahora C se comunicara con Y empleando la clave pblica, e Y cree que la comunicacin es de la
compaa X.
La persona Y ahora puede revelar informacin confidencial a C, o aceptar ordenes de compra de C, o
ejecutar programas certificados por C basados en la clave pblica, pensando que l se esta comunicando
realmente con la empresa X. En cada caso hay un dao potencial hacia Y.
Incluso si A detecta la suplantacin, mientras que Y no compruebe con A (el protocolo no exige esta
comprobacin), no hay manera de que Y averige que el certificado est falsificado.
Si X era la propia autoridad de certificacin, se pueden crear an ms niveles de certificados falsos.
Pero los certificados que no son parte de esta cadena no estaran afectados.

CAPITULO

21

CONSULTAS AVANZADAS Y RECUPERACIN DE LA


INFORMACIN
Este captulo trata las tcnicas de consultas avanzadas para bases datos y la recuperacin de la informacin.
Las tcnicas de consultas avanzadas incluyen sistemas de apoyo a las decisiones, procesamiento en conexin
analtica, incluyendo el soporte de SQL:1999 para OLAP y la extraccin inteligente de datos.
Aunque la recuperacin de la informacin ha sido considerada por los investigadores como un
campo independiente de las bases de datos, hay fuertes conexiones. Est aumentando la importancia de la
recuperacin de la informacin distribuida, con la explosin de documentos en la Web y la importancia
resultante de las tcnicas de bsquedas en la Web.
Considerando la creciente importancia de todos los tpicos que se tratan en este captulo, algunos de
los apartados del mismo se pueden asignar como material de lectura suplementario, incluso en un curso de
introduccin. Estos podran incluir OLAP, algunas partes de la extraccin inteligente de datos y de la
recuperacin de la informacin. La materia del captulo es tambin adecuada para sentar las bases de un curso
avanzado o para mantener a los profesionales en contacto con los desarrollos recientes.
Cambios a la tercera edicin:
Se ha ampliado el tratamiento de OLAP con la cobertura de jerarquas y se han introducido nuevas materias
sobre soporte a OLAP en SQL:1999, incluyendo agregacin extendida, clasificacin y ventanas.
El apartado sobre extraccin inteligente de datos se ha ampliado significativamente con nuevas materias
sobre los diferentes tipos de extraccin, incluyendo clasificacin, asociacin y agrupamiento, as como
diferentes mtodos para la clasificacin y la regresin. Tambin se ha introducido el tratamiento de
algoritmos para la construccin de rboles de decisin y para encontrar reglas de asociacin.
Se ha ampliado la cobertura de los almacenes de datos con el tratamiento de esquemas de estrellas.
Se ha ampliado la cobertura de la recuperacin de la informacin con un mejor tratamiento de la
recuperacin de la informacin bsica y el tratamiento de la recuperacin de la informacin en la Web,
aprovechando la informacin de hiperenlaces.

Ejercicios
22.1
Por cada una de las funciones de agregacin SQL sum, count, min y max, mustrese como calcular
el valor agregado para el conjunto mltiple S1 U S2, dados los valores agregados en los conjuntos mltiples S1
y S2.
Basado en lo anterior, dense expresiones para calcular valores agregados con agrupamiento en un
subconjunto S, de los atributos de una relacin r(A, B, C, D, E), dados los valores agregados para
agrupamiento de los atributos T S, para las funciones de agregacin siguientes:
a.
sum, count, min y max
b.
avg
c.
desviacin estndar
Respuesta: Dados valores agregados en los conjuntos mltiples S1 y S2, se pueden calcular los
correspondientes valores agregados sobre el conjunto mltiple S1 S2 como sigue:
a.
sum(S1 S2) = sum(S1) + sum(S2)
b.
count(S1 S2) = count(S1) + count(S2)
c.
min(S1 S2) = min(min(S1), min(S2))
d.
max(S1 S2) = max(max(S1), max(S2))
Supngase los conjuntos de atributos T = (A, B, C, D) y S = (A, B). Supngase que la agregacin
sobre el conjunto T se almacena en la tabla t-on-agregacin con columnas de agregacin t-suma, t-contador,
min, y t-max almacenando respectivamente sum, count, min y max.
a.
Las agregaciones t-suma, t-contador, min, y t-max sobre el conjunto de atributos S se calculan por
la consulta:
(select A, B, sum(t-suma) as s-suma, sum(t-contador) as s-contador,
min(t-min) as s-min, max(t-max) as s-max
from t-on-agregacin
groupby A, B
)
b.

La agregacin avg sobre el conjunto de atributos S se calcula por la consulta:


(select A, B, sum(t-suma)/sum(t-contador) as s-avg
from t-on-agregacin
groupby A, B
)

c.

Para calcular la desviacin estndar se emplea la frmula alternativa:

lo cual se obtiene expandiendo la frmula

Si S est dividido en n conjuntos S1, S2, . . . Sn se mantiene la siguiente relacin:

Empleando esta frmula, la agregacin stddev se calcula por la consulta:


select A, B,
[sum(t-contador * (t-stddev2+ t-avg2))/sum(t-contador)] [sum(t-suma)/sum(t-contador)]
from t-on-agregacin
groupby A, B
22.2
Mustrese la manera de expresar group by cube(a, b, c, d) usando rollup; la respuesta debe tener
slo una clusula group by .
Respuesta:
groupby rollup(a), rollup(b), rollup(c), rollup(d)
22.3
Se da un ejemplo de un par de agrupamientos que no puedan expresarse empleando slo una clusula
group by con cube y rollup.
Respuesta: Considrese un ejemplo de jerarquas de las dimensiones de la Figura 22.4.
No se puede expresar una consulta para buscar agregaciones en grupos (Ciudad, Hora del da) y (Ciudad,
Fecha) empleando slo una clusula group by con cube y rollup.
Cualquier clusula sencilla groupby con cube y rollup que calcule estos dos grupos, tambin
calculara otros grupos.
22.4
Dada una relacin E(estudiante, asignatura, notas), escrbase una consulta para encontrar los n
estudiantes con mejores notas, empleando la clasificacin.
Respuesta: Se supone que varios estudiantes no tienen las mismas notas dado que, de lo contrario, la
pregunta no es unvoca; la consulta siguiente devuelve unvocamente todos los estudiantes con las mismas
notas como los n estudiantes, de manera que puede devolver ms de n estudiantes.
select estudiante, sum(notas) as total,
rank() over (order by (total) desc) as trank
from S
groupby estudiante
having trank n
22.5
Dada la relacin r(a, b, c, d), mustrsese la manera de usar las caractersticas ampliadas del SQL
para generar un histograma de d frente a a, dividiendo a en 20 partes iguales (es decir, cada parte contiene un
5% de las tuplas en r, ordenadas por a).
Respuesta:
select tile20, sum(d)
from (select d, ntile(20) over (order by (a)) as tile20
from r) as s
groupby tile20

22.6
Escrbase una consulta para hallar saldos acumulativos, equivalente a la mostrada en el Apartado
22.2.5, pero sin utilizar las estructuras ampliadas para la creacin de ventanas de SQL.
Respuesta:
select t1.nmero-cuenta, t1.fecha-hora, suma(t2.valor)
from transaction as t1, transaction as t2
where t1.nmero-cuenta = t2.nmero-cuenta and
t2.fecha-hora < t1.fecha-hora
groupby t1.nmero-cuenta, t1.fecha-hora
order by t1.nmero-cuenta, t1.fecha-hora
22.7
Considrese el atributo saldo de la relacin cuenta. Escrbase una consulta en SQL para calcular un
histograma de los valores de saldo, dividiendo el rango desde cero hasta el mximo saldo de una cuenta
presente, en tres rangos iguales.
Respuesta:
(select 1, count(*)
from cuenta
where 3* saldo <= (select max(saldo)
from cuenta)
)
union
(select 2, count(*)
from cuenta
where 3* saldo > (select max(saldo)
from cuenta)
and 1,5 * saldo <= (select max(saldo)
from cuenta)
)
union
(select 3, count(*)
from cuenta
where 1,5 * saldo > (select max(saldo)
from cuenta)
)
22.8
Considrese la relacin ventas del Apartado 22.2. Escrbase una consulta en SQL para calcular la
operacin cubo para la relacin, dada la relacin de la Figura 22.2. No se debe utilizar la constructora with
cube.
Respuesta:
(select color, tamao, sum(nmero)
from ventas
groupby color, tamao
)
union
(select color, all, sum(nmero)
from ventas
groupby color
)
union
(select all, tamao, sum(nmero)
from ventas

groupby tamao
)
union
(select all, all, sum(nmero)
from ventas
)
22.9
Constryase un clasificador de rboles de decisin con divisiones binarias en cada nodo, utilizando
las tuplas de la relacin r(A, B, C) que se muestra ms abajo como datos de formacin; el atributo C denota la
clase. Mustrese el rbol final y, con cada nodo, la mejor divisin para cada atributo junto con su valor de
ganancia de la informacin.
(1, 2, a), (2, 1, a), (2, 5, b), (3, 3, b), (3, 6, b), (4, 5, b), (5, 5, c), (6, 3, b), (6, 7, c)
Respuesta:
22.10 Supngase que hay dos reglas de clasificacin, una que dice que la gente con sueldos entre 10.000
y 20.000 tienen una calificacin de crdito de buena y otra que dice que la gente con sueldos entre 20.000
y 30.000 tienen una calificacin de crdito de buena. Hay que indicar las condiciones para las que se pueden
sustituir las reglas, sin prdida de informacin, por una sola regla que diga que las personas con sueldos entre
10.000 y 30.000 tienen una calificacin de crdito de buena.
Respuesta: Considrese el siguiente par de reglas y sus niveles de confianza:
Nmero
1.
2.

Regla
Confianza
60%
" personas P, 10.000 < P.sueldo 20.000
P.crdito = bueno
90%
" personas P, 20.000 < P.sueldo 30.000
P.crdito = bueno

La nueva regla ha de estar asignada a un nivel de confianza que se encuentre entre los niveles de
confianza de las reglas 1 y 2. Al reemplazar las reglas originales por la nueva regla se originar una prdida
del nivel de confianza en la clasificacin de las personas, dado que no se puede distinguir entre los niveles de
confianza de las personas que ganan entre 10.000 y 20.000, de aquellas que ganan entre 20.000 y 30.000. Por
lo tanto, se pueden combinar ambas reglas sin prdida de informacin, slo si sus niveles de confianza son los
mismos.
22.11 Supngase que la mitad de las transacciones en una tienda de ropa adquieren vaqueros y que una
tercera parte adquieren camisetas. Supngase adems que la mitad de las transacciones que adquieren
vaqueros tambin adquieren camisetas. Escrbanse todas las reglas de asociacin (no triviales) que se puedan
deducir de la informacin anterior, indicando el soporte y la confianza de cada regla.
Respuesta: Las reglas son como sigue. La ltima regla se puede deducir de las anteriores.
Regla
" transacciones T, true compra(T, vaqueros)
" transacciones T, true compra(T, camisetas)
" transacciones T, compra(T, vaqueros) compra(T, camisetas)
" transacciones T, compra(T, camisetas) compra(T, vaqueros)
22.12

Apoyo
50%
33%
25%
25%

Considrese el problema de hallar conjuntos de artculos de gran tamao.

Confianza
50%
33%
50%
75%

a.
Descrbase la manera de encontrar el soporte para una coleccin dada de conjuntos de elementos,
utilizando slo una exploracin de los datos. Supngase que los conjuntos de artculos y la informacin
asociada, como los recuentos, caben en la memoria.
b.
Supngase un conjunto de artculos que tiene un soporte menor que j. Prubese que ningn
superconjunto de este conjunto de artculos puede tener soporte mayor o igual que j.
Respuesta:
a.
Sea {S1, S2, . . . , Sn} la coleccin de conjuntos de artculos para los que se quiere encontrar el
soporte. Asciese un contador contadorSi) con cada conjunto de artculos Si.
Inicialcese el contador a cero. Examnense ahora las transacciones, una por una. Sea S(T ) el
conjunto de artculos de una transaccin T . Por cada conjunto de artculos Si que es un subconjunto de S(T ),
incremntese el contador correspondiente, contador(Si).
Cuando se hayan rastreado todas las transacciones, los valores de contador(Si) darn, para cada i, el
soporte para el conjunto de artculos Si.
b.
Sea A un conjunto de artculos. Considrese cualquier conjunto de artculos B, que sea un
superconjunto de A. Sean tA y tB los conjuntos de transacciones que adquieren todos los artculos en A y B,
respectivamente. Por ejemplo, supngase que A es {a, b, c} y B es {a, b, c, d}.
Una transaccin que adquiera todos los artculos de B debe haber adquirido todos los artculos de A
(dado que A B). De este modo, cada transaccin en tA est tambin en tB. Esto implica que el nmero de
transacciones en tB es, a lo sumo, el nmero de transacciones en tA. En otras palabras, el soporte para B es,
como mximo, el soporte para A.
Entonces, si cualquier conjunto de artculos tiene un soporte menor que j, todos los sper conjuntos
de este conjunto de artculos tienen soporte menor que j.
22.13 Descrbanse las ventajas e inconvenientes de una arquitectura dirigida por el origen para la
recoleccin de datos en los almacenes de datos, en comparacin con una arquitectura dirigida por el destino.
Respuesta: En una arquitectura dirigida por el destino para la recoleccin de datos, las transferencias de datos
desde la fuente al almacn de datos se basan en la demanda del almacn, mientras que en una arquitectura
dirigida por el origen, las transferencias se inician por cada fuente de datos.
Las ventajas de una arquitectura dirigida por el origen son:
Los datos se pueden propagar al destino tan pronto como estn disponibles.
En una arquitectura dirigida por el destino, para capturar los datos en cuanto estn disponibles, el almacn
tendra que comprobar frecuentemente las fuentes, originando una alta sobrecarga.
La fuente no ha de mantener informacin histrica. Tan pronto como se actualizan los datos, la fuente puede
enviar un mensaje de actualizacin al destino y olvidarse el histrico de las actualizaciones. Por el contrario,
en una arquitectura dirigida por el destino, cada fuente ha de mantener un histrico de los datos que an no
han sido recogidos por el almacn de datos. As, los requerimientos de almacenamiento de las fuentes son
menores para una arquitectura dirigida por la fuente.
Por otro lado, una arquitectura dirigida por el destino tiene las siguientes ventajas.
En una arquitectura dirigida por el origen, la fuente ha de estar activa y debe gestionar condiciones de error,
tales como el no ser capaz de contactar con el almacn durante un tiempo. Es ms fcil implementar fuentes
pasivas y un solo almacn activo. En una arquitectura dirigida por el destino, cada fuentes es requerida para
que aporte slo una funcionalidad bsica de ejecucin de consultas.
El almacn tiene ms control cuando, para llevar a cabo actividades de recoleccin de datos y procesar
consultas de usuarios, no es una buena idea desarrollar simultneamente ambos, dado que pueden entrar en
conflictos de bloqueos.

22.14 Considrese el esquema dibujado en la Figura 22.9. Se da una consulta de SQL:1999 para resumir las
cifras de ventas y los precios por tienda y por fecha, junto con las jerarquas para tienda y fecha.
Respuesta:
select id-almacn, ciudad, provincia, pas,
fecha, mes, trimestre, ao,
sum(nmero), sum(precio)
from ventas, almacn, fecha
where ventas.id-almacn = almacn.id-almacn and
ventas.fecha = fecha.fecha
groupby rollup(pas, provincia, ciudad, id-almacb),
rollup(ao, trimestre, mes, fecha)
22.15 Calclese la importancia (mediante las definiciones adecuadas de la frecuencia de los trminos y de
la frecuencia inversa de los documentos) de cada una de las preguntas de este captulo para la consulta
relacin SQL.
Respuesta:
No se consideran las preguntas que no contienen ninguna de la palabras clave, dado que su
importancia para la palabra clave es cero. El nmero de palabras en una pregunta incluye las palabras de
parada. Se emplean las ecuaciones dadas en el Apartado 22.5.1.1 para calcular la importancia; el registro
histrico de trminos en la ecuacin se asume que est para la base 2.
Q.#

1
4
5
6
7
8
9
14
15

#
palabras
84
22
46
22
33
32
77
30
26

#
SQL
1
0
1
1
1
1
0
1
1

#
relatcin

1
1
1
0
1
3
1
0
1

SQL
relacin SQL
trm freq. trm freq. relv.

relacin Total
relv.
relv.

0,0170
0,0000
0,0310
0,0641
0,0430
0,0443
0,0000
0,0473
0,0544

0,0002
0,0029
0,0006
0,0000
0,0013
0,0040
0,0002
0,0000
0,0020

0,0170
0,0641
0,0310
0,0000
0,0430
0,1292
0,0186
0,0000
0,0544

0,0002
0,0000
0,0006
0,0029
0,0013
0,0013
0,0000
0,0015
0,0020

0,0004
0,0029
0,0013
0,0029
0,0026
0,0054
0,0002
0,0015
0,0041

22.16 Explquese la diferencia entre un falso positivo y un rechazo falso. Si es fundamental que las
consultas de recuperacin de la informacin no pierdan ninguna informacin importante, explicar si es
aceptable tener falsos positivos o rechazos falsos. Por qu?
Respuesta:
Los sistemas de recuperacin de la informacin localizan documentos que contienen una
determinada palabra clave, utilizando un ndice que asocia esta palabra clave sobre un conjunto de
identificadores de documentos contenidos en l. Cada palabra clave puede estar contenida en un gran nmero
de documentos. Para ahorrar espacio de almacenamiento para los identificadores de los documentos
correspondientes a una palabra clave, el ndice, a veces, se almacena de tal manera que la recuperacin es
aproximada. El error en esta aproximacin puede conducir a una de las dos situaciones: un rechazo falso
sucede cuando algunos documentos importantes no se recuperan; un falso positivo tiene lugar cuando se
recuperan algunos documentos sin importancia. De este modo, para las consultas de recuperacin de la
informacin que tienen la obligacin de no perder informacin relevante, es aceptable tener falsos positivos,
pero no rechazos falsos.
22.17

Supngase que se desea hallar documentos que contengan como mnimo k palabras clave de un

conjunto dado de n. Supngase tambin que se dispone de un ndice de palabras clave que da una lista
(ordenada) de identificadores de documentos que contienen una palabra clave dada. Se da un algoritmo
eficiente para hallar el conjunto de documentos deseado.
Respuesta:
Sea S un conjunto de n palabras clave. Un algoritmo para encontrar todos los documentos
que contienen al menos k de estas palabras clave, se presenta a continuacin:
Este algoritmo calcula un contador de referencia por cada identificador de documentos. Un contador
de referencia de i para un identificador de documentos d significa que, al menos, i de las palabras claves en S
estn presentes en el documento identificadas por d. El algoritmo mantiene una lista de registros, cada uno
con dos campos: un identificador de documentos y el contador de referencia para este identificador. Esta lista
se mantiene ordenada sobre el campo identificador de documentos.
inicializar la lista L a la lista vaca;
for (cada palabra clave c en S) do
begin
D := la lista de identificadores de documentos correspondientes a c;
for (cada identificador de documentos d en D) do
if (un registro R con identificador de documentos como d est en la lista
L) then
R.contador_referencia := R.contador_referencia + 1;
else begin
grabar un nuevo registro R;
R.id_documento := d;
R.contador_referencia := 1;
sumar R a L;
end;
end;
for (cada registro R en L) do
if (R.contador_referencia >= k) then
producir R;
Ntese que la ejecucin de la segunda instruccin for hace que la lista D se fusione con la lista L . Dado que
las listas L y D estn ordenadas, el tiempo empleado en esta fusin es proporcional a la suma de las longitudes
de las dos listas. As, el algoritmo se ejecuta en tiempo (como mximo) proporcional a n veces la suma total
de los nmeros de identificadores de documentos correspondientes a cada palabra clave en S.

CAPITULO

23

TIPOS DE DATOS AVANZADOS Y NUEVAS APLICACIONES


Este captulo cubre los tipos de datos automticos y las nuevas aplicaciones, incluyendo bases de datos
temporales, bases de datos espaciales, geogrficas y bases de datos porttiles y personales. En concreto, en los
ltimos aos ha aumentado la importancia de los tipos de datos mencionados anteriormente y los sistemas de
bases de datos comerciales estn incrementando la provisin de complementos para tales tipos de datos, por
medio de ampliaciones a los sistemas de bases de datos, denominadas de diferentes maneras cartuchos o
extenders.
Este captulo es adecuado como una herramienta para sentar las bases de un curso avanzado.
Algunas de las materias, como los tipos de datos espaciales y temporales, pueden ser adecuados para el
trabajo individual de un primer curso.
Cambios a la tercera edicin:
En la edicin anterior esta materia formaba parte del captulo 21, pero en esta edicin ese captulo se dividido
en dos, los captulos 22 y 23.
El tratamiento de los rboles R se ha ampliado con una descripcin informal sobre los algoritmos de
insercin y borrado. Se han actualizado las comunicaciones mviles de datos.

Ejercicios
23.1
Indquense los dos tipos de tiempo y en lo que se diferencian. Indquese el motivo de que haya dos
tipos de tiempo asociados con cada tupla.
Respuesta: Una base de datos temporal modela los cambios en los estados de algunos aspectos del mundo
real. Los intervalos de tiempo que relacionan los datos almacenados en una base de datos temporal pueden ser
de dos tipos: momento vlido y momento de transaccin. El momento vlido de un hecho es el conjunto de
intervalos de tiempo en el que el hecho es cierto en el mundo real. El momento de transaccin de un hecho es
el conjunto de intervalos de tiempo en el que el hecho es actual en el sistema de la base de datos. Slo el
momento de transaccin depende del sistema y se genera por el sistema de la base de datos.
Supngase que se considera el ejemplo de la base de datos del banco para que sea bitemporal. Slo el
concepto de momento vlido permite al sistema responder a consultas tales como: Cul era el saldo de
Santos hace dos das? Por otro lado se pueden responder, basndose en el momento de transaccin, a
consultas como: Qu se grab hace dos das como saldo de Santos? La diferencia entre los dos momentos es
importante. Por ejemplo, supngase que hace tres das el cajero cometi un error al introducir el saldo de
Santos y que hasta ayer no se corrigi el error. Este error significa que hay una diferencia entre los resultados
de las dos consultas ( si ambas se ejecutasen hoy).
23.2
Indquese si se conservarn las dependencias funcionales si se convierte una relacin en una relacin
temporal aadindole un atributo temporal. Indquese el modo en que se resuelve el problema en las bases de
datos temporales.
Respuesta: Las dependencias funcionales pueden violarse cuando se amplia una relacin para que incluya un
atributo temporal. Por ejemplo, supngase que se aade un atributo temporal a la relacin cuenta, en el
ejemplo de la base de datos bancaria. La dependencia nmero-cuenta g saldo puede ser violada, dado que el
saldo de un cliente cambiara con el tiempo.
Para solucionar este problema los sistemas de bases de datos temporales tienen un nocin
ligeramente diferente de dependencia funcional, denominada dependencia funcional temporal. Por ejemplo, la
dependencia funcional temporal nmero-cuenta gT saldo sobre el esquema-cuenta significa que, por cada
instancia cuenta de esquema-cuenta, todas las instantneas de cuenta cumplen la dependencia funcional
nmero-cuenta g saldo; es decir que en cualquier momento, cada cuenta tendr un solo saldo bancario
correspondiente a l.
23.3
Supngase que se tiene una relacin que contiene las coordenadas x, y junto con los nombres de
varios restaurantes. Supngase tambin que las nicas consultas que se plantearn sern de la forma siguiente:
La consulta especifica un punto y pregunta si hay algn restaurante exactamente en ese punto. Indquese el
tipo de ndice que sera preferible, rbol R o rbol B. Indquese el motivo.
Respuesta: La consulta dada no es una consulta por rangos, dado que slo requiere buscar por un punto. Esta
consulta se puede responder de forma eficiente mediante un ndice rbol B sobre el par de atributos (x, y).
23.4
Considrense datos vectoriales bidimensionales en que los elementos de datos no se solapan.
Indquese si es posible convertir esos datos vectoriales en datos lineales. En caso de que sea posible,
indquense los inconvenientes de almacenar los datos lineales obtenidos de esa conversin en lugar de los
datos vectoriales originales.
Respuesta: Para convertir datos vectoriales que no se solapan en datos lineales, se definen los valores para
justamente esos pxeles que se encuentran sobre cualquiera de los elementos de datos (regiones); los otros
pxel tienen un valor por defecto.
Los inconvenientes de este enfoque son: prdida de precisin en la informacin de la localizacin (
dado que los datos lineales pierden resolucin), un requerimiento de almacenamiento mucho mayor y la

prdida de informacin de resumen (como la forma de una regin).


23.5
Supngase que se dispone de una base de datos espacial que soporta consultas regionales (con
regiones circulares) pero no consultas de vecino ms prximo. Descrbase un algoritmo para encontrar el
vecino ms prximo haciendo uso de varias consultas regionales.
Respuesta: Supngase que se desea buscar el vecino ms prximo de un punto P, en una base de datos de
puntos en el plano. La idea es emitir mltiples consultas regionales centradas en P. Cada consulta regional
cubre una rea de puntos mayor que la consulta anterior. El procedimiento se detiene cuando el resultado de
una consulta regional no est vaco. Se calcula la distancia desde P a cada punto dentro de esta regin y se
publica el conjunto de puntos ms cercanos.
23.6
Supngase que se desean almacenar segmentos rectilneos en un rbol R. Si un segmento rectilneo
no es paralelo a los ejes, su caja lmite puede ser grande y contener una gran rea vaca.
Descrbase el efecto en el rendimiento de tener cajas lmite de gran tamao en las consultas que piden los
segmentos rectilneos que interceptan una regin dada.
Descrbase brevemente una tcnica para mejorar el rendimiento de esas consultas y aprtese un ejemplo de
sus ventajas. Sugerencia: se pueden dividir los segmentos en partes ms pequeas.
Respuesta:

Figura 21.17 a) : Representacin de un segmento mediante un rectngulo

Figura 21.17 b) : Divisin de cada segmento en cuatro partes.


La cajas lmite de gran tamao tienden a solapar incluso donde la regin de solape no contiene
ninguna informacin. La Figura 21.17 a) muestra una regin R dentro de la cual se ha de localizar un
segmento. Ntese que, aunque ninguno de los cuatro segmentos se encuentra en R, debido a las cajas lmite
grandes, se han de verificar cada una de las cuatro cajas lmite para confirmar esto. Se observa una mejora
significativa en la Figura 21.17 b), donde cada segmento est dividido en mltiples partes, cada una con su
propia caja lmite. En el segundo caso, la caja R no forma parte de las cajas indexadas por el rbol R. En

general, el dividir un segmento en partes ms pequeas origina que las cajas lmite lo sean tambin,
malgastndose menos el rea.
23.7
Se da un procedimiento recursivo para calcular de manera eficiente la mezcla espacial de dos
relaciones con ndices de rbol R. (Sugerencia: Utilcense cajas lmite para verificar si las entradas de hojas
bajo un par de nodos internos pueden interseccionar.)
Respuesta: Lo que sigue es un procedimiento recursivo para calcular reuniones espaciales de dos rboles R.
SpJoin(nodo n1, nodo n2)
begin
if(las cajas lmite de n1 y n2 no interseccionan)
return;
if(tanto n1 como n2 son hojas)
output todos los pares de entradas (e1, e2) tales que
e1n1 e2n2 y e1 e2solapan
if(n1 no es una hoja)
NS1 = conjunto de hijos de n1;
else
NS1 = { n1 };
if(n2 no es una hoja)
NS2 = conjunto de hijos de n2;
else
NS2 = { n2 };
for each ns1 en NS1 y ns2 en NS2;
SpJoin(ns1, ns2);
end
23.8
Estdiese el soporte de los datos espaciales ofrecido por el sistema de bases de datos que se est
utilizando e implemntese lo siguiente:
a.
Un esquema para representar la ubicacin geogrfica de los restaurantes y caractersticas como la
cocina que se sirve en cada restaurante y su nivel de precios.
b.
Una consulta para hallar los restaurantes econmicos que sirven comida india y que se hallan a
menos de nueve kilmetros de casa del lector (supngase cualquier ubicacin para la casa del lector).
c.
Una consulta para hallar, para cada restaurante, su distancia al restaurante ms cercano que sirve la
misma cocina y con el mismo nivel de precios.
Respuesta: PENDIENTE DE RESOLVER
23.9
Indquense los problemas que se producen en un sistema de medios continuos si los datos se
entregan demasiado lentamente o demasiado rpidamente.
Respuesta: Los sistemas de medios continuos generalmente manejan un gran nmero de datos, que se han de
llevar a una velocidad constante. Supngase que el sistema aporta los fotogramas de las imgenes para una
televisin. La velocidad de entrega de los datos desde el sistema, debera corresponderse con la velocidad de
visualizacin de los fotogramas de la televisin. Si la velocidad de entrega fuese demasiado lenta, la pantalla
peridicamente se paralizara o se quedara en blanco dado que, durante un tiempo, no habra nuevos datos
que visualizar. Por el contrario, si la velocidad de entrega fuese demasiado rpida, la memoria intermedia de
datos con destino al televisor se desbordara, causando una prdida de datos; los datos perdidos no se
visualizaran nunca.
23.10

Descrbase el modo en que las ideas subyacentes a la organizacin RAID (Apartado 11.3) pueden

utilizarse en un entorno de datos de difusin, donde puede que haya ocasionalmente ruido que impida la
recepcin de parte de los datos que se estn transmitiendo.
Respuesta: Los conceptos de RAID se pueden emplear para mejorar la fiabilidad de la difusin de datos a
travs de sistemas inalmbricos. Cada bloque de datos que se va a transmitir se divide en unidades de igual
tamao. Se calcula un valor de suma de chequeo para cada unidad y se aade a la unidad. Ahora se calculan
los datos de paridad para estas unidades. Una suma de chequeo para el dato de paridad se aade al dato, para
formar una unidad de paridad. Tanto las unidades de datos como las de paridad se difunden, una tras otra,
como una sola transmisin.
En la recepcin de la difusin, el receptor emplea las sumas de chequeo para verificar si cada unidad
se recibe sin errores. Si se encuentra una unidad con errores, se puede reconstruir desde las otras unidades.
El tamao de la unidad se debe elegir cuidadosamente. Las unidades pequeas no slo requieren
calcular ms sumas de chequeo, sino que la posibilidad de que una explosin de ruido corrompa ms de una
unidad, es tambin alta. El problema de emplear unidades grandes es que aumenta la probabilidad de que el
ruido afecte a una unidad; por lo tanto, ha de haber un equilibrio.
23.11 Indquense tres caractersticas principales de la informtica mvil en redes inalmbricas que son
diferentes de las de los sistemas distribuidos tradicionales.
Respuesta: Algunas de las principales caractersticas que los diferencian son las siguientes.
En los sistemas distribuidos, el que un anfitrin se desconecte de la red se considera un fallo, mientras que
se permite como una caracterstica de los sistemas porttiles.
Los sistemas distribuidos se administran generalmente de forma centralizada mientras que, en las
computadoras porttiles, cada ordenador personal que forma parte del sistema se administra por el usuario
(propietario) de la mquina y hay, si acaso, una pequea administracin central.
En los sistemas distribuidos convencionales, cada mquina tiene una localizacin determinada y una
direccin de red. Esto no es cierto para las computadoras porttiles y, de hecho, es lo opuesto al propsito de
la informtica mvil.
Las consultas hechas sobre un sistema de computacin mvil pueden implicar la localizacin y velocidad de
un ordenador anfitrin.
En un sistema distribuido, se permite a cada ordenador un tamao arbitrario y puede consumir gran cantidad
de energa elctrica (casi) ininterrumpidamente. Los sistemas mviles generalmente tienen pequeos
ordenadores que funcionan a baja potencia, con pequeas bateras.
23.12 Indquense tres factores que haya que considerar en la optimizacin de las consultas para la
informtica mvil que no se consideren en los optimizadores de consultas tradicionales.
Respuesta: El factor de influencia ms importante sobre el coste del procesamiento de consultas, en un
sistema tradicional de bases de datos, es la E/S a disco. Sin embargo, en la informtica mvil, el minimizar la
cantidad de energa requerida para ejecutar una consulta es una tarea importante en un optimizador de
consultas. Para reducir el consumo de energa (la carga de las bateras) el optimizador de consultas en un
ordenador mvil minimiza el tamao y el nmero de las consultas a transmitir a computadoras remotas, as
como el tiempo que est girando el disco.
En los sistemas de bases de datos tradicionales, el modelo de costes generalmente no incluye el
tiempo de conexin y la cantidad de datos transferidos. Sin embargo, los usuarios de computadoras porttiles
generalmente cargan con el coste de acuerdo a estos parmetros. Por ello, se deberan minimizar estos
parmetros mediante un optimizador de consultas de la computadora porttil.

23.13 Defnase un modelo en que se difundan repetidamente los datos, donde el medio de transmisin se
modele como un disco virtual
Descrbase el modo en que el tiempo de acceso y la velocidad de transferencia de datos del disco virtual se
diferencian de los valores correspondientes a un disco duro normal.
Respuesta: Se pueden distinguir dos modelos de difusin de datos. En el caso de un medio de difusin puro,
donde el receptor no puede comunicar con el difusor, este transmite datos con ciclos de transmisin
peridicos del conjunto de datos, de tal manera que los nuevos receptores puedan ponerse al corriente de toda
la informacin difundida. Por ello, los datos se difunden en un ciclo continuo. Este perodo del ciclo se puede
considerar semejante al peor caso de latencia rotacional en una unidad de disco. Aqu no hay concepto del
tiempo de bsqueda. El valor para la latencia del ciclo depende de la aplicacin, pero es posible que sea al
menos del orden de segundos, lo cual es muy superior que la latencia en una unidad de disco.
En un modelo alternativo, el receptor puede devolver peticiones al difusor. En este modelo tambin
se puede aadir un equivalente de latencia de acceso a disco, entre el receptor enviando una peticin y el
difusor recibiendo la peticin y respondindola. La latencia es una funcin del volumen de peticiones y del
ancho de banda del medio de difusin. A su vez, las consultas pueden cumplirse sin ni siquiera enviar una
peticin, dado que el difusor da la casualidad que enva los datos en un ciclo, o basados en alguna otra
peticin de los receptores. A pesar de todo, la latencia es probable que sea al menos del orden de segundos, de
nuevo muy superior que los correspondientes valores para un disco duro.
Un tpico disco duro puede transferir datos a la velocidad de 1 a 5 mega bytes por segundo. Por el
contrario, el ancho de banda de una canal de difusin es generalmente de slo unos pocos kilo bytes por
segundo. La latencia total es probablemente del orden de segundos a cientos o incluso miles de segundos, en
comparacin con los pocos mili segundos de un disco duro.
23.14 Considrese una base de datos de documentos en la que todos los documentos se conserven en una
base de datos central. En las computadoras porttiles se guardan copias de algunos documentos. Supngase
que la computadora porttil A actualiza una copia del documento 1 mientras est desconectada y que, al
mismo tiempo, la computadora porttil B actualiza una copia del documento 2 mientras est desconectada.
Mustrese el modo en que el esquema del vector versin puede asegurar la actualizacin adecuada de la base
de datos central y de las computadoras porttiles cuando se vuelva a conectar una computadora porttil.
Respuesta: Sea C la computadora sobre la que se carga la base de datos central. Cada computadora porttil
(anfitrin) i almacena, con su copia de cada documento d, una versin - vector que es un conjunto de
nmeros de versin Vd,i,j con una entrada por cada otro anfitrin j, que almacena una copia del documento d
que posiblemente pudo actualizar.
El anfitrin A actualiza el documento 1 mientras est desconectado de C. Por ello, de acuerdo al
esquema del vector versin, el nmero de versin V1,A,A se incrementa en uno.
Supngase ahora que el anfitrin A se reconecta a C. Esta pareja intercambia el vector versin y
encuentra que el nmero de versin V1,A,A es, en uno, mayor que V1,C,A (asumiendo que la copia del documento
1 almacenada en el anfitrin A, fue actualizada muy recientemente slo por el anfitrin A). Siguiendo el
esquema del vector versin, la versin del documento 1 en C se actualiza y se refleja el cambio mediante un
incremento en el nmero de versin V1,C,A. Ntese que estos son los nicos cambios hechos por el anfitrin.
Anlogamente, cuando el anfitrin B se conecta al anfitrin C, se intercambian los vectores versin y
el anfitrin B encuentra que V1,B,A es, en uno, menor que V1,C,A . De este modo, el nmero de versin V1,B,A se
incrementa en uno y la copia del documento 1 se actualiza en el anfitrin B.
As se ve que el esquema del vector versin asegura la adecuada actualizacin de la base de datos
central, justamente para el caso considerado. Este argumento se puede generalizar fcilmente para el caso en
que se realicen, fuera de lnea, mltiples actualizaciones a copias del documento 1 sobre el anfitrin A, as
como sobre el anfitrin B y el C. Es similar el argumento para las actualizaciones fuera de lnea del
documento 2.
23.15 Se da un ejemplo para mostrar que el esquema del vector versin no asegura la secuenciabilidad.
(Sugerencia: Utilcese el ejemplo del Ejercicio 23.14 con la suposicin de que los documentos 1 y 2 estn
disponibles en las dos computadoras porttiles A y B, y tngase en cuenta la posibilidad de que un documento

pueda leerse aunque no se actualice).


Respuesta: Considrese el ejemplo dado en el ejercicio anterior. Supngase que los anfitriones A y B no
estn conectados entre s. A su vez, supngase que copias idnticas de los documentos 1 y 2 estn
almacenadas en los anfitriones A y B.
Sea {X = 5} el contenido inicial del documento 1 y {X = 10} el del documento 2. Si prdida de
generalidad, supngase que se inicializan a cero todos los vectores versin.
Supngase que el anfitrin A actualiza el nmero de su copia del documento 1 con el de su copia del
documento 2. Entonces, el contenido de ambos documentos (en el anfitrin A) son ahora {X = 10} . El nmero
de versin V1,A, A se ha incrementado en 1.
Mientras el anfitrin B est desconectado del anfitrin A, actualiza el nmero en su copia del
documento 2 con el de su copia en el documento 1. As, los contenidos de ambos documentos (en el anfitrin
B) son ahora {X = 5} . El nmero de versin V2,A, A se ha incrementado en 1.
Posteriormente, cuando se conecten entre s los anfitriones A y B, intercambiarn vectores versin.
El esquema del vector versin actualiza la copia del documento 1en el anfitrin B a {X = 10} y la copia del
documento 2 en el anfitrin A a {X = 5} . As, las dos copias de cada documento son idnticas, a saber, el
documento 1 contiene {X = 10} y el documento 2 {X = 5}.
Sin embargo, ntese que una planificacin secuencial de ambas actualizaciones (una sobre el
anfitrin A y otra sobre el B), implicara que ambos documentos tendran el mismo contenido.
Por lo tanto, este ejemplo muestra que el esquema del vector versin no asegura la secuencialidad.

CAPITULO

24

PROCESAMIENTO AVANZADO DE TRANSACCIONES


En este captulo se va mas all de los esquemas de procesamiento bsico de transacciones discutidos
previamente, tratando conceptos de procesamiento de transacciones ms avanzados, incluyendo monitores de
procesamiento de transacciones, sistemas de flujos de trabajo, bases de datos en memoria principal, sistemas
de transacciones en tiempo real y gestin de transacciones de larga duracin por medio de transacciones
anidadas, transacciones multinivel y niveles dbiles de consistencia. El captulo finaliza tratando los niveles
dbiles de consistencia empleados para gestionar los sistemas de bases de datos mltiples.
Este captulo es adecuado para un curso avanzado. La secciones sobre monitores TP y flujos de
trabajo pueden tratarse tambin en un curso de introduccin, como material de trabajo individual.
Cambios a la tercera edicin:
El tratamiento de los sistemas de copia de seguridad remotos se ha trasladado desde al captulo sobre
recuperacin, mientras que el procesamiento de transacciones, en bases de datos mltiples, se ha trasladado a
este captulo desde la posicin anterior, en el captulo de bases de datos distribuidas.

Ejercicios
24.1
Explquese el modo en que los monitores TP administran los recursos de la memoria y del
procesador, de manera ms efectiva que los sistemas operativos habituales.
Respuesta: En un sistema operativo tpico, cada cliente se representa por un proceso que ocupa mucha
memoria. As mismo, las sobrecargas de los procesos multitarea son elevadas.
Un monitor TP tiene ms de proveedor de servicios que de entorno para la ejecucin de procesos
cliente. Los procesos cliente se ejecutan en sus propios sitios y envan solicitudes al monitor TP, siempre que
desean aprovecharse de algn servicio. El mensaje se encamina al servidor adecuado por medio del monitor
TP, devolviendo al cliente los resultados del servicio.
La ventaja de este esquema es que el mismo proceso servidor puede servir simultneamente a varios
clientes, empleando mltiples hebras. Esto ahorra espacio de memoria y reduce los costes de CPU en la
conservacin de las propiedades ACID y en la planificacin de procesos enteros. Incluso sin mltiples hebras,
el monitor TP puede cambiar dinmicamente el nmero de servidores en ejecucin, en funcin de cualquier
factor que afecte al buen rendimiento. Todo esto no es posible con una configuracin de sistema operativo
tpico.
24.2
Comprense las caractersticas de los monitores TP con las proporcionadas por los servidores Web
que soportan servlets (estos servidores se han denominado TP-lite).
Respuesta: PENDIENTE.
24.3
Considrese el proceso de admisin de nuevos alumnos en la universidad (o de nuevos empleados en
la organizacin).
a.
Se da una imagen de alto nivel del flujo de trabajo, comenzando por el procedimiento de matrcula
de los estudiantes.
b.
Indquense los estados de terminacin aceptables y los pasos que implican intervencin de personas.
c.
Indquense los posibles errores (incluido el vencimiento del tiempo lmite) y el modo en que se
tratan.
d.
Estdiese la cantidad de flujo de trabajo que se ha automatizado en la universidad.
Respuesta: PENDIENTE.
24.4
Al igual que los sistemas de bases de datos, los sistemas de flujo de trabajo tambin necesitan la
gestin de la concurrencia y de la recuperacin. Indquense tres motivos por los que no se puede aplicar
simplemente un sistema relacional de bases de datos empleando bloqueo de dos fases, registro histrico de
operaciones fsicas de deshacer y el bloqueo de dos fases.
Respuesta:
a.
Las tareas en un flujo de trabajo tienen dependencias basadas en su estado Por ejemplo, el inicio de
una tarea puede estar condicionado al resultado (tales como comprometido o abortado) de algunas otras
tareas. Todas las tareas no se pueden ejecutar independiente y concurrentemente, empleando compromiso de
dos fases slo para compromisos atmicos.
b.
Cuando termine una tarea, habr de exponer sus actualizaciones para que otras tareas, ejecutando las
mismas entidades de procesamiento, no tengan que esperar mucho. El bloqueo de dos fases es una forma
demasiado estricta de control de concurrencia y no es apropiada para los flujos de trabajo.
c.
Los flujos de trabajo tiene sus propios requerimientos de consistencia, es decir atomicidad ante
fallos. Una ejecucin de flujo de trabajo debe finalizar en un estado de terminacin aceptable. Por esto y por
la exposicin temprana de actualizaciones no comprometidas, el procedimiento de recuperacin ser bastante

diferente. Habrn de emplearse algunas formas de registro histrico lgico y transacciones de compensacin.
Adems, para realizar una recuperacin en avance de un flujo de trabajo fallido, las rutinas de recuperacin
necesitan restaurar la informacin sobre el estado del planificador y las tareas, no slo los elementos de datos
actualizados. Por esto no se puede usar un simple registro histrico de escritura anticipada.
24.5
Si toda la base de datos cabe en la memoria principal, indquese si contina haciendo falta un sistema
de bases de datos para administrar los datos. Explquese la respuesta.
Respuesta: Incluso si toda la base de datos cabe en memoria principal, se necesita un sistema de gestin de
bases de datos para realizar tareas como control de concurrencia, recuperacin, registro histrico, etc., a la
hora de conservar las propiedades ACID de las transacciones.
24.6
Considrese un sistema de bases de datos en memoria principal que se recupera de un fallo del
sistema.
Explquense las ventajas relativas de
Volver a cargar toda la base de datos en memoria principal, antes de reanudar el procesamiento de las
transacciones
Cargar los datos a medida que los soliciten las transacciones
Respuesta:
Cargar toda la base de datos en memoria, por adelantado, puede facilitar transacciones que necesiten alta
velocidad o accesos a datos en tiempo real con la garanta de que, una vez que se inicien, no tendrn que
esperar por accesos a disco para coger los datos.
Sin embargo, ninguna transaccin puede ejecutarse hasta que toda la base de datos est cargada.
La ventaja de cargar bajo demanda es que el procesamiento de las transacciones puede iniciarse
inmediatamente; sin embargo, las transacciones pueden ver largos e impredecibles retrasos en los accesos a
disco, hasta que toda la base de datos se cargue en memoria.
24.7
En la tcnica de compromiso en grupo, cuntas transacciones deben formar parte de cada grupo?
Explquese la respuesta.
Respuesta: Como los registros del registro histrico se escriben para almacenamiento estable en mltiplos de
un bloque, se deberan comprometer los grupos de transacciones de tal manera que el ltimo bloque,
conteniendo los registros del registro histrico del grupo actual, est casi lleno.
24.8
Indquese si un sistema de transacciones de alto rendimiento es necesariamente un sistema de tiempo
real. Por qu s, o por qu no?
Respuesta: Un sistema de alto rendimiento no es necesariamente un sistema de tiempo real. En un sistema de
alto rendimiento la principal finalidad es ejecutar cada transaccin tan rpido como sea posible, teniendo ms
recursos y utilizndolos mejor. De este modo la velocidad media y el tiempo de respuesta son las principales
cosas a optimizar. En un sistema en tiempo real, la velocidad no es el tema central. Aqu, cada transaccin
tiene una fecha lmite y tener cuidado de que finalice dentro de la fecha lmite o emplee un tiempo extra, tan
pequeo como sea posible, es el tema crtico.
24.9
En un sistema de bases de datos que utilice el registro histrico de escritura adelantada indquese, en
el peor caso posible, el nmero de accesos a disco necesarios para leer un elemento de datos. Explquese el
motivo por el que esto supone un problema para los diseadores de sistemas de bases de datos de tiempo real.
Respuesta: En el peor de los casos, una lectura puede causar que una pgina del bfer se escriba en disco

(precedida por los correspondientes registros del histrico), seguido por la lectura desde disco de la pgina
que contiene los datos a acceder. Esto emplea dos o ms accesos a disco y el tiempo requerido es varios
ordenes de magnitud mayor que la referencia de memoria principal, requerida en el mejor de los casos. Por lo
tanto, la variancia del tiempo de ejecucin de una transaccin es muy alta y slo se puede estimar
pobremente. Por eso es difcil planificar los calendarios que necesitan finalizar en una fecha lmite.
24.10 Explquese el motivo por el que puede que no resulte prctico exigir la secuencialidad para las
transacciones de larga duracin.
Respuesta: En presencia de transacciones de larga duracin, el tratar de asegurar secuencialidad tiene varios
inconvenientes:
a.
Con un esquema de espera para el control de concurrencias, las transacciones de larga duracin
forzarn largos tiempos de espera. Esto significa que el tiempo de respuesta ser alto, la concurrencia ser
baja, con lo que sufrir el rendimiento. Tambin se incrementa la probabilidad de impases.
b.
Con un esquema basado en marcas temporales, mucho trabajo hecho por una transaccin de larga
duracin se perder si se ha de abortar.
c.
Las transacciones de larga duracin son generalmente interactivas y es muy difcil imponer
secuencialidad con interactividad.
As, el requerimiento de secuencialidad no es prctico. Alguna otra nocin de consistencia de base de datos ha
de emplearse para soportar transacciones de larga duracin.
24.11 Considrese un proceso con varias hebras que entrega mensajes desde una cola duradera de mensajes
persistentes. Pueden ejecutarse de manera concurrente diferentes hebras, que intentan entregar mensajes
diferentes. En caso de fallo en la entrega, el mensaje debe restaurarse en la cola. Modlense las acciones que
lleva a cabo cada hebra como una transaccin multinivel, de manera que no haga falta mantener los bloqueos
en la cola hasta que se entregue cada mensaje.
Respuesta: Cada hebra puede modelarse como una transaccin T que toma un mensaje desde la cola y lo
dirige. Se pueden escribir transacciones T como una transaccin multinivel, con subtransacciones T1 y T2. La
subtransaccin T1 saca un mensaje de la cola y la subtransaccin T2 lo dirige. Cada subtransaccin libera
bloqueos una vez que se completa, permitiendo a otras transacciones acceder a la cola. Si falla la transaccin
T2 en la conduccin del mensaje, la transaccin T1 se deshar mediante la invocacin de una transaccin
compensadora, que restaurar el mensaje en la cola.
24.12 Disctanse las modificaciones que hay que hacer en cada uno de los esquemas de recuperacin
tratados en el Captulo 17, si se permiten las transacciones anidadas. Explquense tambin las diferencias que
se producen si se permiten las transacciones multinivel.
Respuesta:
El algoritmo de recuperacin avanzada del Apartado17.9 :
La operacin rehacer, que repite la historia, es igual que antes. A continuacin se discute la manera
en que se gestiona la operacin rehacer.
Recuperacin con transacciones anidadas:
Cada subtransaccin necesita tener un nico TID, porque una subtransaccin fallida podra tener que ser
independientemente retrocedida y reinicializada. Si una subtransaccin falla, las acciones de recuperacin
dependen de si la transaccin de nivel superior no terminada debe abortar o continuar. Si debe abortar, todas
las subtransacciones, terminadas o no, se deshacen mediante una lectura hacia atrs del registro histrico (esto
es posible porque los bloqueos, sobre los elementos de datos modificados, no se liberan tan pronto como
finaliza una subtransaccin). Si la transaccin anidada va a continuar, solo se deshace la transaccin fallida y

despus continua la transaccin de nivel superior.


En el caso de un fallo del sistema, dependiendo de la aplicacin, puede ser necesario abortar la transaccin
anidada entera o (por ejemplo en el caso de transacciones de larga duracin) las subtransacciones incompletas
y reanudar la transaccin anidada. Si se debe abortar la transaccin anidada, la vuelta atrs puede hacerse de
la manera usual mediante el algoritmo de recuperacin, durante la operacin deshacer. Si la transaccin
anidada debe reiniciarse, cualquier subtransaccin incompleta que necesite ser retornada puede hacerlo como
antes. Para reiniciar la transaccin anidada, la informacin sobre el estado de la transaccin, tal como los
bloques mantenidos y el estado de la ejecucin, debe haberse anotado en el histrico y se debe restaurar
durante la recuperacin. Las transacciones por lotes pequeos (discutidas en el Apartado 21.2.7) son un
ejemplo de transacciones anidadas que se deben reiniciar.
Recuperacin con transacciones multinivel:
Adems de lo hecho en el caso anterior, se han de gestionar los problemas causados por la exposicin de
actualizaciones realizadas por subtransacciones comprometidas, de transacciones de nivel superior
incompletas. Una subtransaccin comprometida puede tener bloqueos liberados que almacena, para que la
transaccin compensadora los adquiera. Esto es claro en el caso de fallos de transacciones, pero es ms
complicado en el caso de fallos del sistema.
El problema es que una subtransaccin de nivel inferior a, de una transaccin de nivel superior A, puede tener
bloqueos liberados que han de ser readquiridos para compensar a A durante la recuperacin.
Desafortunadamente, puede haber alguna otra subtransaccin de nivel inferior b, de una transaccin de nivel
superior B, que arranque y adquiera los bloqueos liberados por a, antes de que finalice A. De este modo, los
registros deshacer para b pueden preceder la operacin del registro comprometido por A. Pero si b no hubiera
terminado en el momento en que falla el sistema, primero debe ser retrocedida y liberada de sus bloqueos,
para permitir a la transaccin compensadora de A readquirir los bloqueos.
Esto complica la operacin deshacer, ya no puede hacerse en una lectura hacia atrs del registro histrico. La
recuperacin multinivel se describe con detalle en David Lomet, MLR: Un mtodo de recuperacin para
sistemas multinivel, ACM SIGMOD Conf. on the Management of Data 1992, San Diego.
Recuperacin en un esquema de paginacin en la sombra :
En un esquema basado en la paginacin en la sombra, la implementacin se complicar mucho si las
subtransacciones se van a ejecutar de manera concurrente. Si se van a ejecutar secuencialmente, la tabla de
pginas actual se copia a la tabla de pginas en la sombra, al final de cada subtransaccin. La idea general de
recuperacin es, entonces, similar al esquema basado en registros histricos, excepto en que las operaciones
deshacer y rehacer se hacen mucho ms fcilmente, como en el Apartado 17.5.
24.13 Indquese la finalidad de las transacciones compensadoras. Presntense dos ejemplos de su
utilizacin.
Respuesta: Una transaccin compensadora se emplea para realizar un deshacer semntico de los cambios
hechos previamente por transacciones comprometidas. Por ejemplo, una persona podra ingresar un cheque en
su cuenta de ahorro. Entonces la base de datos se actualizara para reflejar el nuevo saldo. Dado que lleva
unos pocos das dar el visto bueno al cheque, podra descubrirse ms tarde que el cheque se rechaz, en cuyo
caso se ejecutara una transaccin de compensadora para restar el importe del cheque rechazado desde la
cuenta del impositor. Otro ejemplo de cuando se empleara una transaccin compensadora es en un programa
de evaluacin. Si la calificacin de un estudiante en una tarea se va a cambiar despus de haberse registrado,
un programa compensador (generalmente una opcin del propio programa de evaluacin) se ejecuta para
cambiar la calificacin y rehacer los promedios, etc.

24.14
Considrese un sistema con varias bases de datos en el que se garantice que, como mximo, est
activa una transaccin global en un momento dado y que cada sistema local asegura la secuencialidad local.
a.
Sugiranse maneras de que el sistema con varias bases de datos pueda asegurar que haya como
mximo una transaccin global activa, en cualquier momento dado.
b.
Demustrese, mediante un ejemplo, que resulta posible que se produzca una planificacin global no
secuenciable, pese a estas suposiciones.
Respuesta:
a.
Se puede tener un elemento de datos especial en algn sitio sobre el que, antes de iniciar una
transaccin global, se tenga un bloqueo. El bloqueo debera liberarse despus que se complete la transaccin.
Esto asegura el requerimiento de una sola transaccin global activa. Para reducir la dependencia sobre el sitio
particular en que tiene lugar, se puede generalizar la solucin seleccionando el esquema para elegir uno de los
sitios actuales que sea el coordinador, y requerir que el bloqueo se solicite sobre el elemento de datos que
reside en el coordinador elegido actualmente.
b.
La siguiente planificacin implica dos sitios y cuatro transacciones. T1 y T2 son transacciones locales
ejecutndose en los sitios 1 y 2 respectivamente. TG1 y TG2 son transacciones globales ejecutndose en ambos
sitios. X1, Y1 son elementos de datos en el sitio 1, y X2, Y2 estn en el sitio 2.
T1
write(Y1)

T2

TG1

TG2

read(Y1)
write(X2)
read(X2)
write(Y2)
read(Y2)
write(X1)
read(X1)
En esta planificacin , TG2 se inicia slo despus de que TG1 termine. Dentro de cada sitio hay secuencialidad
local. En el sitio 1, TG2 T1 TG1 es un orden secuencial.
En el sitio 2, TG1 T2 TG2 es un orden secuencial. Todava la planificacin global no es secuenciable.
24.15 Considrese un sistema con varias bases de datos en el que cada sitio local asegura la secuencialidad
local y todas las transacciones globales son slo de lectura.
a.
Demustrese mediante un ejemplo que pueden producirse ejecuciones no secuenciables en este
sistema.
b.
Mustrese la manera en que se podra utilizar un esquema de billete para asegurar la secuencialidad
global.
Respuesta:
a.
Se supone el mismo sistema que el de la respuesta del Ejercicio 24.14, excepto en que ahora las dos
transacciones globales son de slo lectura. Considrese la planificacin siguiente.
T1

T2

TG1

TG2
read(X1)

write(X1)
read(X1)
read(X2)
write(X2)
read(X2)

Aunque hay secuencialidad local en ambos sitios, la planificacin global no es secuenciable.


b.
Dado que la secuencialidad est garantizada, cualquier ciclo en el amplio sistema del grafo
precedente debe implicar,al menos, dos sitios y dos transacciones globales diferentes. El esquema de billete
asegura que siempre que dos transacciones globales tengan acceso a los datos de un sitio, entran en conflicto
con los datos (el billete) de cada sitio. El gestor de transacciones globales controla el acceso del billete, de tal
manera que las transacciones globales se ejecutan con el mismo orden secuencial en todos los sitios. As se
elimina la probabilidad de su participacin en un ciclo del amplio sistema del grafo precedente

También podría gustarte