Una tabla no alcanza: bienvenido a las relaciones 1:N
La hoja de la veterinaria que repite el teléfono de la dueña en cada fila. Cómo partir una tabla en dos, para qué sirve la clave primaria, de qué lado vive la clave foránea en una relación de uno a muchos y cómo se distingue de una de uno a uno.
Muchos a muchos: cuando ninguno de los dos «es dueño» del otro
El recetario que no sabe dónde poner la columna. Por qué una relación de muchos a muchos necesita una tabla intermedia, qué columnas lleva y qué datos viven en ella. Incluye el Reto 1.1: clasificar y dibujar cinco relaciones antes de escribir una sola línea de código.
SQLAlchemy: tus clases de Python se convierten en tablas
Instala SQLAlchemy y el driver de PostgreSQL, escribe la conexión una sola vez, convierte Alumno y Tarea en modelos unidos por una clave foránea y comprueba las tablas reales en la base. Incluye el Reto 1.2 (tu primer modelo) y el Reto 1.3 (la relación 1:N con ForeignKey y relationship).
La sesión: cómo el ORM habla con la base de datos por ti
El ciclo add, commit y query de la sesión del ORM: el gestor de siempre guardando en PostgreSQL, las cuatro formas de cerrar una consulta, el commit olvidado que no truena y el SQL que SQLAlchemy escribe por ti. Incluye el Reto 1.4: datos que sobreviven a cerrar el programa.
Transferencia · La liga de fútbol del callejón que sigue viviendo en una libreta
PARA ACREDITAR. Decide si cada relación de una liga de fútbol de barrio es 1:1, 1:N o N:M, en qué tabla vive cada clave foránea y cuándo hace falta una tabla intermedia, en un negocio que ves por primera vez y sin esqueleto que rellenar.
Transferencia · El taller de bicicletas que apunta las reparaciones en una pizarra
PARA ACREDITAR. Decide qué modelos SQLAlchemy necesita un taller de bicicletas, únelos con ForeignKey y relationship, y guarda y consulta sus datos con una sesión del ORM, en un negocio que ves por primera vez y sin esqueleto de código.
Sesión 1
Clase en vivo presencial de 3 horas (mar 20-oct). El molde y la charola: tus clases de Python se vuelven tablas de verdad, la relación uno a muchos con sus dos errores provocados a propósito, el commit que separa apuntar de guardar, y el Alta de la Oficina.
Avance parcial
Entrega al cierre de la Sesión 1: tus modelos Alumno, Tarea y TareaUrgente sobre PostgreSQL con la relación de uno a muchos navegable desde los dos lados, y el gestor de siempre guardando en la base.
Reto 2.1 · Emiliano quiere inscribir a la misma persona en dos cursos
Abre la Semana 8. Resuelve la relación de muchos a muchos entre alumnos y cursos con una tabla intermedia propia, Inscripcion, y léela desde los dos lados con alumno.cursos y curso.alumnos.
Normalización básica sin trauma: no copies el mismo dato dos veces
Detecta en una tabla única los datos que se repiten y repártelos en las tablas que faltan, con la primera, segunda y tercera forma normal en lenguaje llano. Incluye el Reto 2.2: mudar una tabla heredada a tres tablas sin perder una fila.
Alembic: pon tu base bajo control de versiones
Cambia el script que borra y recrea tus tablas por un historial de migraciones: instala Alembic, edita los tres lugares de env.py, genera la migración inicial, léela y aplícala. Incluye el Reto 2.3: Alembic entra al proyecto de Ximena.
Versionar un cambio de esquema: ida y vuelta
Agrega una columna al modelo, genera la segunda migración, aplícala, lee el historial con alembic current y alembic history, y revierte con alembic downgrade -1. Incluye el Reto 2.4: Ximena necesita que su base pueda contar su propia historia.
Diagnóstico · El curso que aparece dos veces en la lista de quien se inscribió una
Práctica del sprint. Diagnostica un reporte que corre sin error y entrega una lista que no puede ser cierta: observa, escribe una hipótesis, comprueba con un experimento mínimo y corrige las dos mitades.
Transferencia · La biblioteca del barrio y la columna que llegó tarde
PARA ACREDITAR. Versiona el esquema de una biblioteca comunitaria con Alembic —init, revision --autogenerate, upgrade head y downgrade—, incluida la migración que falla sobre una tabla con filas y que corriges a mano. Sin esqueletos que completar.
Sesión 2
Clase en vivo presencial de 3 horas (mar 27-oct). La tercera tabla y la bitácora: la relación de muchos a muchos navegada desde los dos lados, la primera migración real con Alembic y el Cambio de la Oficina con su ida y vuelta.
Entrega final del sprint
Entregable del Sprint 4: el Sistema de Gestión de Inadaptados v6, modelado con SQLAlchemy sobre PostgreSQL local y versionado con Alembic. Ocho criterios de aceptación, la rúbrica de evaluación y las tres transferencias obligatorias como compuerta.