You are on page 1of 22

UNIVERSIDAD TECNOLOGICA NACIONAL - FRRE

Bases de Datos Aplicadas


Carpeta de Trabajos Prcticos
2012

Profesor: Ing. Carlos Alejandro Perez


J.T.P.: Ing Andres Pablo Fantin

3er Ao I.S.I.
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N1: Creacin de una base de datos


a) Seleccione un motor de base de datos de los propuestos por la ctedra. Discuta con el grupo
las razones por las cuales lo eligieron y escrbala.
b) Realice el proceso de instalacin del motor seleccionado. Puede utilizar una versin bajada de
la web o bien pedir al profesor una copia de los instaladores. Copie y pegue cada una de las
pantallas de instalacin y explique con sus palabras cada una ellas. Asimismo comente
cualquier cambio que haya realizado a las opciones cunado no haya elegido la opcin por
defecto. Si el instalador lo permitiera instale tambin las bases de datos de ejemplo que
suelen acompaar al instalador.
c) Defina el concepto de instancia de Base de Datos y de Base de datos, detallando claramente
las diferencias de acuerdo al motor de base de datos elegido.
d) Cree una base de datos para utilizarla en los restantes trabajos prcticos, como nico requisito
debe llamarse BDA, escoja el resto de los parmetros usando su criterio, documente cada
paso con una copia de pantalla del asistente de creacin o el comando utilizado.
e) Ingrese a la consola de administracin y describa las opciones que observa. Investigue con la
ayuda en lnea cada uno de los objetos que se muestran en la consola de administracin, por
ejemplo: Que es una tabla?, qu es un ndice? qu es una vista? qu es un disparador
(trigger)? Etc.
f) Enumere y de una breve descripcin sobre qu tipos de datos soporta el gestor que usted ha
elegido para la realizacin de su trabajo prctico (entero, alfanumricos, xml, LOB, image,
binary, etc.).

Pgina 1
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N2: Pasando DER a Modelo Relacional


Usando la base de datos creada en el trabajo prctico anterior realice las siguientes tareas:

1) Utilizando el siguiente Diagrama de Entidad Relacin (DER) disee y cree las tablas
correspondientes en la base de datos creada en el trabajo prctico anterior. Deber
representar las restricciones de integridad y dominio que sean necesarias. Escriba las
instrucciones utilizados para la creacin de las tablas as como un comentario de las decisiones
tomadas y las restricciones que no pudo reflejar. Tambin documente el diagrama fsico
obtenido. Para este trabajo puede utilizar una herramienta CASE (Ej. ER-Studio o similar).

a) Inserte datos en las tablas para que todas las tablas tengas al menos una fila. Al menos dos
tablas deben tener ms de 10 filas. Para ello puede utilizar cualquiera de los siguientes
mtodos:
i) Comando INSERT INTO
ii) Comando INSERT.. SELECT
iii) Asistente de insercin masiva de datos.
b) Utilizando un archivo txt provisto por la ctedra importe masivamente filas a las tablas
indicadas por el profesor.
c) Realice las siguientes operaciones sobre una tabla y documente la operacin con los
comandos utilizados.
i) Borre los primeros 10 registros de la tabla con ms filas de su base de datos.
ii) Puede recuperar las filas borradas? Explique cmo?

Pgina 2
Diseo de Bases de Datos Aplicadas
Ao 2011

iii) Actualice 5 filas usando el comando UPDATE de la misma tabla.


2) Utilizando el siguiente Diagrama de Entidad Relacin (DER) disee y cree las tablas
correspondientes en la base de datos creada en el trabajo prctico anterior. Deber
representar las restricciones de integridad y dominio que sean necesarias. Escriba las
instrucciones utilizados para la creacin de las tablas as como un comentario de las decisiones
tomadas y las restricciones que no pudo reflejar. Tambin documente el diagrama fsico
obtenido. Para este trabajo puede utilizar una herramienta CASE (Ej. ER-Studio o similar).
Inserte datos en las tablas de manera que ninguna quede vaca.

3) Hacer el modelo E-R correspondiente a la organizacin informtica de una empresa con la


siguiente informacin, y pasarlo a tablas:

La empresa tiene varios DATACENTERs (DC), en los que hay distintos equipos. Para cada DC se
almacena su direccin, cdigo y responsable. Cada DC est compuesto por uno o ms equipos.
Cada equipo tendr un cdigo, y almacenaremos su marca, modelo, RAM y capacidad de disco. El
personal informtico trabaja en un slo DC, almacenando su DNI y datos personales. Cada
empleado podr trabajar en varios equipos del DC. Los usuarios de los equipos tendrn cuentas en
uno o varios equipos. En cada equipo, slo podrn tener una cuenta, con un nombre, una clave y
un privilegio distinto. Se almacenar su DNI y datos personales. Tambin se guarda informacin
sobre las cuentas antiguas (nombre, clave y periodo de uso).

Pgina 3
Diseo de Bases de Datos Aplicadas
Ao 2011

4) Pasar el modelo entidad-relacin resultante al modelo relacional. Disear las tablas en el


motor seleccionado, realizar las relaciones oportunas entre tablas e insertar al menos cinco
registros en cada una de las tablas.

La liga de ftbol profesional, presidida por Don ngel Mara Villar, ha decidido informatizar sus
instalaciones creando una base de datos para guardar la informacin de los partidos que se juegan
en la liga. Se desea guardar en primer lugar los datos de los jugadores. De cada jugador se quiere
guardar el nombre, fecha de nacimiento y posicin en la que juega (portero, defensa,
centrocampista). Cada jugador tiene un cdigo de jugador que lo identifica de manera nica. De
cada uno de los equipos de la liga es necesario registrar el nombre del equipo, nombre del estadio
en el que juega, el aforo que tiene, el ao de fundacin del equipo y la ciudad de la que es el
equipo. Cada equipo tambin tiene un cdigo que lo identifica de manera nica. Un jugador solo
puede pertenecer a un nico equipo. De cada partido que los equipos de la liga juegan hay que
registrar la fecha en la que se juega el partido, los goles que ha metido el equipo de casa y los
goles que ha metido el equipo de fuera. Cada partido tendr un cdigo numrico para identificar
el partido. Tambin se quiere llevar un recuento de los goles que hay en cada partido. Se quiere
almacenar el minuto en el que se realizar el gol y la descripcin del gol. Un partido tiene varios
goles y un jugador puede meter varios goles en un partido. Por ltimo se quiere almacenar, en la
base de datos, los datos de los presidentes de los equipos de ftbol (dni, nombre, apellidos, fecha
de nacimiento, equipo del que es presidente y ao en el que fue elegido presidente). Un equipo de
ftbol tan slo puede tener un presidente, y una persona slo puede ser presidente de un equipo
de la liga.

5) Realizar el modelo E-R y pasarlo al modelo de datos relacional. Disear las tablas e imprimirlas,
realizar las oportunas relaciones entre tablas e introducir al menos 50 registros en cada una de
las tablas usando importacin de datos (obtenga los mismos de internet o bien cree sus
propias archivos con Excel o archivo de texto plano). Imprima las tablas con los datos
cargados.

Una agencia de viajes desea informatizar toda la gestin de los viajeros que acuden a la agencia y
los viajes que estos realizan. Tras ponernos en contacto con la agencia, sta nos proporciona la
siguiente informacin. La agencia desea guardar la siguiente informacin de los viajeros: dni,
nombre, direccin y telfono. De cada uno de los viajes que maneja la agencia interesa guardar el
cdigo de viaje, nmero de plazas, fecha en la que se realiza el viaje y otros datos. Un viajero
puede realizar tantos viajes como desee con la agencia. Un viaje determinado slo puede ser
cubierto por un viajero. Cada viaje realizado tiene un destino y un lugar de origen. De cada uno de
ellos se quiere almacenar el cdigo, nombre y otros datos que puedan ser de inters. Un viaje
tiene un nico lugar de destino y un nico lugar de origen.

Pgina 4
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N3: Lenguaje SQL


* Puede descargar los scripts de creacin de tablas y datos para importar del campus virtual.

1) Dado el siguiente esquema relacional:


Proveedores(sid: integer, sname: string, address: string)

Parts(pid: integer, pname: string, color: string)

Catalog(sid: integer, pid: integer, cost: real

a) Encuentre los snombres de Proveedores que provean alguna parte roja.


b) Encuentre los sids de Proveedores que provean alguna red o parte verde.
c) Encuentre los sids de Proveedores que provean alguna parte roja o vivan en 221 Packer
Street.
d) Encuentre los sids de Proveedores que provean alguna parte roja and alguna parte verde.
e) Encuentre los sids de Proveedores que provean cada parte.
f) Encuentre los sids de Proveedores que provean cada parte roja.
g) Encuentre los sids de Proveedores que provean cada parte verde o roja.
h) Encuentre los sids de Proveedores que provean cada parte roja o provean cada parte
verde.
i) Encuentre los pares de sids tal que los Proveedores con el primer sid cueste mas por
alguna parte que los proveedor del segundo sid.
j) Encuentre los pids de partes provista por al menos dos proveedores diferentes.
k) Encuentre los pids de las aprtes mas caras provistas por el proveedor llamado Yosemite
Sham.
l) Encuentre los pids de partes provistas por cada proveedor a menos que $200. (Si algn
proveedor no provee las partes o cuesta igual o ms de $200, las partes no debern ser
listadas.)

2) Dado el siguiente esquema relacional:

Vuelos(flno: integer, from: string, to: string, distance: integer, departs: time, arrives: time)

Avin(aid: integer, aname: string, cruisingrange: integer)

Certificados(eid: integer, aid: integer)

Empleados(eid: integer, ename: string, salary: integer)

a) Encuentre los eids de pilotos certificados para algn avin Boeing.


b) Encuentre los nombres de pilotos certificados para algn avin Boeing.
c) Encuentre los aids de todos los aviones que pueden ser usados para vuelos sin parada
desde Bonn hasta Madras.
d) Identifique los vuelos que pueden ser piloteados por cada pilot cuyo salario sea mayor a
$100,000.
e) Encuentre los nombres de pilotos que pueden operar aviones con un rango mayor a 3,000
millas pero que NO esten certificados para los aviones Boeing.
f) Encuentre los eids de empleados que ganan el mayor salario.

Pgina 5
Diseo de Bases de Datos Aplicadas
Ao 2011

g) Encuentre los eids de empleados que ganen el segundo mayor salario.


h) Encuentre los eids de empleados que estn certificados para el mayor nmero de aviones.
i) Encuentre los eids de los empleados que estn certificados para exactamente 3 (tres)
aviones.
j) Encuentre la cantidad total de dinero pagado en concepto de salario.

3) Dado el siguiente esquema relacional:


Student(snum: integer, sname: string, major: string, level: string, age: integer)

Class(name: string, meets at: string, room: string, fid: integer)

Inscripto(snum: integer, cname: string)

Faculty(fid: integer, fname: string, deptid: integer)

a) Encuentre los nombres de todos los estudiantes Juniors (level = JR) que esten enrolados
en una clase dictada por I. Teach.
b) Encuentre los nombres de todas clases que cumpla estar en el aula R128 o tenga mas de 5
estudiantes inscriptos.
c) Encuentre los nombres de todos estudiantes que estan inscriptos en dos clases que
comiencen a la mismo hora.
d) Encuentre los nombres de miembros de la facultad que hay en cada aula en la cual se dicta
alguna clase.
e) Encuentre los nombres de los miembros de la facultad para quienes la inscripcin
combinada de los cursos que ensean es menos de cinco.
f) Para cada nivel, liste los niveles y los promedios de edad de los estudiantes para ese nivel.
g) Para todos los niveles excepto JR, liste el nivel y los promedios de edad de estudiantes
para dicho nivel.
h) Para cada miembro de la facultad que toma clases en el aula R128, liste los nombres de los
miembros de la facultad y el total de clases que toma.
i) Encuentre los nombres de estudiantes inscriptos en para el mximo nro. de clases.
j) Encuentre los nombres de estudiantes no inscriptos in ninguna clase.
k) Para cada valor de la edad que aparezca en estudiantes, encuentre el valor del nivel que
aparece lo ms a menudo posible. Por ejemplo, si hay ms estudiantes del nivel del FR
con 18 aos que en los niveles SR, JR, o SO, usted debe imprimir el par (18, FR).

4) Dado el siguiente esquema relacional:


Emp(eid: integer, ename: string, age: integer, salary: real)

Works(eid: integer, did: integer, pct time: integer)

Dept(did: integer, dname: string, budget: real, managerid: integer)

a) Liste los nombres las edades de cada employee que trabajan en los departamentos de
Hardware y los departmento de Software.

Pgina 6
Diseo de Bases de Datos Aplicadas
Ao 2011

b) Encuentre los managerids de los gerentes que administran solo departmentos con
presupuesto mayor a $1.000.000.
c) Encuentre los enames de los gerentes que administran los departamentos con los
mayores presupuestos. Si un gerente administra ms de un depto. se debe sumar sus
presupuestos.
d) Encuentre los managerids de los gerentes que controlan mas de $5.000.000.
e) Encuentre los managerids de los gerentes que controlan los mayores presupuestos.
f) Encuentre los enames de los gerentes que administran solo departmentos con
presupuestos de ms de $1.000.000, pero al menos un depto. tiene presupuesto menor a
$5.000.000.

5) Tenemos esta informacin sobre una cadena editorial:

La editorial tiene varias sucursales, con su domicilio, telfono y un cdigo de sucursal. Cada
sucursal tiene varios empleados, de los cuales tendremos sus datos personales, DNI y telfono. Un
empleado trabaja en una nica sucursal. En cada sucursal se publican varias revistas, de las que
almacenaremos su ttulo, nmero de registro, periodicidad y tipo. La editorial tiene periodistas
(que no trabajan en las sucursales) que pueden escribir artculos para varias revistas.
Almacenaremos los mismos datos que para los empleados, aadiendo su especialidad.
Guardaremos tambin las secciones fijas de cada revista, que tendrn un ttulo y una extensin.
Para cada revista, almacenaremos informacin de cada nmero, que incluir la fecha, nmero de
pginas y el nmero de ejemplares vendidos.

a) Dibujar el modelo Entidad-Relacin y pasarlo a tablas. Insertar datos en las tablas para que
las consultas no devuelvan filas vacas. Imprimir el modelo relacional obtenido.

b) Utilizando SQL, escribir las expresiones correspondientes a estas consultas, imprimiendo


adems el resultado obtenido:

i) Cules son los ttulos de las revistas publicadas a partir del 1 de Febrero de 2010?

ii) Cules son las secciones fijas de la revista "Caras"?

iii) Cules son los nombres y telfonos de los periodistas que escriben en revistas de
investigacin?

6) Tenemos que disear una base de datos para una empresa de material informtico, de la que
tenemos esta informacin:

Cdigo_equipo, Descripcin_equipo, Precio_equipo, Cdigo_componente,


Descripcin_componente, Stock_componente, Precio_componente, DNI_empleado,
Nombre_empleado, Seccin_empleado, NIF_cliente, Nombre_cliente, Domicilio_cliente,
Cdigo_equipos_cliente, Cantidad_equipos_cliente, Cdigo_componentes_cliente,
Cantidad_componentes_cliente.

Pgina 7
Diseo de Bases de Datos Aplicadas
Ao 2011

Sabemos que: Un empleado trabaja en una seccin. Cada cliente compra a travs de un slo
empleado. Un equipo consta de varios componentes. Se pueden comprar equipos completos o
componentes sueltos.

a) Dibujar el diagrama Entidad-Relacin y pasarlo a tablas.

b) Escribir las consultas en SQL para responder a estas preguntas:

i) Cules son los empleados que han vendido equipos a clientes de Resistencia?

ii) Cules son los cdigos y descripciones de los equipos con monitores VGA color?

7) Tenemos que disear una base de datos sobre los pubs de Resistencia. La informacin de que
disponemos es la siguiente: De cada pub, almacenaremos el nombre, licencia fiscal, domicilio,
fecha de apertura, horario y das de apertura. Cada pub tendr uno o varios titulares, de los
que almacenaremos sus datos personales: nombre, DNI y domicilio. Tendremos que anotar
tambin los empleados de cada pub, teniendo en cuenta que un empleado puede trabajar en
varios sitios. Para cada empleado, tendremos sus datos personales: nombre, DNI y domicilio;
tambin anotaremos la funcin que desempea, que puede ser distinta en cada pub. Para
cada negocio, llevaremos un inventario de existencias, con el nombre del artculo, su cdigo, la
cantidad y el precio. A efectos de contabilidad, llevaremos una relacin de los pedidos, con un
nmero de pedido (nico), fecha, proveedor, cdigo y nombre de los artculos suministrados,
cantidad y precio total del pedido. Tambin tenemos que almacenar las recaudaciones diarias
de cada negocio.

a) Disear el modelo Entidad-Relacin correspondiente

b) Pasar a tablas el modelo Entidad-Relacin y cargar datos de manera de poder responder


las siguientes consultas:

i) Cules son los nombres y domicilios de los camareros del pub "Nctar"?

ii) Cules son los proveedores de jugo de naranja del pub "Candy"?

iii) Cules son los nombres de los pubs que han hecho recaudaciones mayores de
$100.000. el da 12/02/2010?

Pgina 8
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N4: Triggers y Proc. almacenados

1) Considere el siguiente esquema relacional y defina las restricciones usando CHECK,


funciones o triggers dependiendo el caso. Constate la restriccin tratando de insertar
datos que no la cumplan y registre el error.

Emp(eid: integer, ename: string, age: integer, salary: real)

Works(eid: integer, did: integer, pct time: integer)

Dept(did: integer, dname: string, budget: real, managerid: integer)

a) Defina una restriccin en EMP que asegure que cada empleado no cobre menos de
$10.000.

b) Defina una restriccin en la tabla DEPT que asegure que todos los managers tienen
ms de 30 aos.

c) Defina una trigger en DEPT que asegure que todos los managers tienen ms de 30
aos. Comprelo con la restriccin anterior. Explique cul es mejor.

d) Escriba sentencias SQL para borrar toda la informacin sobre los empleados cuyos
salarios excedan el del administrador (manager) del departamento en los cuales
trabajan.

2) Considere la siguiente relacin:

Estudiantes(eid: integer, enombre: string, asesor: string, nivel: string, edad: integer)

Clases(clase: string, inicio: time, salon: string, pid:integer)

Inscripciones(eid: integer, idclase: string)

Profesores(pid:integer, pnombre:string, deptid:integer)

1) Escriba las sentencias SQL que permitan crean las relaciones anteriores, incluyendo
todas las restricciones que encuentre obvias colocar. Por ej. Un estudiante no puede
inscribirse dos veces en la misma clase, etc.

2) Exprese cada una de las siguientes restricciones de integridad en SQL a menos que
esta este implcita con las claves primarias y forneas; si corresponde defina que
operaciones (insert, delete, update) debe ser monitoreadas a taves de un triggers para
cumplirla:

Pgina 9
Diseo de Bases de Datos Aplicadas
Ao 2011

a) Cada clase tiene un mnimo de 5 alumnos inscriptos y un mximo de 30

b) Al menos una clase debe ocupar un saln de manera que todos los salones
estn ocupados.

c) Cada profesor de ensear al menos dos clases

d) Solo los profesores del deptid=33 deben pueden ensear en ms de 3 clases

e) Todos los estudiantes deben estar enrolados en la clase de Matemtica de


manera obligatoria

f) El saln en el cual se dicta la clase ms temprano no debe ser la misma que el


saln donde se dicta la ltima.

g) Dos clases no pueden darse en el mismo saln al mismo tiempo.

h) El departamento con ms profesores asignados deben tener menos que el


doble de profesores en el departamento con menos profesores asignados.

i) Ningn departamento puede tener mas de 10 profesores.

j) El nmero de asesores de Ciencias debe ser mayor al nmero de asesores de


Matemtica.

k) El nro. de cursos distintos en los cuales estn inscriptos los asesores de


Ciencias debe ser mayor que el nro. de cursos distintos en los cuales estn
enrolados los asesores de Matemtica.

l) El nro. total de inscriptos en los cursos tomados por los profesores del
departamento deptid=33 debe ser mayor que el nro. de asesores de
Matemtica.

m) Los profesores de diferentes departamentos no pueden ensear en la misma


sala.

3) Discuta con el grupo las fortalezas y debilidades de los disparadores. Contraste los
triggers con los otros tipos de restricciones que conoce.

4) Considere el esquema relacional del punto 1. Un empleado puede trabajar en mas de


un departamento; el campo pc_time de la tabla WORKS muestra el porcentaje de
tiempo que un empleado trabaja en el departamento.

Escriba las restricciones de integridad siguientes usando el tipo de comando o funcin que sea
necesario. Considrelas a todas de manera independiente una de otra.

a) Los empleados deben ganar un salario mnimo de $1.000.

Pgina
10
Diseo de Bases de Datos Aplicadas
Ao 2011

b) Cada manager debe ser tambin un empleado

c) El porcentaje acumulado de un empleado debe sumar exactamente 100%

d) Un manager debe tener siempre el salario ms alto que cualquier empleado


que dirige.

e) Cuando un empleado recibe un aumento, el salario de su jefe debe subir en la


misma proporcin.

f) Cuando un empleado recibe un aumento, el salario de su jefe debe subir en la


misma proporcin. Adems debe incrementarse el presupuesto del
departamento de manera de contemplar los aumentos escalonados y debe ser
siempre mayor que la suma de todos los salarios de los empleados que
trabajan en l.

Pgina
11
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N5: XML


1) Disear un esquema XML para crear documentos para un prstamo.
a. En cada documento se indicarn:
1. El nombre y apellidos del bibliotecario
2. Fecha del prstamo y de devolucin
3. Datos del lector (id, nombre, apellidos, telfono y direccin)
4. La direccin se dividir en tipo de calle (que puede ser calle o avenida),
nombre calle, nmero, piso y letra, cdigo postal, localidad y provincia
5. Un mximo de tres ejemplares en prstamo. Para cada uno de ellos: el nmero
de registro, ttulo, autor(es)
6. El prstamo tendr un atributo numrico que servir como identificador
b. Verificar que este bien formado.

2) De acuerdo al siguiente documento XML, realizar lo siguiente:


a. Verificar que sea un documento bien formado
b. Crear el documento DTD respectivo
c. Validar XML con el DTD creado.

Documento XML de catalogo de pelculas:


<?xml version="1.0"?>
<CatalogoPeliculas>
<Pelicula>
<Titulo>The Matrix</Titulo>
<Duracion>136</Duracion>
<Genero>Sci-Fi and Fantasy</Genero>
<Actores>
<Actor>Keanu Reeves</Actor>
<Actor>Laurence Fishburne</Actor>
<Actor>Carrie Ann Moss</Actor>
</Actores>
<Fecha>1999</Fecha>
<Director>Wachowski Brothers</Director>
<Formato>DVD</Formato>
</Pelicula>
<Pelicula>
<Titulo>Titanic</Titulo>
<Duracion>194</Duracion>
<Genero>Drama</Genero>
<Actores>
<Actor>Leonardo DiCaprio</Actor>

Pgina
12
Diseo de Bases de Datos Aplicadas
Ao 2011

<Actor>Kate Winslet</Actor>
</Actores>
<Fecha>1999</Fecha>
<Director>James Cameron</Director>
<Formato>DVD</Formato>
</Pelicula>
<Pelicula>
<Titulo>The Sixth Sense</Titulo>
<Duracion>106</Duracion>
<Genero>Thriller</Genero>
<Actores>
<Actor>Bruce Willis</Actor>
<Actor>Haley Joel Osment</Actor>
</Actores>
<Fecha>1999</Fecha>
<Director>M. Night Shyamalan</Director>
<Formato>VHS</Formato>
</Pelicula>
</CatalogoPeliculas>

3) Documento XML + DTD: De acuerdo a la siguiente estructura presentada, crear una


representacin de la estructura del documento en forma de un DTD.

Pgina
13
Diseo de Bases de Datos Aplicadas
Ao 2011

4) Ampliar la jerarqua de datos (propuesta en el ejercicio anterior) para representar la


estructura de un CD completo. Para ello crear un nuevo elemento CD que contenga:
a) Un atributo ttulo que tome como valor el ttulo genrico del CD
b) Dos elementos:
I. Un elemento CANCIONES que a su vez puede contener uno o varios elementos
CANCION.
II. Un elemento FECHA que sea de carcter EMPTY pero que tenga tres atributos:
DIA, MES y ANIO para indicar la fecha de salida al mercado del CD.
c) Agregar los cambios producidos en la representacin de la estructura, en un nuevo
documento DTD.

5) Construir un esquema XML de acuerdo al DTD y XML adjuntos ms abajo. Realizar los
siguientes pasos:
a. Crear el documento XML.
b. Crear el DTD
c. Validar DTD con el documento XML
d. Crear el Esquema XML correspondiente.
Documento XML de libro:
<?xml version="1.0" encoding="UTF-8"?>
<!-- insertar el DTD y Schema respectivo -->
<Libro>
<Titulo>Java y XML</Titulo>
<Contenido>
<Capitulo materia="XML">
<Tema>Introduccin</Tema>
<Seccion apartados="7">Qu es</Seccion>
<Seccion apartados="3">Cmo se usa</Seccion>
</Capitulo>
<Capitulo materia="XML">
<Tema>Creando XML</Tema>
<Seccion apartados="0">Un documento XML</Seccion>
<Seccion apartados="2">La cabecera</Seccion>
<Seccion apartados="6">El contenido</Seccion>
</Capitulo>
<Capitulo>
<Tema>Analizando XML</Tema>
<Seccion apartados="3">Preparacin</Seccion>
<Seccion apartados="3" dificil="si">SAX</Seccion>
<Seccion apartados="9" dificil="si">Manejadores</Seccion>
<Seccion apartados="0">Una forma mejor de cargar el analizador</Seccion>
</Capitulo>

Pgina
14
Diseo de Bases de Datos Aplicadas
Ao 2011

<Separacion/>
<Capitulo materia="Java">
<Tema>JDOM</Tema>
<Seccion apartados="2">Introduccin</Seccion>
<Seccion apartados="4" dificil="si">DOM&amp;JDOM</Seccion>
</Capitulo>
</Contenido>
<Copyright>2000</Copyright>
</Libro>

Documento DTD del documento XML de libro:

<!ELEMENT Libro (Titulo, Contenido, Copyright)>


<!ELEMENT Titulo (#PCDATA)>
<!ELEMENT Contenido ((Capitulo+, Separacion?)+)>
<!ELEMENT Capitulo (Tema, Seccion+)>
<!ATTLIST Capitulo materia (XML|Java) "Java">
<!ELEMENT Tema (#PCDATA)>
<!ELEMENT Seccion (#PCDATA)>
<!ATTLIST Seccion apartados CDATA #REQUIRED dificil (si|no) "no">
<!ELEMENT Separacion EMPTY>
<!ELEMENT Copyright (#PCDATA)>

6) Definir un esquema XML que valide una tabla peridica y un documento XML vlido con
respecto a ste, que almacene la siguiente informacin para los elementos de la tabla
peridica:
Tabla peridica es un listado de uno o ms tomos, donde cada tomo tiene:
un atributo estado (slido, lquido, gaseoso)
un elemento nombre
un elemento smbolo (tres caracteres como mximo, 1ra. letra mayscula)
un elemento numero_atomico
un elemento peso_atomico
un elemento punto_ebullicion con un atributo unidades, que puede ser centigrados o
kelvin, y por defecto tomar el valor centigrados.
un elemento densidad con un atributo unidades

7) Teniendo en cuenta los siguientes ejemplos, definir los tipos de datos ms adecuados:
Hidrgeno: estado="gas", smbolo "H", nmero atmico "1", peso atmico "1.00794",
punto ebullicin "20.28", unidades="kelvin", densidad "0.0899"
unidades="gramos/centimetros cbicos"

Pgina
15
Diseo de Bases de Datos Aplicadas
Ao 2011

Helio: estado="gas", smbolo "He", nmero tomico "2", peso atmico "4.0026",
punto ebullicin "4.216", unidades="kelvin", densidad "0.1785", unidades
gramos/centimetros cbicos"

8) Crear una hoja de estilo de acuerdo a un documento XML. Realizar los siguientes pasos:
a. Crear el documento XML (ver catalogo.xml)
b. Crear una hoja de estilo de acuerdo al documento XML: aplicar templates.
c. Verificar que tanto el documento XML como XSL estn bien formados.
d. Generar como salida un archivo HTML. Ejemplo:

Documento XML (catalogo.xml):


<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
<cd>
<titulo>Parte de la religin</titulo>
<artista>Charly Garca</artista>
<pais>Argentina</pais>
<compania>Sony BMG</compania>
<precio>24.99</precio>
<anio>1987</anio>
</cd>
<cd>
<titulo>Civilizacin</titulo>
<artista>Los Piojos</artista>
<pais>Argentina</pais>
<compania>EMI</compania>
<precio>35.00</precio>
<anio>2007</anio>
</cd>
<cd>
<titulo>Me veras volver</titulo>
<artista>Soda Stereo</artista>
<pais>Argentina</pais>
<compania>Sony BMG</compania>

Pgina
16
Diseo de Bases de Datos Aplicadas
Ao 2011

<precio>38.00</precio>
<anio>2008</anio>
</cd>
</catalogo>

9) En base al ejercicio 2 (Catalogo de Pelculas), definir lo siguiente:


a. Crear una hoja de estilo de acuerdo al documento XML: CatalogoPeliculas.xml
b. Realizar las siguientes consultas usando el motor de base de datos elegido:
i. Por ttulo de la pelcula. Dado un ttulo nos retornar toda la informacin
asociada a la pelcula en cuestin. Puede existir ms de una entrada por ttulo.
ii. Por director de la pelcula. Dado el nombre de un director, nos retornar la
lista de pelculas que ha dirigido ordenadas por gnero. Adems, dentro de un
gnero, las pelculas estarn ordenadas por ao
c. En todos los casos generar archivo HTML.

10) De acuerdo al documento XML que figura abajo, crear una hoja de estilo XSLT que muestre los
datos en una tabla, de acuerdo a las siguientes pautas:
a) Mostrar nombre, materia y nota, ordenar de acuerdo a la calificacin.
b) Las calificaciones superiores a 70 aparecen en verde, de 40 a 70 en amarillo y las
inferiores a 40 en rojo
c) Los alumnos recursantes aparecen marcados con un (*), con una explicacin debajo de
la tabla.
d) El ttulo del documento refleja la fecha de calificacin como el titulo correspondiente.
e) Al final, mostrar un resumen con totales de alumnos, total aprobados y desaprobados.
Considerar aprobados aquellas calificaciones mayores a 70.
f) Generar un archivo XML con los alumnos aprobados.

<?xml version="1.0" encoding="UTF-8"?>


<calificaciones fecha="29-5-2009">
<alumno tipo="recursante">
<nombre>Luis Gomez</nombre>
<materia>RPyA</materia>
<carrera>AdeS</carrera>
<nota>60</nota>
</alumno>
<alumno tipo="no recursante">
<nombre>Maria Lopez</nombre>
<materia>Laboratorio</materia>
<carrera>LeS</carrera>
<nota>30</nota>
</alumno>

Pgina
17
Diseo de Bases de Datos Aplicadas
Ao 2011

<alumno tipo="no recursante">


<nombre>Juan Perez</nombre>
<materia>RPyA</materia>
<carrera>AdeS</carrera>
<nota>90</nota>
</alumno>
<alumno tipo="no recursante">
<nombre>Juan Perez</nombre>
<materia>Matematica</materia>
<carrera>AdeS</carrera>
<nota>55</nota>
</alumno>
<alumno tipo="no recursante">
<nombre>Maria Lopez</nombre>
<materia>Algebra</materia>
<carrera>LeS</carrera>
<nota>40</nota>
</alumno>
</calificaciones>

12) En base al ejercicio 7, realizar las siguientes consultas usando DOM:


a. Por autor del CD. Dado el nombre de un autor, nos retornar toda la informacin asociada
al CD en cuestin.
b. Por sello o compaa del CD. Dado el nombre de una compaa, nos retornar la lista de
CDs que correspondan a esa compaa.
c. Por precio mayor a $X. Dado el ingreso del precio de un CD, mostrar el o los CD/s que
cumplan con esa condicin.
d. En todos los casos, las salidas sern en Consola.

13) Usando DOM, modelar una libreta de contactos de acuerdo a la siguiente informacin:
nombre, direccin (calle, cdigo postal, ciudad), medios de contacto (telfono fijo, telfono
mvil, correo electrnico). Generar el documento XML respectivo.
14) Realizar mediante DOM un programa que a partir del archivo XML generado en el ejercicio 9,
generar un informe con las notas de los alumnos. El programa debe imprimir por pantalla el
promedio de cada alumno y el promedio total de los alumnos, as tambin, generar un
documento XML con esta informacin

Pgina
18
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N6: Backup y Restauracin

1) Para un volumen de transacciones diarias (1.200.000 inserciones aprox.) y una disponibilidad


requerida de la base de datos (la carga de datos desde los clientes se hace constantemente-
24 horas al da), se implement una poltica de backup soportada sobre un mecanismo de
respaldo fsico en caliente, con el fin de garantizar la menor prdida de datos y su mayor
disponibilidad, de acuerdo al tiempo que la aplicacin debe estar en produccin. Analizando
la carga de la base de datos y las horas pico de consulta y transaccionalidad, se fij como hora
cero para backup, las 2:00 PM, ya que hacia las horas de la tarde la base de datos se
encuentra con un nivel de carga bajo. Los intervalos de tiempo, en los cuales se hace el
respaldo de los datos, son fijados de acuerdo al crecimiento en volumen de datos y el nivel de
dinamismo que presenta la base de datos. Cuando se fija como poltica de respaldo el backup
fsico en lnea, la base de datos debe tener habilitado el modo Archive, con lo cual se corre el
riesgo de provocar una cada en la base de datos, si no se garantiza espacio suficiente para el
copiado de los archivos de redo log al destino del Archive. Teniendo en cuenta lo anterior, se
defini un esquema de respaldo con cintas diarias, realizando Full Backup de la base de datos
los das lunes, mircoles y viernes, y backup del Archive Redo Log cada seis horas, eliminando
estos archivos despus de realizado el backup automticamente, garantizando disponibilidad
de espacio en disco para estos tipos de archivos. Se program la toma del backup a travs de
tareas automticas del sistema operativo, necesitando slo la intervencin del usuario, para
el cambio de cinta y la validacin de los backups. Se debe manejar un pool (conjunto) de doce
(12) cintas, las cuales se deben intercambiar diariamente, rotndolas cada dos (2) semanas, es
decir que se contar con el backup de las dos ltimas semanas. Por fines prcticos y para
evitar traumatismos en el proceso de intercambio de rotacin de cintas, se fij las doce del
medioda (12:00 PM), como la hora en que se debe realizar el intercambio de la cinta en el
servidor, siguiendo la secuencia determinada. Este proceso se debe realizar todos los das de
lunes a sbado y debe hacerlo la persona responsable de los backups. Por mantenimiento,
confiabilidad y seguridad se recomienda cambiar el pool de cintas por unas nuevas cada seis
meses. La Figura muestra el diagrama resultante de la esquematizacin de una estrategia de
backup segn el escenario planteado.

Pgina
19
Diseo de Bases de Datos Aplicadas
Ao 2011

* Aclaracin: Tomaremos el Backup de Archivos "redo log" como backups tipo incremental. Si bien
no es lo mismo lo hacemos para no complicar el escenario.

Tareas:
a) Investigue Que es un redo log?. Su base de datos lo soporta o es algo exclusivo de un
motor en particular? En caso afirmativo como lo llama?
b) Deber buscar y comparar soluciones de hardware para dar soporte a esta planificacin. Al
menos debern ser tres opciones como mnimo con sus respectivos anlisis de costos y de
las tres proponer la mejor opcin.
c) Describa el procedimiento de restauracin que utilizara si la base de datos se daase el
primer Jueves de la 2da semana a las 11 de la maana. ? Tiene un plan "B" por si falla
alguna restauracin?
d) Cmo debera modificar la planificacin si en vez de dos semanas se necesitarn
conservar al menos 3 meses?. Esto implicara inversin adicional en equipamiento /
software? Justifique.

2) Teniendo en cuenta los temas tratados en este captulo, desarrollar un propio plan de
backup y restauracin, proponiendo un escenario imaginario.

Pgina
20
Diseo de Bases de Datos Aplicadas
Ao 2011

Trabajo Prctico N7: Seguridad

1. Se necesita crear una cuenta de usuario para Juan Perez, el nuevo jefe del
departamento de recursos humanos. Asimismo hay dos nuevos empleados en el
departamento, Pedro Gomez y Juan Garcia. Los tres deben poder loguearse a la
base de datos, realizar consultas a la tabla de empleados y actualizar datos de esa
tabla. Solo el administrador puede insertar o borrar registros de empleados.
Asegrese que si los nuevos usuarios olvidan loguearse al final del da el sistema
les cerrar la sesin pasados quince minutos de tiempo ocioso. Cree la tabla
empleados en caso de no tenerla con campos bsicos para almacenamiento de
informacin del personal

Realice las siguientes tareas y documente cada paso con copias de la pantalla con el
resultado:
a. Cree cuentas de usuario para los empleados Pedro Gomez y Juan Garcia.
b. Cree una cuenta tambin para el nuevo jefe Juan Perez.
c. Si la base de datos lo permite cree un grupo de seguridad (rol) que agrupe
los empleados y llmelo RRHH_EMP con los permisos de SELECT y
UPDATE para la tabla Empleados y asigne a los usuarios Gomez y Garcia.
Cree adems otro rol y llmelo RRHH_JEFE con permisos los permisos
anteriores ms de INSERT y DELETE en la misma tabla y agregue el
usuario de Perez. Caso contrario asigne los permisos directamente a los
usuarios.
d. Conectarse a la base de datos usando el usuario de Pedro Gomez. Ejecute
una consulta sobre la tabla empleados.
e. Ahora intente borrar un registro.
f. Conctese ahora con el usuario de Perez y ejecute una consulta e inserte
un registro en la tabla Empleados.
g. Deje un usuario con la sesin abierta por ms de 15 minutos sin realizar
accin alguna y compruebe si la misma se cierra automticamente.

Pgina
21