Le modèle conceptuel de données (MCD) : entités, associations, cardinalités
Savoir construire un MCD à partir d'un texte est la compétence n° 1 de l'UE 8 au DCG. Le modèle conceptuel de données de la méthode Merise repose sur trois briques : les entités, les associations et les cardinalités. Une fois la méthode acquise, l'exercice devient presque mécanique. Voici comment construire un MCD pas à pas, avec un cas fil rouge concret.
Le MCD : décrire les données avant toute technique
Le modèle conceptuel de données (MCD) est un schéma qui décrit les données et leurs liens, avant toute considération technique. C'est un point important : le MCD modélise la réalité du métier, pas l'implémentation informatique. Il est indépendant du logiciel qui sera utilisé.
Deux grandes approches de modélisation coexistent : l'approche Merise (française, avec le modèle entité-association, très utilisée dans l'enseignement et les entreprises françaises) et l'approche UML (internationale, avec le diagramme de classes). Le DCG privilégie Merise.
Les entités : les objets de gestion
Une entité est un objet ou concept du monde réel que l'on souhaite modéliser dans la base. Elle est identifiée par un nom et caractérisée par des attributs. Exemples : CLIENT, PRODUIT, COMMANDE, SALARIÉ.
Chaque entité possède un identifiant unique - sa future clé primaire : NumClient pour CLIENT, ISBN pour LIVRE. Sans identifiant, impossible de distinguer deux occurrences.
Astuce de lecture d'énoncé : les entités correspondent généralement aux noms communs du texte (client, séjour, destination...).
Les associations : les liens entre entités
Une association traduit une relation existant entre deux ou plusieurs entités. Elle est nommée par un verbe : un client PASSE une commande, un auteur ÉCRIT un livre, un moniteur ENCADRE une activité.
Dans l'énoncé, les associations se repèrent par les verbes. Une association peut elle-même porter des attributs : dans une réservation, la date, le nombre de personnes et le taux de remise n'appartiennent ni au client ni au séjour, mais à l'association RESERVER qui les relie.
Les cardinalités : combien de fois ?
La cardinalité indique le nombre minimum et maximum d'occurrences d'une entité pouvant être associées à une occurrence d'une autre entité. Elle se note (min, max) : 0,1 / 1,1 / 0,n / 1,n.
Pour la déterminer, posez la question dans les deux sens : « un X peut-il être lié à combien de Y au minimum et au maximum ? » On distingue alors deux types d'associations :
- L'association hiérarchique (1,n) : un lien direct et unique. Une commande est passée par UN SEUL client (côté commande : 1,1 ; côté client : 0,n ou 1,n).
- L'association non hiérarchique (n,n) : liens multiples dans les deux sens. Un auteur peut écrire PLUSIEURS livres, et un livre peut avoir PLUSIEURS auteurs.
Cette distinction est capitale, car elle détermine la traduction en tables au moment du passage au modèle logique.
Construire un MCD en 5 étapes
La méthode du cours :
- Identifier les ENTITÉS en repérant les noms communs du texte (client, produit, commande...).
- Identifier les ATTRIBUTS de chaque entité (nom, adresse, prix...).
- Choisir l'IDENTIFIANT (clé primaire) de chaque entité.
- Identifier les ASSOCIATIONS (les verbes : passe, commande, fabrique...).
- Déterminer les CARDINALITÉS en posant la question « un X peut-il être lié à combien de Y ? » dans les deux sens.
Sixième réflexe, à ne pas négliger : vérifier la cohérence du MCD avec les règles de gestion énoncées dans le texte. Et en amont, le dictionnaire des données (nom, description, type, taille, entité de chaque donnée) sert de base de recensement et de vérification.
Cas concret : l'agence de voyages VacancesPlus
Le cas fil rouge du cours applique la méthode. L'agence VacancesPlus gère des clients, des destinations et des séjours. Un client peut réserver plusieurs séjours. Un séjour concerne une seule destination, mais une destination peut proposer plusieurs séjours. Lors de la réservation, on enregistre la date, le nombre de personnes et un taux de remise.
Étapes 1 à 3 : trois entités - CLIENT (NumClient, nom, prénom, adresse, email), DESTINATION (CodeDest, libellé), SEJOUR (CodeSejour, nombre maxi, prix, date de départ, durée).
Étapes 4 et 5 : deux associations.
- CLIENT - RESERVER - SEJOUR : un client réserve 0 ou plusieurs séjours (0,n), un séjour peut être réservé par 0 ou plusieurs clients (0,n). Association n,n, qui porte les attributs DateReservation, NbPersonne, TauxRemise.
- DESTINATION - PROPOSER - SEJOUR : une destination propose 0 ou plusieurs séjours (0,n), un séjour concerne exactement 1 destination (1,1). Association 1,n.
Du MCD au MLD : les règles de passage
Le modèle logique de données (MLD) traduit le MCD en format exploitable par un SGBD : chaque entité devient une table, chaque attribut une colonne. Deux règles gouvernent les associations :
- Association hiérarchique (1,n) : la clé primaire du côté « 1 » migre comme clé étrangère du côté « n ». Pour VacancesPlus : CodeDest migre dans la table SEJOUR.
- Association non hiérarchique (n,n) : on crée une table intermédiaire (table d'association) dont la clé primaire est la concaténation des clés primaires des deux entités, et qui accueille les attributs de l'association. Pour VacancesPlus : la table RESERVER avec #NumClient, #CodeSejour, DateReservation, NbPersonne, TauxRemise.
En notation en intension, la clé primaire est soulignée et les clés étrangères sont précédées du symbole #.
Merise vs UML : attention à la lecture des cardinalités
Le diagramme de classes UML représente la même structure avec quelques différences : les verbes des associations sont généralement omis, les méthodes des classes peuvent être indiquées, et les cardinalités s'écrivent en notation simplifiée (1, 0.., 1..).
Surtout, retenez la source de confusion n° 1 entre les deux formalismes : en Merise, la cardinalité se lit du côté de l'entité concernée ; en UML, elle se lit du côté opposé. Précisez toujours quel formalisme vous utilisez dans votre copie.
Les erreurs fréquentes
- Confondre entité et attribut : si un élément a ses propres attributs, c'est probablement une entité. Mais « Adresse » avec rue, CP et ville reste en général un attribut composé de CLIENT, pas une entité séparée.
- Déterminer les cardinalités dans un seul sens : posez toujours la question dans les DEUX sens. Si la réponse est « plusieurs » des deux côtés, c'est une association n,n.
- Oublier la table d'association pour une n,n : une association n,n nécessite TOUJOURS une table intermédiaire dans le MLD. Sans elle, la base ne peut pas stocker les liens.
- Placer la clé étrangère du mauvais côté dans une 1,n : la FK migre du côté du « n » (la table dont chaque occurrence est liée à UNE occurrence de l'autre), jamais du côté du « 1 ».
FAQ
Qu'est-ce qu'une cardinalité dans un MCD ?
C'est l'indication du nombre minimum et maximum d'occurrences d'une entité pouvant être associées à une occurrence d'une autre entité, notée (min, max) : 0,1 / 1,1 / 0,n / 1,n. Exemple : un séjour concerne exactement une destination (1,1), une destination propose zéro ou plusieurs séjours (0,n). Attention au sens de lecture : en Merise, la cardinalité se lit du côté de l'entité concernée.
Quelle est la différence entre une association 1,n et une association n,n ?
L'association hiérarchique (1,n) crée un lien direct et unique : une commande est passée par un seul client. Au passage au MLD, la clé primaire du côté « 1 » migre comme clé étrangère du côté « n ». L'association non hiérarchique (n,n) crée des liens multiples dans les deux sens : un auteur écrit plusieurs livres et un livre peut avoir plusieurs auteurs. Elle exige une table d'association dans le MLD, dont la clé primaire concatène les clés des deux entités.
Comment trouver les entités et les associations dans un énoncé ?
Méthode du cours : les entités correspondent aux noms communs du texte (client, produit, commande), les associations aux verbes (passe, réserve, encadre). Identifiez ensuite les attributs de chaque entité, choisissez les identifiants, puis déterminez les cardinalités en posant la question « combien de... ? » dans les deux sens. Terminez en vérifiant la cohérence avec les règles de gestion de l'énoncé.
Entraînez-vous
Mini-cas : l'auto-école ConduiteFacile gère des élèves et des moniteurs. Un élève suit des leçons de conduite : chaque leçon est donnée par un seul moniteur à un seul élève, à une date donnée et pour une durée donnée. Un moniteur peut donner de nombreuses leçons, un élève peut en suivre plusieurs.
- Identifiez les entités, leurs identifiants et l'association (ou les associations) avec leurs attributs.
- Déterminez les cardinalités en posant la question dans les deux sens.
- Traduisez le MCD en MLD (notation en intension).
Afficher le corrigé
1. Entités et associations
- Entités (les noms communs de l'énoncé) : ELEVE (NumEleve, nom, prénom...), MONITEUR (NumMoniteur, nom...) et LECON (NumLecon, DateLecon, Durée). LECON est bien une entité : elle a son propre identifiant et ses propres attributs (date, durée), et chaque leçon doit être distinguée des autres.
- Associations (les verbes) : ELEVE - SUIVRE - LECON et MONITEUR - DONNER - LECON.
2. Cardinalités (question posée dans les deux sens)
- Une leçon est suivie par exactement un élève : LECON côté SUIVRE = (1,1) ; un élève suit zéro ou plusieurs leçons : ELEVE = (0,n). Association hiérarchique 1,n.
- Une leçon est donnée par exactement un moniteur : LECON côté DONNER = (1,1) ; un moniteur donne zéro ou plusieurs leçons : MONITEUR = (0,n). Association hiérarchique 1,n.
(Rappel Merise : la cardinalité se lit du côté de l'entité concernée.)
3. Passage au MLD
Règle des associations hiérarchiques : la clé primaire du côté « 1 » migre comme clé étrangère du côté « n » - ici dans LECON, qui est du côté (1,1) de chaque association :
- ELEVE (NumEleve, Nom, Prénom)
- MONITEUR (NumMoniteur, Nom)
- LECON (NumLecon, DateLecon, Durée, #NumEleve, #NumMoniteur)
Aucune table d'association n'est nécessaire : il n'y a pas d'association n,n (celle-ci n'apparaîtrait que si l'on reliait directement ELEVE et MONITEUR sans passer par l'entité LECON).