Documente Academic
Documente Profesional
Documente Cultură
et l'hritage
Remerciements
L'auteur tient exprimer toute sa gratitude envers Frdric Brouard pour son travail de
correction sur ce document, ses judicieux conseils et son soutien en toutes circonstances.
I. Introduction
II. Modle conceptuel de donnes (MCD)
II-A. Schma entits-associations
II-A-1. Entits et associations
II-A-2. Attributs et identifiants
II-A-3. Cardinalits
II-A-4. Associations plurielles
II-A-5. Association rflexive
II-A-6. Associations non binaires
II-B. Rgles de normalisation
II-B-1. Les bonnes pratiques dans un schma entits-associations
II-B-2. Les formes normales
II-C. Dpendances fonctionnelles
II-C-1. Dfinitions et proprits
II-C-2. Graphe de couverture minimale
II-C-3. Traduction vers un schma entits-associations
II-C-4. Gestion des dates et du caractre historique
II-C-5. Dpendances plurielles et rflexives
II-C-6. Associations sans attributs
II-D. Mthodologie de base
III. Modle logique de donnes (MLD)
III-A. Systmes logiques
III-B. Modle logique relationnel
III-B-1. Tables, lignes et colonnes
III-B-2. Cls primaires et cls trangres
III-B-3. Schma relationnel
III-C. Traduction d'un MCD en un MLDR
IV. Modle physique de donnes (MPD)
IV-A. Distinction entre MLD et MPD
IV-B. Optimisations
V. Rtro-conception
V-A. Traduction inverse
V-B. Cas particuliers
VI. Complments
VI-A. Agrgation
VI-A-1. Association de type 1 : n
VI-A-2. Association de type n : m
VI-A-3. Tables de codification ou tables de rfrence
VI-B. Identifiant relatif ou lien identifiant
VI-B-1. Rsolution d'un problme sur le schma relationnel
VI-B-2. Modle conceptuel correspondant
VI-B-3. Discussion autour de la numrotation des exemplaires
VI-C. Hritage
VI-C-1. Sous-entit
VI-C-2. Utilisation de l'hritage pour sparer les informations complmentaires
VI-C-3. Spcialisation des associations
VII. Conclusion
VIII. Rfrences
I. Introduction
Quand nous construisons directement les tables d'une base de donnes dans un logiciel de
gestion des bases de donnes (Oracle, SQL Server, DB2, Access, MySQL, PostGre, ...), nous
sommes exposs deux types de problme :
nous ne savons pas toujours dans quelle table placer certaines colonnes (par exemple,
l'adresse de livraison se met dans la table des clients ou dans la table des
commandes ?) ;
nous avons du mal prvoir les tables de jonction intermdiaires, par exemple, la table
des interprtations qui est indispensable entre les tables des films et la table des
acteurs).
Les techniques prsentes ici font partie de la mthodologie Merise (Mthode d'tude et de
Ralisation Informatique pour les Systmes d'Entreprise) labore en France en 1978 [Tardieu
et al.], qui permet notamment de concevoir un systme d'information d'une faon standardise
et mthodique.
Ne sont malheureusement pas abords ici : les contraintes, les traitements, le langage
relationnel et la gestion de projet. Pour toutes ces notions importantes, car lies la
conception de systmes d'information, le lecteur est dirig vers [Akoka et Comyn-Wattiau],
[Matheron] et [Nanci et al.]. La modlisation objet ne fait pas non plus partie des outils
exposs dans ce document.
Une entit est une population d'individus homognes. Par exemple, les produits ou les articles
vendus par une entreprise peuvent tre regroups dans une mme entit articles (figure 1), car
d'un article l'autre, les informations ne changent pas de nature ( chaque fois, il s'agit de la
dsignation, du prix unitaire, etc.).
Figure 1 - Entits
Par contre, les articles et les clients ne peuvent pas tre regroups : leurs informations ne sont
pas homognes (un article ne possde pas d'adresse et un client ne possde pas de prix
unitaire). Il faut donc leur rserver deux entits distinctes : l'entit articles et l'entit clients.
Une association est une liaison qui a une signification prcise entre plusieurs entits. Dans
notre exemple, l'association commander est une liaison vidente entre les entits articles et
clients, tandis que l'association livrer tablit le lien smantique entre les entits articles et
fournisseurs.
Figure 2 - Associations
Remarquons que dans ce schma, les entits clients et fournisseurs ne sont pas lies
directement, mais indirectement, via l'entit articles, ce qui est assez naturel.
Toujours dans notre exemple (figure 3), le prix unitaire est un attribut de l'entit articles, le
nom de famille est un attribut de l'entit clients, la quantit commande est un attribut de
l'association commander et la date de livraison est un attribut de l'association livrer.
Figure 3 - Attributs
Une entit et ses attributs ne doivent traiter que d'un seul sujet afin d'assurer une certaine
cohrence au modle. Dans notre exemple, il est donc prfrable de ne pas mettre les
informations relatives aux fournisseurs dans l'entit des articles mais plutt dans une entit
fournisseurs spares (et lie l'entit articles via l'association livrer).
Ensuite, chaque individu d'une entit doit tre identifiable de manire unique. C'est pourquoi
toutes les entits doivent possder un attribut sans doublon (c'est--dire ne prenant pas deux
fois la mme valeur). Il s'agit de l'identifiant que l'on souligne sur le schma, par convention.
Le numro de client constitue un identifiant classique pour l'entit clients (figure 4).
Figure 4 - Identifiants
Remarques :
II-A-3. Cardinalits
La cardinalit d'un lien entre une entit et une association prcise le minimum et le maximum
de fois
Figure 5 - Cardinalits
Une cardinalit minimale de 1 doit se justifier par le fait que les individus de l'entit en
question ont besoin de l'association pour exister (un client n'existe pas avant d'avoir
command quoique ce soit, donc la cardinalit minimale de l'entit clients dans l'association
commander est 1). Dans tous les autres cas, la cardinalit minimale vaut 0 (c'est le cas pour
une liste prtablie d'articles par exemple).
Ceci dit, la discussion autour d'une cardinalit minimale 0 ou 1 n'est vraiment intressante que
lorsque la cardinalit maximale est 1. Nous verrons en effet lors de la traduction vers un
schma relationnel (section Traduction d'un MCD en un MLDR ), que lorsque la
cardinalit maximale est n, nous ne pouvons pas faire la diffrence entre une cardinalit
minimale de 0 et une cardinalit minimale de 1.
Notons que sur notre exemple, un article peut tre command par plusieurs clients. Cela
provient du fait que tous les crayons rouges ne sont pas numrots individuellement, mais
portent un numro d'article collectif. En toute rigueur, notre entit articles aurait du s'appeler
types d'article. Ainsi, un crayon rouge peut tre command par plusieurs clients, ce n'est
simplement pas le mme crayon chaque fois. Il s'agit d'un choix de modlisation, le lecteur
peut trs lgitimement faire le choix inverse qui consiste numroter individuellement chaque
crayon rouge.
La seule difficult pour tablir correctement les cardinalits est de se poser les questions dans
le bon sens. Autour de l'association commander, par exemple :
ct articles, la question est un article peut tre command par combien de client ?
et cette fois-ci, la rponse est entre 0 et plusieurs .
Deux mmes entits peuvent tre plusieurs fois en association (c'est le cas sur la figure 6).
Il est permis une association d'tre branche plusieurs fois la mme entit, comme par
exemple l'association binaire rflexive de la figure 7.
Lorsqu'autour d'une entit, toutes les associations ont pour cardinalits maximales 1 au centre
et n l'extrieur, cette entit est candidate pour tre remplace par une association branche
toutes les entits voisines avec des cardinalits identiques 0,n.
La deuxime condition qu'il faut imprativement satisfaire est la rgle de normalisation des
attributs des associations (section suivante). Cette rgle conduit parfois l'apparition
d'associations qui tablissent un lien smantique entre 3 entits ou plus.
Sur l'exemple de la figure 8 issu d'un cinma, l'entit projections est uniquement entoure
d'associations dont les cardinalits maximales sont 1 ct projections et n de l'autre ct. De
plus, la donne d'un crneau, d'un film et d'une salle suffit dterminer une projection unique.
On peut donc la remplacer par une association projeter branche aux trois entits salles,
crneaux horaires et films. On parle alors d'association ternaire.
Figure 8 - Entit remplaable par une association ternaire
La difficult de concevoir une association ternaire (ou plus) directement est d'tablir les
bonnes cardinalits. Il est donc conseill d'en passer par un schma entits-associations dans
lequel on ne trouve que des associations binaires, puis de reprer les entits remplaables par
des associations, comme sur la figure 8 gauche.
Cette rgle de conduite permet d'viter d'introduire une association ternaire abusive, par
exemple entre les avions, les pilotes et les vols (figure 9), car le concepteur peut s'apercevoir
que l'une des cardinalits maximales ne convient pas.
Figure 9 - Contre-exemple : l'entit dparts n'est pas remplaable par une association ternaire
Par ailleurs, une association peut tre branche plus de trois entits, comme sur la figure 10.
L-encore, le conseil pour tre sr de la lgitimit de cette association 4-aire, est de vrifier
les cardinalits sur un schma intermdiaire faisant apparatre la place, une entit
occupations et quatre associations binaires.
Normalisation des entits (importante) : toutes les entits qui sont remplaables par une
association doivent tre remplaces (comme sur la figure 8).
Normalisation des noms : le nom d'une entit, d'une association ou d'un attribut doit tre
unique.
Conseils :
pour les entits, utiliser un nom commun au pluriel (par exemple : clients) ;
pour les associations, utiliser un verbe l'infinitif (par exemple : effectuer, concerner)
ventuellement la forme passive (tre command) et accompagn d'un adverbe
(avoir lieu dans, pendant, ) ;
pour les attributs, utiliser un nom commun singulier (par exemple : nom, numro,
libell, description), ventuellement accompagn du nom de l'entit ou de l'association
dans laquelle il se trouve (par exemple : nom de client, numro d'article).
Remarque : lorsqu'il reste plusieurs fois le mme nom, c'est parfois symptomatique d'une
modlisation qui n'est pas termine (figure 11(a)) ou le signe d'une redondance (figure 11(b)).
(b) Si deux attributs contiennent les mmes informations, alors la redondance induit non
seulement un gaspillage d'espace mais galement un grand risque d'incohrence : ici, les
adresses risquent de ne pas tre les mmes et dans ces conditions, o faut-il livrer ?
Conseils :
prfrer un identifiant court pour rendre la recherche la plus rapide possible (viter
notamment les chanes de caractres comme un numro de plaque d'immatriculation,
un numro de scurit sociale ou un code postal ) ;
En effet, d'une part, les attributs en plusieurs exemplaires posent des problmes d'volutivit
du modle (sur la figure 12(a) gauche, comment faire si un employ a deux adresses
secondaires ?) et d'autre part, les attributs calculables induisent un risque d'incohrence entre
les valeurs des attributs de base et celles des attributs calculs, comme sur la figure 12(b).
Normalisation des attributs des associations (importante) : les attributs d'une association
doivent dpendre directement des identifiants de toutes les entits en association.
Par exemple, sur la figure 5 la quantit commande dpend la fois du numro de client et du
numro d'article, par contre la date de commande non. Il faut donc faire une entit
commandes part, idem pour les livraisons (figure 13).
Figure 13 - Normalisation des attributs des associations
L'inconvnient de cette rgle de normalisation est qu'elle est difficile appliquer pour les
associations qui ne possdent pas d'attribut. Pour vrifier malgr tout qu'une association sans
attribut est bien normalise, on peut donner temporairement cette association un attribut
imaginaire (mais pertinent) qui permet de vrifier la rgle.
Par exemple, entre les entits livres et auteurs de la figure 16, l'association crire ne possde
pas d'attribut. Imaginons que nous ajoutions un attribut pourcentage qui contient le
pourcentage du livre crit par chaque auteur (du mme livre). Comme cet attribut pourcentage
dpend la fois du numro de livre et du numro d'auteur, l'association crire est bien
normalise.
Autre consquence de la normalisation des attributs des associations : une entit avec une
cardinalit de 1,1 ou 0,1 aspire les attributs de l'association (figure 14).
(a) les cardinalits sont toutes 1,1 donc c'est une association fantme
(b) si un client ne peut pas rgler la facture d'un autre client, alors l'association payer est
inutile et doit tre supprime (dans le cas contraire, l'association payer doit tre maintenue)
(c) une association suffit pour remplacer les 4 associations participer en tant que ...
Remarque : une autre solution pour le problme de la figure 15(b) consiste retirer l'entit
rglements et d'ajouter une association rgler avec les mmes attributs (sauf l'identifiant) entre
les entits clients et factures.
Normalisation des cardinalits : une cardinalit minimale est toujours 0 ou 1 (et pas 2, 3 ou
n) et une cardinalit maximale est toujours 1 ou n (et pas 2, 3, ...).
Cela signifie que si une cardinalit maximale est connue et vaut 2, 3 ou plus (comme sur la
figure 15(c) droite, ou pour un nombre limit d'emprunts dans une bibliothque), alors nous
considrons quand mme qu'elle est indtermine et vaut n. Cela se justifie par le fait que
mme si nous connaissons n au moment de la conception, il se peut que cette valeur volue au
cours du temps. Il vaut donc mieux considrer n comme une inconnue ds le dpart.
Cela signifie galement qu'on ne modlise pas les cardinalits minimales qui valent plus de 1
car ce genre de valeur est aussi amen voluer. Par ailleurs, avec une cardinalit maximale
de 'association n'aurait aucune signification.
Dans un SGBD relationnel, nous pourrions assurer les cardinalits valant 2, 3 ou plus, via
l'utilisation de dclencheurs. Mais cette notion n'est pas aborde dans ce document qui se
contente, au contraire, de dcrire ce qu'il est possible de faire sans utiliser de dclencheur.
Premire forme normale : un instant donn dans une entit, pour un individu, un attribut
ne peut prendre qu'une valeur et non pas, un ensemble ou une liste de valeurs.
Si un attribut prend plusieurs valeurs, alors ces valeurs doivent faire l'objet d'une entit
supplmentaire, en association avec la premire (figure 16).
Figure 16 - Application de la premire forme normale : il peut y avoir plusieurs auteurs pour
un livre donn
Deuxime forme normale : l'identifiant peut tre compos de plusieurs attributs mais les
autres attributs de l'entit doivent dpendre de l'identifiant en entier (et non pas une partie de
cet identifiant).
Cette deuxime forme normales peut tre oublie si on suit le conseil de n'utiliser que des
identifiants non composs et de type entier. En vrit, elle a t vide de sa substance par la
rgle de normalisation des attributs des associations (paragraphe Normalisation des
attributs des associations ).
Considrons malgr tout le contre-exemple suivant : dans une entit clients dont l'identifiant
est compos des attributs nom et prnom, la date de fte d'un client ne dpend pas de son
identifiant en entier mais seulement de prnom. Elle ne doit pas figurer dans l'entit clients, il
faut donc faire une entit calendrier part, en association avec l'entit clients.
Troisime forme normale de Boyce-Codd (importante) : tous les attributs d'une entit
doivent dpendre directement de son identifiant et d'aucun autre attribut. Si ce n'est pas le cas,
il faut placer l'attribut pathologique dans une entit spare, mais en association avec la
premire.
Par exemple, l'entit avions (figure 18 gauche) dont les valeurs sont donnes dans le
tableau 17, n'est pas en troisime forme normale de Boyce-Codd, car la capacit et le
constructeur d'un avion ne dpendent pas du numro d'avion mais de son modle. La solution
amliore est donne figure 18 droite.
Transitivit : si X ? Y et Y ? Z alors X ? Z.
Par exemple, on a numro de commande ? numro de client ? nom de client, donc on a aussi
numro de commande ? nom de client.
Mais la dpendance fonctionnelle numro de commande ? nom de client est dite transitive, car
il faut passer par le numro de client pour l'obtenir. Au contraire, la dpendance fonctionnelle
numro de client ? nom de client est directe. Seules les dpendances fonctionnelles directes
nous intressent. D'autres exemples sont donns dans le tableau 19.
Un attribut Y peut avoir une dpendance fonctionnelle qui repose sur la conjonction de
plusieurs attributs, auquel cas la dpendance est dite non lmentaire. Les dpendances
fonctionnelles non lmentaires sont notes par une flche unique mais comportant plusieurs
points d'entre (regroups autour d'un cercle).
Par exemple, la quantit commande (d'un article dans une commande) dpend de deux
attributs : le numro de commande et le numro d'article (figure 20). Notons que cette
dpendance numro de commande + numro d'article ? quantit est la fois non lmentaire
et directe.
En reprsentant tous les attributs et toutes les dpendances fonctionnelles directes entre eux,
nous obtenons un rseau appel graphe de couverture minimale. Dans notre exemple sur les
clients, les commandes et les articles, ce graphe est donn sur la figure 21.
Figure 21 - Graphe de couverture minimale
La technique de traduction en un schma entits-associations qui suit, suppose qu'aucun
attribut n'a t oubli sur le graphe de couverture minimal et notamment, aucun identifiant.
D'ailleurs toutes les dpendances fonctionnelles du graphe doivent partir d'un identifiant. Si ce
n'est pas le cas, c'est qu'un identifiant a t omis.
Figure 22 - Identification des entits et des associations sur un graphe de couverture minimale
tape 1 : il faut reprer et souligner les identifiants.
tape 2 : puis tous les attributs non identifiant qui dpendent directement d'un identifiant et
d'un seul, forment une entit (avec l'identifiant, bien sr).
tape 3 : ensuite, les dpendances lmentaires entre les identifiants forment des associations
binaires dont les cardinalits maximales sont 1 au dpart de la dpendance fonctionnelle et n
l'arrive.
tape 4 : sauf si entre deux identifiants se trouvent deux dpendances lmentaires rflexives,
auquel cas l'association binaire a deux cardinalits maximales valant 1.
tape 5 : enfin, les attributs (non identifiants) qui dpendent de plusieurs identifiants sont les
attributs d'une association supplmentaire dont les cardinalits maximales sont toutes n.
Remarquons galement qu'en ralit, il faut dj connatre les entits en prsence pour tablir
correctement le graphe de couverture minimale, ne serait-ce que pour y faire figurer leurs
identifiants. Donc finalement, cette technique n'est une aide pour tablir les associations entre
les entits et pour normaliser les entits et leurs associations (jusqu'en troisime forme
normale de Boyce-Codd).
Dans une bibliothque, on peut vouloir stocker les emprunts en cours (figure 24) et/ou les
emprunts historiques (figure 25).
Par contre, un livre peut faire l'objet de plusieurs emprunts historiques et dans ces conditions,
la date d'emprunt est dterminante pour connatre la date de retour prvue (figure 25 en haut
gauche). Or une date n'est pas un identifiant et une dpendance fonctionnelle ne peut partir
que d'un ou plusieurs identifiant(s). C'est le signe qu'il manque un identifiant : le numro
d'emprunt (figure 25 en haut droite).
Figure 25 - Mme pour une entit historise, il vaut mieux viter que la date n'entre dans
l'identifiant
Notons que l'entit emprunts historiques supplmentaire qui apparat aprs traduction
(figure 25 en bas) ne peut pas tre transforme en une association comme on pourrait le croire
au simple examen des cardinalits qui l'entourent. En effet, les attributs de l'association qui en
rsulterait ne vrifieraient pas la normalisation des attributs des associations. Notamment, la
date de retour effectif ne dpend pas du numro de livre et du numro de membre, mais du
numro de livre et de la date d'emprunt.
La normalisation des entits ne s'applique donc pas aux entits qui ont un caractre historique.
moins que les dates ne soient regroupes dans une entit spare, ce qui n'est pas conseill
tant qu'aucune information lie aux dates (comme le caractre fri, par exemple) n'est
ncessaire.
Une ou plusieurs dpendances fonctionnelles peuvent partir ou arriver plusieurs fois du mme
attribut. Pour clarifier la signification de chaque dpendance fonctionnelle, on peut ajouter un
commentaire sur la flche (figure 26). Ce commentaire sert ensuite donner un nom aux
associations correspondantes.
Figure 26 - Dpendances fonctionnelles commentes
Les dpendances fonctionnelles plurielles entre les mdecins et les remplacements
(figure 26(a)) deviennent, aprs traduction, des associations plurielles entre les entits
mdecins et remplacements. Notons que l'entit remplacements ainsi gnre, a aussi un
caractre historique.
Les fonctionnelles rflexives (X ? X), quoique toujours vraies, ne prsentent aucun intrt,
moins qu'elles aient une signification particulire. Un exemple de dpendance rflexive licite
sur un graphe de couverture minimale est la dpendance fonctionnelle personne ? personne,
lorsqu'elle signifie diriger , tre en couple avec ou tre le pre ou la mre de
(figure 26(b)).
Dans le mme ordre d'ide, il est inutile de faire figurer sur le graphe de couverture minimal
des dpendances fonctionnelles non lmentaires vraies, mais idiotes, comme par exemple
numro de commande + numro d'article ? numro de commande.
La lacune majeure de cette mthode reste tout de mme le fait que les associations dont toutes
les cardinalits maximales sont n mais qui sont sans attribut ne figurent pas sur le graphe de
couverture minimale. Il faut alors, soit leur inventer temporairement un attribut (comme pour
la normalisation des attributs des associations), soit introduire une notation spciale (par
exemple, une dpendance non lmentaire qui ne dbouche sur aucun attribut).
Pour illustrer ce dfaut, prenons l'exemple des films et des acteurs (figure 27).
Figure 27 - Utilisation d'une dpendance non lmentaire et sans enfant sur un graphe de
couverture minimal
Il n'y a pas d'attribut qui dpende la fois du numro de film et du numro d'acteur ( moins
d'imaginer le temps d'apparition l'cran). Et pourtant, les deux entits films et acteurs sont
en association. Grce la dpendance non lmentaire et sans enfant, on peut rendre compte
de cette situation sur le graphe de couverture minimale et faire ainsi apparatre l'association
sur le schma entits-associations qui en est traduit.
Mais, il est parfois plus intuitif d'en passer par l'tude des dpendances fonctionnelles directes
:
ce stade, la majorit des rgles de normalisation devraient tre vrifies, il reste tout
de mme la normalisation des noms, la prsence d'attributs en plusieurs exemplaires et
d'associations redondantes ou en plusieurs exemplaires, corriger.
Il faut garder galement l'esprit que le modle doit tre exhaustif (c'est--dire contenir toutes
les informations ncessaires) et viter toute redondance qui, on ne le dira jamais assez,
constitue une perte d'espace, une dmultiplication du travail de maintenance et un risque
d'incohrence.
Il faut par ailleurs veiller liminer les synonymes (plusieurs signifiants pour un signifi,
exemple : nom, patronyme, appellation) et les polysmes (plusieurs signifis pour un
signifiant, exemples : qualit, statut).
Il va de soi que cette mthodologie ne doit pas tre suivie pas--pas une bonne fois pour toute.
Au contraire, il faut itrer plusieurs fois les tapes successives, pour esprer converger vers
une modlisation pertinente de la situation.
Sont alors apparus les SGBD hirarchiques dans lesquels les donnes sont organises en arbre
(IMS-DL1 d'IBM, par exemple), puis les SGBD rseaux dans lesquels les donnes sont
organises selon un graphe plus gnral (IDS2 de Bull, par exemple). [Matheron], [Nanci et
al.]et [Gabay] dcrivent la traduction d'un MPD vers un MLD Codasyl (base de donnes
rseaux). Ces deux types de SGBD sont dit navigationnels car on peut retrouver l'information
condition d'en connatre le chemin d'accs.
Aujourd'hui, ils sont largement remplacs par les SGBD relationnels (SGBDR) avec lesquels
l'information peut tre obtenue par une requte formule dans un langage quasiment naturel
(la langage SQL pour Structured Query Langage). Parmi les SGBDR les plus rpandus nous
trouvons Oracle, SQL Server et DB2. Nous nous contentons ici d'exposer le modle logique
de donnes relationnel (MLDR).
Plus rcemment, sont apparus le modle logique orient objet et mme des SGBD orients
objets. Pourtant, les SGBD relationnels restent extrmement majoritaires, tandis que
l'approche orient objet est parfaitement adapte au dveloppement d'applications clientes
dynamiques et lies aux donnes du systme d'information.
Lorsque des donnes ont la mme structure (comme par exemple, les renseignements relatifs
aux clients), on peut les organiser en table dans laquelle les colonnes dcrivent les champs en
commun et les lignes contiennent les valeurs de ces champs pour chaque enregistrement
(tableau 28).
Les lignes d'une table doivent tre uniques, cela signifie qu'une colonne (au moins) doit servir
les identifier. Il s'agit de la cl primaire de la table.
L'absence de valeur dans une cl primaire ne doit pas tre autorise. Autrement dit, la valeur
vide (NULL) est interdite dans une colonne qui sert de cl primaire, ce qui n'est pas forcment
le cas des autres colonnes, dont certaines peuvent ne pas tre renseignes toutes les lignes.
De plus, la valeur de la cl primaire d'une ligne ne devrait pas, en principe, changer au cours
du temps.
Par ailleurs, il se peut qu'une colonne Colonne1 d'une table ne doive contenir que des valeurs
prises par la colonne Colonne2 d'une autre table (par exemple, le numro du client sur une
commande doit correspondre un vrai numro de client). 2 doit tre sans doublons (bien
souvent il s'agit d'une cl primaire). On dit alors que 1 est cl trangre et qu'elle rfrence 2.
Par convention, on souligne les cls primaires et on fait prcder les cls trangres d'un dise
# dans la description des colonnes d'une table :
Remarques :
une mme table peut avoir plusieurs cls trangres mais une seule cl primaire
(ventuellement composes de plusieurs colonnes) ;
une colonne cl trangre peut aussi tre primaire (dans la mme table) ;
une cl trangre peut tre compose (c'est le cas si la cl primaire rfrence est
compose) ;
implicitement, chaque colonne qui compose une cl primaire ne peut pas recevoir la
valeur vide (NULL interdit) ;
par contre, si une colonne cl trangre ne doit pas recevoir la valeur vide, alors il faut
le prciser dans la description des colonnes.
Les SGBDR vrifient au coup par coup que chaque cl trangre ne prend pas de valeurs en
dehors de celles dj prises par la ou les colonne(s) qu'elle rfrence. Ce mcanisme qui agit
lors de l'insertion, de la suppression ou de la mise jour de lignes dans les tables, garantit ce
que l'on appelle l'intgrit rfrentielle des donnes.
On peut reprsenter les tables d'une base de donnes relationnelle par un schma relationnel
dans lequel les tables sont appeles relations et les liens entre les cls trangres et leur cl
primaire est symbolis par un connecteur (figure 29).
Figure 29 - Schma relationnel simple entre deux tables
Certains diteurs inscrivent sur le connecteur un symbole 1 ct cl primaire et un symbole ?
ct cl trangre ( condition que celle-ci ne soit pas dj cl primaire). Il faut prendre garde
avec cette convention, car le symbole ? se trouve du ct oppos la cardinalit maximale n
correspondante.
Notations : on dit qu'une association binaire (entre deux entits ou rflexive) est de type :
En fait, un schma relationnel ne peut faire la diffrence entre 0,n et 1,n. Par contre, il peut la
faire entre 0,1 et 1,1 (rgles 2 et 4).
Rgle 1 : toute entit devient une table dans laquelle les attributs deviennent les colonnes.
L'identifiant de l'entit constitue alors la cl primaire de la table.
Rgle 2 : une association binaire de type 1 : n disparat, au profit d'une cl trangre dans la
table ct 0,1 ou 1,1 qui rfrence la cl primaire de l'autre table. Cette cl trangre ne peut
pas recevoir la valeur vide si la cardinalit est 1,1.
Rgle 3 : une association binaire de type n : m devient une table supplmentaire (parfois
appele table de jonction, table de jointure ou table d'association) dont la cl primaire est
compose de deux cls trangres (qui rfrencent les deux cls primaires des deux tables en
association). Les attributs de l'association deviennent des colonnes de cette nouvelle table.
Par exemple, l'association concerner (1) de la figure 13 est traduite par la table supplmentaire
lignes de commande :
Remarque : d'autres techniques sont parfois proposes pour cette rgle 4 (fusionner les tables,
utiliser une cl primaire identique, utiliser deux cls trangres rflexives) mais elles ne sont
pas exploitables dans le cas gnral.
Rgle 5 : une association non binaire est traduite par une table supplmentaire dont la cl
primaire est compose d'autant de cls trangres que d'entits en association. Les attributs de
l'association deviennent des colonnes de cette nouvelle table.
La traduction d'un MLD relationnel en un modle physique est la cration (par des requtes
SQL de type CREATE TABLE et ADD CONSTRAINT) d'une base de donnes hberge par
un SGBD relationnel particulier. Il peut s'agir d'une base Oracle, d'une base SQL Server, d'une
base Access ou d'une base DB2, par exemple. Le fait que tous les SGBDR reposent sur le
mme modle logique (le schma relationnel) permet la fois la communication entre des
bases htrognes et la conversion d'une base de donnes d'une SGBDR l'autre.
IV-B. Optimisations
L'optimisation des performances en temps de calcul se fait toujours au dtriment de l'espace
mmoire consomm. Dans le pire des cas, rduire les temps de rponse consiste d-
normaliser volontairement le systme d'information, avec tous les risques d'incohrence et les
problmes de gestion que cela comporte.
Pour les bases de donnes relationnelles, l'optimisation qui vise acclrer les requtes peut
passer par :
l'ajout d'index aux tables (au minimum sur les colonnes cls primaires et cls
trangres) ; ces index consomment de l'espace mmoire supplmentaire, mais la base
de donnes reste normalise ;
Par exemple, la table commandes de la figure 31 peut tre supprime et la date de commande
est alors ajoute la table lignes de commandes.
tape 1 : chaque table dont la cl primaire ne contient pas de cl trangre devient une entit
dont l'identifiant est la cl primaire de la table et dont les attributs sont les colonnes de la table
qui ne sont pas cl trangre.
tape 3 : chaque table dont la cl primaire est compose exclusivement de cls trangres qui
rfrencent plusieurs cls primaires, devient une association autour de laquelle toutes les
cardinalits maximales valent n, c'est-a-dire soit une association binaire de type n : m soit une
association ternaire ou plus (les autres colonnes non cls trangres de la table deviennent des
attributs de l'association).
tape 5 : les colonnes cls trangres restantes deviennent des associations binaires de type
1 : n s'il n'y a pas de contrainte d'unicit ou de type 1 : 1 s'il y a une contrainte d'unicit (il faut
trouver un nom cette association).
tape 6 : la cardinalit minimale vaut 1 pour les cls trangres qui font partie d'une cl
primaire ou qui possdent une contrainte (non vide), sinon elle vaut 0.
tape 4 : chaque table dont la cl primaire est compose partiellement de cls trangres
provient soit d'une optimisation qu'il faire dfaire (comme sur la figure 35) soit d'un
identifiant relatif d'une entit comme dans la section Identifiant relatif ou lien identifiant
(auquel cas les autres colonnes non cls trangres de la table deviennent des attributs de cette
entit).
VI. Complments
Aucune situation complte, ou presque, ne peut tre parfaitement modlise si le concepteur
se contente des fonctionnalits abordes ce stade du document. Ne serait-ce que pour
comprendre l'laboration des tables de la figure 36, il est ncessaire d'introduire de nouvelles
notations sur le schma entits-associations. Les trois extensions majeures prsentes dans
cette section font partie de la version 2 de Merise [Panet et al.]. Elles permettent de traiter
davantage de situations relles et souvent de manire plus simple.
Dans cette section, nous reprenons la dmarche qui consiste tudier les dpendances
fonctionnelles directes sur le graphe de couverture minimale, puis traduire ce graphe en
schma entits-associations, pour obtenir finalement un schma relationnel. Les notions
abordes ici ne permettent plus au schma relationnel d'tre crit textuellement sans
ambigut. Afin de lever toute ambigut pour savoir quelle cl primaire est rfrence par
telle cl trangre, il est impratif de reprsenter le schma relationnel de manire graphique,
ce que nous nous contentons de faire.
VI-A. Agrgation
Une association n'est pas forcment tablie exclusivement entre des entits.
Figure 37 - Association binaire de type 1 : n (monter), lie une association binaire de type
n : m (participer)
Pour tenir compte de ce nouveau cas de dpendance fonctionnelle, il convient d'ajouter une
sixime tape la technique de traduction d'un graphe de couverture minimal en un schma
entits-associations, telle qu'elle est commence section Traduction vers un schma entits-
associations :
tape 6 : lorsqu'un identifiant dpend de plusieurs autres identifiants, son entit est en
association de type 1 : n avec l'association qui lie les autres identifiants.
Certains auteurs considrent que l'agrgation des entits chevaux, courses et de l'association
participer constitue une nouvelle entit participations qui englobe ces trois lments
graphiques. Dans ce cas, l'association monter fait le lien entre les deux entits (participations
et jockeys). Le rsultat final sur le schma relationnel est le mme. Malheureusement, cette
notation n'est pas trs pratique car le schma entits-associations devient vite illisible
lorsqu'une entit participe plusieurs agrgations.
Nous prfrons donc autoriser, dans ce document, qu'une association puisse tre lie une
association binaire de type n : m ou une association ternaire (ou plus). Cependant pour ne
pas confondre les liens entres associations et entits avec les liens entres associations, nous
encadrons soigneusement les associations qui interviennent dans une agrgation, comme sur
la figure 37 en bas gauche.
En tout cas, une association ne peut pas tre lie une association binaire de type 1 : n ou 1 :
1. Dans ce cas, l'association doit tre directement lie l'entit qui se trouve du ct o la
cardinalit maximale est 1.
Sur le schma relationnel final (figure 37 en bas droite), la table de jonction participations
reoit une cl trangre supplmentaire, mais qui contrairement aux autres, ne participe pas
la cl primaire.
prsent, ajoutons les parieurs notre exemple de la figure 37. tant donn que nous avons
la dpendance fonctionnelle n cheval + n course + n parieur ? montant de la mise
(figure 38 en haut), nous pourrions avoir une association ternaire entre les entits chevaux,
courses et parieurs. Mais dans ce cas, un parieur peut miser sur un cheval dans une course,
alors que ce cheval ne participe pas cette course.
Figure 38 - Association ternaire remplace par deux associations binaires
Pour pallier cette lacune, on pourrait faire appel des dclencheurs programms dans la base
de donnes finale. Les dclencheurs sont des procdures SQL qui, dans notre exemple,
permettraient chaque insertion ou mise jour de lignes dans la table des paris, d'assurer
qu'un pari ne puisse pas concerner un cheval dans une course laquelle il ne participe pas.
Cependant, il existe une solution plus simple qui repose uniquement sur l'intgrit
rfrentielle.
Le fait qu'une association ternaire (ou plus) disparaissent au profit d'une ou plusieurs
agrgations est trs frquent lorsque l'on modlise une situation complte. tel point qu'on
peut partir du principe qu'un schma entits-associations sans agrgation est gnralement
faux.
Rappelons qu'il est dconseill d'utiliser des identifiants composites. Mais la cl primaire
composite de la table participations est lgitime puisqu'elle est issue d'une association binaire
de type n : m. En consquence de quoi la cl trangre composite de la table paris est
galement lgitime puisqu'elle est aussi issue d'une association binaire de type n : m.
On peut ainsi imaginer avoir sur un schma relationnel des cls primaires ou trangres
composes d'un nombre arbitraire de colonnes, sans pour autant qu'il n'y ait un seul identifiant
composite sur le schma entits-associations correspondant.
Ainsi, l'agrgation vite notamment aux entits de codification de transformer une association
binaire en une association ternaire (ou plus).
Prenons par exemple le schma relationnel en haut de la figure 41, tir d'une base de donnes
pour un centre de golf. Dans la table trous, la cl primaire n trou est en incrment
automatique, tandis que la colonne n trou dans parcours est un nombre (gnralement
compris entre 1 et 18) qui correspond la numrotation des trous dans le parcours.
Le problme de ce schma relationnel est qu'en l'tat, il peut y avoir un score dans la table
scores pour un trou qui n'appartient pas au parcours sur lequel la partie se joue (le lecteur est
invit bien observer la figure pour s'en apercevoir).
Cette solution consiste faire entrer le numro de parcours dans la numrotation des trous
(remplaant ainsi le n trou) ainsi que dans la numrotation des parties (en conservant cette
fois-ci le n partie en incrment automatique). Les tables trous et parties possdent alors une
cl primaire composite et partiellement trangre (figure 41 en bas).
Les cls trangres des tables participations et scores qui rfrencent ces nouvelles cls
primaires sont alors compltes par une nouvelle colonne (le numro de parcours). Dans la
table des scores, comme cette colonne n parcours n'est introduite qu'une fois, il n'est plus
possible pour un joueur d'avoir un score sur un trou qui n'appartient pas au parcours sur lequel
se joue la partie.
VI-B-2. Modle conceptuel correspondant
En rtro-conception, pour tenir compte du fait que le numro de parcours fera partie de la cl
primaire de la table trous sur le schma entits-associations, il suffit de mettre entre
parenthses la cardinalit 1,1 de l'association entre les entits trous et parcours (figure 42).
L'identifiant de l'entit ct 1,1 devient alors relatif celui de l'autre entit en association.
VI-C. Hritage
Enfin, il est parfois utile de factoriser les attributs communs plusieurs entits au sein d'une
entit mre.
VI-C-1. Sous-entit
Considrons l'exemple suivant : les factures d'une entreprise font l'objet d'un rglement par
chque ou par carte. Cette entreprise souhaite connatre pour chaque rglement la date, le
montant et :
On a donc une entit gnrique rglements et deux entits spcialises chques et paiements
par carte. Ces deux sous-entits de l'entit rglements ont des attributs propres mais pas
d'identifiant propre. Au niveau logique objet, on retrouve la notion d'hritage.
La traduction des sous-entits au niveau logique relationnel fait intervenir une cl primaire
identique celle de l'entit mre, mais dans les sous-entits la cl primaire est aussi trangre
(figure 45 en bas).
Sur le graphe de couverture minimale (figure 45 en haut), l'identifiant dont dpendent les
attributs communs est volontairement dupliqu autant de fois que ncessaire pour les attributs
spcialiss. Nous pouvons alors remarquer que les attributs qui dpendent d'un mme
identifiant peuvent tre regroups avec des et logiques tandis que ds qu'il est ncessaire
de faire appel un ou logique, c'est le signe d'une spcialisation.
Sur la figure 45, il est tentant de traduire directement le graphe de couverture minimale en le
schma relationnel, car il en est beaucoup plus proche que le schma entits-associations.
C'est une technique licite, condition de traduire correctement les associations de type 1 : 1
(tape 4).
VI-C-2. Utilisation de l'hritage pour sparer les informations
complmentaires
L'hritage peut tre utilis mme lorsqu'il n'y a qu'une entit spcialise. C'est utile pour
stocker dans une table spare des informations complmentaires.
Considrons la table clients dans laquelle nous stockons dj le numro, le nom et le code
postal. Nous souhaitons dsormais stocker galement le numro de tlphone, l'adresse
courrier et l'adresse lectronique. La premire ide consiste ajouter trois colonnes
supplmentaires dans la table clients. Mais pour les clients qui ont dj t saisis dans la table,
ces trois colonnes seront vides.
Pour gagner de la place, ces trois colonnes peuvent constituer une nouvelle table annuaire
clients dont la cl primaire rfrence celle de la table clients (figure 46). Formellement,
annuaire clients est issu d'une sous-entit de l'entit clients.
La notion d'hritage est valable galement pour les associations. Nous pouvons donc faire
appel des sous-associations avec des attributs spcifiques et des associations gnriques qui
contiennent les attributs communs. Mais sans aller jusqu' l'introduction de sous-associations,
ds qu'un schma entits-associations fait appel des sous-entits, il est frquent que les
associations concernes par ces sous-entits soient elles-mmes spcialises.
Considrons une entreprise artisanale qui vend non seulement des articles produits en srie
prix unitaire fixe, mais aussi des articles fait sur mesure et dont le prix unitaire est calcul
partir de la dure de confection et d'un taux horaire. Dans ce cas, non seulement l'entit
articles est spcialise en articles en srie et articles sur mesure, mais en plus, l'association
concerner entre les entits commandes et article est spcialise selon qu'il s'agit d'un article en
srie ou sur mesure (figure 47 au centre).
Figure 47 - Spcialisation des associations en prsence de sous-entits
Le fait d'avoir volontairement ddoubler l'identifiant commun des entits en hritage, permet
d'utiliser chaque identifiant dupliqu dans l'association qui le concerne.
Sur le schma relationnel (figure 47 en bas), les associations spcialises sont traduites de
manire classique. charge ensuite pour le dveloppeur du formulaire de facturation,
d'effectuer la runion des articles commands.
VII. Conclusion
Avec la pratique, vient un moment o le concepteur peut se passer du modle entits-
associations et produire directement des schmas relationnels corrects. Pourtant, continuer de
travailler un niveau conceptuel plutt qu' un niveau logique reste une tactique payante pour
lui, dans la mesure o les donnes pourtant stockes sous une forme relationnelle, doivent de
nos jours tre accdes par des applications orientes objet. Le modle conceptuel permet de
faire le lien entre d'une part la reprsentation objet des donnes et d'autre le stockage
relationnel des mmes donnes.
Par exemple, on peut trs bien imaginer qu'un schma entits-associations soit d'un ct
traduit en un schma relationnel puis implment dans une base de donnes Oracle ; tandis
qu'en parallle, il est traduit en un diagramme de classe (modle logique objet), lui-mme
implment dans un ensemble de classes Java. Ces classes Java permettent ensuite aux
dveloppeurs de construire des applications clientes orientes objet et qui attaquent de
manire transparente les donnes de la base Oracle. Il s'agit d'une solution de passage entre la
modlisation oriente objet (pertinente pour dvelopper des interfaces graphiques) et la
modlisation relationnelle (pertinente pour grer les donnes).
Par ailleurs, la mthodologie Merise est certes typiquement franaise, mais en Grande-
Bretagne, la mthodologie standard s'appelle SSADM (Structured Systems Analysis ans
Design Method) et repose sur les mmes principes. Les nord-amricains quant eux utilisent
ce qu'on appelle des diagrammes de flux, dont les principes sont repris par la version 2 de
Merise.
Aujourd'hui, ce sont les modlisations objets et leur unification UML (Unified Modeling
Language, autrement dit langage unifi de modlisation) qui se placent la pointe de l'tat de
l'art. Malheureusement, UML n'est qu'un ensemble de notations (d'ailleurs moins intuitives
que celles des schmas entits-associations). La connaissance de ce langage ne permet donc
pas au concepteur de faire l'conomie d'une mthodologie de conception. Voil pourquoi il
n'est pas anachronique de r-diter en 2005 un document sur des mthodes qui auront bientt
30 ans ;-)
VIII. Rfrences
[Akoka et Comyn-Wattiau]Akoka, J. et Comyn-Wattiau I. Conception de bases de donnes
relationnelles. Vuibert Informatique. Ce livre trs didactique contient de bons exercices sur la
phase de conception d'un systme d'information.
[Gabay] Gabay, J. Apprendre et pratiquer Merise. Masson, 1989. Ce livre trs synthtique
permet de s'exercer sur la mthode.
[Matheron]Matheron, J.-P. Comprendre Merise. Eyrolles, 1994. Cet ouvrage trs accessible
permet vraiment de comprendre la mthode.
[Nanci et al.] Nanci, D., Espinasse, B., Cohen, B. et Heckenroth, H. Ingnierie des systmes
d'information avec Merise. Sybex, 1992. Cet ouvrage complet dtaille la mthode dans son
ensemble.
[Panet et al.] Panet, G., Letouche, R. et Tardieu, H. Merise/2 : Modles et techniques Merise
avancs. dition d'organisation, 1994. Ce livre dcrit la version 2 de la mthode.
[Tardieu et al.] Tardieu, H., Rochfeld, A. et Coletti, R. La mthode Merise. Principes et outils.
dition d'organisation, 1986. Il s'agit-l du livre de rfrence par les auteurs de la mthode.