Sie sind auf Seite 1von 18

Bases de Datos Avanzadas.

Ingeniera Informtica

curso 2010/11

PRCTICA 01.
Objetivos: Introduccin a Oracle Express y al lenguaje PL/SQL. Uso de bloques, variables y estructuras de control. Sesiones: 1 (18/02) Ejercicio: 1. 2. 3. 4. 5. Confirmar instalacin de productos Oracle. Explicaciones iniciales. Conectarse como usuario SYS y crear el usuario/schema CINE. Darle permisos de creacin de vistas. Conectarse con el usuario CINE. Conocer el entorno SQL Plus. Ejecutar script de creacin de BD y cargar los ficheros de datos. Trabajar contra CINE con SQL Developer.

6.

Con el esquema y datos suministrados, realizar las siguientes acciones. Ayuda (http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/toc.htm) 6.1. Escribir un bloque PL/SQL que calcule el producto de dos nmeros solicitados al usuario. 6.2. Escribir un bloque PL/SQL que pida dos fechas e indique si la primera es anterior a la segunda o son iguales. 6.3. Escribir un bloque PL/SQL que muestre los das que han pasado desde que se celebr la edicin del festival indicado por el usuario. 6.4. Escribir un bloque PL/SQL que calcule el n de ediciones de un festival indicado por el usuario. 6.5. Cree una tabla con dos campos numricos. A continuacin cree un bloque PL/SQL que inserte 10 filas tomando la primera columna un valor de 1 hasta 10 y la segunda la raz cuadrada de la primera. A continuacin muestre los datos. 6.6. Escribir un bloque PL/SQL que recorra la tabla creada en 6.5 e indique si el valor de la primera columna es par o impar.

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 02.
Objetivos: Lenguaje PL/SQL. Disparadores. Sesiones: 2 (25/02 y 4/3) Ejercicio: Utilizando el schema CINE, programar los siguientes disparadores:

1. Definir un disparador que impida participar como miembro del tribunal de una edicin del festival a una persona nominada en el mismo. 2. Definir un disparador que controle que el n de miembros del tribunal no supere el mximo establecido por el festival. Probar insertando varias filas en la tabla en una sola operacin. 3. Controlar que el n de una edicin sea coherente con su fecha, esto es, la edicin 80 del festival ser anterior a la 81 y por tanto su fecha tambin. 4. Definir un disparador que registre los datos que se cambian en la tabla persona y anotarlos en una tabla de log que se defina al efecto. 5. Crear una vista con los datos de festivales y ediciones. Definir un disparador que permita insertar a travs de la vista la informacin en ambas tablas. 6. Crear un disparador que al borrar una edicin, elimine la informacin relacionada 7. Crear un disparador que cuando el n de ediciones de un festival llegue a 10, anote en la tabla noticias que hay que celebrar el evento.

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 03.
Objetivos: Lenguaje PL/SQL. Uso de cursores, funciones y procedimientos almacenados. Sesiones: 1 (11/03) Ejercicio: 1. Utilizando el schema CINE, programar los siguientes bloques y funciones:

1.1. Mostrar, ordenados por el cdigo, el nombre artstico de todas las personas, utilizando un cursor. 1.2. Crear el campo premios_recibidos en la tabla personas. Crear un bloque PL/SQL para rellenar ese atributo utilizando cursores. Haced lo mismo sin utilizar cursores. 1.3. Crear un procedimiento que inserte un festival. Realizar el control de errores. 1.4. Crear un procedimiento que actualice la fecha y el lugar de una determinada edicin de un festival. Realizar el control de errores. 1.5. Crear un procedimiento que devuelva el titulo original de una pelcula que se indique. 1.6. Crear un procedimiento que tome de entrada un numero de telfono (123123123) y lo devuelva formateado del siguiente modo (123)123-123. 1.7. Definir una funcin que devuelva la edad de la persona que se indique. Ordene a las personas por su edad. 1.8. Crear una funcin que devuelva el n de nominaciones que ha recibido una pelcula cuyo ttulo original se indique (de forma completa o alguna palabra).

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 04.
Objetivos: SQL Embebido. Uso del driver JDBC. Sesiones: 1 (18/03) Ejercicio:

1. 2.

Crear un procedimiento que reconstruya el ndice (ALTER INDEX REBUILD) que se indique como parmetro. Crear un procedimiento que otorgue el permiso de consulta al usuario que se pase como argumento sobre todas las tablas del esquema que se indique tambin como argumento. Crear previamente el usuario. Haciendo uso del driver JDBC de Oracle, realizar un programa en java que se conecte a nuestro esquema CINE y permita, a travs de un men: 3.1. 3.2. Modificar la tabla pelculas incorporando el campo fecha de estreno. Consultar las personas mostrando su edad.

3.

3.3. Mostrar el ttulo original de una pelcula que se indique (utilizar el procedimiento almacenado). 3.4. Insertar los miembros del tribunal para una edicin de un festival.

Realizar el control de posibles errores que corresponda en cada caso. El driver JDBC para Oracle est disponible en el site de oracle (http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html y se denomina classes12.jar)

4.

Ejercicio adicional (solicitar cdigo): 4.1. Modificar la aplicacin java para que permita recoger las ediciones de los festivales

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 05.
Objetivos: Caractersticas objeto-relacionales de Oracle. Tipos de objeto y Varrays. Sesiones: 1 (25/03) Ejercicio: Manual de referencia: http://download.oracle.com/docs/cd/B12037_01/appdev.101/b10799/toc. htm

5.

Definir un tipo de objeto profesor con la siguiente estructura:


Profesor = { Nombre: carcter (20) Direccion = { Calle: carcter (15) Numero: carcter (20) Ciudad: carcter (10) Codigo Postal: carcter (5) ] Salario: carcter (50) Telefono: coleccin de 5 elementos } Donde = { Telefono 1: Telefono 2: Telefono 3: Telefono 4: Telefono 5:

despacho particular mvil vacaciones otro

6.

Definir dos extensiones para el tipo profesor que cumplan las siguientes restricciones:
Profesor_Contratado: Su salario no puede ser superior a 1500 Profesor_Titular: Su salario es superior a 1500 Es obligatorio conocer su direccin

7.

Insertar los siguientes datos:


TITULARES Salario CP 28020 28911 Null 28010 28933 2000 2500 2000 2500 3000 [1] 6647401 6647401 6647402 6647403 [2]

Nombre Calle Jose M Jorge Beln Esperanza Paloma Alcal Butarque Null Serrano Tulipn

Direccin Num 3 15 Null 56 10 Ciudad Madrid Legans Null Madrid Mstoles

Telfono [3] [4] [5] 914445556 Null Null Null 4556478 606754321 Null 4557486 Null 964321236 Null 606896310 Null 4457834 606312890 987348675

Donde los valores vacos representan un valor nulo en el campo telfono (no en uno o cinco de los telfonos).
Universidad de Cantabria Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

CONTRATADOS
Nombre
Calle Pepe Susana Ana Juan Mara Gran Va Null Null Velzquez

Direccin
Num 8 Null Null 88 Ciudad Madrid Legans Getafe Madrid CP 28009 Null Null 28010

Salario
[1] 1500 1500 1000 1100 1450 6647405 6647405 6647405 6647406 Null [2]

Telfono
[3] [4] [5] 914481096 Null 914445576 Null Null 4676478 606757651 964398736 4554586 Null 934876823 4490634 606856670 Null Null Null 987348675 Null Null Null

8.

Contestar a las siguientes consultas: 8.1. Mostrar todas las filas de ambas tablas.

8.2. Nombre y ciudad de los profesores contratados con un salario superior a 1000 euros. 8.3. Nombre y telfonos de los profesores titulares. Comprueba la diferencia entre no tener telfono y tener algn telfono con valor nulo. 8.4. Nombre y direccin de los profesores titulares cuyo salario sea mayor de 2000 euros. 8.5. Nombre y salario de los profesores, contratados o titulares, que vivan en Madrid. 9. Borrar las extensiones y tipos de objetos definidos previamente.

10. Modificar el esquema para incluir un atributo Fecha_nacimiento en los profesores, as como un mtodo, Edad(), que permita calcular su edad a partir de la fecha del sistema. 11. Repetir pasos 2 y 3, asignando valores a la fecha de nacimiento. 12. Mostrar el nombre y la edad de los profesores de Madrid. 13. Asignar a Esperanza otro telfono (posicin 5).

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 06.
Objetivos: Caractersticas objeto-relacionales de Oracle. Tipos REF. Nested Tables. Sesiones: 1 (16/04) Ejercicio: 1. Haciendo uso del tipo de objeto Profesor y su extensin Profesor_titular de la prctica anterior, definir un nuevo tipo de objeto Asignatura y su extensin asociada con la siguiente estructura:
Asignatura = { Nombre: carcter (25) Curso: carcter (1) Titulacion: carcter (20) Num_creditos: numrico Prof: referencia (profesor) (scope) }

2. Inserta los siguientes datos, suponiendo que el OID asignado por el sistema es el que aparece en las columna REF (Titulares) y REF (Asignatura); lgicamente, estas columnas no debern declarase, ni se podrn insertar datos en ellas. Los valores de la columna Profesor debern extraerse de la tabla Profesores.

PROFESORES_TITULARES
REF (Titula res) Nombre Direccin Salario Telfono

Calle P1 P2 P3 P4 P5 Jose M Jorge Beln Esperanza Paloma Alcal Butarque Null Serrano Tulipn

Num 3 15 Null 56 10

Ciudad Madrid Legans Null Madrid Mstoles

CP 28020 2000 28911 2500 Null 2000

[1]

[2]

[3]

[4] Null 96432123 6 Null 98734867 5

[5] 914445556 Null Null Null

6647401 4556478 6067 6647401 4557486 Null 6647402 Null 6068

28010 2500 28933 3000

6647403 4457834 6063

ASIGNATURAS
REF (Asignaturas) A1 A2 A3 A4 A5 Nombre Diseo de BD Bases de Datos Aplicaciones de BD BD Avanzadas Arquitectura Software Curso 3 1 2 3 2 Titulacin I.T.Informtica I.Informtica I.Informtica I.T.Informtica I.Informtica Num_creditos 9 6 6 6 6 Profesor P4 P4 P1 P3 P2

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

3. Comprobar el contenido de cada una de las tablas mostrando todos los campos de las mismas. 4. Consultar nicamente el nombre de la asignatura y el nombre del profesor que la imparte. 5. Insertar una nueva fila en la tabla asignaturas que contenga los mismos datos que A1. Es posible? Consultar el OID de los dos objetos cuyo nombre es Diseo de BD. El OID, es igual? Son dos objetos idnticos? Tienen los objetos el mismo estado? Realizar las consultas en la consola. Buscar las distintas asignaturas almacenadas en la tabla. Cuntas muestra? 6. Eliminar de la tabla de Profesores Titulares a aqullos que viven en Legans. 7. Comprobar nuevamente en la consola el contenido de cada una de las tablas. Qu ha pasado con las asignaturas impartidas por los profesores eliminados? 8. Contestar a las siguientes consultas: a. Nombre y telfonos del profesor que imparte la asignatura de Bases de Datos. b. Nombre de los profesores que imparten clases en la titulacin de I.T. Informtica. 9. Ahora, suponga que una asignatura la pueden impartir varios profesores. Elimine los tipos y tablas necesarios y comience de nuevo. Modifique el esquema para recoger esta modificacin sin incluir ninguna tabla nueva. 10.Inserte los datos de nuevo asignando a cada asignatura los siguientes profesores:

Diseo de BD Bases de Datos Aplicaciones de BD BD Avanzadas Arquitectura Software

Jos M, Esperanza, Beln Esperanza, Beln Jos M, Esperanza Beln, Jos M Paloma

11.Consulte los datos para comprobar que se han asignado correctamente. 12.Insertar a Paloma en la asignatura de Diseo de BD y borrar a Beln.

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 07.
Objetivos: Caractersticas objeto-relacionales de Oracle. Herencia. Mtodos. Sesiones: 1 (23/04) Ejercicio: 1. Definir un tipo de objeto profesor con la siguiente estructura:
Profesor = { IdProf: entero Nombre: carcter (20) Direccion = { Calle: carcter (15) Numero: carcter (20) Ciudad: carcter (10) Codigo Postal:carcter (5) ] Salario: carcter (50) Telefono: array de 5 elementos Fecha de nacimiento: fecha }

Donde = { Telefono 1: Telefono 2: Telefono 3: Telefono 4: Telefono 5:

despacho particular mvil vacaciones otro

Y los siguientes mtodos:


edad(): mtodo que devuelva la edad del profesor getIdNo() : mtodo que permita la ordenacin de los profesores por su IdProf (MAP) imprimir(): mtodo que devuelve un string con el nombre y edad del profesor

Permitid que este tipo se instanciable y que admita la definicin de subtipos. 2. Definir una extensin PROFESORES para el tipo profesor que cumplan las siguientes restricciones: IdProf: primary key Nombre y direccin: not null 3. 4. 5. Definir un subtipo Catedrtico con los atributos de rea de conocimiento (carcter (20)) y sexenios (entero). Crear la extensin Catedrticos correspondiente, sobrescribiendo el mtodo imprimir() para que muestre tambin el n de sexenios. Insertar los siguientes profesores

PROFESORES
IdProf Fecha Nac Nombre Direccin Calle 1 2 3 4 5 01-011970 01-011970 01-011974 01-011968 01-011980 Jose M Jorge Beln Esperanza Paloma Alcal Butarque Null Serrano Tulipn Num 3 15 Null 56 10 Ciudad Madrid Legans Null Madrid Mstoles CP Salar Telfono io [1]

[2]

[3]

[4] Null 96432123 6 Null 98734867 5

[5] 914445556 Null Null Null

28020 2000 6647401 28911 2500 6647401 Null 2000 6647402

4556478 6067 4557486 Null Null 6068

28010 2500 6647403 28933 3000

4457834 6063

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

6. 7. 8. 9.

Mostrar el nombre, edad de los profesores ordenados por mtodo MAP definido Insertar a Esperanza como Catedrtica del rea LSI y dos sexenios. Realizar la consulta para comprobar la insercin. Ejecutar de nuevo la instruccin de insercin da error? por qu?

10. Haciendo uso del mtodo imprimir() mostrar la informacin de ambas tablas.

Notas adicionales: 1. Mtodos en Oracle La especificacin de un mtodo se hace junto a la creacin de su tipo, y debe llevar siempre asociada una directiva de compilacin (PRAGMA RESTRICT_REFERENCES), para evitar que los mtodos manipulen la base de datos o las variables del paquete PL/SQL. Tienen el siguiente significado: WNDS: no se permite al mtodo modificar las tablas de la base de datos WNPS: no se permite al mtodo modificar las variables del paquete PL/SQL RNDS: no se permite al mtodo leer las tablas de la base de datos RNPS: no se permite al mtodo leer las variables del paquete PL/SQL

Ver ejemplo de uso a continuacin. 1.1. Mtodos de comparacin

Para comparar los objetos de cierto tipo es necesario indicar a Oracle cul es el criterio de comparacin. Para ello, hay que escoger entre un mtodo MAP u ORDER, debindose definir al menos uno de estos mtodos por cada tipo de objeto que necesite ser comparado. La diferencia entre ambos es la siguiente: Un mtodo MAP sirve para indicar cul de los atributos del tipo se utilizar para ordenar los objetos del tipo, y por tanto se puede utilizar para comparar los objetos de ese tipo por medio de los operadores de comparacin aritmticos (<, >). Por ejemplo, la siguiente declaracin permite decir que los objetos del tipo cliente_t se van a comparar por su atributo clinum. CREATE TYPE cliente_t AS OBJECT ( clinum NUMBER, clinomb VARCHAR2(200), direccion direccion_t, telefono VARCHAR2(20), fecha_nac DATE, MAP MEMBER FUNCTION ret_value RETURN NUMBER, PRAGMA RESTRICT_REFERENCES(ret_value, WNDS, WNPS, RNPS, RNDS), MEMBER FUNCTION edad RETURN NUMBER, PRAGMA RESTRICT_REFERENCES(edad, WNDS)); / CREATE OR REPLACE TYPE BODY cliente_t AS MAP MEMBER FUNCTION ret_value RETURN NUMBER IS BEGIN

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

RETURN clinum END; MEMBER FUNCTION edad RETURN NUMBER IS a NUMBER; d DATE; BEGIN d:= today(); a:= d.ao fecha_nac.ao; IF (d.mes < fecha_nac.mes) OR ((d.mes = fecha_nac.mes) AND (d.dia < fecha_nac.dia)) THEN a:= a-1; END IF; RETURN a; END; END;

Un mtodo ORDER utiliza los atributos del objeto sobre el que se ejecuta para realizar un clculo y compararlo con otro objeto del mismo tipo que toma como argumento de entrada. Este mtodo devolver un valor negativo si el parmetro de entrada es mayor que el atributo, un valor positivo si ocurre lo contrario y un cero si ambos son iguales. El siguiente ejemplo define un orden para el tipo cliente_t diferente al anterior. Slo una de estas definiciones puede ser vlida en un tiempo dado. CREATE TYPE cliente_t AS OBJECT ( clinum NUMBER, clinomb VARCHAR2(200), direccion direccion_t, telefono VARCHAR2(20), fecha_nac DATE, ORDER MEMBER FUNCTION cli_ordenados (x IN clientes_t) RETURN INTEGER, PRAGMA RESTRICT_REFERENCES(cli_ordenados, WNDS, WNPS, RNPS, RNDS), MEMBER FUNCTION edad RETURN NUMBER, PRAGMA RESTRICT_REFERENCES(edad, WNDS)); CREATE OR REPLACE TYPE BODY cliente_t AS ORDER MEMBER FUNCTION cli_ordenados (x IN cliente_t) RETURN INTEGER IS BEGIN RETURN clinum - x.clinum; /*la resta de los dos nmeros clinum*/ END; END; Si un tipo de objeto no tiene definido ninguno de estos mtodos, Oracle es incapaz de deducir cundo un objeto es mayor o menor que otro. Sin embargo, s puede determinar cundo dos objetos del mismo tipo son iguales. Para ello, el sistema compara el valor de los atributos de los objetos uno a uno: Si todos los atributos son no nulos e iguales, Oracle indica que ambos objetos son iguales. Si alguno de los atributos no nulos es distinto en los dos objetos, entonces Oracle dice que son diferentes. En otro caso, Oracle dice que no puede comparar ambos objeto

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 08.
Objetivo: Diseo multidimensional. ETL. Utilizacin de las funciones analticas en SQL. Cubos OLAP.

Sesiones: 2 (4h) 30/4, 7/5 Ejercicio: Una empresa multinacional con sede en Nueva York y en Londres se dedica a la venta y distribucin de productos delicatessen de todo el mundo. Esta empresa tiene en su sistema de gestin corporativo (BD Access) los pedidos realizados por sus clientes desde el ao 2002, cuando iniciaron su andadura, hasta mayo del 2004. Su objetivo es construir un Data Warehouse que le permita dar respuesta a cuestiones como las siguientes: Productos ms vendidos, ms rentables, nmero de unidades vendidas por pas, por empleado, por ao, etc. Comparativa de ventas del mismo producto en diferentes meses y pases. Evolucin de las ventas (entendido como uds vendidas en un periodo con respecto al anterior) realizadas en cada pas en los ltimos aos. Beneficios (y ratio) obtenidos por cada empleado y acumulado por jefe Volumen de negocio ofrecido a cada agencia de transporte Cul es el importe de pedido promedio por cliente? Cmo evoluciona nuestra cartera de clientes? En qu pases nos hemos introducido y en cuales hemos perdido cuota de mercado? Etc.

a) Realizar el diseo dimensional y generar el script para Oracle 10g.

b) Cargar la estrella con los datos suministrados en exportacion de operacional en oracle.sql.


Nota: crear un usuario/BD en Oracle para cargar la BD operacional y otro usuario/BD en Oracle para el data warehouse. Dotar a ste ltimo de permisos DBA o con permisos de lectura sobre la BD operacional creada anteriormente para poder leer de ella.

c) Realizar las siguientes consultas utilizando las funciones analticas en SQL: a. Productos ms vendidos, ms rentables (mayor margen comercial), nmero de unidades vendidas por pas, por ao, por empleado, etc. b. Incorporar los totales por pas a las consultas anteriores. c. Buscar el producto del que ms unidades se vendieron en cada ao (utilizar funcin RANK()). d. Conocer los productos de Argentina que se encuentran en el cuarto cuartil por margen de beneficios. e. Obtener los ingresos de ventas por trimestre y acumulado por ao. f. Comparativa de ventas del mismo producto en diferentes aos y pases.
Universidad de Cantabria Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

g. Evolucin de las ventas realizadas en cada pas en los ltimos aos, entendido como uds. vendidas en un periodo con respecto al anterior (ventas ao 2009 ventas ao 2010/ ventas ao 2010). h. Volumen de negocio ofrecido a cada agencia de transporte i. Cul es el importe de pedido promedio por cliente y ao? j. Cmo evoluciona nuestra cartera de clientes? Incremento del n de clientes de un ao respecto al anterior. En qu pases nos hemos introducido y en cuales hemos perdido cuota de mercado? k. Beneficios (y ratio) obtenidos por cada empleado y acumulado por jefe d) Pasos para el diseo, procesamiento y uso del cubo OLAP que permita responder a las preguntas anteriores (Marta).

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

PRCTICA 09.
Objetivo: Uso del lenguaje SQL/XML para construir instancias XML de datos relacionales. Definicin de tablas y columnas de tipo XMLType. Uso de funciones de manipulacin sobre el tipo de dato XMLType. Registro de schemas XML.

Sesiones: 2 (4h) 21 y 28 de mayo 2010 Ejercicio:

Informacin sobre las instrucciones SQL/XML en Oracle http://www.mcs.csueastbay.edu/support/oracle/doc/10.2/appdev.102/b14259/xdb13 gen.htm#sthref1494

1.

Utilizando el esquema de la BD restaurante realizar las siguientes consultas. El objetivo es comprobar el funcionamiento de las funciones SQL/XML y de las incorporadas por Oracle. 1.1. Crea una instancia XML con el nombre, apellido y dni de cada empleado.

1.2. Crea la instancia xml anterior, poniendo el DNI como atributo en vez de como elemento. 1.3. Crea una instancia XML para cada restaurante con el nombre y primer apellido del director concatenado en un solo elemento. 1.4. Crea una instancia XML para cada restaurante indicando el n de reservas que tiene. 1.5. Se ejecuta la consulta anterior pero utilizando XMLFOREST en vez de XMLELEMENT. Recordad que XMLFOREST no permite incluir atributos 1.6. Crea una instancia XML que muestre todos los empleados del restaurante.

1.7. Crea una instancia XML para cada ciudad con los restaurantes que tiene en ella. 1.8. Ahora obtn la consulta anterior pero construyendo instancias XML bien formadas 1.9. Ahora haz uso de XMLCOLATTVAL para construir instancias XML sin utilizar XMLELEMENT 1.10. Resolver el punto anterior pero creando un solo documento XML en vez de tantas instancias como filas devuelva la consulta

2.

Creacin de tabla con columna XMLType y uso del lenguaje de manipulacin. 2.1. Se crear la tabla siguiente: create table empleado_cv (id_emple number(6,0) primary key, cv xmltype) 2.2. Y se insertarn las instancias XML

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

<DatosPersonales> <Nombre>Juan</Nombre> <Apellido1>Fernandez</Apellido1> <Apellido2>Miguel</Apellido2> <FechaNac>01-01-2000</FechaNac> <Direccion caracter="Trabajo"> <Calle>c/ San Juan 23</Calle> <DatosPersonales> <Nombre>Nerea</Nombre> <Apellido1>Garca</Apellido1> <Apellido2>Maode</Apellido2> <FechaNac>01-01-1989</FechaNac> <Direccion caracter="Trabajo"> <Calle>c/ Azucenas 22</Calle>

<Localidad>Leganes</Localidad> <CodigoPostal>28120</CodigoPostal> <Pais>Espana</Pais> </Direccion> <Direccion caracter="Particular"> <Calle>c/ San Juan 25</Calle>

<Localidad>Madrid</Localidad> <CodigoPostal>28080</CodigoPostal> <Pais>Espana</Pais> </Direccion> </DatosPersonales>

<Localidad>Vallecas</Localidad> <CodigoPostal>28320</CodigoPostal> <Pais>Espana</Pais> </Direccion> </DatosPersonales>

2.3. A continuacin, obtener la fecha de nacimiento de estos empleados (tag y valor). 2.4. 2.5. Buscar cuntos empleados son de Legans. Buscar el nombre y la direccin de trabajo de los empleados. utilizando

2.6. Buscar las direcciones de los empleados de Espaa XMLSequence(). Ver la diferencia en el resultado al usar EXTRACT. 2.7. 2.8. Actualizar la fecha de nacimiento del empleado 1004. Borrar de este mismo empleado el nodo Direccion.

Nota: La funcin XMLQuery solo funciona en versin de Oracle 10g, no en Express

3.

Registro de schema XML y creacin de tabla basado en l. Hay que tener el rol de DBA. (se requiere ORACLE 10g) 3.1. Crear el directorio donde se encuentra el esquema XSD

3.2. Se registrar el schema cv.xsd (observad que dispone ya del espacio de nombres de Oracle) 3.3. A continuacin se analizar el schema XML registrado y se observarn los tipos de objeto creados. 3.4. Se insertar el fichero cv.xml y se consultar que se ha insertado en la tabla CV creada

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

3.5. Se insertar otro fichero xml que no sea coherente con el schema para verificar que da error.

3.6.

Se realizarn las siguientes consultas con la funcin XMLQuery

3.6.1. Devolver los datos personales del CV con DNI=12345678 3.6.2. Devolver la calle, localidad y una etiqueta indicando si es espaol o no de las personas con CV cuyo primer apellido es Zorrilla

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Bases de Datos Avanzadas. Ingeniera Informtica

curso 2010/11

Nota: XQuery is not available in XE due to a dependancy on Java in the database. We use a Java based parser even they the XQuery engine is in 'C'. This limitation will be removed in a future release of the database 8 (no dates)

Para registrar schemas de forma global hace falta ser sysadm, pero para local no s qu rol puede. Con el usuario EjXML no lo consigo El esquema de restaurante est bajo el esquema de bd denominado examen/examen

Universidad de Cantabria

Marta Zorrilla, Diego Garca

Das könnte Ihnen auch gefallen