IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Calcul d'une couverture minimale [Normalisation]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Calcul d'une couverture minimale
    Bonjour,

    J'aurais besoin d'aide pour comprendre le calcul d'une couverture minimale.
    J'ai le sujet et la solution mais je ne comprend pas toutes les étapes.

    Si quelqu'un peut m'expliquer rapidement, merci d'avance
    Exemple:
    Soit F={
    1 AB→C
    2 C→A
    3 BC→D
    4 D→B
    5 D→EG
    6 BE→C
    7 CG→BD
    8 CE→AG}
    On atomise les membres droits:
    AB→C
    C→A
    BC→D
    ACD→B simplifié en CD→B car on a C→A
    D→E
    D→G
    BE→C
    CG→B CD→B car D→G donc on supprime CG→B car redondance
    CG→D
    CE→A Mais je ne comprend pas pourquoi on doit supprimer celle-ci? est ce que c'est parce que C→A?
    CE→G

    Je voulais également savoir si ce shéma est de forme 3NF et pourquoi?
    E(C,P,H,S,E,N)
    F = {C → P, HS → C, HP → S, CE → F, HE → S}

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par redsaint0 Voir le message
    J'aurais besoin d'aide pour comprendre le calcul d'une couverture minimale.
    Soit F={
    1 AB→C
    2 C→A
    3 BC→D
    4 D→B
    5 D→EG
    6 BE→C
    7 CG→BD
    8 CE→AG}
    Quelques rappels

    1) Dépendance fonctionnelle élémentaire

    Étant donné deux sous-ensembles d’attributs X et Y de l’en-tête d’une relation R, la dépendance fonctionnelle X Y est élémentaire (ou irréductible, ou totale) si :

    Y est singleton (Y ne contient qu’un seul élément, c'est-à-dire un seul attribut de l’en-tête de R) ;
    La dépendance fonctionnelle n’est pas triviale, c'est-à-dire que Y n’est pas inclus dans X (tout ou partie) ;
    Il n’existe pas Z strictement inclus dans X tel que Z Y.

    2) Fermeture d’un ensemble de dépendances fonctionnelles

    Un ensemble F de dépendances fonctionnelles défini pour une relation R possède une fermeture F+ qui est l’ensemble des dépendances fonctionnelles inférables de F, au moyen des règles d’Armstrong.

    3) Couverture minimale d’un ensemble de dépendances fonctionnelles

    Une couverture minimale (ou irréductible) I+ de F consiste en l’ensemble irréductible I de dépendances fonctionnelles élémentaires tel que I+ = F+. (Note : Pour l’ensemble F on peut avoir plus d’une couverture minimale).

    La connaissance de la couverture minimale est utile dans la mesure où elle permet de vérifier qu’une relation vérifie la forme normale de Boyce-Codd (BCNF) :
    Soit R une relation, X un sous-ensemble d’attributs de l’en-tête de R et A un attribut de cet en-tête. R est en forme normale de Boyce-Codd (BCNF) si et seulement si le déterminant chaque dépendance fonctionnelle élémentaire X {A} vérifiée dans R est une clé candidate de R.
    Il existe d’autres définitions de la BCNF, mais dans votre cas, celle-ci convient.

    Avant de se prononcer sur le respect par R du respect de la BCNF, l’objectif est donc de calculer la couverture minimale I+ de l’ensemble F, ou au moins l’ensemble des dépendances fonctionnelles élémentaires, tâche faisant partie du calcul de cette couverture.

    Pour reprendre votre exemple, je vais supposer que les éléments A, B, C, D, E et G qui figurent dans l’ensemble F de dépendances fonctionnelles que vous proposez sont les attributs d’une relation R. Dans ces conditions, F contient donc les éléments suivants :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05 : {D} {E, G}
    DF06 : {B, E} {C}
    DF07 : {C, G} {B, D}
    DF08 : {C, E} {A, G}

    Calcul de la couverture minimale. 1re étape.

    On commence par rendre irréductibles (c'est-à-dire singletons) les parties droites des dépendances fonctionnelles. Ceci est vite réalisé et rendu possible par application de la règle de décomposition (cf. les axiomes d’Armstrong). L’ensemble F des DF est ainsi transformé :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF05b : {D} {G}
    DF06 : {B, E} {C}
    DF07a : {C, G} {B}
    DF07b : {C, G} {D}
    DF08a : {C, E} {A}
    DF08b : {C, E} {G}

    Calcul de la couverture minimale. 2e étape.

    L’affaire se corse (chef-lieu Ajaccio). Il s’agit de tenter de rendre irréductibles à gauche, donc élémentaires, l’ensemble de dépendances fonctionnelles énumérées ci-dessus. Sont concernées les dépendances fonctionnelles dont les déterminants (parties gauches) ne sont pas des singletons : DF01, DF03, DF06, DF07a, DF07b, DF08a, DF08b.

    Voyons par exemple si {A, B} {C} peut se réduire à {A} {C} ou {B} {C}.

    La DF {A, B} {C} est-elle réductible à réductible à {A} {C} ? Pour s’en assurer, on procède de la façon suivante :

    {A} étant la partie gauche de la dépendance fonctionnelle {A} {C}, on calcule la fermeture {A}+ de {A} par rapport à F. Cette fermeture est constituée de l’ensemble des attributs de R dépendant fonctionnellement de {A}. De façon pragmatique, on peut procéder ainsi pour obtenir cet ensemble, en écrivant de façon symbolique :

    {A}+ = _ _ _ _ _ _

    En sorte que chaque symbole « _ » représente une place pour un des attributs A, B, C, D, E, G. Parce que {A} {A} (1er axiome d’Armstrong, dit de réflexivité), on en « capture » la partie droite, donc l’attribut A et on l’« installe » à sa place :

    {A}+ = A _ _ _ _ _

    Puis on passe en revue l’ensemble des DF en y cherchant celles dans lesquelles {A} représente la partie gauche. Il n’existe aucune telle DF : le calcul de {A}+ par rapport à F est terminé et l’on écrit {A}+ = {A}.

    Pour vérifier si la dépendance fonctionnelle DF01 {A, B} {C} peut se réduire à la dépendance fonctionnelle DF01a {A} {C}, on effectue exactement le même travail, mais en remplaçant F par F’, qui diffère de F du fait qu’on y remplace DF01 par DF01a :

    DF01a : {A} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF05b : {D} {G}
    DF06 : {B, E} {C}
    DF07a : {C, G} {B}
    DF07b : {C, G} {D}
    DF08a : {C, E} {A}
    DF08b : {C, E} {G}

    On applique le même procédé que précédemment, en amorçant la pompe :

    {A}+ = A _ _ _ _ _

    Puis on passe en revue l’ensemble des DF de F’ en y cherchant celles dans lesquelles {A} représente la partie gauche. C’est le cas de DF01a, dont on « capture » la partie droite {C} :

    {A}+ = A _ C _ _ _

    Puis on passe en revue l’ensemble des autres DF de F’ en y cherchant celles dans lesquelles {A} ou {C} ou {A, C} représente la partie gauche. C’est le cas de DF02, mais elle ne permet pas d’enrichir {A}+. Comme il n’existe aucune autre dépendance fonctionnelle répondant à la condition posée, le travail est terminé et la fermeture {A}+ de {A} par rapport à F’ est égale à {A, C}.

    Or un théorème dit que F’ peut se substituer à F si seulement si la fermeture {A}+ de {A} par rapport à F’ est égale à la fermeture {A}+ de {A} par rapport à F : ici, tel n’est pas le cas, puisque la fermeture {A}+ de {A} par rapport à F’ est égale à {A, C}, tandis que la fermeture {A}+ de {A} par rapport à F est égale à {A} :

    La DF {A, B} {C} n’est pas réductible à {A} {C}. Je vous laisse le soin de montrer qu’elle n’est pas non plus réductible à {B} {C}. Ainsi, la DF {A, B} {C} est élémentaire (mon cher Watson).

    Concernant les autres dépendances fonctionnelles, on peut montrer que DF08a : {C, E} {A} est réductible à {C} {A}. En effet, par rapport à F et F’, dans les deux cas :

    {A}+ = A _ C _ _ _

    Que DF08a puise débarrasser le plancher est du reste évident quand on applique directement les règles d’augmentation et de décomposition :

    Si {C} {A} alors {C, E} {A, E} (augmentation)
    puis {C, E} {A} (décomposition).

    Je vous laisse aussi le soin de montrer qu’il n’y a pas d’autre dépendance fonctionnelle qui soit réductible à gauche.

    Calcul de la couverture minimale. 3e étape.

    Courage. Si nous n’avons pas commis d’étourderie lors de la 2e étape, l’ensemble initial F est à remplacer par le suivant, appelons-le G :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF05b : {D} {G}
    DF06 : {B, E} {C}
    DF07a : {C, G} {B}
    DF07b : {C, G} {D}
    DF08b : {C, E} {G}

    Ce que l’on veut maintenant, c’est découvrir les dépendances fonctionnelles qui sont parfaitement inférables des autres et peuvent donc disparaître. Cherchons par exemple à voir si DF01 peut disparaître. En plus de G, considérons l’ensemble I = G – DF01 : I est égal à G débarrassé de DF01.

    DF01 peut disparaître seulement si sa partie gauche {A, B} est telle que la fermeture {A, B}+ de {A, B} par rapport à G est égale à la fermeture {A, B}+ de {A, B} par rapport à I.

    Calculons la fermeture {A, B}+ de {A, B} par rapport à G. Comme lors de l’étape précédente, on amorce la pompe :

    {A, B}+ = A B _ _ _ _

    Puis, du fait de DF01 :

    {A, B}+ = A B C _ _ _

    Puis, du fait de DF03 :

    {A, B}+ = A B C D _ _

    Puis, du fait de DF05a et DF05b :

    {A, B}+ = A B C D E G

    On a capturé tous les attributs de R : le calcul de {A, B}+ est terminé. La fermeture {A, B}+ de la paire {A, B} par rapport à F est égale à {A, B, C, D, E, G}. Autrement dit on vérifie {A, B} {A, B, C, D, E, G}. En passant, comme tous les attributs de R sont fonctionnellement dépendants de la paire {A, B}, celle-ci constitue une clé candidate de R.

    Calculons la fermeture {A, B}+ de {A, B} par rapport à I en se souvenant que DF01 n’en fait pas partie. On amorce la pompe :

    {A, B}+ = A B _ _ _ _

    Mais par la suite, on ne peut plus rien capturer car il n’existe pas d’autre dépendance fonctionnelle dont la partie gauche soit contenue dans {A, B}. La fermeture {A, B}+ de {A, B} par rapport à G est différente de la fermeture {A, B}+ de {A, B} par rapport à I et l’on doit conserver la dépendance fonctionnelle DF01.

    Montrons que la dépendance fonctionnelle DF05b : {D} {G} peut disparaître. Considérons l’ensemble I = G – DF05b :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF06 : {B, E} {C}
    DF07a : {C, G} {B}
    DF07b : {C, G} {D}
    DF08b : {C, E} {G}

    Calculons la fermeture {D}+ de {D} par rapport à I. Comme lors de l’étape précédente, on amorce la pompe :

    {D}+ = _ _ _ D _ _

    Comme {D} {B} (cf. DF04), l’attribut B peut être capturé et {D}+ devient :

    {D}+ = _ B _ D _ _

    Comme {D} {E} (cf. DF05a), l’attribut E peut être capturé et {D}+ devient :

    {D}+ = _ B _ D E _

    Comme la paire {B, E} fait partie de {D}+ et que {B, E} {C} (cf. DF06), l’attribut C peut être capturé et {D}+ devient :

    {D}+ = _ B C D E _

    Comme la paire {C, E} fait partie de {D}+ et que {C, E} {G} (cf. DF08b), l’attribut G peut être capturé et {D}+ devient :

    {D}+ = _ B C D E G

    Donc {D} {G}, en conséquence de quoi la dépendance fonctionnelle DF05b peut disparaître : on n’a même pas eu besoin d’aller au bout du calcul de la fermeture {D}+ de {D} par rapport à I et de calculer la fermeture {D}+ de {D} par rapport à G.

    Ainsi, G peut être réduit à :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF06 : {B, E} {C}
    DF07a : {C, G} {B}
    DF07b : {C, G} {D}
    DF08b : {C, E} {G}

    A partir de ce nouvel ensemble G, on montre de la même façon que la dépendance fonctionnelle DF07a peut disparaître à son tour, G se réduisant alors à :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF06 : {B, E} {C}
    DF07b : {C, G} {D}
    DF08b : {C, E} {G}

    Je vous laisse le soin de montrer qu’il n’y a plus de réduction possible donc que cet ensemble de dépendances fonctionnelles constitue une couverture minimale.

    Cerise sur le gâteau : cette couverture n’est pas unique. En effet, si au lieu de s’intéresser au sort de la dépendance fonctionnelle DF07a on préfère s’intéresser à celui de la dépendance fonctionnelle DF07b, l’ensemble suivant constitue aussi une couverture minimale tout aussi respectable :

    DF01 : {A, B} {C}
    DF02 : {C} {A}
    DF03 : {B, C} {D}
    DF04 : {D} {B}
    DF05a : {D} {E}
    DF06 : {B, E} {C}
    DF07a : {C, G} {B}
    DF08b : {C, E} {G}

    _________________________________________________________________

    Citation Envoyé par redsaint0 Voir le message
    Je voulais également savoir si ce schéma est de forme 3NF et pourquoi?
    E(C, P, H, S, E, N)
    F = {C → P, HS → C, HP → S, CE → F, HE → S}
    Il y a quelque chose qui cloche dans votre système : la relation a pour en-tête {C, P, H, S, E, N}, mais F comporte une dépendance fonctionnelle CE → F dont le dépendant F ne fait pas partie de l’en-tête. Et pour faire bonne mesure, l’en-tête de la relation comporte un attribut N qui n’apparaît dans aucune dépendance fonctionnelle.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  3. #3
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Bonjour fsmrel,

    Grâce à cette décomposition par étapes, j'ai enfin bien compris l'intérêt de calculer la fermeture d'un ensemble d'attributs.

    Au niveau de l'étape 2, à la question:
    Citation Envoyé par fsmrel Voir le message
    La DF {A, B} {C} est-elle réductible à réductible à {A} {C} ?
    Vous répondez non :
    Citation Envoyé par fsmrel Voir le message
    Il n’existe aucune telle DF : le calcul de {A}+ par rapport à F est terminé et l’on écrit {A}+ = {A}.
    Il aurait fallut trouver {A}+ = {A, C}.

    J'ai un petit soucis avec la suite, peut-être une faute de frappe.
    Vous écrivez:
    Citation Envoyé par fsmrel Voir le message
    Pour vérifier si la dépendance fonctionnelle DF01 {A, B} {C} peut se réduire à la dépendance fonctionnelle DF01a {A} {C}, on effectue exactement le même travail [...]
    Mais ce travail vient juste d'être effectué, ne faudrait-il pas plutôt lire ceci ? :
    Citation Envoyé par fsmrel Voir le message
    Pour vérifier si la dépendance fonctionnelle DF01 {A, B} {C} peut se réduire à la dépendance fonctionnelle DF01b {B} {C}, on effectue exactement le même travail [...]
    Je vais continuer à travailler là-dessus.
    J'aperçois enfin le bout du tunnel, à moins que ce soit une illusion.

    Bonne journée.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup pour la résolution avec toutes les étapes détaillées en plus, je vais essayé d'éplucher ca

    Ca te dirait pas de remplacer mon prof de BDD ton explication est 100* plus compréhensive que toutes les tentatives de speudo explication de mon soi-disant prof

    Pour la seconde question j'ai fait une faute de frappe c'était N et pas F:

    E(C, P, H, S, E, N)
    F = {C → P, HS → C, HP → S, CE → N, HE → S}

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Je réponds d’abord à Oishiiii.


    Citation Envoyé par Oishiiii Voir le message

    Au niveau de l'étape 2, à la question:

    Vous répondez non :
    Citation Envoyé par fsmrel Voir le message
    Il n’existe aucune telle DF : le calcul de {A}+ par rapport à F est terminé et l’on écrit {A}+ = {A}.
    Il aurait fallut trouver {A}+ = {A, C}.
    Certes non ! La fermeture {A}+ de {A} par rapport à F est bien égale à {A}, car F ne contient aucune dépendance fonctionnelle ayant {A} comme partie gauche.

    En revanche, F’ contient la dépendance fonctionnelle DF01a : {A} {C} dont la partie gauche est {A}, ce qui fait que la fermeture {A}+ de {A} par rapport à F’ est égale {A, C} comme je l’ai expliqué.


    Citation Envoyé par Oishiiii Voir le message
    J'ai un petit soucis avec la suite, peut-être une faute de frappe.
    Vous écrivez:
    Citation Envoyé par fsmrel Voir le message
    Pour vérifier si la dépendance fonctionnelle DF01 {A, B} → {C} peut se réduire à la dépendance fonctionnelle DF01a {A} → {C}, on effectue exactement le même travail [...]
    Mais ce travail vient juste d'être effectué [...]
    Il n'y a pas de faute de frappe.

    Ce que je veux dire c'est ceci : le travail effectué avec la dépendance fonctionnelle DF01 {A, B} {C} appartenant à F est le même qu’il faut réaliser avec la dépendance fonctionnelle DF01a {A} {C} appartenant à F', pour ensuite comparer les fermetures {A}+ de {A} par rapport à F et {A}+ de {A} par rapport à F’.

    Un peu plus loin, j’ai écrit :
    Citation Envoyé par fsmrel Voir le message
    La DF {A, B} → {C} n’est pas réductible à {A} → {C}. Je vous laisse le soin de montrer qu’elle n’est pas non plus réductible à {B} → {C}.
    C'est donc à ce stade, qu'il faut calculer la fermeture {B}+ de {B} par rapport à F et la fermeture {B}+ de {B} par rapport à F” (ensemble dans lequel on remplace la DF {A, B} {C} par la DF {B} {C} que l’on peut appeler DF06b si on veut lui donner un nom). La fermeture {B}+ de {B} par rapport à F est égale à {B}, tandis que la fermeture {B}+ de {B} par rapport à F” est égale à {A, B, C, D, E, G}.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  6. #6
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Mea culpa, je n'avais pas compris qu'il fallait appliquer cet algorithme de calcul de la fermeture d'un ensemble d'attributs à plusieurs reprises, avec des ensembles de DF différents afin de comparer les résultats.

    Merci

    Bonne soirée.

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par Oishiiii Voir le message
    Mea culpa, je n'avais pas compris qu'il fallait appliquer cet algorithme de calcul de la fermeture d'un ensemble d'attributs à plusieurs reprises, avec des ensembles de DF différents afin de comparer les résultats.
    Ne vous inquiétez surtout pas, il m'arrive aussi de déraper dans ces fichus calculs de fermeture et de couverture. Il arrive même que je fasse observer à certains professeurs d'Université qu'ils se plantent eux aussi dans leurs démonstrations (essentiellement au cous de la 3e étape)...

    N'hésitez jamais à faire des remarques, c'est un bon moyen de vous de progresser et pour moi d'essayer d'être plus clair. On aura gagné quand vous aurez pris assez d'assurance pour prendre le relais...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  8. #8
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par redsaint0 Voir le message
    Je voulais également savoir si ce schéma est de forme 3NF et pourquoi?
    E(C, P, H, S, E, N)
    F = {C → P, HS → C, HP → S, CE → N, HE → S}
    Il faudrait déjà voir si la relation est en deuxième forme normale. Prenons la définition qu’en a donnée son inventeur Ted Codd (1971), je cite :
    A relation R is in second form normal if it is in first normal form and every non-prime attribute of R is fully dependant on each candidate key of R.
    Ce que l’on peut ainsi traduire ainsi :
    Une relation R est en deuxième forme normale si elle est en première forme normale et si chaque attribut n’appartenant à aucune clé candidate de R est en dépendance totale de chaque clé candidate de R.
    En l’occurrence, dire qu’une dépendance fonctionnelle X Y est totale revient à dire qu’elle est élémentaire (revoyez les définitions que j’ai données à l’occasion de mon premier message).

    Je rappelle en passant la définition de la clé candidate :
    Une clé candidate est un sous-ensemble d’attributs K de l’en-tête d’une relation R, respectant les deux contraintes suivantes :

    Unicité. Deux n-uplets distincts de R ne peuvent avoir même valeur de K.
    Irréductibilité (ou minimalité). Il n’existe pas de sous-ensemble strict de K garantissant la règle d’unicité.

    Corollaire : K détermine fonctionnellement chaque {attribut} de R.

    N.B. Si un sous-ensemble d’attributs S de l’en-tête de R respecte la contrainte d’unicité, alors S représente une surclé pour R. Ainsi, une clé candidate est une surclé devant en plus respecter la contrainte d’irréductibilité.

    Il s’agit maintenant de fournir la liste des clés candidates de la relation, puis de passer en revue les parties droites des dépendances fonctionnelles qui nous sont données, afin de vérifier que chacune de ces parties droites n’appartient pas à une dépendance fonctionnelle dont la partie gauche serait un sous-ensemble strict d’une clé candidate.

    Il faut donc commencer par découvrir les clés candidates de R. En principe, on commence par vérifier si les singletons {C}, {E}, {H}, {N}, {P}, {S} peuvent représenter de telles clés.

    Par exemple, si c’était le cas de {C}, alors on aurait la dépendance fonctionnelle {C} {C, E, H, N, P, S}, c'est-à-dire que la fermeture {C}+ de {C} par rapport à F serait nécessairement égale à {C, E, H, N, P, S}, ce qui n’est évidemment pas le cas ici, et vous savez désormais vérifier que cette fermeture est seulement égale à {C, P}.

    Il faudrait ensuite en passer aux paires (il y en a une douzaine), puis aux triplets (il y en a aussi un paquet), etc., mais la tâche risque d’être longue et décourageante...

    Essayons de réduire drastiquement les recherches. Je vous demande maintenant de réfléchir au point suivant :

    Si un attribut A n’appartient à aucune partie droite d’une dépendance fonctionnelle de F, il ne pourra jamais faire partie de la fermeture par rapport à F, pour une d’une dépendance fonctionnelle D dont la partie gauche est elle aussi dépourvue de l’attribut A. Quoi qu’on fasse, cette fermeture sera désespérément et sempiternellement incomplète, elle ne pourra donc jamais donner lieu à une quelconque clé candidate.

    Prenons le cas de l’attribut E : il n’appartient à aucune partie droite de quelque dépendance fonctionnelle que ce soit de F. Autrement dit, si l’on considère les dépendances fonctionnelles pour lesquelles E est aussi absent à gauche :
    {C} {P}
    {H, S} {C}
    {H, P} {S}
    Alors les fermetures correspondantes {C}+, {H, S}+, {H, P}+ ne contiendront jamais E, quoi qu’on fasse. Parmi la multitude des combinaisons d’attributs, dans la quête des clés candidates, on peut donc se désintéresser des singletons {C}, {H}, {S}, {P}, des paires et des triplets qu’on peut en inférer, sans oublier le quadruplet {C, H, S, P}.

    De la même façon, prenons le cas de l’attribut H : lui aussi n’appartient à aucune partie droite de quelque dépendance fonctionnelle que ce soit de F. Autrement dit, si l’on considère les dépendances fonctionnelles pour lesquelles H est aussi absent à gauche :
    {C} {P}
    {C, E} {N}
    Là aussi on peut se désintéresser des singletons {C}, {E}, des paires et du triplet qu’on peut en inférer.

    A la réflexion, les attributs E et H étant tous deux absents de l’ensemble des parties droites, un sous-ensemble d’attributs X de fermeture X+ par rapport à F doit avoir au moins E et H comme éléments pour que l’on ait une chance que X+ = {C, E, H, N, P, S} donc que X représente une clé candidate.

    Dans notre exemple, on doit donc commencer par se focaliser sur le calcul de la fermeture {H, E}+ de la paire {H, E} par rapport à F. Si elle est égale à {C, E, H, N, P, S}, on aura gagné. Sinon, il faudra procéder par augmentation de {H, E} jusqu’à ce que l’on arrive à produire cet ensemble.

    Calculons donc {H, E}+. Au départ (les places correspondent ici à l’ordre alphabétique des noms des attributs, à savoir C, E, H, N, P, S) :
    {H, E}+ = _ E H _ _ _
    Puis, grâce à la dépendance fonctionnelle {H, E} {S} :
    {H, E}+ = _ E H _ _ S
    Puis, grâce à la dépendance fonctionnelle {H, S} {C} :
    {H, E}+ = C E H _ _ S
    Puis, grâce à la dépendance fonctionnelle {C} {P} :
    {H, E}+ = C E H _ P S
    Puis, grâce à la dépendance fonctionnelle {C, E} {N} :
    {H, E}+ = C E H N P S

    La fermeture {H, E}+ de {H, E} par rapport à F contient l’ensemble des attributs de la relation, donc — morceau de chance ! — {H, E} est clé candidate. Elle est même la seule. En effet, si l’on ajoutait un attribut à {H, E}, on produirait une surclé ne respectant pas la contrainte d’irréductibilité à laquelle sont soumises les clés candidates, et si l’on retranchait H ou E de {H, E}, on ne respecterait pas la contrainte d’unicité.

    {H, E} est l’unique clé candidate de la relation et pour que la deuxième forme normale soit violée, il faudrait que {H} et/ou {E} déterminent fonctionnellement un des attributs C, N, P, S, ce qui n’est pas le cas : la deuxième forme normale est respectée.

    Venons-en à la troisième forme normale. Prenons la définition qu’en a donnée son inventeur Ted Codd (1971), je cite :
    A relation R is in third form normal if it is in second normal form and every non-prime attribute of R is non-transitively dependant on each candidate key of R.
    Ce que l’on peut ainsi traduire ainsi :
    Une relation R est en troisième forme normale si elle est en deuxième forme normale et si chaque attribut n’appartenant à aucune clé candidate ne dépend directement que des clés candidates de R.

    A partir de la fermeture {H, E}+ de {H, E} qui est égale à {C, E, H, N, P, S}, en vertu de la règle de décomposition (cf. les axiomes d’Armstrong), il existe la dépendance fonctionnelle :
    {H, E} {P}
    Mais, {P} ne dépend pas que de {H, E}, puisqu’il existe la dépendance fonctionnelle {C} {P} alors que {C} ne représente pas une clé candidate :

    La troisième forme normale est violée. Elle l’est même copieusement, puisque les autres dépendances fonctionnelles sont délinquantes elles aussi :
    {H, S} {C}
    {H, P} {S}
    {C, E} {N}
    On fait souvent intervenir les dépendances fonctionnelles transitives dans les (multiples) définitions de la troisième forme normale. Chacun sa sauce. En tout état de cause, voici un exemple de dépendance fonctionnelle transitive impliquée dans le viol :
    De {H, E} {H, S} et {H, S} {C} on infère par transitivité {H, E} {C}.
    Personnellement, je préfère utiliser la définition de la troisième forme normale qu’en a donnée Carlo Zaniolo, car elle permet notamment de répondre à votre question sans faire d’abord appel à la deuxième forme normale, mais on restera là pour aujourd’hui...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    C'est parfaitement clair.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. calcul de couverture minimale
    Par Invité dans le forum Schéma
    Réponses: 4
    Dernier message: 23/12/2013, 21h08
  2. [DF] Calcul d'une couverture minimale
    Par Anonymouse dans le forum Schéma
    Réponses: 5
    Dernier message: 16/12/2008, 22h32
  3. [DF]Clefs candidates d'une couverture minimale
    Par wang_xue dans le forum Schéma
    Réponses: 19
    Dernier message: 16/10/2007, 23h45
  4. Recuperer un champ calculé dans une variable....
    Par vijeo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/12/2004, 14h57
  5. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo