Coucou Nathalie !
On va tenter de résoudre ça avec Carlo Zaniolo, en reprenant ce que je vous avais raconté il y a quelques mois Nathalie et Zaniolo.
Définition de la 3NF (Zaniolo) :
Soit une table R, soit X un sous-ensemble quelconque d’attributs de R et soit A un attribut quelconque de R.
R est en 3NF si pour chaque DF : X → A dans R, au moins une des conditions suivantes est remplie :
1. X contient A (la DF est alors triviale).
2. X est une surclé.
3. A fait partie d’une clé candidate de R.
Considérez la sempiternelle relvar R {Élève, Matière, Professeur}, qui a pour clé candidate le couple {Élève, Matière}. Supposons en plus qu’un professeur enseigne une seule matière.
Les seules DF non triviales sont les suivantes :
DF1 : {Élève, Matière} → {Professeur}
DF2 : {Professeur} → {Matière}
Les surclés sont les suivantes
K1 : {Élève, Matière, Professeur}
K2 : {Élève, Matière}
Comme attribut A, considérez successivement chacun des attributs de R, à savoir Élève, Matière, Professeur.
Ces attributs font tous partie d’une surclé, ils ne peuvent donc pas être la cause d’un viol de 3NF, puisque la condition 3 est toujours satisfaite.
Définition de la BCNF (Zaniolo again) :
Rappelez-vous : la définition de la BCNF est obtenue à partir de celle de la 3NF, tout simplement en supprimant la condition 3 (une chance en moins si vous préférez, autrement dit, la BCNF est plus contraignante que la 3NF).
Supprimons-donc cette condition 3 de la définition.
La DF {Professeur} → {Matière} n’est pas triviale, donc la condition 1 n'est pas satisfaite. Son déterminant {Professeur} n’est pas clé candidate, donc la condition 2 n'est pas satisfaite non plus.
=> Boum ! la BCNF est violée.
A dans quelques mois...