Vous êtes sur la page 1sur 22

GUIDE

PRATIQUE

MODÈLE CONCEPTUEL
DES DONNÉES

MODÈLE LOGIQUE
DES DONNÉES STANDARD

MODÈLE LOGIQUE
DES DONNÉES OPTIMISÉ

D. ALESSANDRA - Guide pratique de Merise Page 1/22


Présentation théorique de Merise
A partir des deux principes de séparation de l’analyse des données et de l’analyse
des traitements d’une part, et d’une démarche en trois étapes, on obtient les
questions à se poser dans le tableau suivant :
Objectifs
Analyse des données Analyse des
• Définir, analyser, concevoir et spécifier tout projet d’organisation d’un système
traitements
Niveau Quelles informations Que veut-on faire ?
d’information
conceptuel manipule-t-on ?
Niveau Comment structurer Qui fait quoi, où, quand ?
• Ni méthode de conduite de projet, ni méthode de programmation ou logique ces données ?
d’algorithmique Niveau Où les stocker ? Comment ?
physique

• En aval du schéma directeur, en amont de la réalisation A chacune de ces six questions, il s’agira d’amener des réponses. Le tableau
suivant présente les documents qu’e la méthode Merise produit pour y répondre.

Analyse des données Analyse des


Principes traitements
Niveau Modèle conceptuel des Modèle conceptuel des
conceptuel données (M. C. D.) traitements (M. C. T.)
• Approche globale, intégrant tous les sous-systèmes
Niveau Modèle logique des Modèle organisationnel
logique données (M. L. D.) des traitements (M.O.T.)
• Conception descendante, partant des finalités de chaque activité Niveau Tables et index Procédures
physique

• Etude indépendante des données et des traitements, puis rapprochement pour Dans le cadre de l’utilisation d’un S.G.B.D., le concepteur est déchargé de
valider l’étude des données avec les résultats de l’étude des traitements, et l’implantation physique des tables. D’autre part, Merise ne guide pas le
concepteur dans la production des procédures, car elles sont dépendantes du
réciproquement. choix du système, des outils et des machines. Les seuls niveaux analysés sont
donc les niveaux conceptuel et logique.
L’expérience m’a amené à douter de l’efficacité de l’analyse des traitements
(M.C.T et M.O.T)). De plus cette conception est en partie remise en cause par les
• Approche par étapes (Conceptuelle, puis logique, enfin opérationnelle)
technologies objet développées dans les outils modernes. Ce cours ne fera donc
qu’effleurer ces chapitres, et se concentrera sur les M.C.D. et M.L.D. Enfin, les
optimisations et ajustements nécessaires en fin d’analyse seront étudiés. Nous
• Recherche des invariants du système d’informations passerons ainsi d’un M.L.D “pur” à un M.L.D. optimisé (on pourrait presque dire
“un M.L.D. perverti”.

• Utilisation d’un formalisme facilitant la lecture et la communication

D. ALESSANDRA - Guide pratique de Merise Page 2/22


Guide pratique de Merise
N.B : ce document est un support de cours, dont le but est d’aider à structurer et à mémoriser la démarche présentée
pendant le cours. Son exploitation en tant que document autonome risque d’amener à bien des incompréhensions.
Certaines notions (comme la définition précise des termes o”bjet du MCD”, “Nombre d’occurences d’un attribut”,
”acteur” ou même “Donnée” ) ne sont donc pas définies dans ce document. De même, ce document est limité à un
seul exemple, présenté pendant le cours, car l’interactivité entre enseignant et stagiaires paraît indispensable à la
compréhension de s termes employés et à la mise en situation des exemples.

I - La réalisation d’un M.C.D.


I.1 - Ce qu’on attend d’un M.C.D.

But : • Il s’agit de représenter, par un formalisme précis et en grande partie


standardisé, l’ensemble des informations que l’on doit traiter pour répondre
aux attentes du projet défini en amont de l’analyse (dans le schéma
directeur).

principes : • IL FAUT OUBLIER LES MOYENS QUI SERONT MIS EN ŒUVRE POUR LA
RÉALISATION. (il s’agit uniquement de décrire le problème à traiter, et pas
du tout de préciser, simplifier ou guider les choix qu’on sera plus tard
amenés à faire)

• Par “moyens mis en œuvre”, il faut entendre machines et systèmes


d’exploitation, mais aussi S.G.B.D, langages, outils et aussi culture
informatique et maîtrise des produits par les développeurs. Tous ces points
doivent impérativement être oubliés dans cette phase.

• Chacune des huit étapes décrites répond à une question élémentaire. Il ne


faut surtout pas essayer de préparer le terrain pour les étapes suivantes. Il
faut modestement se concentrer sur la seule question trairtée par cette
étape.

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 3/22


EXEMPLE : Facturation classique
I.2 - Les huit étapes de la réalisation d’un M.C.D.
Dictionnaire des données :
I.2.A - Le dictionnaire des données (abr : DDD)
Nom du client
But : • collecter l’ensemble des données (ou attributs) manipulées par le système. N° de référence du produit
Accessoirement (mais à long terme cet accessoire sera souvent plus Prénom du client
stratégique que le DDD), faire apparaiître dans” l’Univers du discours” (en Date facture
abrégé UDD) la liste des questions qui auront émergé dans ce collectage, quantité achetée
et des réponses qui y ont été amenées. N° de facture
Total facture
Moyens : • collecter au moins deux occurence de chacun des documents, écrits ou Prix unitaire HT
non, manipulés par chacun des acteurs. Montant TVA
• Pour chaque type de document, analyser l’ensemble de ses occurences, Prix unitaire TTC
en repérant chaque zone dont le contenu peut être amené à varier d’une Adresse du client
occurence de ce document à l’autre. Total article
• Pour chaque type de document, analyser l’ensemble de ses occurences, Nombre d’articles
en repérant chaque zone dont le contenu peut être amené à varier d’une Mode règlement
occurence de ce document à l’autre, et qui doit être mémorisé. Une telle
zone sera qualifiée de donnée. Donner un nom à chacune de ces zones, et
l’ajouter dans le dictionnaire des données. Chacun de ces noms sera
qualifié d’ “attribut”.

précautions : • Il s’agit uniquement de collecter des données. Le seul impératif est de ne


pas oublier une donnée. Tout classement, toute simplification, toute
optimisation est à proscrire.
• Comme dans chacune des autres étapes, ne jamais se demander
“comment va-t-on faire ?”, mais décrire uniquement “ce qu’il y a”.

Limites : • Ce n’est qu’à la validation du M.C.D. à l’aide du M.C.T. qu’on peut être sûrs
d’avoir effectivement obtenu le M.C.D. correspondant au problème.
Autrement dit, cette première étape du M.C.D. ne peut être automatisée.
• On ne connaît pas de moyens de définir d’une façon non ambigüe l’univers
du discours (UDD), c’est-à-dire les concepts (et par conséquences les
données) qui font ou ne font pas partie du problème à traiter.
• Un MCD ne vaut que par la qualité de l’UDD qui le sous-tend. Se rappeler
qu’à chaque question concernant l’UDD, on a 5 réponses possibles à
chaque point dont un se demande s’il doit être traité :
- il doit être traité, c’est suffisamment évident pour ne pas le signaler
- il est supposé être traité, mais il est prudent de signaler qu’il a été intégré
- il est supposé ne pas être traité, mais il est prudent de le signaler
- il ne doit pas être traité, c’est suffisamment évident pour ne pas le signaler
- On ne peut trancher : faire remonter la question au commanditaire, et faire
figurer dans l’UDD la question et la réponse fournie.
Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 4/22


I.2.B - Epuration du dictionnaire des données EXEMPLE : Facturation classique

But : • Epurer l’ensemble des attributs obtenus à l’étape précédente, en vérifiant Dictionnaire des données épuré :
que chaque donnée correspond à un “atome” d’informations, indivisible et
indépendant des autres données. Nom du client
IL NE FAUT AUCUNE REDONDANCE (DIRECTE OU INDIRECTE) DANS N° de référence du produit
UN DDD ÉPURÉ. Prénom du client
Date facture -> JourMois Facture
Moyens : • Passer en revue, l’un après l’autre et sans ordre préétabli, chacun des Année Facture
attributs du DDD et vérifier les points suivants : quantité achetée
• Vérifier les synonymes : la même donnée utilisée sous deux termes N° de facture -> Année Facture
différents par deux acteurs différents. N° Séquentiel
• Vérifier les homonymes : deux données différentes utilisées sous le même Total facture
terme par deux acteurs différents. Prix unitaire HT
• Vérifier les dépendances directes : une donnée qui peut être obtenue à Désignation
partir d’autres données (exemple : prix unitaire HT, TVA, prix unitaire TTC : Montant TVA Taux TVA
une de ces données doit être épurée). Prix unitaire TTC
• Vérifier les dépendances indirectes et les données calculées : une donnée Adresse du client -> 1° ligne adresse
obtenue comme totalisation ou comptage d’autres données (exemple : 2° ligne adresse
nombre de factures, ou chiffre d’affaires d’un client). CP
• Epurer les paramètres qui ne sont pas des données (exemple : la date de Ville
début et la date de fin d’un état récapitulatif sur une période). Total article
Nombre d’articles
précautions : • La principale difficulté concerne les difficultés de communication. Est-on Mode règlement
bien sûr que ce qu’on a entendu a le même sens pour nous et pour notre
interlocuteur ?
• Se méfier des données du genre “Nombre de “ ou “Totalisation” : elles
peuvent presque toujours être calculées à partir d’autres données plus
élémentaires, et doivent de ce fait être épurées.

Limites : • Fondamentalement, les mêmes que pour l’étape 1.2.A.


• On est obligés de s’en remettre à son bon sens pour déterminer si oui ou
non une donnée est un atome d’information indivisible dans l’univers du
discours considéré.

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 5/22


I.2.C - Mise en évidence des objets EXEMPLE : Facturation classique

But : • Découper l’ensemble des attributs du dictionnaire des données épuré en Ebauche du M.C.D :
différentes unités logiques, ici appelées “Objets du M.C.D”.

Moyens : • Reporter dans l’ébauche du M.C.D, l’un après l’autre et sans ordre préétabli,
chacun des attributs du DDD, en l’attachant si possible avec l’un des objets déjà
reconnus. Si cela n’est pas possible, créer un nouvel objet composé (pour Nom Réf. produit
l’instant) de ce seul attribut. Prénom Désignation
• Pour savoir si un attribut peut être attaché un objet, décrire dans un gand tableau 1° ligne adresse Prix unitaire HT
l’ensemble des occurences des différents attributs correspondant à l’état du 2° ligne adresse
système à un instant t1, à un instant t2… CP
Vérifier si le nombre d’occurences de l’attribut en cours de traitement est, pour Ville
chacun de ces instants, le même que le nombre d’occurences du premier objet Qantité
déjà reconnu. Si ce n’est pas le cas, se poser la même question pour le même
attribut et l’objet suivant.

précautions: • Faire preuve de modestie et SE FIER À LA TECHNIQUE PLUTÔT QU’AU BON


SENS : l’expérience montre que celui-ci est souvent mis endéfaut au cours de Mode règlement
cette étape, et qu’il peut souvent amener à regrouper dans des objets des JourMois facture
attributs ayant un nombre d’occurences plus élevé que celui de l’objet, et parfois Année facture
à dissocier des attributs qui ont tous le même nombre d’occurences. N° séquentiel
• Une erreur courante consiste à choisir l’attribut qu’ on analysera au lieu de
prendre le premier qui vient : ce choix “innocent” de l’attribut à traiter consiste en
fait à considérer le problème du regroupement de cet attribut comme déjà réglé
avant même de l’attaquer.
• En fonction de l’univers du discours, une donnée prenant un nombre fini et
prédéterminé de valeurs distinctes pourra ne pas être considérée comme un
objet mono-attribut (cf exemple : Mode règlement).
• Chaque attribut doit figurer une fois et une seule dans le M.C.D.
• Une difficulté particulière : deux occurences d’un attribut ayant la même valeur.
S’agit-il d’une seule occurence utilisée 2 fois ou de deux occurences distinctes ?
A un niveau théorique, on pourrait toujours affirmer que deux valeurs semblables
concernent toujours une seule occurence. Mais c’est souvent improductif. Il faut
amener cette téponse dans le cadre de notre univers du discours, et reformuler la
question de la manière suivante : si à deux occurences d’un attribut A
correspond la même valeur pour l’attribut B, est-ce que, de ce fait, à ces deux
occurences de l’attribut A correspondra la même valeur d’un autre attribut C ? Si
oui, on a affaire à une seule occurence de l’attribut B, et le nombre d’occurences
de A et B n’est donc pas le même (cf exemple : à 2 “n° séquentiel” distincts correspond la
même année de facturation. Mais ceci n’impose aucune valeur commune aux autres attributs du
dictionnaire. On peut donc considérer qu’on a deux occurences distinctes de “Année de
facturation” qui se trouvent avopir la même valeur, et donc que le nombre d’occurences de “n°
séquentiel” est le même que le nombre d’occurences de Année de facturation”
VOIR SYNOPTIQUE PAGE SUIVANTE POUR S’AIDER DANS C ETTE ÉTAPE.

Limites : • pas de limites : A partir de cette étape commence une démarche rigoureuse, qui
nous permettra de systématiser l’analyse. A partir d’un dictionnaire des données
épuré exact, tout merisien pourra obtenir un M.C.D, puis un M.L.D juste.
Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 6/22


SYNOPTIQUE DE REGROUPEMENT DES ATTRIBUTS

Problématique • Un attribut A a déjà été placé (seul ou regroupé avec d’autres attributs) dans l’ébauche du MCD. On veut savoir si l’attribut B, qu’on est en train de traiter, peut être regroupé dans le
même objet que A. Nous pourrons avoir 6 questions à poser (5 questions différentes) pour obtenir la réponse.

Question 1: est-ce que pour une occurrence de A, j'ai un moyen logique d’associer une occurrence et une seule de B ?
(souvent, ce moyen s’il existe, sera la présence d’une occurence de chacun de ces deux attributs A et B dans le même document ou sur le même objet physique)
Question 2: est-ce que pour une occurrence de B, j'ai un moyen logique d’associer une occurrence et une seule de A ?
(idem question 1) NB : si la réponse à l’une de ces deux questions est Non, la suite du processus décrit ici est inapplicable. Cette remarque est dûe à un défaut constaté de
commencer ce processus à la question 3
Question 3: A deux occurrences différentes de A, est-ce qu'on peut associer la même valeur pour B ?
(Si la réponse est non, on ne pourra jamais supposer que deux occurences de A partagent la même occurence de B, cette question n’empêche pas le regroupement de A et B)
Question 4: est-ce que de ce fait d'autres attributs en dépendent ?
(Si la réponse est oui, alors obligatoirement il y a une seule occurence de B pour deux occurences de A : le regroupement est impossible)
(Si la réponse est non, alors rien ne nous empêchera de dire qu’on a deux occurences de B, prenant “par hasarh” la même valeur, le regroupement reste possible)
Question 5: A deux occurrences différentes de B, est-ce qu'on peut associer deux occurrences de A prenant a la même valeur ?
(idem question 3)
Question 4: est-ce que de ce fait d'autres attributs en dépendent ?

Oui
Q1 Q2 Oui
Q3 Non
Q5 Non Même
objet
Non Non
Non Non
Oui Oui
Objets Objets
différents différents

Q4 Q4
Oui Oui

Objets Objets
différents différents

Exemple : Nom Prénom Il est facile de répondre Oui à la questions 1 en considérant les personnes physiques : chaque fois qu’il apparaît une occurence de Nom dans le système, on peut l’associer à une personne
physique, et donc au prénom de cette personne. Même raisonnement pour la question 2.
Dupont Alfred Lé réponse à la question 3 est Oui : Deux occurences de Nom (corespondant à deux personnes différentes) peuvent être associées au même prénom (ex : Dupont Alfred et Durand Alfred). Il est
Dupont Jean donc nécessaire de poser la question 4 : deux noms différents, s’ils sont associés au même prénom, auront-ils d’autres éléments en commun ? La réponse n’est jamais évidente, elle dépend
Durand Alfred évidemment de l’univers du discours, et donc du dictionnaire des données retenu. Si on gère juste un fichier d’interlocuteurs, il se peut que le partage d’un prénom par deux personnes n’ait pas
de conséquences, et on pourra affirmer que chacune cde ces deux personnes a son propre prénom, et que leur valeur commune n’est que le fruit du hasard. Mais si, dans notre U.D.D., nous
avons précisé que la date de fête doit être mémorisée (par exemple pour envoi de mail de souhait de bonne fête au jour dit) il est évident que deux personnes partageant le même prénom
Peut-on regrouper Nom et Prénom dans pourront être amenées, DE CE FAIT, à partager d’autres informations, ici la date de fête. Selon la réponse à cette question, en étudiant les contraintes de l’égalité des prénoms sur chacun des
le même objet ? autres attributs du D.D.D
NB : Se rappeler que chaque question technique posée dans cette démarche peut faire émerger une question importante de l’UDD. Dans cet exemple, la question 5 nous amène à se demander
si deux prénoms (et donc deux personnes) ayant le même nom pourront, de ce fait, avoir d’autres choses en commun . On fait ainsi émerger la question des familles : s’il s’agit de constituer un
fichier Client, négligera-t-on on intègrera-t-on cette notion de famille ? Tout raccourci consistant à regrouper “logiquement” nom et prénom dans le même objet aurait pour conséquence d’oublier
des questions parfois fondamentales.

D. ALESSANDRA - Guide pratique de Merise Page 7/22


I.2.D - Reconnaître ET IDENTIFIER les entités EXEMPLE :

But : • Reconnaître ceux qui, parmi les objets obtenus à l’étape précédente, Ebauche du M.C.D :
peuvent être “identifiés en interne”, c’est-à-dire tous les objets dont les
occurences pourront être repérées sans ambiguïté par le simple examen
des occurences de leurs attributs.
ARTICLE
Moyens : • Pour qu’un objet soit identifiable, il faut et il suffit qu’ il ne puisse pas y avoir
Nom Réf. produit
deux occurences de cet objet pour lesquelles tous les attributs auront les
Prénom Désignation
mêmes valeurs (on pourra donc reconnaître chaque occurence en
1° ligne adresse Prix unitaire HT
examinant les valeurs portées par ses attributs puisque l’ensemble de ces
2° ligne adresse
valeurs est distinct d’une occurence à l’autre).
CP
• Un objet identifiable à partir de ses attributs est appelé une entité. Choisir
Ville
un nom pour cette entité. L’entourer d’un rectangle surmonté du nom
choisi.
• Pour cette entité, il faudra ensuite déterminer un sous-ensemble le plus Qantité
limité possible de ses attributs (sous-ensemble souvent, mais non
nécessairement limité à un seul attribut), sur lequel deux occurences de
l’objet ne pourront avoir des valeurs distinctes (voir exemples). La
concaténation de cas attributs pourra donc servir à identifier chaque
occurence de l’entité. Cette concaténation sera appelée “Identifiant”. Le ou FACTURE Mode
les attributs omposant cet identifiant seront soulignés et placés en début
d’entité. Année facture Mode Reglt
N° Séquentiel
précautions : • Ici aussi, SE FIER À LA TECHNIQUE PLUTÔT QU’AU BON SENS : il arrive JourMois facture
qu’un choix d’identifiant paraisse évident et soit erronné.

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 8/22


I.2.E - identifier les autres objets EXEMPLE :

But : • Reconnaître les dépendances entre objets qui permettront d’identifier les Ebauche du M.C.D avant ajout du code client :
objets qui ne peuvent l’être par eux-mêmes.
ARTICLE
Moyens : • L’étape précédente a permis de définir un identifiant pour chaque entité.
Parmi les objets non identifiés, il faudra reconnaître ceux qui seraient Nom Réf. produit
identifiables si on essayait, à l’aide d’une redondance, de leur adjoindre un Prénom Désignation
ou des identifiants déjà reconnus. 1° ligne adresse Prix unitaire HT
• Trois cas de figure se présentent : 2° ligne adresse
CP APPARAÎT
- L’objet est identifiable par deux ou plusieurs identifiants externes :
l’objet est alors une relation porteuse de données. On reconnaît cette Ville
Quantité
propriété de la manière suivante : si l’on dupliquait ces identifiants
externes dans l’objet considéré, il y aurait, pour chaque occurence de
l’objet, une seule occurence de chaque identifiant externe, et
l’ensemble de ces identifiants externes est discriminant i.e : il n’y a FACTURE
pas deux occurences de l’objet pour lesquelles l’ensemble de ces Mode
identifiants prend les mêmes valeurs). Année facture
Pour nommer cette relation, on choisit un verbe correspondant à N° Séquentiel Mode Reglt
l’action qui lie les entités ayant fourni les identifiants de la relation. On JourMois facture
surmonte la relation de son nom, puis on l’entoure d’un cercle, et on
relie cette relation à chacune des entités ayant fourni leur identifiant.
- L’objet est identifiable par la combinaison d’un identifiant externe, et Ebauche du M.C.D après ajout du code client et reprise des étapes 1.2.B à 1.2.E
un ou plusieurs attributs internes : l’objet est alors une entité relative (il n’y a pour l’instant pas de cas d’entité relative) :
(à la fois une entité et une relation), qu’on nomme, et qu’on entoure
d’un rectangle en pointillés, relié à l’entité identifiante par une flèche CLIENT ARTICLE
partant de la sous-entité.
La reconnaissance de la part externe de l’identifiant se fait comme Code client Réf. produit
pour l’alinéa précédent (cf exemple en I.2.I ci-dessous). Cas Nom Désignation
particulier : l’objet est identifiable à partir d’un seul identifiant externe : Prénom Prix unitaire HT
il existe alors une relation (0,1) à (1,1) entre cet objet et un objet déjà 1° ligne adresse
APPARAÎT
identifié : cf § I.2.J.a ci-dessous 2° ligne adresse
- L’objet n’est pas identifiable : il faut alors ajouter un identifiant (un “n° CP
Quantité
de code”) dans le dictionnaire des données et recommencer à partir Ville
de l’étape 1.2.B.

précautions : • Ne créer d’identifiant supplémentaire dans le DDD que dans le cas où il est FACTURE
impossible d’identifier un objet ni en interne, ni en externe. Mode
• Bien vérifier qu’il n’existe qu’une occurence d’un identifiant externe pour Année facture
une occurence de l’objet. N° Séquentiel Mode Reglt
• Dans le cas où plusieurs objets ne sont identifiables ni en interne, ni en JourMois facture
externe, ne pas créer plus d’un identifiant à la fois dans le DDD (car un
identifiant créé peut servir à identifier en externe d’autres objets que celui
dans lequel il a été intégré).
• A chaque ajout d’identifiant, il est indispensable de refaire l’épuration du
dictionnaire des données, car l’identifiant créé peut rendre caducs certains
attributs initialement retenus.

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 9/22


I.2.F - Définir les autres relations de dépendance entre les objets EXEMPLE :

But : • Décrire l’existence d’autres relations, non porteuses de données, décrivant


la dépendance, en particulier les contraintes d’existence, entre les entités.
CLIENT ARTICLE
Moyens : • Réaliser un tableau carré présentant en absisse et en ordonnée la liste des
entités. Pour chaque case de ce tableau, déterminer les relations de Code client Réf. produit
dépendances susceptibles d’exister entre ce couple d’entités. Nom Désignation
• Choisir un verbe pour représenter chaque relation reconnue. Placer la Prénom Prix unitaire HT
relation dans le M.C.D, et la relier à chacune des entités mises en jeu dans 1° ligne adresse
CONCERNE APPARAÎT
cette relation. 2° ligne adresse
CP
Quantité
précautions : • Lorsqu’on a mis en lumière l’existence d’une relation entre deux objets, Ville
vérifier s’il en existe une autre entre ces deux mêmes objets.
• S’il existe à la fois une relation entre un objet A et un objet B, entre B et C
et entre A et C, vérifier : FACTURE
Mode
- si l’une des relations peut être une conséquence immédiate des deux Règle
autres. Dans ce cas, la supprimer. Année facture
Mode Reglt
- si l’on est en présence d’une seule relation entre trois entités. N° Séquentiel
- ou s’il existe bien deux manières différentes d’associer des JourMois facture
occurences de C à des occurences de A, auquel cas il existera une
boucle dans le MCD. (NB : cette boucle nécessitera probabvement
d’être exploitée par des requêtes faisant appel à des auto-jointures,
par exemple :
Select C1.Type, C2.Type, A.Nom
From A, B, C C1, C C2
Where B.CleA=A.Id
And C1.CleB=B.Id
And C2.CleA=A.Id)

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 10/22


I.2.G - Cardinalités EXEMPLE :

But : • Décrire la nature de chaque relation.

Moyens : • Etudier à tour de rôle chaque patte de chaque relation, c’est à dire chaque CLIENT ARTICLE
patte reliant une relation à une entité (ou une entité relative à une entité).
• Pour chaque patte, poser les deux questions : Code client Réf. produit
(0,n) (0,n)
- Pour n’importe laquelle des occurences de l’entité, peut-il y avoir 0 Nom Désignation
occurences de la relation, ou doit-il y en avoir au moins une ? Prénom Prix unitaire HT
- Pour n’importe laquelle des occurences de l’entité, peut-il y avoir n 1° ligne adresse
occurences de la relation, ou doit-il y en avoir au plus une ? CONCERNE APPARAÎT
2° ligne adresse
• surmonter chaque patte du couple de réponses apportées : selon le cass, CP
(0,1) ou (0,n) ou (1,1) ou (1,n). Quantité
Ville
(1,1) (1,n)
précautions : • Ne pas oublier les entités relatives.
• Ne pas pervertir les questions pour en faire par exemple “Pour n’importe FACTURE
laquelle des occurences de l’entité, peut-il y avoir 0 occurences de l’autre Mode
entité (ou des autres entités) concourant à la relation, ou doit-il y en avoir Année facture (1,1) Règle
au moins une ? N° Séquentiel Mode Reglt
(0,n)
• Ne pas oublier que souvent les cardinalités minimum ne se trouvent être JourMois facture
que des indications de traitement, sans grande importance structurelle. Par
contre les cardinalités maximum ont une imortance capitale dans
l’estimation du poids du projet (ceci sera détaillé dans le passage au
logique).
• En pratique : remettre en cause toutes les relations n’ayant aucun “n”
comme cardinalité maximale (en théorie, ceci peut exister, mais en
pratique, il y aura souvent intérêt à remplacer cette relation par la notion de
sous-entité - voir exemples du cours). En conséquence, on pourra en
pratique se permettre de négliger les cardinalités minimum. Une relation à
deux pattes ayant une patte (0,1) ou (1,1) et une patte (0,n) ou (1,n) sera
dite “relation 1-N”. Une relation à deux pattes ayant deux pattes (0,n) ou
(1,n) sera dite “relation N-N”.
• Sauf cas très tatillons de relations ayant des cardinalités (0,1) à (0,1) remis
en cause dans l’alinéa précédent, une relation porteuse de données aura
toujours des cardinalités maximum de n sur toutes ses pattes (sinon, les
attributs de la relation auraient pu être reportés dans l’entité reliée par cette
patte). La réciproque n’est pas vraie : une relation non porteuse de
données peut être du type 1-N ou N-N

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 11/22


I.2.H - Simplification à l’aide des contraintes d’intégrité fonctionnelle EXEMPLE :

But : • Modifier la présentation des relations les plus simples afin de représenter
MIEUX et plus vite la complexité réelle du M.C.D. CLIENT ARTICLE

Moyens : • En théorie : Toute relation à deux pattes ayant sur une patte une cardinalité Code client Réf. produit
(0,n)
(1,1) sera remplacée par une simple flèche partant de l’entité reliée par la Nom Désignation
patte (1,1) et aboutissant à l’autre entité concourant à la relation. Chacune Prénom Prix unitaire HT
de ces relations est appelée “contrainte d’intégrité fonctionnelle”, ou “CIF”. 1° ligne adresse
• En pratique : Toute relation à deux pattes ayant sur une patte une APPARAÎT
2° ligne adresse
cardinalité (0,1) ou (1,1) sera remplacée par une simple flèche partant de CP
Quantité
l’entité reliée par la patte (0,1) ou (1,1) et aboutissant à l’autre entité Ville
concourant à la relation.
(1,n)

précautions : • Ne pas oublier les entités relatives. FACTURE


• Ne pas pervertir les questions pour en faire par exemple “Pour n’importe
laquelle des occurences de l’entité, peut-il y avoir 0 occurences de l’autre Année facture Mode
entité (ou des autres entités) concourant à la relation, ou doit-il y en avoir N° Séquentiel
au moins une ?. JourMois facture Mode Reglt

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 12/22


I.2.I - une 9° étape : Vérification de la résistance au temps EXEMPLE :

But : • S’assurer que le modèle obtenu a bien tenu compte des évolutions On veut gérer la résistance au temps du prix des articles (on considère arbitrairement que les
susceptibles d’évoluer dans le temps. changements de taux de TVA ne font pas partie de l’univers du discours) : ceci nous amène à
introduire une donnée cachée (non visible dans les documents manipulés) “Date changement
Moyens : • Vérifier, pour chaque attribut de chaque objet, s’il y a conjonction des deux de prix d’article”. L’étape 3 nous amène à créer un nouvel objet “Fiche Prix” qui contient les
points suivants : attributs “Prix unitaire HT” et “date de changement de prix”. L’étape 5 nous amène à identifier
- La valeur d’une occurence au moins de cet attribut peut être modifiée cet objet à la fois avec le code article (externe) et la date (interne) : on a donc affaire à une
au cours de la vie du système. entité relative.
- Il faudra avoir accès à la fois à l’ancienne valeur et à la nouvelle
valeur de cette occurence
• S’il existe des attributs pour lesquels la réponse à ces deux questions est
simultanément positive, nous sommes en présence d’un M.C.D. qui “ne ARTICLE
résiste pas au temps”, et qui est donc basé sur un DDD erronné. Les (0,n)
corrections à apporter peuvent être de deux ordres : CLIENT Réf. produit
- Il existe une donnée cachée qui n’a pas été repérée dans le DDD APPARAÎT Désignation
(par exemple, la donnée “Date de modification” de l’attribut Code client
Quantité
concerné”). Il faut alors ajouter cette donnée cachée dans le DDD et Nom FICHE PRIX
refaire tout le processus à pârtir de l’étape 1.2.B (en effet, l’ajout de ce Prénom (1,n)
nouvel attribut peut amener à épurer d’autres attributs devenus 1° ligne adresse Date change
redondants). 2° ligne adresse FACTURE Prix unitaire HT
- Le nombre d’occurences de l’attribut a été sous-évalué : les valeurs CP
différentes attribuées à cet attribut au cours du temps sont en fait des Ville Année facture Mode
occurences différentes de cet attribut. Il faut alors reconsidérer le N° Séquentiel
regroupement des attributs de l’étape 1.2.C JourMois facture Mode Reglt
1.
précautions : • Il ne faut pas de remise en cause du M.C.D. obtenu à une réponse positive
à seulement la première des deux questions (i.e. “La valeur d’une
occurence au moins de l’attribut variera au cours du temps”) : si une valeur
change mais qu’on n’a pas besoin d’accéder à l’ancienne valeur, on a
alors une seule occurence de l’attribut.

Remarques :

D. ALESSANDRA - Guide pratique de Merise Page 13/22


I.2.J - Cas particuliers EXEMPLE :
On veut gérer les interlocuteurs d’une chaîne d’établissements commerciaux à des fins de
On peut, dans certaines études, se trouver confrontés à des cas “limites”, qui ne seraient pas mailing. Les commandes et factures ne sont pas gérées. Ces interlocuteurs sont des
traités d’une manière assez efficace par la méthode présentée ci-dessus : prospects ou des clients. Tous les clients commencent par etre des prospects. Pour chaque
prospect, sont saisis les nom, adresse, tél, date de création, et est attribué un n°
1.2.J.a : Sous-entités : d’interlocuteur. Est également mémorisé le commercial qui a créé la fiche prospect. Lorsqu’un
• Lorsqu’il existe entre deux entités une relation dont les cardinalités sont prospect devient client, on mémorise dans sa fiche ses coordonnées bancaires, la date de sa
(0,1) à (1,1), on ne peut pas, en théorie regrouper ces deux objets en un première commande, son montant, le site sur lequel cette commande a été passée, et le
seul (on ne peut faire ce regroupement que lorsque les cardinalités sont commercial l’ayant suivie. Une analyse rigoureuse de ces données fournirait les MCD et MLD
(1,1) à (1,1), et en principe on obtient un seul objet dès l’étape 3) suivants (cf pages 16 et suivantes pour la réalisation du MLD) :
MLD INTERLOC
• Lorsqu’on a reconnu une entité E1, identifiée par un attribut A1, et qu’on a MCD INTERLOC COMMERCIAL COMMERCIAL
un objet non identifiable E2, dont l’identification est externe, et Code
Crée Nom
complètement réalisée en associant l’identifiant A1 à l’objet E2, on a alors Code Nom Nom
... ...
une “entité relative sans identifiant interne”, et les cardinalités de la relation Nom Prénom
identifiante sont alors (1,1) à (0,1) Prénom adresse
adresse Date créa°
Dans ces deux cas, il est peu rentable de manipuler deux entités et une Date créa° CommCrea
relation, alors qu’en fait il suffirait de regrouper malgré tout ces deux objets
SITE
en un seul, en précisant que les attributs du 2° objet ne seront pas toujours CLIENT
SITE
renseignés (au prix d’une contrainte : Tous les attributs provenant de ce CLIENT Ville
deuxième objets devront être simultanément renseignés ou non) Ville Code ...
Date 1° comm Date 1° comm
Sur le terrain, je réalise systématiquement cette optimisation au niveau du Montant
...
Montant
MLD, mais ON NE PEUT PAS OPTIMISER UN MCD. Commerc
C’est ici qu’on peut faire apparaître la notion de sous entité : on dit que E2 est Ville
une sous-entité de E1, sans identifiant. UN SGBD intégrant le concept 1.
d’héritage pourra manipuler les occurences de E1 qui ne correspondent à Noter que le client est entièrement identifié par UN seul identifiant externe, d’où une entité
aucune occurence de E2 dans une table E1, et les occurences de E1 qui relative sans élément d’identification interne. On constate dans le MLD que la jointure Interloc-
correspondent à une (et donc une seule) occurence de E2 dans une table Client est improductive. Une sous-entité se présentera de la manière suivante :
enrichie E1+E2. INTERLOC COMMERC INTERLOC COMMERC
INTERLOC COMMERC
Ceci correspond à peu près à la notion d’enregistrement avec partie variante Crée Crée
du langage Pascal : Record ...Case...) Code Nom Code Nom Crée Nom
Nom ... Nom ... Code
Nom ...
Prénom Prénom
adresse adresse Prénom
Remarques : Date créa° Date créa° adresse
Date créa°
SITE SITE
CLIENT
CLIENT Ville CLIENT Ville SITE
... ... Date 1°
Date 1° comm Date 1° comm Montant Ville
Montant Montant ...
ou ou

Personnellement, c’est LA SEULE DERIVE QUE JE M’AUTORISE AU NIVEAU DU MCD :


INTERLOC COMMERCIAL * : ces champs, si nuls, le seront simultanément. De
plus, dans ce cas, les relations
Crée Nom ”traite la 1° commande” et “Est sur” ne seront pas
Code
... valorisées
Nom
Prénom
adresse 0,1
Date créa°
Date 1° comm* SITE
Montant* Est sur
0,1 Ville
...
1.

D. ALESSANDRA - Guide pratique de Merise Page 14/22


EXEMPLE :
1.2.J.b : Contraintes entre relations :

Dans certains cas, on peut avoir des dépendances logiques entre deux relations distinctes :
INCLUDE, AND et XOR.

par exemple, imaginons une relation R1entre deux entités E1 et E2, et une autre relation R2
entre deux entités E1 (à nouveau) et E3. Supposons qu’une occurence de R1 ne peut
exister que si, pour la même occurence de E1, il n’existe aucune occurence de la relation
R2 (cas du XOR) ou au contraire si l’occurence de R1 ne peut exister que s’il existe
simultanément une occurence de R2 (cas du INCLUDE), ou si l’occurence de R1 ne peut
exister que s’il existe simultanément une occurence de R2 et réciproquement (cas du AND)

On peut faire figurer ces contraintes dans un MCD

NB : ceci ne concerne que les traitements, et je préfère de loin alléger mon MCD et surtout
mon MLD en ne faisant pas figurer ce genre d’informations. En effet, ceci alourdit la lecture,
sans aider à l’élaboration des requêtes. Pour moi, il faut donc limiter ces indications aux
AGL proposant des applications générées qui mettront en œuvre les triggers ou les
contraintes d’intégrité correspondant à ces restrictions logiques. Dans tous les cas, il faudra
pouvaoir travailler au quotidien en exploitation sur un MLDdans lequel toutes ces
informations sont filtrées.

D. ALESSANDRA - Guide pratique de Merise Page 15/22


1.2.J.c : Agrégats : La solution consiste à conserver les seules pattes identifiantes à l’étape 5 :
CADEAU ENFANT
(0,n)
L’identification, au cours de l’étape 5, des relations porteuses de données, peut masquer
des liens non identifiants entre cette relation et d’autres entités. La technique décrite ici ne NomCad Nom
CHOISIT
permet pas de faire émerger ces liens. Mais la nature même de ces liens est différente des Prix cur Prénom
liens déjà présentés. Il faut donc pouvoir décrire des “pattes non identifianrtes” dans des … NatureChoix Date naiss
relations multi-pattes. …
(0,n)
EXEMPLE :
Pour un arbre de noël d’un comité d’entreprise, chaque enfant concerné reçoit chaque ARBRE
année un cadeau, choisi soit par le parent salarié, soit par le gestionnaire du système
(donnée booléenne représentée par “Nature choix”). Les entités Enfant, Année et Cadeau Année arbre
ont déjà été identifiées (grâce à des éléments de l’univers du discours non reportés ici). Budget Max
La technique présentée en étape 5 donne cette ébauche, la nature choix étant pleinement
identifiée par l’enfant et l’année (un seul choix possible par enfant et par an, et une nature Puis, à l’étape 6, à vérifier s’il existe des liens entre les objets du MCD, que ces objets soient
de choix et une seule par choix. D’autre part, on ne peut identifier le choix par Enfant et des entités, des entités relatives, OU des relations porteuses de données. S’il existe un lien
Cadeau, car le même enfant paut recevoir le même cadeau deux années différentes) : entre une relation porteuse de données et une entité (ou une entité relative), il faudra utiliser
l’une des deux représentations suivantes.
CADEAU ENFANT ENFANT ENFANT
(0,n)
CADEAU ENFANT
NomCad Nom CHOISIT CADEAU Nom CADEAU Nom
CHOISIT Nom
Prix cur Prénom NomCad Prénom (0,n) Prénom
Date naiss
Nom
Prénom NomCad (0,n) NomCad
… NatureChoix Prix cur Prénom Date naiss Date naiss
… Date naiss Prix cur … Prix cur …
… Année arbre
… … CHOISIT
… CHOISIT
(0,n) NatureChoix

ARBRE ARBRE NatureChoix NatureChoix


ARBRE ARBRE
Année arbre Année arbre
Budget Max Budget Max (0,n) Année arbre (0,n) Année arbre
d’où le MLD
Budget Max Budget Max
Cette représentation est incomplète, car il manque le fait qu’un choix concerne un cadeau.
Mais la représentation suivante, qu’on peut pourtant facilement deviner, est fausse : qui fourniront le MDL suivant :
CADEAU ENFANT
CADEAU ENFANT CHOISIT
(0,n) (0,n)
CADEAU ENFANT Nom
CHOISIT NomCad
NomCad Nom Nom Prénom
CHOISIT Prix cur Prénom
Prix cur Prénom NomCad Nom Date naiss
Nom … Année arbre
… NatureChoix Date naiss Prix cur Prénom …
Prénom NomCad
… … Année arbre
Date naiss NatureChoix
(0,n) NomCad … ARBRE
NatureChoix
ARBRE ARBRE Année arbre
Budget Max
Année arbre Année arbre
1.
Budget Max Budget Max Ce MLD ressemble beaucoup au 2° MLD de la page précédente. La différence est pourtant
d’où le MLD importante : NomCad ne fait plus partie de la clé primaire de CHOISIT, et le risque de
doublons décrit plus haut n’existe plus.
Dans ce modèle, on affirme qu’une natureChoix est identifiée par Enfant, Année ET cadeau. NB1 : ce genre d’erreurs ne se révèle souvent que longtemps après la mise en service, il est donc coûteux en
Ce système entraîne qu’un choix N’EST PAS PLEINEMENT IDENTIFIÉ par Enfant et Année, maintenance, car il est parfois difficile de se plonger dans d’anciens développements.
donc qu’un enfant ne peut pas avoir le même cadeau plusieurs fois la même année, mais il NB2 : Certains designers (Win’Design par exemple) ne savent pas représenter ces liens. Il faudra donc retoucher
permet qu’il ait plusieurs cadeaux la même année, à condition qu’ils soient différents. manuellement le MLD pour obtenir un système pérenne.

D. ALESSANDRA - Guide pratique de Merise Page 16/22


II - La réalisation d’un M.L.D. standard

II.1 - Ce qu’on attend d’un M.L.D. standard

But : • Il s’agit de représenter, par un formalisme précis et standardisé,


l’ensemble des tables qu’il faudrait créer pour réaliser le projet décrit dans
le M.C.D, dans le cas où l’on aurait à disposition une machine, des équipes
de développement et des outils de programmation de puissance et de
capacité infinies.

• L’adaptation à l’environnement concret sera fait en aval de cette opération.


Ainsi, tout changement de système, d’équipe ou d’outils de développement
pourra s’appuyer sur le M.L.D. sans remettre en cause le travail réalisé en
amont.

D. ALESSANDRA - Guide pratique de Merise Page 17/22


EXEMPLE :

II.2 - Le passage au logique. M.C.D.

II.2.A - La transformation des entités ARTICLE


(0,n)
CLIENT Réf. produit
APPARAÎT Désignation
Code client
But : • Il s’agit de déterminer les tables nécessaires au stockage des informations Quantité
Nom FICHE PRIX
relatives à une entité. Prénom (1,n)
1° ligne adresse Date change
Moyens : • En langage rigoureux : Une entité est représentée par une table, dont le 2° ligne adresse FACTURE Prix unitaire HT
nom est le même que le nom de l’entité, dont les colonnessont en CP
correspondance bi-univoque avec les attributs de l’entité et en Ville Année facture
récupèremnt les noms, et dont la clé primaire est composée de la N° Séquentiel
concaténation des colonnes correspondant aux attributs participant à JourMois facture Mode
l’identifiant.
• En pratique : Une entité devient une table. Un identifiant devient une clé Mode Reglt
primaire.
M.L.D.
précautions : • Il faut ici admettre que le système “parfait” susceptible d’accueillir ce M.L.D.
permet de réaliser un index sur plusieurs colonnes. ARTICLE

Remarques : CLIENT Réf. produit


Désignation
Code client
Nom
Prénom
1° ligne adresse FACTURE
2° ligne adresse
CP Année facture
Ville N° Séquentiel
JourMois facture Mode

Mode Reglt

D. ALESSANDRA - Guide pratique de Merise Page 18/22


II.2.B - La transformation des relations 1-N EXEMPLE :

M.C.D.
ARTICLE
But : • Il s’agit de déterminer les colonnes et liaisons nécessaires au stockage des (0,n)
informations relatives à une relation 1-N. CLIENT Réf. produit
APPARAÎT Désignation
Moyens : • Une relation 1-N est représentée par deux éléments : Code client
- La création d’une colonne dans la table découlant de l’entité située du Nom
Quantité
côté 1 de la relation.Cette colonne est composée de l’identifiant de FICHE PRIX
Prénom (1,n)
l’entité située du côté N de la relation. Cette colonne est dite “clé 1° ligne adresse
étrangère” , elle sera soulignée en pointillés. FACTURE Date change
2° ligne adresse
- une liaison entre l’intitulé de la table découlant de l’entité située du CP Prix unitaire HT
côté N de la relation et cette clé étrangère. Ville Année facture Mode
N° Séquentiel
précautions : • Si l’identifiant de l’entité située du côté N de la relation est composé de la JourMois facture Mode Reglt
concaténation de plusieurs attributs, la partie de l’identifiant récupérée
dans la table qui découle de la relation le sera aussi.
• Attention : lesens des flèches du M.L.D est inversé par rapport au sens des
flèches des CIF du MCD. M.L.D.

Remarques :
ARTICLE
CLIENT
Réf. produit
Code client Désignation
Nom FACTURE
Prénom
1° ligne adresse Année facture
2° ligne adresse N° Séquentiel
CP JourMois facture
Ville Code client
Mode Règlt
Mode

Mode Reglt

D. ALESSANDRA - Guide pratique de Merise Page 19/22


II.2.C - La transformation des relations N-N EXEMPLE :

M.C.D.
But : • Il s’agit de déterminer les tables nécessaires au stockage des informations
relatives à une relation N-N.

Moyens : • Une relation N-N est représentée par trois éléments :


- La création d’une table contenant les attributs portés par la relation ARTICLE
(s’il y en a), à laquelle on ajoute les identifiants des entités concourant (0,n)
à la relation. La concaténation de ces identifiants fournit la clé CLIENT Réf. produit
primaire de cette table. Le nom de la relation (qui est un verbe) est APPARAÎT Désignation
souvent remplazcé par un nom mieux adapté à une table. Code client
- une liaison entre l’intitulé des tables découlant des entités concourant Nom
Quantité
à la relation et la partie de l’identifiant de la table découlant de la Prénom FICHE PRIX
relation. (1,n)
1° ligne adresse
2° ligne adresse FACTURE Date change
précautions : • Si l’identifiant d’une entité N est composé de la concaténation de plusieurs CP Prix unitaire HT
attributs, la partie de l’identifiant récupérée dans la table qui découle de la Ville Année facture
relation le sera aussi. N° Séquentiel
• Si la relation a plus de deux pattes, on procède de même avec chacune JourMois facture
des pattes ayant une cardinalité maximale égale à n.
• L’ordre dans lequel les identifiants des entités sont récupérés pour fournir
la clé unique de la table découlant de la relation n’a pas d’importance
structurelle. Il s’agira tout au plus d’une optimisation dans la taille ou M.L.D.
l’efficacité des index en découlant (voir exemples du cours).

Remarques :
ARTICLE
CLIENT
Réf. produit
Code client Désignation
Nom
Prénom FACTURE
1° ligne adresse LIGNE
2° ligne adresse Année facture
CP N° Séquentiel Année facture
Ville JourMois facture N° Séquentiel
Code client Réf. produit
Mode Reglt Quantité

Mode

Mode Reglt

D. ALESSANDRA - Guide pratique de Merise Page 20/22


II.2.D - La transformation des entités relatives EXEMPLE :

M.C.D.
But : • Il s’agit de déterminer les attributs et tables nécessaires au stockage des
informations relatives à une entité relative.

Moyens : • Une entité relative est représentée comme une entité et une relation. Pour
cela, il faut réaliser tois actions : (0,n) ARTICLE
- La création d’une table découlant de l’entité relative.
- La création d’une clé étrangère, comme pour toute relation, c’est-à- CLIENT Réf. produit
dire l’ajout de l’identifiant de l’entité pointée par l’entité relative dans Désignation
APPARAÎT
la table découlant de cette entité et de la liaison entre la table Code client
découlant de l’entité pointée et cette clé étrangère. Nom Quantité
- L’utilisation de cette clé étrangère comme composant de l’identifiant Prénom FICHE PRIX
de la table découlant de l’entité relative. (1,n)
1° ligne adresse
2° ligne adresse FACTURE Date change
précautions : • Si l’identifiant d’une entité N est composé de la concaténation de plusieurs CP Prix unitaire HT
attributs, la partie de l’identifiant récupérée dans la table qui découle de la Ville Année facture
relation le sera aussi. N° Séquentiel
• Si la relation a plus de deux pattes, on procède de même avec chacune JourMois facture
des pattes ayant une cardinalité maximale égale à n.
• L’ordre dans lequel les identifiants des entités sont récupérés pour fournir
la clé unique de la table découlant de la relation n’a pas d’importance
structurelle. Il s’agira tout au plus d’une optimisation dans la taille ou M.L.D.
l’efficacité des index en découlant (voir exemples du cours).

Remarques :
CLIENT

Code client ARTICLE


Nom FACTURE
Prénom LIGNE Réf. produit
Année facture Désignation
1° ligne adr.
2° ligne adr. N° Séquentiel Année facture FICHE PRIX
CP JourMois facture N° Séquentiel
Ville Code client Réf. produit Réf. produit
Mode Reglt
Quantité Date change
Prix U. HT

Mode

Mode Reglt

D. ALESSANDRA - Guide pratique de Merise Page 21/22


III.4 - Pistes pour d’autres optimisations
III - La réalisation d’un M.L.D. optimisé
TOUTES LES OPTIMISATIONS PROPOSÉES DANS CE PARAGRAPHE PEUVENT ÊTRE
REMISES EN CAUSE.
III.1 - Ce qu’on attend d’un M.L.D. optimisé
• Les tables issues de relations N<->N ont toujours une clé primaire
composite, dont chaque élément est aussi une clé étrangère. Il faudra donc
indexer la concaténation des colonnes identifiantes, mais il sera aussi
souvent nécessaire de’avoir un accès indexé aux clés étrangères . Il sera
But : • Il s’agit de définir les modifications à apporter au M.C.D. afin de le rendre intéressant de ne pas indexer la première des clés étrangères concaténées
mieux adapté à l’environnement concret dans lequel il sera implémenté. dans la clé primaire, et de se servir de la clé primaire comme de cette clé
étrangère en négligeant la fin de cette clé (voir exemple).

• Eviter les colonnes calculées à partir d’autres colonnes de la même table,


III.2 - Optimisations systématiques sauf en cas d’index : en général, les temps de calcul seront toujours
négligeables devant les temps d’accès.

• Toutes les colonnes dont le nombre de lignes est au plus égal à 1 seront • Il est en général peu intéressant de créer une colonne redondante pour
regroupées dans une table de paramètres. éviter l’éxécution une boucle : par exemple, il est peu intéressant de
mémoriser un cumul d’une colonne dans une table liée directement, car le
• Les tables dont le nombre de colonnes est égal à 1, et qui sont cibles de recalcul de ce cumul est généralement assez rapide (par exemple, pour
liens (dans la représentation CODASYL du M.L.D.) sans être origines de visualiser une facture, le montant total d’une facture n’a pas besoin d’être
liens seront épurées (ces tables correspondent en général à des attributs mémorisé dans la table Facture).
pouvant prendre un nombre fini et prédéterminé de valeurs distinctes. Ces
tables peuvent souvent être épurées dès le M.C.D. voir exemple, table • Il est en général intéressant de créer une colonne redondante pour éviter
“Mode” ). l’éxécution de deux boucles imbriquées : par exemple, il est intéressant de
mémoriser un cumul d’une colonne dans une table liée directement, lorsque
• On placera systématiquement un index sur la clé primaire de chaque table. ce total doit être affiché dans chaque ligne d’une liste utilisée fréquemment
(par exemple, pour visualiser la liste des factures, le montant total d’une
facture doit être mémorisé dans la table Facture si on veut un affichage
fréquent de la liste des factures). En particulier, si une requête doit être
III.3 - Optimisations courantes lancée à lintérieur d’une boucle, les temps de réponse seront contraignants.

• Lorsqu’une entité estliée à deux autres par deux liens N à N, envisager la


• Dans un S.G.B.D. acceptant les valeurs ‘NULL’, les tables découlant des création d’une table redondante de liens croisés.
sous-entités seront intégrées dans les tables découlant de l’entité
principale. • Etudier l’intérêt d’index sur les identifiants utilisateur (nom, désignation) ou
sur les codes externes (code postal).
• On envisagera de placer des index sur les clés étrangères. En particulier,
lorsque des écrans interactifs font apparaître des ‘listes incluses’, il sera • Etudier les optimisations réseau et les tables réparties :
important d’indexer les colonnes représentant la clé étrangère. - Les optimisations liées à l’organisation, découpage vertical (certaines
tables sur un site, d’autres sur un autre).
• Dans un S.G.B.D. ne permettant pas la définition d’un index sur plusieurs - Les optimisations liées à la charge, découpage horizontal (certaines
colonnes, il y aura création d’une colonne calculée comme concaténation lignes d’une table sur un site, d’autres sur un autre).
des colonnes à indexer. Si possible, cette règle de calcul sera définie par
un trigger. C’est cette colonne calculée qui sera indexée. • Envisager la suppression de tables d’énumération et de les remplacer par
des fonctions (codage en dur), ou chargement de ces tables dans des
• Remettre en cause les clés composées dont les composants discrets ne tableaux de variables (initialisations)
représentent pas d’intérêt (c.f. exemple : le découpage année
Facturation+n° séquentiel est finalement peu intéressant).

D. ALESSANDRA - Guide pratique de Merise Page 22/22