Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Modéliser un système avec des diagrammes

Après cette leçon: Je peux dessiner et lire le modèle d'un système avec un diagramme.

Leçon de 55 min6 commandesLab PostgreSQL et PostgREST : une base de données et une API REST dans le navigateur

Dessiner un système avant de le construire

Modéliser un système, c'est en faire un dessin simplifié qui garde l'essentiel et cache le reste. Un diagramme permet à toute une équipe de se mettre d'accord avant d'écrire du code.

Le système de réservation de salles sert encore d'exemple. Vous allez le dessiner de deux façons, puis comparer le dessin à la vraie table.

À la fin de cette leçon

Remarque

Je peux dessiner et lire le modèle d'un système avec un diagramme.

Mots clés

MotCe que ça veut direExemple
Modèleun dessin simplifié qui garde seulement l'essentiel
Entitéune chose dont le système garde des informationsSalle
Relationun lien entre deux entitésconcerne
Diagramme de classesun dessin des entités et de leurs relations
Diagramme de séquenceun dessin des messages échangés, dans l'ordre
Mermaidun langage en texte qui dessine des diagrammes

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Le diagramme de classes montre les liens

Chaque boîte est une entité. Elle porte un nom et la liste de ce qu'elle garde. Chaque flèche est une relation, avec un verbe qui se lit tout seul.

Le texte ci-dessous est écrit en Mermaid. Le site le transforme en dessin. Lisez les flèches : une réservation concerne une salle et est faite par un demandeur.

Exemple : lire une flèche du diagramme

ÉcritureSe lit
Reservation "*" --> "1" SallePlusieurs réservations pour une seule salle
Le verbe après les deux-pointsCe que la relation veut dire
Les noms dans la boîteLes informations que l'entité garde

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un diagramme de séquence montre l'ordre des messages

Le premier dessin montre ce qui existe. Le second montre ce qui se passe, dans le temps. Chaque colonne est une partie du système. Chaque flèche est un message, de haut en bas.

Une flèche pleine est un appel. Une flèche en pointillés est une réponse.

Une erreur fréquente

Attention

Beaucoup pensent qu'un bon modèle montre tout : chaque colonne, chaque fonction. Plus il y a de détails, moins on le lit. Gardez ce qui répond à la question posée, et rien d'autre.

On compare le dessin à la vraie table

Le dessin a trois entités : Salle, Demandeur et Reservation. Regardons ce que la base a vraiment.

Préparez la table, lisez ses colonnes avec psql, puis envoyez une réservation par l'API. C'est le message du diagramme de séquence, joué pour de vrai.

Donner le mot de passe à psql

Commande
export PGPASSWORD=shop

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Repartir de zéro

Commande
psql -h db -U shop -c "drop table if exists reservations"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Créer la table reservations

Commande
psql -h db -U shop -c "create table reservations (id serial primary key, salle text not null, demandeur text not null, creneau text not null, statut text not null default 'demandee')"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire les colonnes et leurs types

Commande
psql -h db -U shop -t -A -c "select column_name || ' ' || data_type from information_schema.columns where table_name = 'reservations' order by ordinal_position"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Dire à l'API de relire la base

Commande
psql -h db -U shop -c "notify pgrst, 'reload schema'"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Jouer le message POST du diagramme

Commande
curl -s -o /dev/null -w "%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"salle":"B102","demandeur":"Claire Dupuis","creneau":"lundi 10h"}' "http://api:3000/reservations"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

La table est plus pauvre que le dessin

Le dessin avait trois entités. La table n'en a qu'une : la salle et le demandeur y sont de simples textes. Ce n'est pas une erreur, c'est un choix de modèle.

Avec ce choix, on ne peut pas ranger la capacité d'une salle. Et le nom d'une salle mal écrit crée une salle de plus. Un modèle fait voir ces conséquences avant de construire.

Exemple : le dessin et la table

Dans le dessinDans la tableConséquence
Entité Salle avec une capacitéColonne salle en textePas de capacité
Entité DemandeurColonne demandeur en texteUn nom peut s'écrire de deux façons
Entité ReservationTable reservationsIdentique

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À propos de ce labo et de sa source: Lab PostgreSQL et PostgREST : une base de données et une API REST dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.