

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Esta práctica consiste en el uso de procedimientos almacenados y disparadores en una base de datos existente. Se requiere recrear la base de datos y volver a insertar los datos iniciales utilizando los scripts proporcionados. Se añaden nuevas tablas y atributos, y se pide crear un procedimiento almacenado y un disparador para actualizar y mantener los datos en la base de datos.
Tipo: Ejercicios
1 / 3
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


En la primera parte de la práctica hemos realizado consultas y modificaciones sobre los datos utilizando SQL. En esta segunda parte, sobre la misma base de datos, añadiremos lógica dentro de la base de datos utilizando procedimientos almacenados y disparadores. Para la correcta ejecución de la segunda parte de la práctica, es necesario volver a crear la base de datos de nuevo e insertar otra vez los datos iniciales utilizando los scripts que se proporcionan junto a este enunciado. Este paso es necesario debido a la introducción de los cambios siguientes en el esquema de la BD respecto a la primera parte de la práctica: ● Creación de una nueva tabla llamada REPORT_BAND , con las columnas id_band, num_instruments , num_members_alive, longest_album_title, y num_short_songs. La columna id_band corresponde al identificador del grupo y es clave primaria. El resto de columnas se calculan en relación al grupo. Así pues, num_instruments es el número de instrumentos diferentes , sin incluir los vocalistas, que participan en el grupo, num_members_alive es el número de miembros del grupo que todavía están vivos , longest_album_title es el nombre del álbum que tiene una duración mayor, y por último num_short_songs es el número de canciones de menos de 3 minutos que tiene el grupo. Para este ejercicio tendremos en cuenta que todo álbum tiene al menos una canción. ● Tabla ALBUM : se ha añadido el atributo num_long_title_songs que representa el número de canciones del álbum que tienen un título con una longitud superior a 12 caracteres. Encontraréis las sentencias de creación y modificación de estas tablas en el archivo create_db.sql. Nota importante: El SQL implementado en PostgreSQL puede aceptar diferentes variantes de sintaxis, que además pueden diferir según la versión que instaléis, y que pueden ser o no SQL estándar. Evitad (excepto que se indique lo contrario) utilizar sentencias de este tipo, y concentraros en las que se explican en los módulos didácticos. Si usáis sentencias SQL estándar vuestro código funcionará en cualquier SGBD.
Se pide que creéis un procedimiento almacenado que, dado un nombre de grupo, actualice los datos que le hacen referencia y los almacene en la tabla REPORT_BAND creada con la ejecución del archivo create_db.sql , el cual deberéis ejecutar en primer término. Si ya existe una entrada en la tabla para el grupo ( id_band ), ésta se tendrá que modificar con los nuevos valores. Además de guardarlo en la tabla, el procedimiento devolverá el resultado del report. Se tendrá que informar al usuario con un mensaje específico cuando no exista ningún grupo con el nombre especificado. La firma del procedimiento pedido y el tipo que devolverá son los siguientes: CREATE OR REPLACE FUNCTION update_report_band(p_name VARCHAR(255)) RETURNS SETOF report_band_type donde report_band_type es de tipo: CREATE TYPE report_band_type AS ( t_id_band INTEGER, t_num_instruments INTEGER, t_num_members_alive INTEGER, t_longest_album_title VARCHAR(255), t_num_short_songs INTEGER );
● Las propuestas de solución que no se puedan ejecutar, es decir las que den error de sintaxis, no serán evaluadas. ● Se valorará positivamente el uso de sentencias SQL estándar, al margen de otros elementos que se puedan indicar en el enunciado. ● Para obtener la máxima nota, el código SQL de vuestra solución tiene que ser eficiente. Por ejemplo, se valorará negativamente realizar más joins de los necesarios. ● Para obtener la máxima nota, la propuesta de solución tiene que incluir pruebas que cubran todas las posibles situaciones descritas en el enunciado. Por ejemplo, se deberían cubrir todas las posibles situaciones de error. ● Para obtener la máxima nota, la propuesta de solución tiene que incluir los resultados, mediante el uso de capturas de pantalla o cualquier otro mecanismo similar.