Enunciado de la práctica B3 - Departamento de Informática y Sistemas

Anuncio
3º Ingeniero Técnico en Informática de Sistemas
Asignatura: Fundamentos de Bases de Datos
Facultad de Informática
Curso: 2007/08
PRÁCTICA B3. Programación en PL/SQL
Objetivos
• Comprender los conceptos y estructuras de programación de PL/SQL (extensión procedural del SQL
de Oracle): bloques, cursores, excepciones, estructuras de selección e iteración, etc.
• Construir, ejecutar y depurar código PL/SQL: bloques anónimos, procedimientos, funciones,
paquetes (packages), disparadores (triggers), etc.
Contenidos
Esta práctica consiste en la resolución de una serie de ejercicios de programación en PL/SQL de Oracle,
sobre el esquema de bases de datos que cada grupo de prácticas haya creado durante la práctica B2.
Definición y modificación de datos en SQL (CONCESIONARIOS DE COCHES).
Normas importantes y obligatorias para resolver los ejercicios
‰
‰
‰
‰
‰
‰
Es importante cuidar el estilo de programación PL/SQL. Por ejemplo, es una mala costumbre
(aunque funcione) hacer un FETCH de un cursor que ya está vacío, no es necesario usar un CURSOR
para hacer una consulta que devuelve una única fila, no es necesario hacer un SELECT COUNT para
obtener el número total de filas de un CURSOR cuando dicho total se puede obtener incrementando
una variable en cada iteración, etc..
También es importante elegir el algoritmo más adecuado en cada ejercicio. No es suficiente con que
el ejercicio funcione (aunque sea al estilo “fuerza bruta”).
No se puede usar tablas temporales para almacenar resultados intermedios.
Insertar en las tablas los datos necesarios para que se obtengan resultados que permitan comprobar
que los ejercicios funcionan.
No dedicar demasiado esfuerzo en formatear o tabular la salida por pantalla; es suficiente con que
sea legible.
Todos los objetos (funciones, procedimientos, paquetes y disparadores de BD) han de estar creados en la BD,
en la cuenta Oracle10g del grupo de prácticas (fbdsXXX, sustituyendo XXX pro el número de grupo asignado).
Fecha de entrega
21 de enero de 2008.
3º I. T. Informática de Sistemas. Fundamentos de Bases de Datos.
Práctica B3. Programación en PL/SQL- 1
Ejercicios
1. Mostrar por pantalla, a doble columna, los nombres de todos los vendedores y los nombres
de todos los clientes. Ambas columnas han de estar ordenadas alfabéticamente y mostrarse de
la forma que se indica a continuación. Tenga en cuenta que puede haber distinto número de
vendedores que de clientes. Note que el listado también debe incluir los totales que se indican
(número de vendedores y número de clientes que hay).
<número de> VENDEDORES
<número de> CLIENTES
-------------------------------------------------------------------------<nombre vendedor 1>
<nombre cliente 1>
...
<nombre vendedor n>
...
<nombre cliente m>
2. Mostrar por pantalla, para cada marca sus modelos y para cada concesionario sus
vendedores, indicando para cada concesionario si es el principal o no de la marca y para cada
vendedor el número de coches que ha vendido, con el formato que se muestra a continuación.
Note que el listado también debe incluir los contadores que se indican (número de
concesionarios y de vendedores de cada marca, y número de marcas, concesionarios y
vendedores que hay en total).
Este ejercicio hay que usar cursores parametrizados.
MARCA <nombre de la marca>
--CONCESIONARIOS:
----<nombre del concesionario> <PRINCIPAL/NO PRINCIPAL>
---- ...
----VENDEDORES:
------<nombre del vendedor>, COCHES VENDIDOS <número de>
------ ...
----<nombre del concesionario> <PRINCIPAL/NO PRINCIPAL>
...
--<número de> CONCESIONARIOS Y <número de> VENDEDORES
MARCA <nombre de la marca>
...
TOTAL:
<número de> MARCAS
<número de> CONCESIONARIOS
<número de> VENDEDORES
3. Escribir una función llamada cuantos_coches, que dado el identificador de un cliente,
devuelva ‘CLIENTE SIN COCHE’ si está en la tabla CLIENTE pero todavía no ha comprado
ningún coche, la matrícula del coche que ha comprado si es un cliente que ha comprado un solo
coche, ‘CLIENTE CON <número de> COCHES’ si es un cliente que ha comprado más de un
coche, y ‘CLIENTE INEXISTENTE’ si no está en la tabla CLIENTE.
3º I. T. Informática de Sistemas. Fundamentos de Bases de Datos.
Práctica B3. Programación en PL/SQL- 2
Este ejercicio hay que hacerlo manejando excepciones. No se puede usar sentencias SELECT
COUNT.
4. Escribir un procedimiento llamado vendedores que muestre para cada vendedor, con el
formato que se indica a continuación, los vendedores de los que dicho vendedor es jefe. Tenga
en cuenta que quizá sea necesario utilizar otro procedimiento auxiliar recursivo.
<nombre vendedor a>, SIN JEFE
--<nombre vendedor b>, CUYO JEFE ES <nombre vendedor a>
-----<nombre vendedor c>, CUYO JEFE ES <nombre vendedor b>
--------<nombre vendedor d>, CUYO JEFE ES <nombre vendedor c>
--------<nombre vendedor e>, CUYO JEFE ES <nombre vendedor es c>
-----<nombre vendedor f>, CUYO JEFE ES <nombre vendedor b>
--<nombre vendedor g>, CUYO JEFE ES <nombre vendedor a>
-----<nombre vendedor h>, CUYO JEFE ES <nombre vendedor g>
--------<nombre vendedor i>, CUYO JEFE ES <nombre vendedor h>
<nombre vendedor j>, SIN JEFE
...
5. Escribir los triggers de BD necesarios para impedir que un concesionario pueda tener en la
tabla CATALOGO modelos que no sean de su marca. Tenga en cuenta que un concesionario
puede cambiar de marca.
6. Añadir un campo llamado num_coches_vendidos a la tabla VENDEDOR. Actualizarlo con el
número actual de coches que cada vendedor ha vendido hasta el momento, y escribir los
triggers de BD necesarios para mantener automáticamente actualizado dicho campo a partir de
ese momento.
3º I. T. Informática de Sistemas. Fundamentos de Bases de Datos.
Práctica B3. Programación en PL/SQL- 3
Documentación que se debe entregar
La entrega se realizará mediante SUMA, antes de la fecha límite indicada.
En el área privada (“Mis Contenidos”) de la asignatura, todos los miembros de cada grupo crearán una
carpeta denominada “practicas”. Dentro de esta carpeta, crearán una subcarpeta que se denominará “b3PLSQL”. En esta carpeta (insistimos: cada miembro de cada grupo) depositará el informe de realización
de la práctica junto con el conjunto de guiones (scripts) SQL. El formato de estos ficheros será el
siguiente:
- Informe de la práctica. Documento llamado “b3-fbdsXXX” (.doc o .rtf), cuyas páginas han de estar
numeradas y que deberá incluir…
‰ Portada, que incluya:
- asignatura, curso académico (2007/08) y convocatoria (junio, septiembre, febrero),
- identificador (B3) y nombre de la práctica (PRÁCTICA B3. Programación en PL/SQL),
- nombre del grupo de prácticas (fbdsXXX, sustituyendo XXX por el número de grupo asignado),
- nombre y apellidos de cada componente del grupo,
- dirección de correo electrónico de cada integrante del grupo de prácticas.
‰ Para cada uno de los 6 ejercicios deberá aparecer lo siguiente:
- Número de ejercicio y enunciado del ejercicio.
- Comentarios y aclaraciones que se consideren necesarios.
- Código PL/SQL, perfectamente sangrado y fácilmente legible.
- Pruebas para comprobar el correcto funcionamiento del ejercicio. Concretamente...
- Para los ejercicios 1, 2 y 4, mostrar lo que sale por pantalla al ejecutarlos.
- Para el ejercicio 3, probar todos los posibles resultados de la función.
- Para los ejercicios 5 y 6, probar todos los eventos de cada uno de los triggers creados.
Se pueden presentar varias soluciones alternativas de un mismo ejercicio. Puede indicarse la que
se considera más adecuada.
Es posible ayudarse del comando spool de SQL*Plus para la elaboración del informe.
- Guiones PL/SQL (scripts). Ha de crearse un guión (fichero de texto plano) por cada ejercicio, llamado
‘b3-nn.sql’ (nn es el nº de ejercicio), que contendrá…
- Número de ejercicio.
- Enunciado del ejercicio.
- Comentarios y aclaraciones que se consideren oportunos.
- Código PL/SQL, perfectamente sangrado y fácilmente legible.
- Ejemplos que se consideren oportunos para comprobar el correcto funcionamiento del ejercicio.
- NO DEBE APARECER el resultado de la ejecución de las sentencias.
Criterios de evaluación
Es obligatorio entregar, vía SUMA, tanto el informe de la práctica como todos los guiones (scripts
PL/SQL): no se corregirá la práctica si no se ha presentado la documentación completa.
Es obligatorio presentar la solución de todos los ejercicios.
La lectura del informe ha de ser suficiente para la comprensión total del trabajo realizado en la práctica
(sin necesidad de recurrir a los guiones).
Se valorará la inclusión de varias soluciones alternativas cuando haya lugar a ello, la justificación de las
mismas y la presentación (estilo) de la práctica.
Es obligatorio respetar estrictamente las normas y el formato de
presentación de la práctica detallados en este documento
3º I. T. Informática de Sistemas. Fundamentos de Bases de Datos.
Práctica B3. Programación en PL/SQL- 4
Descargar