Vous êtes sur la page 1sur 7

Merise : Rgle de passage du MCD au MLDR et MPD

Aprs avoir conu le Modle Conceptuel de Donne (MCD), il est maintenant temps de le transposer en Modle Logique de Donnes Relationnelles (MLDR). Ce MLDR est en fait le dernier pas vers le Modle Physique de donne(MPD), c'est dire la description de la base qui va tre cre. Et l, deux solutions s'ouvrent vous : soit vous laissez un programme le soin de transformer votre MCD, soit vous le fates vous-mme. Dans les deux cas, il est utile d'avoir un minimum de connaissance thorique sur le sujet. Aprs avoir dfinis les notions de cl primaire et de cl trangre, nous tudierons plus particulirement aujourd'hui les 6 rgles strictes, ncessaires et suffisantes pour passer d'un MCD un MLDR, et nous les appliquerons ensuite au schma de Newsletter que nous avons cris la dernire fois.
Prliminaires : le Modle Logique de Donne (MLD) Il s'agit du passage entre le Modle Conceptuel de Donne et l'implmentation physique de la base. Le MLD est lui aussi indpendant du matriel et du logiciel, il ne fait que prendre en compte l'organisation des donnes. C'est d'ailleurs le point primordial de la modlisation : si l'organisation des donnes est relationnelle (si elles sont "lies" entre elles), alors le MLD est Relationnel et devient le MLDR, ou Modle Logique de Donne Relationnel. Pour la petite histoire, le MLDR a t invent par Codd en 1970, et repose sur la Thorie Ensembliste... Un peu de vocabulaire : Les donnes sont stockes dans des relations. Une relation est un ensemble de T-uple, et un T-uple est dfinis par un ou plusieurs attributs. Dans la pratique, la relation est en fait la table, un T-uple est une ligne (ou enregistrement), et les attributs sont les colonnes. Exemple de la table NEWSLETTER :

Cette table est dcrite par : NEWSLETTER (id_newsletter, Sujet, DateEnvoie, Contenu, #id_rubrique) Chaque enregistrement doit tre identifi de manire unique (voir la notion d'identifiant aborde dans l'article prcdent). L'attribut qui permet d'identifier de faon unique chaque ligne est appele la Cl Primaire. Elle peut tre compose, c'est dire comprendre plusieurs attributs. Ici, il s'agit de l'attribut id_newsletter. La table Newsletter comprend un attribut provenant de la table RUBRIQUES, l'attribut id_rubrique. Cet attribut est appel Cl Etrangre. Dans le formalisme, la cl primaire est souligne, et la cl trangre est prcde du signe #. D'o l'criture dfinitive : MATABLE (Cle_Primaire, Colonne1, Colonne2, #Cle_Etrangere) Dans notre exemple : Rubrique (id_rubrique, Nom) Newsletter (id_newsletter, Sujet, DateEnvoie, Contenu, #id_rubrique) Ici, id_rubrique est la Cl Primaire de la table RUBRIQUE, et est une Cl Etrangre dans la table NEWSLETTER.

Une fois assimile ces notions de cls primaires et de cls trangres, nous pouvons maintenant noncer les rgles suivantes : 1 : Une entit se transforme en une relation (table) Toute entit du MCD devient une relation du MLDR, et donc une table de la Base de Donne. Chaque proprit de l'entit devient un attribut de cette relation, et dont une colonne de la table correspondante. L'identifiant de l'entit devient la Cl Primaire de la relation (elle est donc souligne), et donc la Cl Primaire de la table correspondante.

<==>

CLIENT (id_client, Nom_Client, Tel_client)

2 : Relation binaire aux cardinalits (X,1) - (X,n), X=0 ou X=1 La Cl Primaire de la table la cardinalit (X,n) devient une Cl Etrangre dans la table la cardinalit (X,1) :

Exemple de Systme d'Information (SI) : Un employ a une et une seule socit. Une socit a 1 ou n employs.

Modle Conceptuel de Donne (MCD) :

Modle Logique de Donne Relationnelle (MLDR) : EMPLOYE (id_Employe, Nom_Employe, #id_Societe) SOCIETE (id_Societe, Nom_Societe)

Modle Physique de Donne (MPD), ou schma de base :

3 : Relation binaire aux cardinalits (X,n) - (X,n), X=0 ou X=1 Il y a cration d'une table supplmentaire ayant comme Cl Primaire une cl compose des identifiants des 2 entits. On dit que la Cl Primaire de la nouvelle table est la concatnation des Cls Primaires des deux autres tables. Si la relation est porteuse de donne, celles ci deviennent des attributs pour la nouvelle table.

S.I. : Une commande est compose de 1 ou n produits distincts en certaine quantit. Un produit est prsent dans 0 ou n commandes en certaine quantit.

MCD :

MLDR : COMMANDE (id_Commande, Date_commande) PRODUIT (id_Produit, libelle) COMPOSE (id_Commande, id_Produit, qantit)

MPD :

4 : Relation n-aire (quelles que soient les cardinalits). Il y a cration d'une table supplmentaire ayant comme Cl Primaire la concatnation des identifiants des entits participant la relation. Si la relation est porteuse de donne, celles ci deviennent des attributs pour la nouvelle table.

S.I. : Un tudiant parle une ou plusieurs langues avec un niveau. Chaque langue est donc parle par 0 ou n tudiants avec un niveau. Pour chaque niveau, il y a 0 ou plusieurs tudiants qui parlent une langue.

MCD :

MLDR : ETUDIANT (id_Etudiant, Nom_Etudiant) NIVEAU (id_Niveau, Nom_Niveau) LANGUE (id_Langue, Nom_Langue) PARLE (id_Etudiant, id_Niveau, id_Langue)

MPD :

5 : Association Rflexive.

Premier cas : cardinalit (X,1) - (X,n), avec X=0 ou X=1. La Cl Primaire de l'entit se ddouble et devient une Cl Etrangre dans la relation ou nouvelle table. Exactement comme si l'entit se ddoublait et tait relie par une relation binaire (X,1) - (X,n) (Cf rgle 2).

S.I. : Prenons l'exemple d'une socit organise de manire pyramidale : chaque employ a 0 ou 1 suprieur hirarchique direct. Simultanment, chaque employ est le suprieur hirarchique direct de 0 ou plusieurs employs.

MCD :

MLDR : EMPLOYE (id_Employe, Nom_Employe, #id_Sup_Hierarchique) #id_Sup_Hierarchique est l'identifiant (id_Employe) du suprieur hirarchique direct de l'employ considr.

MPD :


Deuxime cas : cardinalit (X,n) - (X,n), avec X=0 ou X=1. De mme, tout se passe exactement comme si l'entit se ddoublait et tait relie par une relation binaire (X,n) - (X,n) (Cf rgle 3). Il y a donc cration d'une nouvelle table.

S.I. :

Prenons cette fois l'exemple d'une organisation de type familiale : chaque personne a 0 ou n descendants directs (enfants), et a aussi 0 ou n descendants directs (enfants).

MCD :

MLDR : PERSONNE (id_Personne, Nom_Personne) PARENTE (#id_Parent, #id_Enfant) #id_Parent est l'identifiant (id_Personne) d'un ascendant direct de la personne. #id_Enfant est l'identifiant (id_Personne) d'un descendant direct de la personne. La table PARENTE sera en fait l'ensemble des couples (parents-enfants) prsent dans cette famille.

MPD :

6 : Relation binaire aux cardinalits (0,1) - (1,1). La Cl Primaire de la table la cardinalit (0,1) devient une Cl Etrangre dans la table la cardinalit (1,1) :

S.I. : Dans ce centre de vacances, Chaque animateur encadre en solo 0 ou 1 groupe, chaque groupe tant encadr par un et un seul animateur.

MCD :

MLDR : ANIMATEUR (id_Animateur, Nom_Animateur) GROUPE (id_Groupe, Nom_Groupe, #id_animateur)

MPD :

CONCLUSION Ces 6 rgles reprsentent TOUS les cas que vous pourrez rencontrer. Il ne faut surtout pas se laisser impressionner par le nombre de schmas, ni se laisser intimider par le cot inhabituel du processus de modlisation. Il est trs simple acqurir. En fait, au bout de quelques modlisations et d'un ou deux dveloppements, vous vous rendrez compte que finalement tout ceci est trs logique et d'une vidence rare... Et surtout, surtout, votre base de donne correspondra EXACTEMENT au systme d'information dcris dans le cahier des charges. De plus, crire le MCD, le valider avec votre client, puis en dduire le MLDR et donc le Modle Physique vous fera rentrer compltement dans le chantier. Vous irez ensuite beaucoup plus vite, avec trs peu de risque d'tre hors sujet. Aprs, la majorit du travail restant ne sera plus qu'une question de requtes, de mise en forme et d'ergonomie, avec une bonne gestion d'Entre/Sortie de l'information... soit lMCD du SI dun Newsletter:

les rgles de transformation impliquent le MLDR suivant : MOTIVATIONS ( id_Motivation, Intitule) ABONNES ( id_Abonne, #id_Motivation, Nom, Prenom, Age, Sexe, Profession, Rue, CodePostal, Ville, Telephone, Email) S_INSCRIT ( id_Abonne, id_Rubrique) RUBRIQUES ( id_Rubrique, Nom_Rubrique) NEWSLETTERS ( id_Newsletters, #id_Rubrique, Sujet, DateEnvoie, Contenu)

Qui nous mne au Modle Physique de Donne (MPD) ou schma de la Base :