Aller au contenu principal

Modélisation

Progression

#Modélisation relationnelle

À quoi ça sert ?

À quoi ça sert: traduire un domaine métier en un schéma robuste, cohérent et évolutif. Comment: identifier entités/relations, poser les clés (PK/FK), normaliser jusqu’à 3NF/BCNF quand pertinent, et dénormaliser avec mesure pour la lecture.

#Objectifs

  • Partir d’un domaine et obtenir un schéma cohérent et évolutif.
  • Identifier entités, attributs, relations et cardinalités.
  • Appliquer la normalisation jusqu’à 3NF (ou BCNF si pertinent).

#Démarche

  1. Recueillir les règles métier et cas d’usage.
  2. Diagramme conceptuel (entités, relations, cardinalités 1‑1, 1‑N, N‑N).
  3. Passage au relationnel: tables, clés primaires (PK), clés étrangères (FK), tables d’association.
Cardinalités et contraintes

Documentez 1‑1, 1‑N, N‑N, et précisez les contraintes (unicité, non‑null, check). Une relation N‑N devient une table d’association avec PK composite (ou clé synthétique) et deux FKs.

#Exemples

bg-[rgba(var(--code-inline-bg),0.5)] text-[rgb(var(--fg))] px-1 roundedbg-[rgba(var(--code-inline-bg),0.5)] text-[rgb(var(--fg))] px-1 rounded
1-- Utilisateurs et articles de blog2create table users (3  id integer primary key,4  email text unique not null,5  name text not null6);7 8create table posts (9  id integer primary key,10  author_id integer not null references users(id),11  title text not null,12  body text not null,13  published_at datetime14);

Relation N‑N (tags): table d’association post_tags(post_id, tag_id) avec PK composite.

#Normalisation (rappel)

  • 1NF: valeurs atomiques, pas de listes dans les colonnes.
  • 2NF: pas de dépendances partielles vis‑à‑vis d’une PK composite.
  • 3NF: pas de dépendances transitives (attribut → autre attribut non‑clé).

#Compromis

  • Dénormaliser pour la lecture (caches, vues matérialisées) si mesuré et justifié.
Pièges fréquents
  • Colonnes multi‑valeurs (listes JSON) là où une table associée est nécessaire.
  • Absence de contraintes FK → intégrité référentielle brisée.
  • Clés naturelles instables (email) → préférez une clé synthétique et contrainte d’unicité sur la naturelle.