# Gnral Dveloppement > ALM > Modlisation > Schma > [Modle Relationnel] Trouver ce graphe minimum compliqu [dbutant]

## aymanamkassou

Salutations ! J'ai t bloqu en essayant de trouver le graphe minimum le plus optimal, voici les DFs :

Classe,Cours,Module->NumEns,NomEnsModEtud,Cours,Module->NoteModEtud->NomEtud,ClasseCours->ModuleCours->NbHeureCours,ModEtud->NoteCours,Module->NbHeureNumEns->NomEnsCours,Classe->NumEns

J'ai dj dtermin les redondances comme suit:
Classe,Cours,Module->NumEns est redondante puisque on a cours,class->NumEns.
Cours,Module->NbHeure est aussi redondante puisque on a Cours->NbHeure.
ModEtud,Cours,Module->Note est aussi redondante puisque on a Cours,ModEtud->Note.
Je pense pas qu'on a des DFs dduites ici non? 

Voila le graphe minimum que j'ai cr: 


Quel serait l'identifiant dans ce cas ?

Merci infiniment!

----------


## Paprick

Bonjour,

Sauf erreur de ma part (sans me servir de votre graphe), l'identifiant irrductible (cl minimale) trouv par _Looping_ en considrant toutes vos DFs est :  *Cours,ModEtu* 
Est-ce que cela correspond  vos attentes ?  ::koi::

----------


## aymanamkassou

C'est beaucoup plus logique ! J'ai oubli une redondance et cela a rendu le tout beaucoup plus difficile. Voici le schma final qui, je l'espre, est le plus optimal ! 


Cette 3NF vous semble-t-elle correcte ?
R1(Cours,ModEtu,Note)
R2(ModEtu,NomEtu,Classe)
R3(Cours,Classe,Numens)
R4(Cours,Module,NbHeures)
R5(Numens,Nomens)

Merci infinement!

----------


## Paprick

Afin de mieux apprhender vos relations, il serait prfrable de produite le MCD de votre systme.
Les relations se dduiront ensuite naturellement.

----------


## fsmrel

Bonjour,




> Classe, Cours, Module->NumEns est 
> redondante puisque on a cours, class->NumEns.


Aymanamkasso, sur quoi vous basez-vous pour affirmer cela ? 
En fait, il faut dmontrer que cette DF peut disparatre sans remettre en cause lensemble* F* des DF que vous proposez.

Cest quand mme pour cela que William Armstrong  nous a fourni ses fort prcieux axiomes que je reprends en annexe dans mon article sur la normalisation.

Appuyons-nous sur ces axiomes et reprenons lensemble *F* de vos DF. Pour commencer appliquons la rgle de *dcomposition* faisant que le ct droit de chaque DF ne contient qu'un seul attribut (jen profite pour donner un nom  chaque DF) :

DF01 - Classe, Cours, Module -> NumEns
DF02 - Classe, Cours, Module -> NomEns    
DF03 - ModEtud, Cours, Module -> Note    
DF04 - ModEtud -> NomEtud
DF05 - ModEtud -> Classe
DF06 - Cours -> Module
DF07 - Cours -> NbHeure
DF08 - Cours, ModEtud -> Note
DF09 - Cours, Module -> NbHeure     
DF10 - NumEns -> NomEns
DF11 - Cours, Classe -> NumEns
Il devient possible de chercher un ensemble minimal pour *F.* Cet ensemble est minimal si :

1. Le ct droit de chaque DF ne contient quun seul attribut ;
2. Il nexiste aucune DF X -> A telle que lensemble F  {X -> A} soit quivalent  F.

Le premier point a dj t voqu et appliqu.

Expliquons le 2e point : la DF X -> A peut tre supprime si on sait linfrer des autres DF.

Cest le cas de la DF DF01. En effet, appliquons laxiome d*augmentation*  DF11, en y augmentant droite et gauche au moyen de lattribut Module : on produit ainsi la DF :

Cours, Classe, Module -> NumEns, Module
A laquelle on applique la rgle de *dcomposition* pour produire :

Cours, Classe, Module -> NumEns

Cours, Classe, Module -> Module
En vertu de laxiome de *rflexivit*, si elle est absente cette dernire DF est reproductible et peut donc tre supprime.

Reste donc : 

Cours, Classe, Module -> NumEns
Cest--dire DF01, quon peut supprimer elle aussi, puisquon a prouv quelle est infrable  partir de DF11.

Prenons le cas de la DF DF02. Appliquons laxiome d*augmentation*  DF11, en y augmentant droite et gauche au moyen de lattribut Module : comme ci-dessus on produit la DF 

Cours, Classe, Module -> NumEns
DF02 peut tre supprime car on sait la produire  laide laxiome de *transitivit* appliqu  DF11 et DF10 :  

Classe, Cours, Module -> NumEns et NumEns -> NomEns => Classe, Cours, Module -> NomEns
DF03 peut tre supprime car on sait la produire  partir de DF08 :

Cours, ModEtud -> Note
laquelle par* augmentation* et *dcomposition* donne :

Cours, ModEtud, Module -> Note
cest--dire DF03.

Ainsi, en labsence de DF01, DF02 et DF03, lensemble* F* de dpart reste intgre.

Quen est-il de DF04 ? Supprimons cette DF. Lensemble* F* des DF devient en fait un sous-ensemble strict de *F*, ce qui fait que DF04 ne peut pas tre supprime.
Mme punition si on supprimait DF05, DF06, DF07, DF08, DF10 et DF11. 

Reste le cas de DF09 : cette DF est infrable  partir de DF07 en utilisant laxiome daugmentation :

Cours -> NbHeure => 
Cours, Module -> Module, NbHeure
Et par dcomposition :

Cours, Module -> NbHeure
Lensemble *F* des DF se rduit donc  :

DF04 - ModEtud -> NomEtud
DF05 - ModEtud -> Classe
DF06 - Cours -> Module
DF07 - Cours -> NbHeure
DF08 - Cours, ModEtud -> Note
DF10 - NumEns -> NomEns
DF11 - Cours, Classe -> NumEns
Soit encore en regroupant ce qui peut ltre :

DF04 - ModEtud -> NomEtud, Classe
DF06 - Cours -> Module, NbHeure
DF08 - Cours, ModEtud -> Note
DF10 - NumEns -> NomEns
DF11 - Cours, Classe -> NumEns




> Cette 3NF vous semble-t-elle correcte ?
> R1(Cours, ModEtu, Note)
> R2(ModEtu, NomEtu, Classe)
> R3(Cours, Classe, Numens)
> R4(Cours, Module, NbHeures)
> R5(Numens, Nomens)


Pour parler de 3NF encore faut-il fournir les cls des variables relationnelles R1, R2, R3, R4, R5. Quelles sont-elles ? Sinon votre graphe du message #3 correspond  lensemble F que jai propos.  ::P: 

Vos variables relationnelles sont en phase avec lensemble F :

R1 <=> DF08
R2 <=> DF04
R3 <=> DF11
R4 <=> DF06
R5 <=> DF10
A ce stade, si on retient que les dterminants (parties gauches) des DF donnent lieu  cls, soulignons-les :

R1(Cours, ModEtu, Note)
R2(ModEtu, NomEtu, Classe)
R3(Cours, Classe, Numens)
R4(Cours, Module, NbHeures)
R5(Numens, Nomens)
Il est un fait que dans ces conditions les variables relationnelles sont en 3NF, et mme mieux en BCNF, dont je rappelle lnonc donn par C. J. Date dans _Database Design and Relational Theory, Second Edition_ :

Relvar R is in Boyce/Codd normal for (BCNF) if and only if for every non trivial FD X -> Y that holds in R, the following is true:
X is a superkey.

----------


## fsmrel

Du ct de Looping :



A vrifier !  ::whistle::

----------

