Ejercicio 41: Consultas y Actualizaciones SQL en Bases de Datos Relacionales
Este ejercicio tiene como propósito que los estudiantes practiquen consultas SQL avanzadas y operaciones de actualización en bases de datos relacionales. Se trabajará con diferentes esquemas de bases de datos, aplicando filtrados, combinaciones de tablas, agregaciones y modificaciones de datos.
Objetivos
- Practicar la escritura de consultas SQL avanzadas.
- Realizar operaciones de actualización en bases de datos relacionales.
- Analizar y optimizar la estructura de bases de datos.
Entrada de Datos
- Esquema de base de datos empresarial que incluye tablas de empleados, departamentos y proyectos.
- Esquema de base de datos académica que incluye tablas de cursos, estudiantes e inscripciones.
Parte A: Consultas SQL en una Base de Datos Empresarial
Tareas
- Obtener los nombres de todos los empleados del departamento 5 que trabajen más de 10 horas por semana en el proyecto ‘ProductX’.
- Listar los nombres de todos los empleados que tengan un dependiente con el mismo nombre que ellos.
- Encontrar los nombres de todos los empleados que son directamente supervisados por ‘Franklin Wong’.
Parte B: Consultas SQL en una Base de Datos Académica
Tareas
- Obtener los nombres de todos los estudiantes de último año (Class = 4) cuya especialización sea ‘CS’ (Computer Science).
- Listar los nombres de todos los cursos impartidos por el Profesor King en los años 2007 y 2008.
- Para cada sección impartida por el Profesor King, obtener el número del curso, el semestre, el año y el número de estudiantes inscritos en la sección.
- Obtener el nombre y el historial académico (transcript) de cada estudiante de último año (Class = 4) en CS. El historial debe incluir el nombre del curso, número del curso, créditos, semestre, año y calificación en cada curso completado.
Parte C: Operaciones de Actualización en SQL
Tareas
- Insertar un nuevo estudiante en la base de datos con los siguientes datos: Nombre: Johnson, Edad: 25, Clase: 1, Especialización: Matemáticas.
- Cambiar la clase del estudiante Smith a 2.
- Insertar un nuevo curso en la base de datos con los siguientes datos: Nombre: Knowledge Engineering, Código: cs4390, Créditos: 3, Departamento: CS.
- Eliminar el registro del estudiante llamado Smith cuyo número de estudiante es 17.
Preguntas de Análisis Final
- ¿Cómo afectan estas operaciones a la integridad referencial de la base de datos?
- ¿Existen claves foráneas que deban considerarse al realizar las eliminaciones e inserciones?
- ¿Qué estrategias se pueden aplicar para optimizar las consultas en bases de datos grandes?
Código Base
-- TODO: Implementar las consultas y operaciones de actualización según las tareas especificadas.
Pruebas
Ejemplo de prueba para la tarea 1:
-- Consulta esperada para obtener los nombres de empleados del departamento 5 que trabajan más de 10 horas en 'ProductX'
SELECT e.nombre
FROM empleados e
JOIN proyectos p ON e.proyecto_id = p.id
WHERE e.departamento_id = 5 AND p.nombre = 'ProductX' AND e.horas > 10;
Ejemplo de prueba para la tarea 8:
-- Inserción esperada de un nuevo estudiante
INSERT INTO estudiantes (nombre, edad, clase, especializacion)
VALUES ('Johnson', 25, 1, 'Matemáticas');
Entrega Esperada
- Consultas SQL correctamente formuladas.
- Explicaciones claras de cada consulta y operación de actualización.
- Justificación de decisiones y análisis de restricciones de integridad.
- Reflexión sobre optimización y diseño de bases de datos.