🗺️sql

Concevoir un schema entite-association : methode complete

30 mars 2026 5 min de lecture

Le schéma EA, la fondation de ta base de données

Avant de coder la moindre ligne SQL, il y a une étape cruciale : la modélisation. En NSI, le schéma Entité-Association (EA) est l'outil visuel qui te permet de cartographier les données de ton système. Imagine-le comme le plan d'architecte de ta future base de données. Il représente les entités (les objets importants), leurs attributs (leurs caractéristiques) et les associations (les liens) qui les unissent. Maîtriser cette étape, c'est éviter des heures de corrections et de restructuration de code SQL plus tard. Suis le guide !

Étape 1 : Identifier les entités et leurs attributs

La première chose à faire est de lire attentivement l'énoncé ou d'analyser le besoin. Ton objectif : repérer les noms communs qui représentent des objets sur lesquels on souhaite stocker des informations.

  • Une entité : C'est un objet du monde réel, identifiable et distinct. Exemples : Livre, Étudiant, Commande, Produit.
  • Un attribut : C'est une propriété qui décrit une entité. Exemples pour l'entité Étudiant : numéro_étudiant, nom, prénom, date_naissance.

Dans ton schéma, une entité se représente par un rectangle. À l'intérieur, tu listes ses attributs. L'un d'entre eux doit être souligné : c'est l'identifiant (ou clé primaire), unique pour chaque occurrence de l'entité. Pour un étudiant, ce sera très souvent le numéro_étudiant.

Astuce NSI : Pose-toi la question "Est-ce que cet élément a une existence propre ?". Si oui, c'est probablement une entité. Si c'est juste une caractéristique d'autre chose (comme une couleur ou un prix), c'est un attribut.

Étape 2 : Modéliser les associations et leurs cardinalités

Les entités ne vivent pas isolées ! Elles sont reliées entre elles par des associations. Une association se représente par un losange.

  • Une association : C'est un lien sémantique entre plusieurs entités. Exemples : Emprunter (lie un Étudiant et un Livre), Contenir (lie une Commande et des Produits).

Le plus important ici est de définir les cardinalités. Elles précisent pour chaque entité participante combien de fois elle peut participer à l'association.

Comprendre la notation (X, Y)

Sur le lien entre une entité et une association, tu notes (min, max).

  • Min (0 ou 1) : Participation minimale. 0 signifie "peut ne pas participer", 1 signifie "doit participer au moins une fois".
  • Max (1 ou n) : Participation maximale. 1 signifie "au plus une fois", n (ou *) signifie "plusieurs fois".

Exemple concret : L'association "Emprunter" entre Étudiant et Livre.
Pour Étudiant : (0, n) → Un étudiant peut n'emprunter aucun livre (0) ou en emprunter plusieurs (n).
Pour Livre : (0, 1) → Un livre peut ne pas être emprunté (0) ou être emprunté par au plus un étudiant à la fois (1).

Étape 3 : Raffiner le modèle (attributs d'association, héritage)

Parfois, une information ne dépend pas d'une seule entité, mais de l'association elle-même. C'est un attribut d'association.

Exemple : Dans l'association "Emprunter", la date_emprunt n'est pas une propriété de l'étudiant ni du livre, mais bien de l'acte d'emprunt lui-même. Tu places alors cet attribut sur le losange de l'association.

Dans certains cas, tu peux avoir des entités qui sont des spécialisations d'une autre (héritage). Par exemple, Utilisateur est une entité générale, et Étudiant et Enseignant en sont des spécialisations. On représente cela par un triangle pointant vers l'entité générale (la super-classe).

Étape 4 : Transformer le schéma EA en modèle relationnel (tables SQL)

C'est l'étape finale avant le code ! Chaque entité devient une table. Chaque attribut devient une colonne. L'identifiant devient la clé primaire (PRIMARY KEY).

Pour les associations, c'est plus subtil :

  • Association de cardinalité (1,1) - (0,n) ou (1,n) : On ajoute une clé étrangère (FOREIGN KEY) dans la table du côté "n". Exemple : Dans la table LIVRE, on ajoute une colonne `id_etudiant_emprunteur` qui référence la table ETUDIANT.
  • Association de cardinalité (0,n) - (0,n) (association plusieurs-à-plusieurs) : On crée une nouvelle table de liaison. Cette table contient les clés primaires des deux entités associées (qui forment une clé primaire composée) et peut contenir les attributs de l'association. Exemple : Une table EMPRUNTER avec `id_etudiant`, `id_livre` (clé primaire composée) et `date_emprunt`.

Et voilà ! Tu as maintenant un modèle relationnel solide, prêt à être implémenté en SQL avec CREATE TABLE.

Exemple complet : Modélisation d'une bibliothèque

Prenons un cas concret pour synthétiser.

Besoin : On souhaite gérer les emprunts de livres dans une bibliothèque. Un livre a un titre, un ISBN et un auteur. Un étudiant a un numéro, un nom et un prénom. Un emprunt lie un étudiant et un livre à une date donnée. Un livre ne peut être emprunté que par un étudiant à la fois. Un étudiant peut emprunter plusieurs livres.

Schéma EA :
Entité LIVRE (ISBN, titre, auteur)
Entité ETUDIANT (num_etudiant, nom, prénom)
Association EMPRUNTER (date_emprunt) entre LIVRE (0,1) et ETUDIANT (0,n)

Transformation en tables SQL :

  • Table LIVRE : ISBN (PK), titre, auteur, id_etudiant_emprunteur (FK NULLABLE vers ETUDIANT).
  • Table ETUDIANT : num_etudiant (PK), nom, prénom.

La clé étrangère est placée dans LIVRE car c'est le côté "1" de l'association (un livre est lié à au plus un étudiant).

📚 Pour aller plus loin

Questions fréquentes

Comment choisir entre mettre un attribut dans une entité ou créer une nouvelle entité ?

Si l'élément a plusieurs valeurs pour une même occurrence (ex: plusieurs numéros de téléphone pour un client) ou s'il a lui-même des attributs complexes, il vaut mieux en faire une nouvelle entité. Sinon, garde-le comme attribut simple. La règle d'or : une cellule dans une table ne doit contenir qu'une seule valeur atomique.

Que faire si une association relie plus de deux entités ?

C'est une association n-aire (ternaire, etc.). Elle se modélise aussi par un losange, avec un lien vers chacune des entités participantes. À la transformation, elle deviendra presque toujours une table de liaison spécifique qui contiendra les clés étrangères vers toutes les entités concernées. Exemple : 'Livraison' entre Livreur, Client et Commande.

La différence entre (0,1) et (1,1) est-elle vraiment importante ?

Oui, absolument ! C'est la différence entre une relation optionnelle et obligatoire. (1,1) signifie 'doit être lié à exactement un'. En SQL, la clé étrangère sera NOT NULL. (0,1) signifie 'peut être lié à au plus un'. La clé étrangère pourra être NULL. Cela impacte directement l'intégrité des données et le comportement de ton application.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
schema EAmodele relationnel NSI
Pixel