¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Modelado de software con diagramas

Después de esta lección: Puedo dibujar un modelo de un sistema con un diagrama.

Lección de 55 min4 comandosLaboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

Qué es un modelo de software

Un modelo de software es un dibujo que muestra las partes de un sistema y cómo se relacionan, sin entrar en el código. Dibujarlo ayuda a encontrar errores de diseño antes de programar.

Aquí los dibujos se escriben como texto con Mermaid, y la página los convierte en diagramas. Un diagrama se puede cambiar, corregir y guardar como cualquier otro archivo.

Al terminar esta lección

Nota

Puedo dibujar un modelo de un sistema con un diagrama.

Palabras clave

PalabraQué significaEjemplo
Modeloun dibujo simple de las partes de un sistema
Entidaduna cosa del sistema de la que se guardan datosReserva
Relaciónel vínculo entre dos entidadeshace
Cardinalidadcuántas de una entidad se unen a cuántas de otra1 a muchas
Diagrama de secuencialos mensajes entre partes, en el orden en que ocurren
Mermaidtexto que la página dibuja como diagrama

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un modelo muestra entidades y relaciones

Una entidad es una cosa de la que el sistema guarda datos: estudiante, sala, reserva. Se dibuja como una caja con su nombre.

Una relación une dos cajas con una línea y un verbo. La cardinalidad dice cuántas hay de cada lado: un estudiante hace muchas reservas, y cada reserva es de un solo estudiante.

Cómo se lee ese diagrama

El diagrama tiene tres cajas: Estudiante, Sala y Reserva. Cada flecha se lee como una frase.

Un estudiante hace muchas reservas. Una sala recibe muchas reservas. El 1 y el asterisco son la cardinalidad: uno de un lado y muchos del otro.

Un diagrama de secuencia ordena los mensajes

Las cajas no dicen qué pasa primero. Para eso sirve un diagrama de secuencia. Cada parte tiene una línea vertical, y los mensajes bajan en el orden en que ocurren.

El de abajo cuenta lo que pasa cuando una estudiante reserva una sala desde el móvil.

Un error frecuente

Advertencia

Mucha gente cree que un buen modelo debe mostrar todo el sistema. Un dibujo con todo no lo lee nadie. Dibuja solo lo que ayuda a responder la pregunta que tienes ahora, y deja el resto fuera.

Lee el modelo del sistema real

Un modelo también se puede sacar de un sistema que ya existe. La base de datos guarda la lista de sus columnas, y una consulta la puede leer.

Los comandos crean dos tablas, rooms y bookings, donde cada reserva apunta a una sala. Después piden las columnas de bookings y prueban una reserva de una sala que no existe. Primero da a psql la contraseña.

Dar a psql la contraseña

Comando
export PGPASSWORD=shop

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crear las tablas rooms y bookings

Comando
psql -h db -U shop -c "drop table if exists bookings; drop table if exists rooms; create table rooms (code text primary key, seats int not null); create table bookings (id serial primary key, room text not null references rooms (code), student text not null, hour int not null check (hour between 8 and 20), status text not null default 'confirmed', unique (room, hour)); insert into rooms values ('A1', 4), ('B2', 8); insert into bookings (room, student, hour) values ('A1', 'Lucia', 9), ('B2', 'Irene', 9); notify pgrst, 'reload schema'"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pedir las columnas de bookings

Comando
psql -h db -U shop -c "select column_name, data_type from information_schema.columns where table_name = 'bookings' order by ordinal_position"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Reservar una sala que no existe

Comando
curl -s -w "\n%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"room":"Z9","student":"Nora","hour":10}' "http://api:3000/bookings"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: del sistema al modelo

Lo que visteQué dibujas
Dos tablas, rooms y bookingsDos cajas: Sala y Reserva
La columna room de bookings apunta a roomsUna línea de Reserva a Sala con la cardinalidad "muchas a una"
La API rechaza la sala Z9 con un 409Una reserva siempre pertenece a una sala que existe
Las columnas id, room, student, hour y statusLos datos que lleva la caja Reserva

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sobre este laboratorio y su código: Laboratorio de PostgreSQL y PostgREST: una base de datos y una API REST en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.