Entités, tables, liens et autre MCD

Hier, Simon nous interpellait
sur la difficulté de créer son MCD…

Je pars en effet du commentaire laissé par Simon

Pour ceux qui ne sont pas encore familiarisés avec le jargon, MCD veut dire Modèle Conceptuel de Données. Ou dit autrement, comment penser la structure, l’organisation de ses données…

Dès que le projet dépasse quelque peu les simples listes, il est important de bien modéliser, c’est-à-dire de bien répartir les données en différentes entités, qui deviendront des tables. Je le vois bien pendant les formations, ou plus encore lors des séances de coaching, c’est la base du succès, ou l’explication de l’échec. C’est dire l’importance de la question de Simon…

Comment répondre de façon générale ? Difficile ! J’ai écrit 2 cahiers et 4 fiches Astuces sur le sujet, soit plus de 150 pages, tout en ayant l’impression de ne pas avoir tout traité  😉

On peut cependant dire qu’il faut voir l’ensemble de toutes les données à gérer, en les répartissant entre différentes entités-tables, et poser des relations entre elles. Simon voulant « gérer son entreprise », je prends l’exemple simple d’une petite gestion commerciale, pour suivre les clients. Je pose que les clients sont des entreprises chez lesquelles je connais plusieurs personnes.

Qu’est-ce qu’une entité ? C’est une partie de nos données qui peut être indépendante des autres.

Une entreprise est-elle indépendante des personnes ? Dans la vraie vie, on dira que l’entreprise dépourvue d’être humain n’ira sans doute pas très loin. Mais en informatique, la réponse est oui. Entreprise et personne forment ici deux entités. Une façon  de voir est d' »humaniser » ces entités. En d’autres termes, s’interroger : si l’une meurt, que devient l’autre ? Si l’entreprise fait faillite, cela n’envoie pas tous les salariés au cimetière (même si le patron déprimé peut éventuellement être dans ce cas). Si un salarié meurt, cela ne crée pas automatiquement la faillite (sauf éventuellement une entreprise uni-personnelle). Mais globalement, entreprise et salariés ont leur propre vie. Ils peuvent se séparer, se rapprocher,…
On a bien deux entités, on aura donc deux tables.

On partira aussi des relations que l’on voit entre les entités. L’idée principale est que chaque donnée est idéalement présente une seule fois (il y a quelques exceptions, entre autre pour des aspects légaux parfois). Puis chaque relation entre des entités peut être définie sur deux types principaux : « 1 à n » et « n à n ».

Plus concrètement, je dirai que la relation entre « Entreprise » et « Personnes » est le plus souvent de 1 à n. Parce qu’une entreprise peut avoir n salariés, « n » étant ici un nombre compris entre 0 et l’infini. Une telle relation s’exprime avec 2 tables.

Autre exemple, celui d’une gestion de films. C’est de circonstance, vu la cérémonies des Oscars du Cinéma qui a eu lieu ce week-end 😉
Un film aura 1 ou n acteurs. Mais un acteur pourra tourner dans 1 ou n films. On a ce que l’on appelle une relation « de n à n ». Une telle relation s’exprime avec 3 tables. Il y a une table de jonction entre les deux tables principales. Ici on aura la table « Film » et la table »Acteur » avec entre les deux la table « Rôle ». Chaque fiche de celle-ci sera le mariage entre un film et un acteur et portera toutes les précisions comportant son rôle (type, costumes, psychologie du personnage,… que sais-je encore…).

Le MCD, c’est poser sur papier les entités et leurs relations. Et généralement, il y en a toujours plus que ce que l’on imagine au début. Par exemple, comment gérer l’adresse de mes clients ? Je peux créer les rubriques d’adresses classiques dans la fiche de la société. Mais si j’ai 2 ou 3 adresses : siège social, entrepôt de livraison, comptabilité pour la facturation ?… Je peux être amené à créer une table « Adresse » pour gérer le fait qu’une entreprise puisse avoir n adresses. Et cela sera pire pour gérer les moyens de communiquer avec elle : téléphone standard, fax, site Web, portable, Skype, Linkedin,… et j’en passe. La table « Communication » est aujourd’hui quasi obligatoire…

Bien ! J’espère que cela éclairera certains d’entre vous. Mais je suppose que cela ne suffira pas à notre ami Simon, qui a déjà lu des informations de ce type, j’imagine.

C’est là que l’on rejoint les limites d’un article, et même celles des nombreux tutos que nous avons sur le sujet des liens. Car il faut se plonger dans LE projet de Simon, travailler directement avec lui. Comment faites-vous telle action ? Quelles informations récoltez-vous sur les entreprises, les personnes, les… et quelles relations y a-t-il entre elles ? Y a-t-il des exceptions ? Et j’en passe…
C’est le rôle de l’analyse, et le plus souvent, un œil externe est une force (mini-audit, coaching,… peu importe).

Il y a quelques mois, j’avais imaginé lancer une sorte de formation de groupe, donc « accessoirement » moins chère que la formation individuelle, où chacun viendrait présenter (en webconférence) sa problématique, ses questions,… et où on y travaillerait ensemble. On m’a expliqué que personne ne voudrait parler de ses propres questions, que j’étais trop déformé par mon passé, etc. J’ai remballé mon projet. Mais c’est dommage, car je suis sûr que Simon n’est pas le seul à se poser des questions et qu’on aurait beaucoup à y apprendre.

Dans l’immédiat, c’est un peu frustrant, mais je ne peux pas aller plus loin en l’état, sauf à renvoyer sur des lectures si elles n’ont pas déjà été faites :
– Ensemble de tutos sur les liens dans la librairie (il suffit de chercher « lien » en haut à droite dans la zone de recherche de la librairie)
– Fiche technique sur le cahier des charges, dans la zone de ressources des membres
– L’article sur le piège N°1 des fausses évidences.

À suivre

Michel Lansard

PS : vous avez votre façon de répondre ? Venez nous la partager….

 

 

Merci de laisser un commentaire (déjà 2 commentaires )

Désolé, les commentaires des articles réservés sont eux-mêmes réservés


  1. magaliej
    10 ans ago

    Quand je crée un modèle conceptuel de données, j’utilise une nomenclature assez répandue chez les concepteur de SGBD : mes entités sont nommées par des noms (pour reprendre l’exemple de Michel = Acteur et Film sont deux entités) et mes associations sont nommées par des verbes (sa table « Rôle » s’appellerais chez moi « Jouer » ou « Interpréter » par exemple). Cela me permet de reprendre des mois ou des années après un développement en pouvant d’un seul coup d’œil différencier mes tables « entités » (porteuses d’informations plus ou moins statiques) de mes tables « associations » qui, elles, sont des tables de lien.


  2. Jos
    10 ans ago

    Bonjour,

    Voici 3 adresses qui traitent ce sujet :
    – Séminaire Web – Introduction aux bases de données relationnelles – 5 février 2013 :
    > https://fmdev.filemaker.com/docs/DOC-3083
    – Le graphique des liens :
    > http://www.1-more-thing.com/Le-graphique-des-liens.html
    Il y a aussi un cours en ligne pour développeur débutant sur la structure d’une BDD :
    > http://www.cqfd-fmp.fr/index.php?n=Tutoriel-Filemaker.Structure
    Avec ces 3 exposés, je pense qu’on peut déjà mieux comprendre comment démarrer l’analyse et la structure d’une BDD.

    J’ai fini par comprendre comment démarrer une BDD avec FileMaker grâce à ces 3 adresses.

    Cordialement,

    ***
    Jos