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

  1. Obtener los nombres de todos los empleados del departamento 5 que trabajen más de 10 horas por semana en el proyecto ‘ProductX’.
  2. Listar los nombres de todos los empleados que tengan un dependiente con el mismo nombre que ellos.
  3. 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

  1. Obtener los nombres de todos los estudiantes de último año (Class = 4) cuya especialización sea ‘CS’ (Computer Science).
  2. Listar los nombres de todos los cursos impartidos por el Profesor King en los años 2007 y 2008.
  3. 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.
  4. 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

  1. Insertar un nuevo estudiante en la base de datos con los siguientes datos: Nombre: Johnson, Edad: 25, Clase: 1, Especialización: Matemáticas.
  2. Cambiar la clase del estudiante Smith a 2.
  3. Insertar un nuevo curso en la base de datos con los siguientes datos: Nombre: Knowledge Engineering, Código: cs4390, Créditos: 3, Departamento: CS.
  4. Eliminar el registro del estudiante llamado Smith cuyo número de estudiante es 17.

Preguntas de Análisis Final

  1. ¿Cómo afectan estas operaciones a la integridad referencial de la base de datos?
  2. ¿Existen claves foráneas que deban considerarse al realizar las eliminaciones e inserciones?
  3. ¿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.