Ejercicios de modelado lógico relacional de bases de datos · Ejercicio: (avanzado) Universidad

Ejercicio: (avanzado) Universidad

Puedes preparar tu diagrama. .

Enunciado #

Una universidad necesita gestionar su catálogo de cursos, los semestres en los que se ofrecen, los profesores asignados y las inscripciones de estudiantes. Un estudiante puede inscribirse en varios cursos cada semestre y volver a cursar una asignatura en otro semestre.

Datos que debes almacenar #

  • Estudiante: id_estudiante (entero, identificador), nombre (texto), apellido (texto), fecha_nacimiento (fecha) y carrera (texto).
  • Profesor: id_profesor (entero, identificador), nombre (texto), apellido (texto) y departamento (texto).
  • Curso: id_curso (entero, identificador), nombre (texto), creditos (entero) y departamento (texto).
  • Semestre: id_semestre (entero, identificador), nombre (texto; por ejemplo, Primavera 2026), fecha_inicio (fecha) y fecha_fin (fecha).
  • OfertaCurso: id_curso (entero), id_semestre (entero), id_profesor (entero) y fecha_asignacion (fecha).
  • Inscripcion: id_estudiante (entero), id_curso (entero), id_semestre (entero), fecha_inscripcion (fecha) y calificacion_final (decimal, opcional hasta la evaluación).

Reglas del negocio #

  1. Un curso puede ofrecerse en varios semestres. Para este ejercicio existe una sola oferta por combinación de curso y semestre, sin grupos paralelos.
  2. La PK de OfertaCurso es (id_curso, id_semestre). Cada oferta tiene exactamente un profesor y un profesor puede impartir muchas ofertas, incluso de cursos diferentes.
  3. La fecha de asignación pertenece a la oferta. No pongas un profesor fijo en Curso, porque puede cambiar entre semestres.
  4. La PK de Inscripcion es (id_estudiante, id_curso, id_semestre). Así un estudiante puede repetir un curso en otro semestre, pero no duplicar su inscripción en la misma oferta.
  5. En Inscripcion, (id_curso, id_semestre) forma una FK compuesta hacia OfertaCurso, de modo que solo se pueda matricular en un curso que realmente se ofrece ese semestre. Además, id_estudiante referencia a Estudiante.
  6. La calificación pertenece a la inscripción del estudiante en esa oferta; no es un atributo del estudiante ni del curso del catálogo.

Diseña las seis tablas. Representa los dos componentes de la FK de Inscripcion a OfertaCurso; no los sustituyas por conexiones independientes hacia el catálogo de cursos y los semestres.

Criterios para el challenge #

Conserva los nombres de tablas y campos indicados; los nombres de campos están escritos sin tildes y con guiones bajos. Los tipos entre paréntesis corresponden a las opciones del editor. Todos los campos son obligatorios (NN), salvo los marcados como opcionales; marca las claves primarias (PK), foráneas (FK) y las restricciones de unicidad que se deducen de las reglas.

Deja desactivados autoincremento, clave alternativa e índice. Deja vacíos el valor por defecto, las acciones ON DELETE y ON UPDATE y, salvo que se indique expresamente, CHECK. Usa los extremos 1 y n, o 1 y 1, en las conexiones; una FK opcional tiene NN desmarcado.

Una PK compuesta identifica por la combinación de sus campos: no marques cada componente como único por separado. Si una FK referencia una PK compuesta, dibuja una conexión por cada pareja de campos; todas juntas representan una única referencia a la misma fila. En una implementación SQL se debe declarar una sola FOREIGN KEY con todas esas columnas, no varias referencias independientes. El editor no comprueba por sí solo las reglas sobre varias filas ni todas las restricciones compuestas.

Cargando actividad al acercarte…