0Pricing
SQL Academy · Leçon

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

  1. Modéliser un blog : utilisateurs, publications, commentaires
  2. Choisir les clés et les types
  3. Index pour les requêtes courantes
  4. Initialiser la base de données avec des données de test
← Retour à SQL Academy