Modéliser un blog : utilisateurs, publications, commentaires
Dessinez un diagramme ER, identifiez les entités et les relations, puis traduisez-les en schéma SQL normalisé.
Modéliser un blog : utilisateurs, publications, commentaires est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Le domaine
Un blog simple : les utilisateurs écrivent des articles et d’autres utilisateurs commentent ces articles. Transformons cela en schéma.
Entités
Trois noms essentiels :
- Utilisateur — identifiant, adresse e-mail, nom
- Article — identifiant, auteur, titre, contenu, horodatage de publication
- Commentaire — identifiant, auteur, article concerné, contenu
Relations
Cardinalités :
- Utilisateur 1 ── ∞ Article (un utilisateur écrit plusieurs articles)
- Utilisateur 1 ── ∞ Commentaire
- Article 1 ── ∞ Commentaire
Table des utilisateurs
Commencez par les utilisateurs, car les autres tables les référencent :
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
full_name VARCHAR(100) NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Table des articles
FK vers les utilisateurs :
CREATE TABLE posts (
id BIGSERIAL PRIMARY KEY,
author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
title VARCHAR(200) NOT NULL,
body TEXT NOT NULL,
published_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Table des commentaires
Deux FK :
CREATE TABLE comments (
id BIGSERIAL PRIMARY KEY,
post_id BIGINT NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
author_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
body TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);Pourquoi ON DELETE CASCADE sur les commentaires ?
Si un article est supprimé, ses commentaires n’ont plus de sens : laissez la base de données les supprimer automatiquement.
Pourquoi ON DELETE RESTRICT sur l’auteur ?
Ne supprimez pas silencieusement le contenu lorsqu’un utilisateur disparaît. Forcez l’application à supprimer logiquement l’utilisateur ou à réattribuer d’abord son contenu.
Ajouter des étiquettes (plusieurs-à-plusieurs)
Ajoutez des étiquettes au moyen d’une table de jointure :
CREATE TABLE tags (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);
CREATE TABLE post_tags (
post_id BIGINT REFERENCES posts(id) ON DELETE CASCADE,
tag_id BIGINT REFERENCES tags(id) ON DELETE CASCADE,
PRIMARY KEY (post_id, tag_id)
);Commentaires imbriqués
Des commentaires qui se référencent eux-mêmes pour gérer les réponses :
ALTER TABLE comments
ADD COLUMN parent_id BIGINT REFERENCES comments(id) ON DELETE CASCADE;Suppression logique ou physique
Pour un blog, supprimer logiquement les articles est souvent préférable : les liens brisés ne provoquent pas d’échec dans l’historique de l’utilisateur. Ajoutez deleted_at TIMESTAMPTZ et filtrez avec WHERE deleted_at IS NULL dans chaque requête.
Diagramme ER en toutes lettres
users (1) -< (∞) posts (1) -< (∞) comments
Et aussi : users (1) -< (∞) comments, posts (∞) >-< (∞) tags.
Récapitulatif
Concevoir un schéma commence par les entités, les relations et les cardinalités.
- Une PK de substitution dans chaque table
- Les FK déclarent les relations
- CASCADE ou RESTRICT doit correspondre à l’intention métier
- Plusieurs-à-plusieurs = table de jointure
Vérification rapide
Où la clé étrangère se trouve-t-elle dans une relation un-à-plusieurs entre les articles et les commentaires ?
Questions Fréquemment Posées
La leçon « Modéliser un blog : utilisateurs, publications, commentaires » est-elle gratuite ?
Oui — le texte complet de « Modéliser un blog : utilisateurs, publications, commentaires » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modéliser un blog : utilisateurs, publications, commentaires » ?
Dessinez un diagramme ER, identifiez les entités et les relations, puis traduisez-les en schéma SQL normalisé. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Modéliser un blog : utilisateurs, publications, commentaires » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Modéliser un blog : utilisateurs, publications, commentaires
- Choisir les clés et les types
- Index pour les requêtes courantes
- Initialiser la base de données avec des données de test