Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Práctica de bases de datos: uso del lenguaje SQL II, Ejercicios de Programación de Bases de Datos

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

2020/2021

Subido el 07/09/2022

AlfinduL
AlfinduL 🇪🇸

5 documentos

1 / 3

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Uso de bases de datos
Práctica 2: El lenguaje SQL II
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, ynum_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.
1
pf3

Vista previa parcial del texto

¡Descarga Práctica de bases de datos: uso del lenguaje SQL II y más Ejercicios en PDF de Programación de Bases de Datos solo en Docsity!

Uso de bases de datos

Práctica 2: El lenguaje SQL II

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.

Pregunta 1 (50 % puntuación)

Enunciado

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 );

Criterios de evaluación

● 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.