Skip to main content

MCD (Modélisation conceptuel des données)

Il est très important de savoir bien modéliser les données

2023-09-22_13-52-05_screenshot.png

Outils

  • DB-main, est un logiciel de l’université de Namur permettant de faire des MCD
  • Looping, est le logiciel utilisé en B1 pour faire les MCD (fonctionne aussi sur Linux et macOS avec Wine)
  • Mermaid, qui fonctionne avec du texte/code (attention un MCD s’appelle un ER dans la doc), qui est open source, gratuit et basé sur le web. Cependant la fonctionalité de l’héritage n’a pas encore été implémentée.

Modélisation des données

Tout système d’information manipule des données, les données doivent être et organisée, structurée de manière à faire apparaitre des dépendances. La modélisation des données propose une représentation abstraite des relations entre les différentes informations (entités). Ici on va plus précisément voir le modèle conceptuel de données qui permet de représenter toutes les données d’un systèmes et leurs relations de manière à plus tard le traduire dans un schéma de base de donnée.

Définition des éléments d’un MCD

Entité

Une entité représente un groupement d’informations communes à une classe d’objets (exemple, une entité User peut reprendre les informations “addresse email”, “numéro de téléphone” et “nom”). Chaque entité a un nom (exemple “User”) et des propriétés (exemple “nom”). Le concept d’entité et d’association sont suffisant pour modéliser n’importe quoi.

Propriétés

Les propriétés sont des caractéristiques qui dérivent les entités et qui doivent être pertinente pour le système d’information que l’on modélise (on ne vas pas mettre la taille des cheveux pour un forum). Les valeurs de ces propriétés dépendent donc de chacune des occurences de l’entité.

Identifiant

L’identifiant d’une entité est un ensemble minimal de propriétés (minimum 1 mais il faut en avoir le moins possible) permettant de distinguer une occurence parmis les autres occurences (existantes ou potentielles) de la même entité (exemple : propriété “id” par exemple).

Association

2023-09-22_14-13-32_screenshot.png

Une association est un lien logique entre 2 entités ou plus. L’association permet ainsi d’établir des liens entre certaines occurrences d’une entité. L’association elle même peut être porteurse de propriétés. L’identifiant d’une association est composé des identifiants des entités qu’elle relie (éventuellement augmenté des propriétés de l’association). Le nom d’une association est généralement un verbe liant les deux entités (par exemple “Utilisateur·ice possède Role”)

Cardinalité

Les cardinalités d’une association indiquent le nombre minimum et maximum d’occurencenes de l’entité d’arrivées qui peuvent être associés à une occurences de l’entité de départ. Les cardinalités peuvent être 0, 1, ou n (n signifiant sans limite). Par exemple un le lien entre une entité “Utilisateur·ice” et une entité “Rôle”

  • Est de 0,n dans le sens Utilisateur·ice → Role car un·e utilisateur·ice peut avoir 0 ou plusieurs rôles.
  • Est de 0,n dans le sens Role → Utilisateur·ice car un rôle peut être relié à 0 ou plus utilisateur·ice·s

Héritage

2023-09-22_14-20-48_screenshot.png

Le MCD permet aussi de représenter l’héritage d’entités. L’avantage de l’héritage c’est que l’on hérite aussi des propriétés. Par exemple dans l’exemple ici, les étudiants et les professeurs hérites des attributs “matricules”, noms et prénoms.

La notion d’héritage est surtout intéressante pour représenter des personnes par exemple.

L’héritage n’est pas représentable dans Mermaid diagrams.

Créer un MCD depuis un énoncé

  • Souligner les phrases avec les éléments inmportatnes (entités et informations pertinentes)
  • Lister les questions auquelles le modèle pourra répondre (Exemple, Peut-il déterminer la section d’un·e étudiant·e afin de pouvoir lui afficher ses cours ?)
  • Etablir la liste des entités et des liens qui les relient
  • Créer le MCD sur bases des éléments listés précédemment

MCD to MLD

MCD vs MLD

Attention que le MCD (Modèle Conceptuel de Données) n’est pas la même chose qu’un MLD (Modèle Logiques de Données, aussi appellé Modèle Relationnel). Le MLD est exactement ce qui sera présent dans la base de données tandis que le MCD est purement conceptuel. Le MCD peut donc être converti en MLD, qui lui même peut être converti en code SQL.

Traduction

Une entité devient une table, une propriété devient un attribut (ou une colonne), un identifiant devient une clé primaire et une association deviennent des relations ou des clé étrangère.

Associations - Clés étrangères

  • Les cardinalités 1,1, 0,1 ou 1,n deviennent des clés étrangères
  • Les cardinalités 0,n, 1,n ou n,n génèrent une table permettant de faire la liaison, la table a donc comme clé primaire les ids des deux autres tables.

Par exemple, pour chercher la relation entre un·e utilisateur·ice et un role, on va créer une table de liaison. On pourra donc aller chercher dans la table les ids de tous les utilisateur·ice associés à un role et inversément.

Héritage

Il existe plusieurs techniques pour traiter le cas de l’héritage.

Héritage ascendant

2023-09-22_14-57-42_screenshot.png

Les entités générales et spécialisées fusionnent en une seule table qui aura tous les attributs et un attribut supplémentaire “type” permettant de définir quel spécialité c’est. Le problème c’est que beaucoup des attributs seront null.

Il faut généralement utiliser celle ci lorsque qu’il y a peu de propriétés.

Héritage descendant

2023-09-22_14-57-52_screenshot.png

On crée des tables pour chaque entité spécialisée en y ajoutant tous les attributs de l’entité générale. Le seul “inconvénient” c’est que les attributs se retrouvent dupliqués.

Il faut mieux utiliser cette méthode lorsqu’il y a beaucoup d’attributs.

Héritage avec clé étrangère

2023-09-22_14-58-02_screenshot.png

On crée une table générale et des tables sépécialisées. Chaque table spécialisée ayant un attribut lié à la table générale. L’inconvéninent est que cela nécessite de toujours utiliser des jointures pour avoir toutes les informations sur une occurence. Et que cela augmente la complexité des relations.

Il faut mieux utiliser celle ci si on veux accèder aux informations via l’entité générale. Par exemple dans le screenshot, accéder à la liste des personnes est plus simple car il suffit de lister la table Personnes, alors que dans l’héritage descendant il aurait fallu lire les tables Etudiant et Professeur.

Base de donnée

Une base de donnée est un système qui permet de mémoriser de façon durable les données sur un support physique (mémoire secondaire) Les données modélisent des objets du monde réel qui pourront être organisé de manière à faire apparaître les relations existant entre les objets. Les données doivent pouvoir être CRUD (lues, ajoutées, modifiées et supprimée - create, read, update, delete).

Trois niveaux de schémas

2023-09-22_15-27-45_screenshot.png

On crée plusieurs schémas pour plusieurs groupes d’utilisateur·ice·s et qui permettent aussi de parler avec le client. Enfin, on crée un schéma conceptuel reprenant l’ensemble des données et des liens. Enfin il est converti en MLD pour devenir le schéma interne de la base de donnée.