IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde.
Curso 2024-25
EXAMEN 2º EVALUACIÓN UNIDAD 05
BASES DE DATOS
Apellidos: Perea Márquez Nombre: Fco Antonio
Entregar:
Un documento PDF (usar una plantilla) con el nombre
BDUnid05_ExamenApellido1Nombre.pdf, con la resolución de cada: sentencia
SQL + captura de pantalla de salida (DBeaver/MySQL Workbench
preferentemente).
Script de los objetos creados: bdclinica_iniciales_obj.sql (donde iniciales
son tus iniciales del nombre y apellidos).
Base de datos 1º DAW IES Alixar 1
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
EJERCICIOS
Dada el siguiente modelo de base de datos (bdclinica_Iniciales.sql) resuelve cada uno de los
apartados incluyendo sentencia SQL + captura de pantalla de salida
NOTA IMPORTANTE: No se corregirá el examen si no se ha realizado el cambio
de nombre de la base de datos según las siguientes especificaciones:
Antes de ejecutar el script de creación de la base de datos hay que cambiar el nombre
de la base de datos, el nombre en el script es CLINICA_INICIALES, hay que cambiar
INICIALES por tus iniciales de tu nombre y apellidos, por ejemplo, si el tu nombre es
MARÍA PEZ CIELO, el nombre de la base de datos será CLINICA_MPC.
Hay que incluir una captura de pantalla de dicha modificación.
Base de datos 1º DAW IES Alixar 2
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
Realizar los siguientes procedimientos, funciones y disparadores (triggers), sobre la
base de datos anterior:
Aparte de incluir las capturas de pantalla en el documento pdf de los
objetos creados y ejecuciones realizadas, y hay que entregar un fichero SQL llamado
BDCLINICA_INICIALES_OBJ.SQL (INICIALES, son tus iniciales de nombre y apellidos)
con todos los objetos creados.
Hay que poner el sufijo _INICIALES a cada uno de los procedimientos, funciones o
disparadores a realizar. Por ejemplo, si tienes que crear un procedimiento llamado
Calcular_Num_Empleados, se tendrá que poner el nombre
Calcular_Num_Empleados_Iniciales, donde Iniciales son tus iniciales del nombre y
apellidos. (IMPORTANTE: No se corregirá aquellos objetos que no lleven el
nombre según las especificaciones solicitadas).
1. Ejercicio 1 Procedimientos:
1.1. (1 punto) Procedimiento lista_clientes_iniciales: Crea un procedimiento de nombre
lista_clientes_iniciales que devuelva la población, el nombre y apellidos de los clientes separados
por coma con el formato: apellido1, apellido2, nombre ordenados de forma descendente por
población. Realizar una llamada ejemplo al procedimiento. 0,6 puntos
No se solicita la entrada
de ningún parámetro, y
los datos en el concat
cada campo separado
por ",".
Base de datos 1º DAW IES Alixar 3
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
1.2. (1 punto) Procedimiento lista_clientes_mascotas_iniciales: Crea un procedimiento de nombre
lista_clientes_mascotas_iniciales que devuelva los clientes y sus mascotas, y campos a recuperar
en el listado son: id_cliente, nombre del cliente, apellido1, apellido2, nombre de la mascota,
tipo_animal, raza y peso. Ordenar por tipo_animal ascendente.
Realizar una llamada ejemplo al procedimiento.
1.3. (1 punto) Procedimiento modifica_fecha_visita_iniciales: Crea un procedimiento de nombre
modifica_fecha_visita_iniciales, que realice la modificación de la fecha de visita de una mascota.
Se pasará por parámetro, el nombre de la mascota, la fecha actual de visita y la fecha nueva de
visita a actualizar.
Se debe validar que exista la mascota y la fecha de visita actual para realizar la modificación. Para
validar se puede utilizar la función row_count. Realizar una llamada ejemplo al procedimiento.
2,5 puntos
(No esta terminado)
2. Ejercicio 2 Funciones:
2.1. (1 punto) Función estado_pago_visitas_iniciales: Crear una función de nombre
estado_pago_visitas_iniciales que controle si el pago fue realizado antes de la visita o después
de la visita. A la función se le pasarán dos fechas (fecha de pago, y fecha de visita), cuando la
diferencia de días sea menor a 0 se devolverá “PREPAGADO” y si es mayor que cero
“POSTPAGADO”, y si es NULL “PENDIENTE”. Realizar una consulta a la tabla visita_clinica,
utilizando la función. 1 punto
Base de datos 1º DAW IES Alixar 4
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
No puedo mostrar el select ya que no detecta el case y no pude arreglarlo.
2.2. (1 punto) Función valor_tratamiento_iniciales: Crear una función de nombre
valor_tratamiento_iniciales que nos informe si el tratamiento de una mascota es bajo, medio o
alto. A la función se le pasará un precio, y nos retornará:
0,75 puntos
- Si el precio es < 30 debe devolver 'BAJO’
- Si el precio está entre 30 y 60 debe devolver la cadena 'MEDIO’
- Si el precio es > 60 debe devolver la cadena 'ALTO'
Realizar una consulta de las visitas médicas, el tipo de tratamiento y en la que se utilice la
función valor_tratamiento_iniciales.
esta variable no hace falta.
donde pone v_ hay que poner p_
Base de datos 1º DAW IES Alixar 5
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
2.3. (1 punto) Función total_ganancias_iniciales: Crear una función de nombre
total_ganancias_iniciales, que dado un id de veterinario, obtenga la suma de las ganancias de las
visitas realizadas. Realizar una consulta de los veterinarios y en la que se utilice la función
total_ganancias_iniciales.
Hay que calcular el total de ganancias del veterinario informado por
parámetro.
Es una función y debe de tener
una sentencia return
3. Ejercicio 3 Triggers:
3.1. (1,5 puntos) Trigger control_ganancias_veterinario_iniciales: Crear un disparador o trigger de
nombre control_ganancias_veterinario_iniciales, que antes de insertar una visita_clinica, se
asigne al veterinario que tiene menor ganancias hasta la fecha. No se inserta y se informa un
mensaje de error: “Sólo se puede asignar visita al verterinario “ + id de veterinario + nombre y
apellidos. Realizar una inserción de visita clínica que cumpla las condiciones y otra que no
cumpla las condiciones e informe el mensaje de error del disparador.
Base de datos 1º DAW IES Alixar 6
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
3.2. (2,5 puntos) Trigger borrar_visita_clinica_iniciales: Crear un disparador o trigger de nombre
borrar_visita_clinica_iniciales, que antes de borrar se valide:
3.2.1. Aquellas visitas médicas que tenga la fecha de pago a null, no se podrán borrar, y se
informa el mensaje de error siguiente: “No se puede borrar la visita médica, pendiente de
pago”
3.2.2. Aquellas visitas médicas que estén pagadas pero su fecha de visita sea menor a 6
meses, no se podrán borrar, y se informa el mensaje de error: “No se puede borrar la visita
a la clínica, aún no han pasado 6 meses.”
3.2.3. Aquellas visitas médicas que estén pagadas y su fecha de visita sea mayor a 6 meses, se
podrán borrar, pero se inserta el registro de visita_clinica a borrar en la tabla
visita_clinica_hist.
Realizar la ejecución de 3 casos de borrado en la tabla visita_clinica que cada uno de ellos uno cumpla
las condiciones desarrolladas en el disparador.
(Todos los apartados están en la misma imagen)
Base de datos 1º DAW IES Alixar 7
IES Alixar. CFGS Desarrollo de Aplicaciones Web. Tarde. Curso 2024-25
ABS(MONTH(CURDATE()) - MONTH(OLD.FECHA_VISITA)) < 6
ABS(MONTH(CURDATE()) - MONTH(OLD.FECHA_VISITA)) > 6
Base de datos 1º DAW IES Alixar 8