Skip to content

1. Manejo de datos

Temas del programa: 3.2

Entidad

Algo con identidad propia que el sistema recuerda

Relación

Cómo se conectan las entidades y en qué cantidad

Documento

Una unidad de información con sus datos anidados

users 1 ─── N prestamos N ─── 1 equipos
RelacionalDocumental
EstructuraFija por esquemaFlexible por documento
IntegridadLa garantiza el motorLa garantiza tu código
Cruzar entidadesNatural con JOINCostoso o con datos duplicados
Buen usoDatos con relaciones fuertesEstructura variable leída como unidad

Estándar del proyecto — PostgreSQL por defecto y MongoDB solo con ADR que lo justifique

{
"_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

$table->foreignId('user_id')->constrained();
DB::statement('ALTER TABLE prestamos
ADD CONSTRAINT chk_prestamos_fechas CHECK (fecha_fin > fecha_inicio)');
Sin restricción

Un seeder o una consola pueden guardar basura

Con restricción

PostgreSQL rechaza el dato sin importar de dónde venga

STD-DB-P02 y STD-DB-P03

Terminal window
php artisan migrate
php artisan migrate:rollback
php artisan migrate
Reversible

Todo down deshace exactamente su up

Intocable

Una migración ya integrada no se edita se crea otra

STD-DB-M01 y STD-DB-M03

foreach (Prestamo::all() as $prestamo) {
echo $prestamo->equipo->nombre; // una consulta por préstamo
}
Prestamo::with('equipo')->get(); // dos consultas en total

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

Este tema se practica en el Laboratorio 1 — Persistencia en PostgreSQL.

Continúa con 2. Desarrollo de componentes.