Table des classes
Gérer des groupes d'utilisateurs ("classes").
Notions théoriques
Structure de la table classes
Voici les colonnes nécessaires pour représenter une classe :
Colonne | Type | Description |
---|---|---|
id | uuid | Identifiant unique de la classe |
name | text | Nom de la classe (obligatoire) |
description | text | Description libre (optionnelle) |
created_at | timestamp with time zone | Date de création automatique |
updated_at | timestamp with time zone | Date de dernière modification automatique |
Génération d’UUID avec uuid_generate_v4()
Pour éviter les identifiants prédictibles comme 1
, 2
, 3
, on utilise des UUID (identifiants universels uniques). PostgreSQL permet de générer un UUID avec la fonction :
uuid_generate_v4()
Cette fonction génère un identifiant aléatoire, très difficile à deviner. Elle est utilisée comme valeur par défaut dans la colonne id
.
Timestamps automatiques
Les colonnes created_at
et updated_at
permettent de :
- savoir quand une classe a été créée,
- savoir quand elle a été modifiée pour la dernière fois.
Ces colonnes sont utiles pour l’audit, le tri, ou la synchronisation des données.
Syntaxe pour les remplir automatiquement :
created_at timestamp with time zone default timezone('utc'::text, now())
Même chose pour updated_at
.
Utiliser le fuseau UTC permet de conserver une cohérence temporelle, quel que soit le pays de l’utilisateur.
Contraintes à appliquer
Il est recommandé d’ajouter les contraintes suivantes :
PRIMARY KEY (id)
: chaque classe a un identifiant unique.NOT NULL
surname
: une classe doit avoir un nom.- Valeurs par défaut sur
id
,created_at
,updated_at
.
Bonne pratique cyber
- Auditabilité : les colonnes
created_at
etupdated_at
permettent de tracer l’activité. - Logs d’activité : en production, il est conseillé de mettre en place des mécanismes de journalisation pour savoir qui a créé ou modifié une classe.
- Pas de données sensibles : ne pas stocker d’information confidentielle dans la description sans chiffrement.
Ne jamais stocker d’information personnelle (nom réel, adresse, etc.) dans la description sans contrôle d’accès.
Exemple pratique
Créer la table classes
dans Supabase
Il est possible de créer la table classes
via le SQL Editor de Supabase, avec le script suivant :
create table public.classes (
id uuid primary key default uuid_generate_v4(),
name text not null,
description text,
created_at timestamp with time zone default timezone('utc'::text, now()),
updated_at timestamp with time zone default timezone('utc'::text, now())
);
Ce script :
- génère automatiquement un UUID pour chaque nouvelle classe,
- impose que le nom soit obligatoire,
- ajoute deux colonnes pour tracer la création et la mise à jour.
Insérer une classe de test
Il est possible d’ajouter une entrée de test avec la requête suivante :
insert into public.classes (name, description)
values ('Classe A', 'Groupe d’apprentissage pour les débutants');
Cela insère une ligne avec :
- un UUID généré automatiquement,
- un nom explicite,
- une description libre,
- une date de création et de mise à jour automatique.
Vérifier la table dans Table Editor
- Aller dans l’onglet Table Editor.
- Cliquer sur la table
classes
. - Vérifier que les colonnes sont bien présentes.
- Vérifier que les valeurs par défaut ont bien été appliquées.
Mettre à jour une classe
Il est possible de modifier la description d’une classe existante :
update public.classes
set description = 'Classe mise à jour pour les avancés',
updated_at = timezone('utc'::text, now())
where name = 'Classe A';
Il faut penser à mettre à jour manuellement la colonne updated_at
, sauf si un trigger est mis en place (ce sera vu dans une autre séance).
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Étape 1 — Créer la table classes
dans Supabase via SQL Editor
- Se connecter à votre projet Supabase.
- Aller dans l’onglet SQL Editor.
- Copier-coller le script SQL suivant dans l’éditeur :
create table public.classes (
id uuid primary key default uuid_generate_v4(),
name text not null,
description text,
created_at timestamp with time zone default timezone('utc'::text, now()),
updated_at timestamp with time zone default timezone('utc'::text, now())
);
- Exécuter le script.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 — Vérifier la création de la table dans Table Editor
- Aller dans l’onglet Table Editor.
- Cliquer sur la table
classes
. - Vérifier que les colonnes suivantes sont bien présentes :
id
name
description
created_at
updated_at
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 — Insérer une classe de test via SQL
- Retourner dans l'onglet SQL Editor.
- Exécuter la requête suivante :
insert into public.classes (name, description)
values ('Classe A', 'Groupe d’apprentissage pour les débutants');
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 — Vérifier l’insertion dans Table Editor
- Aller dans Table Editor.
- Cliquer sur la table
classes
. - Vérifier que la ligne insérée apparaît avec toutes les colonnes remplies.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 — Modifier la description de la classe et mettre à jour le timestamp
- Toujours dans le SQL Editor, exécuter la requête suivante :
update public.classes
set description = 'Classe mise à jour pour les avancés',
updated_at = timezone('utc'::text, now())
where name = 'Classe A';
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 — Vérifier la mise à jour de la classe
- Aller dans Table Editor.
- Rechercher la ligne de la classe "Classe A".
- Vérifier que :
- La
description
a bien été modifiée. - Le champ
updated_at
a une valeur différente decreated_at
.
- La
Une solution
Vous devez être connecté pour voir le contenu.
Étape 7 — Ajouter une deuxième classe pour tester l’unicité des identifiants
- Exécuter la requête suivante dans le SQL Editor :
insert into public.classes (name, description)
values ('Classe B', 'Deuxième groupe d’étudiants');
- Vérifier que les deux classes sont bien présentes.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 8 — Vérifier la structure SQL de la table classes
- Dans Supabase, aller dans l’onglet Table Editor.
- Cliquer sur la table
classes
. - Cliquer sur View Definition (ou "Afficher la définition").
Une solution
Vous devez être connecté pour voir le contenu.
Étape 9 — Supprimer une classe (optionnel)
- Supprimer la classe
Classe B
via SQL :
delete from public.classes
where name = 'Classe B';
Une solution
Vous devez être connecté pour voir le contenu.
Étape 10 — Vérification finale de la table
- Vérifier que la table contient exactement une ligne : "Classe A".
- Vérifier que toutes les colonnes sont correctement remplies.
- Vérifier que le champ
updated_at
est bien plus récent quecreated_at
.
Une solution
Vous devez être connecté pour voir le contenu.