Dependances fonctionnelles
Pour etablir efficacement un modele entites-associations bien normalise, on peut etudier au prealable les dependances fonctionnelles entre les attributs puis, les organiser en graphe de couverture minimale. Cette technique est traditionnellement employee pour normaliser des schemas relationnels, mais elle s’applique tres bien en amont, au niveau des modeles conceptuels.
Definitions et proprietes
Un attribut Y d´epend fonctionnellement d’un attribut X si et seulement si une valeur de X induit une unique valeur de Y . On note une d´ependance fonctionnelle par une fl`eche simple : X → Y .
Par exemple, si X est le num´ero de client et Y le nom de client, alors on a bien X → Y . Par contre, on a pas Y → X, car plusieurs clients de num´eros diff´erents peuvent porter le mˆeme nom.
Transitivit´e : si X → Y et Y → Z alors X → Z.
Par exemple, on a num´ero de commande → num´ero de client → nom de client, donc on a aussi num´ero de commande → nom de client. Mais la d´ependance fonctionnelle num´ero de commande → nom de client est dite transitive, car il faut passer par le num´ero de client pour l’obtenir.
Au contraire, la d´ependance fonctionnelle num´ero de client → nom de client est directe . Seules les d´ependances fonctionnelles directes nous int´eressent. D’autres exemples sont donn´ees dans le tableau 2.
Un attribut Y peut avoir une d´ependance fonctionnelle qui repose sur la conjonction de plusieurs attri-buts, auquel cas la d´ependance est dite non el´ementaire . Les d´ependances fonctionnelles non el´ementaires sont not´ees par une fl`eche unique mais comportant plusieurs points d’entr´ee (regroup´es autour d’un cercle).
Par exemple, la quantit´e command´ee (d’un article dans une commande) d´epend de deux attributs : le num´ero de commande et le num´ero d’article (figure 18). Notons que cette d´ependance num´ero de commande + num´ero d’article → quantit´e est a` la fois non el´ementaire et directe.
Graphe de couverture minimale
En repr´esentant tous les attributs et toutes les d´ependances fonctionnelles directes entre eux, nous obtenons un r´eseau appel´ graphe de couverture minimale. Dans notre exemple sur les clients, les com-mandes et les articles, ce graphe est donn´e sur la figure 19.
La technique de traduction en un sch´ema entit´es-associations qui suit, suppose qu’aucun attribut n’a et´ oubli´e sur le graphe de couverture minimal et notamment, aucun identifiant. D’ailleurs toutes les d´ependances fonctionnelles du graphe doivent partir d’un identifiant. Si ce n’est pas le cas, c’est qu’un identifiant a et´ omis.
Traduction vers un schema entites-associations
A partir du graphe de couverture minimale (figure 19), le sch´ema entit´es-associations normalis´e cor-respondant apparaˆıt naturellement (figure 20), en suivant quelques ´etapes simples.
Etape 1 : il faut rep´erer et souligner les identifiants.
Etape 2 : puis tous les attributs non identifiant qui d´ependent directement d’un identifiant et d’un
seul, forment une entit´ (avec l’identifiant, bien sˆur).
Etape 3 : ensuite, les d´ependances el´ementaires entre les identifiants forment des associations binaires dont les cardinalit´es maximales sont 1 au d´epart de la d´ependance fonctionnelle et n a` l’arriv´ee.
Etape 4 : sauf si entre deux identifiants se trouvent deux d´ependances el´ementaires r´eflexives
quel cas l’association binaire a deux cardinalit´es maximales valant 1.
Etape 5 : enfin, les attributs (non identifiants) qui d´ependent de plusieurs identifiants sont les attri-buts d’une association suppl´ementaire dont les cardinalit´es maximales sont toutes n.
La traduction du graphe de couverture minimale de la figure 20 en un sch´ema entites associations normalis´e est donn´ee sur la figure 21.
Dans ce genre de traduction, il faut donner un nom aux entit´es et aux associations, car ce n’est pas le cas sur le graphe de couverture minimale et il reste les cardinalit´es minimales a` ´etablir.
Remarquons ´egalement qu’en r´ealit´e, il faut d´ej`a connaˆıtre les entit´es en pr´esence pour ´etablir cor-rectement le graphe de couverture minimale, ne serait-ce que pour y faire figurer leurs identifiants. Donc finalement, cette technique n’est une aide pour ´etablir les associations entre les entit´es et pour normaliser les entit´es et leurs associations (jusqu’en troisi`eme forme normale de Boyce-Codd).
Gestion des dates et du caractere historique
Dans une biblioth`eque, on peut vouloir stocker les emprunts en cours (figure 22) et/ou les emprunts historiques (figure 23). Pour les emprunts en cours, la date de retour pr´evu est un attribut de l’entit´ livres car un livre ne peut faire l’objet que d’un seul emprunt en cours. Dans ce cas, l’´etablissement du graphe de couverture minimal ne pose aucun probl`eme.
Par contre, un livre peut faire l’objet de plusieurs emprunts historiques et dans ces conditions, la date d’emprunt est d´eterminante pour connaˆıtre la date de retour pr´evue (figure 23 en haut a` gauche). Or une date n’est pas un identifiant 6 et une d´ependance fonctionnelle ne peut partir que d’un ou plusieurs identifiant(s). C’est le signe qu’il manque un identifiant : le num´ero d’emprunt (figure 23 en haut a` droite).
Notons que l’entit´ emprunts historiques suppl´ementaire qui apparaˆıt apr`es traduction (figure 23 en bas) ne peut pas ˆetre transform´ee en une association comme on pourrait le croire au simple examen des cardinalit´es qui l’entourent. En effet, les attributs de l’association qui en r´esulterait ne v´erifieraient pas la normalisation des attributs des associations. Notamment, la date de retour effectif ne d´epend pas du num´ero de livre et du num´ero de membre, mais du num´ero de livre et de la date d’emprunt.
La normalisation des entit´es ne s’applique donc pas aux entit´es qui ont un caract`ere historique. A moins que les dates ne soient regroup´ees dans une entit´ s´epar´ee, ce qui n’est pas conseill´ tant qu’aucune information li´ee aux dates (comme le caract`ere f´eri´e, par exemple) n’est n´ecessaire.
Dependances plurielles et reflexives
Une ou plusieurs d´ependances fonctionnelles peuvent partir ou arriver plusieurs fois du mˆeme attri-but. Pour clarifier la signification de chaque d´ependance fonctionnelle, on peut ajouter un commentaire sur la fl`eche (figure 24). Ce commentaire sert ensuite a` donner un nom aux associations correspondantes.
Les d´ependances fonctionnelles plurielles entre les m´edecins et le remplacements (figure 24(a)) de-viennent, apr`es traduction, des associations plurielles entre les entit´es m´edecins et remplacements. No-tons que l’entit´ remplacements ainsi g´en´er´ee, a aussi un caract`ere historique.
Les fonctionnelles r´eflexives (X → X), quoique toujours vraies, ne pr´esentent aucun int´erˆet, a` moins qu’elles aient une signification particuli`ere. Un exemple de d´ependance r´eflexive licite sur un graphe de couverture minimale est la d´ependance fonctionnelle personne → personne, lorsqu’elle signifie (( diriger )), (( ˆetre en couple avec )) ou (( ˆetre le p`ere ou la m`ere de )) (figure 24(b)).
Dans le mˆeme ordre d’id´ee, il est inutile de faire figurer sur le graphe de couverture minimal des d´ependances fonctionnelles non el´ementaires vraies, mais idiotes, comme par exemple num´ero de commande + num´ero d’article → num´ero de commande.
Associations sans attributs
La lacune majeure de cette m´ethode reste tout de mˆeme le fait que les associations dont toutes les cardinalit´es 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 sp´eciale (par exemple, une d´ependance non el´ementaire qui ne d´ebouche sur aucun attribut).
Pour illustrer ce d´efaut, prenons l’exemple des films et des acteurs (figure 25). Il n’y a pas d’attribut
qui d´epende a` la fois du num´ero de film et du num´ero d’acteur (`a moins d’imaginer le temps d’apparition a` l’´ecran). Et pourtant, les deux entit´es films et acteurs sont en association. Grˆace a` la d´ependance non el´ementaire et sans enfant, on peut rendre compte de cette situation sur le graphe de couverture minimale et faire ainsi apparaˆıtre l’association sur le sch´ema entit´es-associations qui en est traduit.
Methodologie de base
Face a` une situation bien d´efinie (soit a` travers un enonc´ pr´ecis, soit a` travers une collection de for-mulaires ou d’´etats que le nouveau syst`eme d’information est cens´ remplacer), nous pouvons proc´eder sans ´etablir le graphe de couverture minimale :
– identifier les entit´es en pr´esence ;
– lister leurs attributs ;
– ajouter les identifiants (num´ero arbitraire et auto-incr´ement´e) ;
– ´etablir les associations binaires entre les entit´es ;
– lister leurs attributs ;
– calculer les cardinalit´es ;
– v´erifier les r`egles de normalisation et en particulier, la normalisation des entit´es (c’est a` ce stade qu’apparaissent les associations non binaires), des associations et de leurs attributs ainsi que la troisi`eme forme normale de Boyce-Codd ;
– effectuer les corrections n´ecessaires.
Mais, il est parfois plus intuitif d’en passer par l’´etude des d´ependances fonctionnelles directes :
– identifier les entit´es en pr´esence et leur donner un identifiant (num´ero arbitraire et auto-incr´ement´e) ;
– ajouter l’ensemble des attributs et leur d´ependances fonctionnelles directes avec les identifiants (en commen¸cant par les d´ependances el´ementaires) ;
– traduire le graphe de couverture minimale obtenu en un sch´ema entit´es-associations ;
– ajuster les cardinalit´es minimales et ;
– a` ce stade, la majorit´e des r`egles de normalisation devraient ˆetre v´erifi´ees, il reste tout de mˆeme la normalisation des noms, la pr´esence d’attributs en plusieurs exemplaires et d’associations redon-dantes ou en plusieurs exemplaires, a` corriger.
Il faut garder ´egalement a` l’esprit que le mod`ele doit ˆetre exhaustif (c’est-a`-dire contenir toutes les informations n´ecessaires) et ´eviter toute redondance qui, on ne le dira jamais assez, constitue une perte d’espace, une d´emultiplication du travail de maintenance et un risque d’incoh´erence.
Il faut par ailleurs veiller a` ´eliminer les synonymes (plusieurs signifiants pour un signifi´e, exemple : nom, patronyme, appellation) et les polys`emes (plusieurs signifi´es pour un signifiant, exemples : qualit´e, statut).
Il va de soi que cette m´ethodologie ne doit pas ˆetre suivie pas-a`-pas une bonne fois pour toute. Au contraire, il faut it´erer plusieurs fois les ´etapes successives, pour esp´erer converger vers une mod´elisation pertinente de la situation.
1 Modele conceptuel de donnees (MCD)
1.1 Schema entites-associations
1.1.1 Entit´es et associations
1.1.2 Attributs et identifiants
1.1.3 Cardinalit´es
1.1.4 Associations plurielles
1.1.5 Association r´eflexive
1.1.6 Associations non binaires
1.2 Regles de normalisation
1.2.1 Les bonnes mani`eres dans un schema entit´es-associations
1.2.2 Les formes normales
1.3 Dependances fonctionnelles
1.3.1 D´efinitions et propri´et´es
1.3.2 Graphe de couverture minimale
1.3.3 Traduction vers un sch´ema entit´es-associations
1.3.4 Gestion des dates et du caract`ere historique
1.3.5 D´ependances plurielles et r´eflexives
1.3.6 Associations sans attributs
1.4 M´ethodologie de base
2 Modele logique de donnees (MLD)
2.1 Syst`emes logiques
2.2 Modele logique relationnel
2.2.1 Tables, lignes et colonnes
2.2.2 Cles primaires et cles etrangeres
2.2.3 Schema relationnel
2.3 Traduction d’un MCD en un MLDR
3 Modele physique de donnees (MPD)
3.1 Distinction entre MLD et MPD
3.2 Optimisations
4 Retro-conception
4.1 Traduction inverse
4.2 Cas particuliers
5 Complements
5.1 Agr´egation
5.1.1 Association de type 1 : n
5.1.2 Association de type n : m
5.1.3 Tables de codification ou tables de r´ef´erence
5.2 Identifiant relatif ou lien identifiant
5.2.1 R´esolution d’un probl`eme sur le sch´ema relationnel
5.2.2 Mod`ele conceptuel correspondant
5.2.3 Discussion autour de la num´erotation des exemplaires
5.3 H´eritage
5.3.1 Sous-entit´e
5.3.2 Utilisation de l’h´eritage pour s´eparer les informations compl´ementaires
5.3.3 Specialisation des associations
Conclusion