Aller au contenu principal

Merise - Le MCD

Ce modèle a pour objectif de représenter sous forme graphique les données et les relations entre ces données.
Avant le MCD, nous sommes en théorie en possession du dictionnaire de données qui contient toutes les informations qui vont nous être utiles.

Il est important de noter que l'on doit rester le plus clair possible dans la représentation des données, car ce modèle doit être compris par tout le monde : y compris le client final.

Les définitions

Chaque regroupement de données est appelé une entité, et chaque entité est composée d'attributs.
Les relations entre les entités sont représentées par trois éléments :

  • Un trait reliant les entités (ou la même entité dans le cas d'une relation réflexive)

  • Un verbe qui décrit la relation à l'infinitif

  • Une cardinalité pour quantifier la relation entre les entités

  • Entité : Regroupement de données, représentée par un rectangle jaune dans le schéma ci-dessous.

  • Attribut : Propriété d'une entité

    • Discriminant (ou déterminant) : Attribut qui permet de distinguer les occurrences d'une entité. Il est souligné et en gras dans le schéma.
    • Attribut unique : Attribut qui ne peut pas avoir la même valeur pour deux occurrences d'une entité. Il est en gras dans le schéma.
  • Relation : Lien entre deux entités, représentée par un trait reliant les entités.

  • Cardinalité : Nombre d'occurrences (minimum et maximum) d'une entité qui peuvent être associées à une occurrence d'une autre entité.

Exemple de MCD

C'est pas clair ? Prenons alors ce modèle ! Modèle Conceptuel de Données, MCD, Merise

Ce modèle nous indique plusieurs choses :

  • Deux entités sont présentes :
    • Entité 1 et Entité 2
  • L'entité Entité 1 possède quatre attributs :
    • code entité 1 (discriminant)
    • attribut 2
    • attribut 3
    • attribut 4
  • L'entité Entité 2 possède trois attributs :
    • code entité 2 (discriminant)
    • attribut 2
    • attribut 3
Pourquoi il n'y a pas d'ID dans le schéma ?

Avant d'expliquer pourquoi il n'y a pas d'ID, je me permets de faire un petit écart pour expliquer ce qu'est un ID.

ID, c'est le nom qu'on donne pour parler de l'identifiant qui se doit d'être unique afin d'identifier facilement une ressource d'une autre.

Il s'agit, en réalité, d'une donnée purement technique.
Après tout, c'est pas le client final qui va s'intéresser à l'ID de ses données, n'est-ce pas ?

Comme le MCD se doit d'être non-technique, le terme ID n'est donc pas pertinent et surtout : n'a pas sa place.

En reprenant le schéma ci-dessus, on peut dire que le code entité 1 et le code entité 2 sont les déterminants de leurs entités respectives.
Une fois qu'on fera nos schémas techniques (MLD, MRD, MPD), on pourra alors utiliser le terme ID !

Tiens d'ailleurs, autre sujet important pour le MCD !

On a vu que certains termes ne sont pas employés (comme ID, mais également tables, clé primaire ou encore clé étrangère) pour respecter la nature du document qui se veut non-technique.
Mais il y a autre chose qui peut nous sauter aux yeux : c'est écrit en français !

La raison est identique à ce que j'ai pu rabâcher plus tôt : le document doit être compris par tout le monde.
Et si le client final est francophone, il est donc plus simple de lui présenter un document dans sa langue maternelle.

Mouais, toujours pas convaincu par le MCD

Tant pis pour toi ! 😜
Si je devais te donner un argument majeur, ce serait celui-ci. Après j'abandonne, promis !

Ton client est un spécialiste dans son domaine, mais toi tu n'y connais rien.
Il te parle de certaines données, tu arrives à peu près à comprendre comment ça fonctionne, mais tu n'as pas toutes les informations.

D'une part, le dictionnaire de données t'en donne la nature et "qui" (l'entité) possède ces données.
Par contre, comme le MCD te permet de quantifier et de qualifier les relations entre les entités, tu as une vision plus claire de ce que le client veut.

Et si le client comprend et valide le MCD, c'est que tu as bien compris ses besoins et que tu peux donc passer à la suite du projet sans foncer dans le mur, ce qui t'obligerai de déconstruire et de reconstruire une partie de ton application.