← Retour au cours

PostgreSQL : modélisation BDD relationnelle

⏱ 10 min · 🎬 Lecon · 🏆 18 XP
🎬
Vidéo en production
Notre équipe pédagogique tourne actuellement cette leçon avec un·e formateur·rice expert·e. Le contenu textuel ci-dessous est complet et utilisable dès maintenant.

Choisir PostgreSQL vs MySQL/MongoDB

  • PostgreSQL : SQL strict, JSON support, full-text search natif, robuste
  • MySQL : plus simple, faster reads, write-heavy moins bon
  • MongoDB : NoSQL, schema flexible, scale horizontal
  • Préférence 2026 : PostgreSQL pour 90% des projets web

Types de relations

  • 1:1 — Un user a UN profil
  • 1:N — Un user a PLUSIEURS posts
  • N:N — Un user peut avoir plusieurs roles, un role peut être attribué à plusieurs users (table de jointure)

Schéma exemple : SaaS app

CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email VARCHAR(255) UNIQUE NOT NULL,
  password_hash VARCHAR(255),
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLE posts (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  title VARCHAR(255),
  content TEXT,
  published BOOLEAN DEFAULT false,
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_posts_user ON posts(user_id);
CREATE INDEX idx_posts_published ON posts(published) WHERE published = true;

⚠️ TOUJOURS mettre des index sur les colonnes utilisées dans WHERE et JOIN. Sans index, query 100x plus lente.