Este taller reúne 100 ejercicios de álgebra relacional organizados en 10 niveles de dificultad progresiva. El dataset UniversidadCompleta modela un sistema académico real con estudiantes, cursos, profesores, inscripciones y prerrequisitos, lo que permite formular desde consultas elementales de selección hasta razonamientos complejos con división, self-join y cuantificadores universales. Los niveles 1 a 6 se trabajan en clase; los niveles 7 a 10 son de práctica avanzada y constituyen el tipo de pregunta esperada en exámenes.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/tutosrive/db-relacionales-2026-1/llms.txt
Use this file to discover all available pages before exploring further.
Herramienta
RelaX — Relational Algebra Calculator
Calculadora interactiva de álgebra relacional. Carga el dataset completo con el Group Editor antes de comenzar.
Antes de intentar cualquier ejercicio, carga el dataset en RelaX usando el Group Editor: pega el bloque completo de la sección siguiente y pulsa “use this group”. Todas las relaciones del modelo académico quedarán disponibles de inmediato.
Dataset: UniversidadCompleta
Diagrama de relaciones
| Relación | Descripción | Cardinalidad |
|---|---|---|
estudiante | Estudiantes activos | 12 tuplas |
egresado | Estudiantes graduados | 4 tuplas |
intercambio | Estudiantes de intercambio | 4 tuplas |
profesor | Planta docente | 6 tuplas |
curso | Catálogo de cursos obligatorios | 10 tuplas |
electiva | Catálogo de cursos electivos | 4 tuplas |
inscribe | Inscripciones con nota | 20 tuplas |
aprobado | Inscripciones con nota aprobatoria | 6 tuplas |
reprobado | Inscripciones con nota reprobatoria | 4 tuplas |
dicta | Asignación profesor–curso–grupo | 10 tuplas |
prerrequisito | Dependencias entre cursos | 6 tuplas |
amistad | Pares de estudiantes amigos | 8 tuplas |
salon | Ubicación física de cada curso | 10 tuplas |
Ejercicios por nivel
Nivel 1 — Selección y Proyección (σ, π)
Nivel 1 — Selección y Proyección (σ, π)
El nivel 1 trabaja sobre una sola relación a la vez. Los operadores σ (selección) y π (proyección) son los bloques fundamentales: σ filtra filas según una condición booleana y π elige las columnas que aparecen en el resultado.Ejercicios de muestra:1. Nombres de todos los estudiantesProyecta únicamente la columna
2. Estudiantes de ManizalesRetiene solo las filas donde
3. Cursos de 4 créditosResultado: Programacion (202), Calculo (204), Fisica (205), Control (207), IA (210).
4. Nombre y carrera de estudiantes de PereiraPrimero selecciona los estudiantes de Pereira (Luis, Mateo) y luego proyecta solo nombre y carrera.
5. Estudiantes de semestre mayor a 4Resultado: Luis (6), Julian (7), Camilo (5), Mateo (8), Daniel (6), Sara (5).
Los ejercicios 6 a 10 del nivel 1 aplican condiciones compuestas (AND/OR), rangos numéricos y proyecciones combinadas.
nombre de toda la relación estudiante.2. Estudiantes de Manizales
ciudad = 'Manizales'. Resultado: Ana, Marta, Sofia, Sara.3. Cursos de 4 créditos
4. Nombre y carrera de estudiantes de Pereira
5. Estudiantes de semestre mayor a 4
Los ejercicios 6 a 10 del nivel 1 aplican condiciones compuestas (AND/OR), rangos numéricos y proyecciones combinadas.
Nivel 2 — Operaciones de conjuntos (∪, ∩, −)
Nivel 2 — Operaciones de conjuntos (∪, ∩, −)
El nivel 2 introduce las operaciones de conjuntos: unión (∪), intersección (∩) y diferencia (−). Recuerda que los operandos deben ser compatibles por unión: mismo número de atributos y dominios correspondientes.Ejercicios de muestra:1. Ciudades donde hay estudiantes de Sistemas o de IndustrialAmbas subexpresiones producen un conjunto de ciudades (mismo esquema), por lo que la unión es válida. Resultado: Manizales, Bogota, Pereira, Armenia.
2. Cursos del departamento ComputacionResultado: BasesDatos (201), Programacion (202), Redes (203), IA (210).
3. Concepto de unión — cursos de cómputo y cursos de electrónicaIlustra cómo ∪ combina dos categorías en un solo resultado sin duplicados.
4. Carreras que tienen estudiantes pero que no están entre los inscritos en ningún cursoEste ejercicio es conceptual: usa la diferencia (−) entre el conjunto de IDs del ladoResultado: conjunto vacío — con el dataset completo todos los estudiantes tienen al menos una inscripción registrada.
Los ejercicios 5 a 10 del nivel 2 combinan las tres operaciones de conjuntos sobre proyecciones diversas.
2. Cursos del departamento Computacion
3. Concepto de unión — cursos de cómputo y cursos de electrónica
4. Carreras que tienen estudiantes pero que no están entre los inscritos en ningún cursoEste ejercicio es conceptual: usa la diferencia (−) entre el conjunto de IDs del lado
estudiante y el conjunto de IDs del lado inscribe. Los estudiantes que nunca han inscrito ningún curso no aparecerán en inscribe.Los ejercicios 5 a 10 del nivel 2 combinan las tres operaciones de conjuntos sobre proyecciones diversas.
Nivel 3 — Join básico (⨝)
Nivel 3 — Join básico (⨝)
El nivel 3 introduce el join natural y el join con condición explícita para combinar dos relaciones. La mayoría de las preguntas de interés real requieren cruzar al menos dos tablas.Ejercicios de muestra:1. Nombres de estudiantes junto con los cursos que han inscrito
2. Estudiantes inscritos en el curso BasesDatosResultado: Ana, Marta, Mateo.
3. Profesores que dictan al menos un cursoResultado: Ruiz, Garcia, Torres, Lopez, Martinez, Castro.
4. Estudiantes y sus notas (con renombramiento explícito)El renombramiento
Los ejercicios 5 a 10 del nivel 3 añaden condiciones de selección dentro del join y proyecciones sobre más atributos.
2. Estudiantes inscritos en el curso BasesDatos
3. Profesores que dictan al menos un curso
4. Estudiantes y sus notas (con renombramiento explícito)
ρE y ρI evita ambigüedad al referenciar atributos en la condición del join.Los ejercicios 5 a 10 del nivel 3 añaden condiciones de selección dentro del join y proyecciones sobre más atributos.
Nivel 4 — Join múltiple (3+ relaciones)
Nivel 4 — Join múltiple (3+ relaciones)
El nivel 4 encadena tres o más relaciones en una sola expresión. El reto es mantener los prefijos de atributo correctos y elegir el orden de join que sea más legible.Ejercicios de muestra:1. Nombres de estudiantes, nombre del curso y edificio del salónCombina cuatro relaciones para obtener el nombre del alumno, el nombre del curso que toma y el edificio donde se dicta.
2. Profesores y los estudiantes inscritos en sus cursos
3. Cursos con su profesor y su salón
Los ejercicios 4 a 10 del nivel 4 incluyen filtros σ intercalados para reducir el tamaño de los resultados intermedios.
2. Profesores y los estudiantes inscritos en sus cursos
3. Cursos con su profesor y su salón
Los ejercicios 4 a 10 del nivel 4 incluyen filtros σ intercalados para reducir el tamaño de los resultados intermedios.
Nivel 5 — Diferencia real (−)
Nivel 5 — Diferencia real (−)
El nivel 5 se enfoca en la diferencia de conjuntos (−), útil para preguntas del tipo “¿quién NO cumple cierta condición?”. El patrón típico es: calcular el universo completo → calcular el subconjunto que SÍ cumple la condición → restar.Ejercicios de muestra:1. Estudiantes que nunca han reprobado (ninguna nota menor a 3.0)Con el dataset actual, los estudiantes con nota inferior a 3.0 en
2. Profesores que no dictan ningún cursoResultado: ninguno en el dataset actual (todos los profesores tienen al menos un curso asignado).
3. Cursos que nadie ha inscritoResultado: Fisica (205), Control (207) — son los únicos cursos del catálogo que no aparecen en ninguna fila de
Los ejercicios 4 a 10 del nivel 5 combinan diferencia con join para expresar negaciones más complejas.
inscribe son Luis (2, cod 204) y David (12, cod 206). Para recuperar el nombre: join con estudiante.2. Profesores que no dictan ningún curso
3. Cursos que nadie ha inscrito
inscribe.Los ejercicios 4 a 10 del nivel 5 combinan diferencia con join para expresar negaciones más complejas.
Nivel 6 — Self-Join (ρ obligatorio)
Nivel 6 — Self-Join (ρ obligatorio)
El nivel 6 trabaja con self-joins: consultas donde una relación se une consigo misma. Esto requiere usar el operador de renombramiento ρ para crear dos “copias” con nombres distintos.¿Cuándo usar self-join? Cuando la pregunta involucra comparar tuplas de la misma relación entre sí, por ejemplo: “estudiantes que viven en la misma ciudad” o “pares de amigos que estudian la misma carrera”.Ejercicio 1 — Pares de estudiantes que viven en la misma ciudadEsto genera todos los pares (A, B) donde A y B viven en la misma ciudad. Para excluir el par de un estudiante consigo mismo, añade la condición
Ejercicio 2 — Amigos que estudian la misma carreraLa relaciónEl join final
Los ejercicios 3 a 10 del nivel 6 incluyen self-joins sobre
A.id ≠ B.id.Ejercicio 2 — Amigos que estudian la misma carreraLa relación
amistad registra pares (id1, id2). Para saber si dos amigos estudian la misma carrera necesitas hacer self-join sobre estudiante:E1.carrera=E2.carrera garantiza que solo aparezcan pares de amigos con la misma carrera.Los ejercicios 3 a 10 del nivel 6 incluyen self-joins sobre
prerrequisito para encontrar cadenas de dependencia entre cursos.Niveles 7–10 — Avanzados (prerrequisitos, razonamiento complejo, examen)
Niveles 7–10 — Avanzados (prerrequisitos, razonamiento complejo, examen)
Los últimos cuatro niveles son de práctica intensiva y representan el grado de complejidad esperado en evaluaciones del curso.Ejemplo Nivel 7 — Cursos que tienen exactamente dos prerrequisitosEn RelaX, la condición de desigualdad se escribe con La división retorna los IDs de estudiantes que tienen una inscripción para cada curso de Computacion (201, 202, 203, 210). Con el dataset actual ningún estudiante tiene los cuatro: Ana (1) inscribió 201, 202, 210 pero no 203; Marta (3) tiene 201 y 203 pero no 202 ni 210; Sara (11) tiene 202, 203, 210 pero no 201 → la división devuelve un resultado vacío.
Los 40 ejercicios de los niveles 7–10 están disponibles en el archivo
Nivel 7 — Prerrequisitos
Consultas sobre la relación
prerrequisito: cursos que requieren exactamente dos prerrequisitos, cadenas de dependencia de dos saltos, cursos que son prerrequisito de al menos N cursos. Requiere self-join sobre prerrequisito.Nivel 8 — Razonamiento intermedio
Combinaciones de diferencia + join + proyección. Típicas preguntas: “estudiantes que han inscrito todos los cursos de su departamento” (requiere división), “cursos que tienen prerrequisito pero no tienen salón asignado”.
Nivel 9 — Avanzado
Expresiones de cinco o más operaciones encadenadas. Incluye división (÷) con divisores construidos dinámicamente, diferencias sobre resultados de join y consultas de cuantificador universal.
Nivel 10 — Tramposos
Ejercicios diseñados para explotar errores comunes: confundir join natural con producto cartesiano, olvidar el operador ρ en self-joins, precedencia incorrecta de operadores, y proyecciones que eliminan información necesaria para joins posteriores.
!=. Este tipo de expresión aparece en el examen final.Ejemplo Nivel 9 — Estudiantes que han inscrito TODOS los cursos del departamento ComputacionLos 40 ejercicios de los niveles 7–10 están disponibles en el archivo
Repasos/algebra-relacional/dataset-ejercicios-chat-one-to-100.relax del repositorio del curso.Guía rápida de sintaxis en RelaX
| Operador | Símbolo matemático | Sintaxis RelaX |
|---|---|---|
| Selección | σ condición (R) | σ atributo='valor' (R) |
| Proyección | π a, b (R) | π col1, col2 (R) |
| Join natural | R ⨝ S | R ⨝ S |
| Join con condición | R ⨝ cond S | R ⨝ R.a=S.b S |
| Producto cartesiano | R × S | R × S |
| Unión | R ∪ S | R ∪ S |
| Intersección | R ∩ S | R ∩ S |
| Diferencia | R − S | R - S |
| División | R ÷ S | R / S |
| Renombramiento | ρ alias (R) | ρ Alias (R) |