Uso de bases de datos
Servicio: Resolución / Universidad: UOC / Curso 2025/2026 Semestre 2Encarga la Resolución de PACs o PECs UOC
Modalidad Personalizada: 100 €/PAC, 200€/Práctica
Modalidad Compartida: 70€/PAC, 140€/Práctica
Encarga Exámenes Finales
- EX o PF de 2 horas: 👉 ENCARGAR EX
- PS de 1 hora: 👉 ENCARGAR PS
- PR o Práctica Final: 👉 ENCARGAR PR
Tips para resolver tus PACs
Tips para la PAC1 de Uso de bases de datos
- Antes de insertar una tupla en WINE o WINE_GRAPE, revisa que las claves foráneas (winery_id, grape_id) existan.
- Cuando elimines una tupla, verifica qué tablas se verán afectadas por cascadas o restricciones.
- Para condiciones complejas como “al menos dos variedades de uva” o pedidos con múltiples criterios, utiliza producto cartesiano X para comparar filas
Tips para la PAC2 de Uso de bases de datos
- Para resolver los ejercicios de horarios (schedules), no basta con saber qué hace cada sentencia; lo crucial es cuándo ocurre el COMMIT.
- Fíjate en el SELECT. Si al repetir la consulta los datos de una fila que ya existía han cambiado (ej. el nombre o el VAT), es Lectura No Repetible.
- Un horario puede ser perfectamente seriable (los datos finales son consistentes y "tienen sentido") pero ser un desastre en términos de recuperabilidad
Tips para la Práctica1 de Uso de bases de datos
- En la pregunta sobre la "Campaña de Navidad", verás que el PDF de teoría (R2) explica el uso de patrones con LIKE. Pero ojo: LIKE solo funciona con texto.
- Cuando te pidan contar "vinos diferentes" o "pedidos distintos" de un cliente, no basta con un COUNT(*). Debes usar COUNT(DISTINCT columna)
- La PAC pide mostrar incluso a los clientes que no han comprado nada. Si usas un JOIN normal, estos clientes desaparecerán de tu lista. Debes usar un LEFT JOIN
- En la pregunta 1 es indispensable el uso de la cláusula "CHECK"
- En la pregunta 2 resulta conveniente utilizar la cláusula "HAVING" para filtrar resultados de un "GROUP BY"
- En la pregunta 3 la manera más usual de resolverlo es usando JOINs y varias subconsultas
Tips para la Práctica2 de Uso de bases de datos
- En la Pregunta 1, no te limites a calcular datos. El código debe ser robusto: utiliza RAISE EXCEPTION para comprobar si el ID de la Denominación de Origen existe y si realmente tiene vinos asociados.
- Para la Pregunta 2, el criterio de evaluación es tajante: la eficiencia es la clave. En lugar de hacer un SUM de todas las líneas cada vez que algo cambie (lo cual es muy lento), utiliza la lógica incremental
- Lee con atención el enunciado del disparador: se busca actualizar el order_amount basándose en el precio de catálogo y sin aplicar descuentos.
- Al calcular el rendimiento y stock, no realices consultas aisladas para cada dato. La clave está en usar una CTE (WITH) que agrupe las ventas y los vinos de la PDO en un solo paso.
- En las preguntas sobre el vino más vendido o la categoría predominante, es fácil olvidar el escenario de empate.
- para que el order_amount sea real, el trigger debe responder igual de bien ante un borrado de línea o una modificación de cantidad.
Tips para la Práctica3 de Uso de bases de datos
- Cierra siempre Connection, Statement y ResultSet manualmente en bloques finally independientes
- Usa isBeforeFirst() para lanzar "List without data" si no hay filas, y reserva "List not available" para excepciones SQLException
- Desactiva el autoCommit al inicio de la Pregunta 2 y gestiona la transacción con commit() o rollback() según el éxito del fichero