0Pricing
SQL Interview Prep · Leçon

Modélisation ER et cardinalité des relations

Traduire les exigences en entités, relations et tables d’association

Modélisation ER et cardinalité des relations est une leçon SQL Interview Prep gratuite sur CoddyKit. Ceci est la leçon 2 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 Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Interview Prep comprend 4 leçons au total.

Pourquoi la modélisation ER apparaît dans les entretiens

Après la normalisation, les recruteurs vérifient que vous savez transformer des exigences en schéma. La consigne est généralement ouverte : « Concevez une base de données pour une application de covoiturage » ou « Modélisez un système de bibliothèque ».

Il s'agit d'un exercice de modélisation entité-association (ER). Les recruteurs observent comment vous identifiez les entités, les attributs et les relations qui les relient, notamment la cardinalité.

La compétence évaluée consiste à transformer les noms et les verbes de l'énoncé en tables et en clés étrangères.

Entités, attributs et relations

Trois éléments fondamentaux composent tout modèle ER :

  • Entité : un élément sur lequel vous stockez des données (Client, Commande, Produit). Elle devient généralement une table.
  • Attribut : une propriété d'une entité (nom, prix, date de création). Il devient généralement une colonne.
  • Relation : la manière dont les entités sont liées (un Client passe une Commande). Elle est mise en œuvre au moyen de clés étrangères ou de tables de jonction.

Conseil à partir de la consigne : les noms deviennent des entités ou des attributs, les verbes deviennent des relations.

Cardinalité : le concept fondamental

La cardinalité décrit le nombre d'instances d'une entité qui sont liées à une autre. Elle se décline en trois catégories :

  • Un-à-un (1:1) : une ligne ici correspond à au plus une ligne de l'autre côté.
  • Un-à-plusieurs (1:N) : une ligne ici correspond à de nombreuses lignes de l'autre côté (le cas le plus fréquent).
  • Plusieurs-à-plusieurs (M:N) : les lignes des deux côtés correspondent à de nombreuses lignes de l'autre côté.

Déterminer correctement la cardinalité indique où placer les clés étrangères et si vous avez besoin d'une table de jonction.

Mettre en œuvre une relation un-à-plusieurs

Une relation un-à-plusieurs se met en œuvre en plaçant la clé étrangère du côté « plusieurs ». Un client possède de nombreuses commandes, donc chaque ligne de commande contient la customer_id.

Pendant un entretien, indiquez toujours explicitement le sens : « Un client vers plusieurs commandes, donc la FK se trouve dans la table des commandes. »

CREATE TABLE customers (
  customer_id INT PRIMARY KEY,
  name        VARCHAR(100)
);

CREATE TABLE orders (
  order_id    INT PRIMARY KEY,
  customer_id INT NOT NULL,
  order_date  DATE,
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

Mettre en œuvre une relation plusieurs-à-plusieurs

Une base de données relationnelle ne peut pas stocker directement une relation M:N. La réponse attendue par les recruteurs est une table de jonction (également appelée table relais, de liaison ou d'association).

Les étudiants s'inscrivent à de nombreux cours, et les cours comptent de nombreux étudiants. Créez une table enrollments dont la clé combine les deux clés étrangères. Cela transforme la relation M:N en deux relations 1:N.

CREATE TABLE students (
  student_id INT PRIMARY KEY,
  name       VARCHAR(100)
);

CREATE TABLE courses (
  course_id  INT PRIMARY KEY,
  title      VARCHAR(100)
);

CREATE TABLE enrollments (
  student_id INT,
  course_id  INT,
  enrolled_at DATE,
  PRIMARY KEY (student_id, course_id),
  FOREIGN KEY (student_id) REFERENCES students(student_id),
  FOREIGN KEY (course_id)  REFERENCES courses(course_id)
);

La table de jonction peut contenir des données

Une question de suivi courante est la suivante : « Où stockez-vous la note obtenue par un étudiant dans un cours ? »

La note appartient à la relation, et non à l'étudiant ou au cours pris isolément. Elle doit donc être placée dans la table de jonction. C'est l'idée que les recruteurs cherchent à vérifier : les attributs d'une relation M:N résident dans la table relais.

Exemples : date d'inscription, note, quantité d'une ligne de commande, rôle dans une association à un projet.

ALTER TABLE enrollments
  ADD COLUMN grade CHAR(2);
-- grade describes THIS student in THIS course,
-- so it belongs on the junction table

Mettre en œuvre une relation un-à-un

La relation 1:1 est plus rare. Vous la mettez en œuvre en donnant à la table dépendante une clé étrangère qui est également une clé unique (souvent sa clé primaire elle-même).

Exemple : un user et un user_profile contenant des informations détaillées facultatives. Faire de user_id la clé primaire de la table des profils garantit qu'il n'y a au plus qu'un profil par utilisateur.

CREATE TABLE users (
  user_id INT PRIMARY KEY,
  email   VARCHAR(255)
);

CREATE TABLE user_profiles (
  user_id INT PRIMARY KEY,           -- 1:1 enforced here
  bio     TEXT,
  avatar_url VARCHAR(255),
  FOREIGN KEY (user_id) REFERENCES users(user_id)
);

Caractère facultatif et participation

La cardinalité comporte une seconde dimension que les recruteurs apprécient : le caractère facultatif (également appelé participation).

  • Obligatoire : chaque commande doit avoir un client, donc customer_id est NOT NULL.
  • Facultatif : un utilisateur peut avoir ou non un profil, la relation peut donc être absente.

Vous exprimez la participation obligatoire avec NOT NULL sur la clé étrangère. Mentionner la possibilité d'avoir NULL montre que vous réfléchissez aux contraintes réelles, et pas seulement à la structure.

Relations autoréférentes

Certaines relations relient une entité à elle-même. Un employé a un supérieur hiérarchique qui est lui aussi un employé ; une catégorie possède une catégorie parente.

Vous modélisez cela avec une clé étrangère qui référence la même table. Les recruteurs s'attendent à ce que vous utilisiez cette approche pour les organigrammes et les structures arborescentes ; elle s'associe naturellement aux auto-jointures et aux expressions de table communes récursives.

CREATE TABLE employees (
  employee_id INT PRIMARY KEY,
  name        VARCHAR(100),
  manager_id  INT NULL,
  FOREIGN KEY (manager_id) REFERENCES employees(employee_id)
);
-- manager_id NULL = top of the hierarchy (e.g. CEO)

Petite démonstration de modélisation

Entraînez-vous à appliquer la méthode verbe-relation. Consigne : « Les clients passent des commandes ; chaque commande contient de nombreux produits ; les produits appartiennent à des fournisseurs. »

  • Client 1:N Commande (clé étrangère identifiant le client dans la table des commandes).
  • Commande M:N Produit -> table de jonction order_items (avec la quantité).
  • Fournisseur 1:N Produit (clé étrangère identifiant le fournisseur dans la table des produits).

Indiquez chaque cardinalité et où placer la clé. Cette explication vous fera réussir l'entretien.

Questions à poser pour clarifier

Les recruteurs valorisent les candidats qui posent des questions avant de concevoir. Voici de bonnes questions de clarification :

  • « Un produit peut-il appartenir à plusieurs fournisseurs ? » (détermine 1:N ou M:N).
  • « Chaque commande doit-elle contenir au moins un article ? » (participation).
  • « Avons-nous besoin de l'historique ou seulement de l'état actuel ? » (entraîne la création de tables supplémentaires).

Les réponses modifient la cardinalité et le nombre de tables ; ne partez donc jamais du principe que vous savez déjà. Poser des questions est un signe d'expérience.

Vérification rapide

Vous modélisez des étudiants et des cours, chaque étudiant pouvant suivre de nombreux cours et chaque cours comptant de nombreux étudiants.

Récapitulatif : modélisation ER et cardinalité

Vous savez maintenant aborder une question ouverte de conception de schéma :

  • Transformez les noms en entités/attributs et les verbes en relations.
  • 1:N : placez la clé étrangère du côté plusieurs.
  • M:N : utilisez une table d’association contenant les deux clés étrangères, ainsi que les éventuels attributs de la relation.
  • 1:1 : utilisez une clé partagée/unique dans la table dépendante.
  • Utilisez NOT NULL pour exprimer une participation obligatoire et des clés étrangères auto-référencées pour les hiérarchies.
  • Posez des questions de clarification avant de fixer la cardinalité.

Questions Fréquemment Posées

La leçon « Modélisation ER et cardinalité des relations » est-elle gratuite ?

Oui — le texte complet de « Modélisation ER et cardinalité des relations » 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 Interview Prep, passe à CoddyKit PRO. Le cours SQL Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Modélisation ER et cardinalité des relations » ?

Traduire les exigences en entités, relations et tables d’association Tu pratiques SQL Interview Prep 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 Interview Prep ?

Aucune expérience préalable n'est requise. SQL Interview Prep 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 2 sur 4.

Combien de temps prend la leçon « Modélisation ER et cardinalité des relations » ?

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 Interview Prep ?

Oui. Chaque leçon SQL Interview Prep 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. Normalisation jusqu’à la 3NF
  2. Modélisation ER et cardinalité des relations
  3. Schéma en étoile et conception d’un entrepôt de données
  4. Série complète d’exercices d’entretien blanc
← Retour à SQL Interview Prep