1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2017
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Quelles formes normales pour cette relation qui a 2 clés candidates ?

    Bonjour

    Je souhaite savoir en quelle forme normale est cette relation (ou plutôt relvar) qui sert à enregistrer le nombre de véhicules par département français et par types de véhicules.
    R (numDepartement, nomDepartement, TypeVehicule, nb)

    Les DF sont :
    1. numDepartement -> NomDepartement
    2. NomDepartement -> numDepartement
    3. numDepartement, TypeVehicule -> nb
    4. nomDepartement, TypeVehicule -> nb

    Il y a donc 2 clés candidates
    • numDepartement, TypeVehicule
    • nomDepartement, TypeVehicule

    Elle n'est pas en 3FNBC puisqu'il y a au moins une DF (ex: numDepartement -> NomDepartement) dont la source ne contient pas une clé.
    Mais sinon, est-elle en 2FN, en 3FN ? Comment prend-on en compte dans cet exemple la présence de plusieurs clés candidates dans la 2FN et la 3FN ?

  2. #2
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 15 184
    Points : 29 311
    Points
    29 311
    Billets dans le blog
    4

    Par défaut

    Mais pourquoi torture t-on encore les étudiants avec ces trucs ? !!
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    5 977
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : septembre 2006
    Messages : 5 977
    Points : 18 870
    Points
    18 870
    Billets dans le blog
    15

    Par défaut BCNF, 3NF and all that jazz...

    isades,

    Votre exemple est la reprise exacte (mais francisée) de celui qui a été donné par Chris Date dans An Introduction to Database Systems, 7th edition, servant à illustrer la différence importante entre la troisième forme normale (due à Ted Codd et datant de 1971) et la forme normale de Boyce-Codd (due encore à Ted Codd, mais avec la complicité de Raymond Boyce, et datant de 1974, peu avant le décès de celui-ci).

    Comme vous le montrez correctement, la relvar R viole la BCNF. Quant au respect de la 3NF, à mon avis les choses sont moins simples à montrer si la définition dont on se sert fait intervenir la notion de transitivité, laquelle peut s’avérer délicate à interpréter (je suppose que la définition dont vous disposez de la 3NF fait intervenir cette notion). Quoi qu’il en soit, foin des scrupules, Carlo Zaniolo nous a permis de nous débarrasser de cette fichue transitivité en fournissant une définition élégante et efficace de la 3NF :

    Soit R une relvar, 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 troisième forme normale (3NF) si et seulement si, pour chaque dépendance fonctionnelle X ➔ {A} qui doit être vérifiée par R, au moins une des conditions suivantes est satisfaite :

    1. A appartient à X (la dépendance fonctionnelle considérée est donc triviale).
    2. X est une surclé de R.
    3. A appartient à une clé candidate de R.

    Observez qu’en supprimant la condition 3, on obtient une version plus restrictive, qui est justement la définition de la BCNF, chapeau Carlo !

    Pour reprendre votre exemple :

    {numDepartement} ➔ {nomDepartement} mais NomDepartement appartient à la clé {nomDepartement, TypeVehicule}, donc la condition 3 est satisfaite ;
    {NomDepartement} ➔ {numDepartement} mais numDepartement appartient à la clé {numDepartement, TypeVehicule}, donc la condition 3 est satisfaite.

    Au bout du compte, la 3NF est respectée.

    En tout cas, il faut décomposer R pour que la BCNF soit elle aussi respectée, en effectuant les projections :

    R1 {numDepartement, nomDepartement}

    R2 {numDepartement, TypeVehicule, nb}

    Ou :

    R1 {numDepartement, nomDepartement}

    R2 {nomDepartement, TypeVehicule, nb}


    Citation Envoyé par isades
    Comment prend-on en compte dans cet exemple la présence de plusieurs clés candidates dans la 2FN et la 3FN ?
    Pour la 3NF, outre ce qui précède, à titre de complément, voyez ici, et pour la 2NF, ici.

    Quant à la BCNF, voyez ici.

    Vous constaterez que pour chaque définition correcte, on ne parle pas de « la » clé mais de chaque clé, ce qui devrait répondre à votre interrogation.


    Citation Envoyé par CinePhil
    Mais pourquoi torture t-on encore les étudiants avec ces trucs ? !!
    Philippe, comme tu y vas ! Dans le contexte de la modélisation, l’étude de la normalisation est salutaire...
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

    De grâce, pas de questions techniques par MP, ma boîte de réception explose !
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  4. #4
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 15 184
    Points : 29 311
    Points
    29 311
    Billets dans le blog
    4

    Par défaut

    Ravi de te revoir sur ce forum François !
    Je commençais à m'inquiéter.

    Toutes ces histoires de formes normales et de dépendances fonctionnelles sont sans doute très intéressantes dans un cadre théorique mais, personnellement, je n'arrive pas à accrocher au truc. Et comme je n'ai jamais ressenti le besoin d'approfondir le sujet pour ma pratique professionnelle, je laisse ça aux théoriciens.
    Mais ta maîtrise et ton apport en la matière sont précieux dans la rubrique pour tous ceux qui s'arrachent les cheveux avec ça.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2017
    Messages : 2
    Points : 2
    Points
    2

    Par défaut Merci à fsmrel pour ces explications très claires

    Merci à fsmrel pour ces explications très claires.

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

Discussions similaires

  1. [Normalisation] Quelle forme normale?
    Par gere34 dans le forum Schéma
    Réponses: 9
    Dernier message: 03/03/2016, 01h26
  2. [2.x] [Form] Type pour une relation ManyToMany avec attributs
    Par FadeToBlack dans le forum Symfony
    Réponses: 10
    Dernier message: 09/08/2014, 04h46
  3. [Normalisation] En quelle forme normale est R ?
    Par flower_info dans le forum Schéma
    Réponses: 1
    Dernier message: 25/03/2009, 16h56
  4. Quelles fonctions utiliser pour cette vue ?
    Par Fngonka dans le forum SQL
    Réponses: 8
    Dernier message: 23/09/2008, 15h25
  5. Quelle licence choisir pour cette application ?
    Par krusaf dans le forum Licences
    Réponses: 6
    Dernier message: 08/07/2004, 21h20

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