1. Manejo de datos
Temas del programa: 3.2
Modelar antes de guardar
Section titled “Modelar antes de guardar”Algo con identidad propia que el sistema recuerda
Cómo se conectan las entidades y en qué cantidad
Una unidad de información con sus datos anidados
users 1 ─── N prestamos N ─── 1 equiposRelacional o documental
Section titled “Relacional o documental”| Relacional | Documental | |
|---|---|---|
| Estructura | Fija por esquema | Flexible por documento |
| Integridad | La garantiza el motor | La garantiza tu código |
| Cruzar entidades | Natural con JOIN | Costoso o con datos duplicados |
| Buen uso | Datos con relaciones fuertes | Estructura variable leída como unidad |
Estándar del proyecto — PostgreSQL por defecto y MongoDB solo con ADR que lo justifique
El mismo préstamo como documento
Section titled “El mismo préstamo como documento”{ "_id": "42", "usuario": { "id": 7, "nombre": "Ana" }, "equipo": { "id": 3, "nombre": "Proyector 101" }, "fechaInicio": "2026-11-10T10:00:00Z"}Si Ana cambia su nombre hay que actualizar cada documento donde aparece
Actividad A3 — decidan tabla o documento para tres datos de su proyecto
La base de datos también se defiende
Section titled “La base de datos también se defiende”$table->foreignId('user_id')->constrained();
DB::statement('ALTER TABLE prestamos ADD CONSTRAINT chk_prestamos_fechas CHECK (fecha_fin > fecha_inicio)');Un seeder o una consola pueden guardar basura
PostgreSQL rechaza el dato sin importar de dónde venga
STD-DB-P02 y STD-DB-P03
Migraciones que van y vuelven
Section titled “Migraciones que van y vuelven”php artisan migratephp artisan migrate:rollbackphp artisan migrateTodo down deshace exactamente su up
Una migración ya integrada no se edita se crea otra
STD-DB-M01 y STD-DB-M03
El problema N+1
Section titled “El problema N+1”foreach (Prestamo::all() as $prestamo) { echo $prestamo->equipo->nombre; // una consulta por préstamo}
Prestamo::with('equipo')->get(); // dos consultas en totalLo que la validación no resuelve sola
Section titled “Lo que la validación no resuelve sola”Dos personas envían la misma reserva en el mismo instante y ambas consultas ven sin conflicto antes de que alguna guarde
Se llama condición de carrera
En el Bloque IV profundizarás en el comportamiento bajo carga por ahora regístralo como riesgo
Relación con el laboratorio
Section titled “Relación con el laboratorio”Este tema se practica en el Laboratorio 1 — Persistencia en PostgreSQL.
Qué sigue
Section titled “Qué sigue”Continúa con 2. Desarrollo de componentes.

