🗂️sql

Concevoir une base de données relationnelle : modèle entite-association

30 mars 2026 5 min de lecture

Pourquoi modéliser avant de coder ? L'importance du MCD

Avant de te lancer tête baissée dans la création de tables SQL, il est crucial de réfléchir à la structure de tes données. Imagine devoir construire une maison sans plan d'architecte : le résultat serait chaotique ! En NSI, et plus largement en informatique, la phase de conception est tout aussi importante que la phase de programmation. Le Modèle Conceptuel de Données (MCD), aussi appelé modèle entité-association, est ce plan. Il te permet de :

  • Visualiser clairement les éléments de ton système et leurs relations.
  • Éviter les redondances et les incohérences dans tes données (comme enregistrer plusieurs fois la même information).
  • Faciliter la communication avec d'autres développeurs ou avec ton client (ton prof de NSI !).
  • Assurer l'évolutivité : ajouter une nouvelle fonctionnalité sera bien plus simple si la base est bien conçue dès le départ.

En résumé, passer du temps sur le MCD, c'est gagner du temps et des neurones lors de l'implémentation en SQL et dans ton application Python.

Les briques de base : Entités, Attributs et Associations

Le modèle entité-association repose sur trois concepts fondamentaux. Prenons l'exemple d'un système de gestion de bibliothèque pour un projet NSI.

1. Les Entités

Une entité représente un objet, un concept ou une personne du monde réel que l'on souhaite mémoriser. Elle est représentée par un rectangle. Dans notre bibliothèque, les entités principales seraient LIVRE et ADHERENT. Chaque exemplaire d'une entité (par exemple, le livre "Le Petit Prince") est appelé une occurrence.

2. Les Attributs

Les attributs sont les caractéristiques qui décrivent une entité. Ils sont notés dans des ovales reliés à leur entité. Pour LIVRE, les attributs pourraient être : id_livre (clé primaire), titre, auteur, isbn. Pour ADHERENT : id_adherent, nom, prenom, date_inscription. L'attribut souligné est la clé primaire, un identifiant unique.

3. Les Associations

Une association (ou relation) représente un lien sémantique entre plusieurs entités. Elle est représentée par un losange. L'association la plus évidente dans notre exemple est EMPRUNTER, qui lie un ADHERENT à un LIVRE. Une association peut elle-même posséder des attributs, comme date_emprunt et date_retour_prevue pour l'association EMPRUNTER.

Définir les règles : les Cardinalités (0,1 - 1,1 - 0,n - 1,n)

Les cardinalités sont essentielles. Elles précisent le nombre de fois qu'une occurrence d'une entité peut participer à une association. Elles se placent aux deux extrémités du lien entre une entité et une association. Il y a quatre types principaux :

  • 0,1 : Zéro ou une fois. Exemple : Un ADHERENT peut ne pas avoir d'emprunt en cours (0) ou en avoir un seul (1).
  • 1,1 : Une et une seule fois. (Moins fréquent).
  • 0,n : Zéro ou plusieurs fois. Exemple : Un LIVRE peut ne jamais être emprunté (0) ou être emprunté plusieurs fois par différents adhérents (n).
  • 1,n : Une ou plusieurs fois. Exemple : Un EMPRUNT (association) doit concerner au moins un livre (1,n), mais peut concerner plusieurs dans le cas d'un emprunt multiple.

Pour l'association EMPRUNTER entre ADHERENT et LIVRE, on aurait typiquement :
Un ADHERENT (1,1) peut emprunter (0,n) LIVRE(s).
Un LIVRE (0,n) peut être emprunté par (0,1) ADHERENT
(à un instant T, un livre est soit disponible, soit emprunté par une seule personne).

Du modèle conceptuel (MCD) au modèle logique (MLD ou schéma relationnel)

Une fois ton MCD validé, il faut le transformer en un modèle compréhensible par un SGBD (Système de Gestion de Base de Données) comme MySQL ou SQLite. C'est le Modèle Logique de Données (MLD) ou schéma relationnel. Voici les règles de transformation :

  1. Une entité devient une table. Ses attributs deviennent les colonnes de la table. La clé primaire est conservée.
  2. Une association de type "plusieurs-à-plusieurs" (n,n) devient une table. C'est le cas de notre EMPRUNTER. Cette nouvelle table aura pour colonnes : les clés primaires des deux entités liées (ici, id_adherent et id_livre), qui forment une clé primaire composée, ainsi que les attributs propres à l'association (date_emprunt, etc.).
  3. Une association de type "un-à-plusieurs" (1,n) ne devient pas une table. On ajoute simplement la clé primaire de l'entité du côté "1" comme clé étrangère dans la table de l'entité du côté "n".

Notre schéma relationnel final donnerait donc trois tables :
ADHERENT (id_adherent, nom, prenom, date_inscription)
LIVRE (id_livre, titre, auteur, isbn)
EMPRUNT (id_adherent, id_livre, date_emprunt, date_retour_prevue) -- Clé primaire : (id_adherent, id_livre, date_emprunt)

Exercice pratique et pièges à éviter

Pour t'entraîner, modélise un système de gestion de notes pour ta classe NSI. Les entités pourraient être Élève, PROFESSEUR et DEVOIR. Un professeur propose plusieurs devoirs, un devoir est noté pour plusieurs élèves, et un élève a plusieurs notes.

Pièges classiques :

  • Oublier une cardinalité minimale à 1 quand une relation est obligatoire (ex: une note doit forcément être attribuée à un élève).
  • Créer une entité pour quelque chose qui est en fait un attribut (ex: "Adresse" comme entité séparée de "Client" pour un simple système).
  • Ne pas identifier correctement la clé primaire : elle doit être unique et non nulle. Pour une table d'association, elle est souvent composée.

Astuce NSI : Utilise un logiciel de modélisation comme Mocodo (en ligne) ou les outils intégrés à des IDE comme DBeaver. Ils t'aident à dessiner le MCD et peuvent même générer le script SQL de création des tables automatiquement !

📚 Pour aller plus loin

Questions fréquentes

Est-ce que le modèle entité-association est au programme de NSI ?

Oui, absolument. La conception de bases de données relationnelles, incluant la modélisation conceptuelle avec ses entités, associations et cardinalités, fait partie intégrante du programme de NSI, souvent abordée en classe de Première et approfondie en Terminale. C'est une compétence clé pour le projet final.

Quelle est la différence entre une clé primaire et une clé étrangère ?

La <strong>clé primaire</strong> est un attribut (ou un ensemble d'attributs) qui identifie de manière <strong>unique</strong> chaque enregistrement dans une table (ex: id_adherent). Une <strong>clé étrangère</strong> est un attribut dans une table qui fait référence à la clé primaire d'une autre table. Elle permet d'établir le lien logique entre les tables (ex: l'id_adherent dans la table EMPRUNT est une clé étrangère qui référence la table ADHERENT).

Comment on sait si une association doit devenir une table ou pas ?

La règle est simple : <strong>Une association de type "plusieurs-à-plusieurs" (n,n) devient toujours une table.</strong> Une association de type "un-à-plusieurs" (1,n) ne devient pas une table ; on traduit la relation en ajoutant la clé primaire de l'entité du côté "1" comme clé étrangère dans la table de l'entité du côté "n".

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
base données NSImodèle relationnelentite association
Pixel