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 :

[FN] Formes Normales et redondance


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 17
    Points : 8
    Points
    8
    Par défaut [FN] Formes Normales et redondance
    Bonjour,

    Je m'aide du document "Conception d'une Base de Données" de Cyril Gruau pour faire le schéma de la mienne (cf. pièce jointe).

    Je pense complètement me gourrer, mais comme je suis un peu dans le brouillard, je m'étais dit que j'allais pousser l'erreur jusqu'au bout et éspèrer que la solution me sauterait au visage... ben elle n'a pas encore sauté assez haut pour que je la voit... .

    Dans la collection d'enregistrements de concerts, on retrouvera de nombreuses interprétations d'un même titre qui aura du coup des valeurs (durée, poids en MB et position cad "Disque##_Piste##") différentes à chaque fois. Comment modéliser les tables qui recevront ces données pour éviter les redondances ?

    Merci par avance et bonne fin de semaine à tous,

    Leauh
    Images attachées Images attachées  

  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
    Bonsoir Leauh,

    Je suppose que les redondances dont vous parlez concernent l’association PRENDRE. En l’occurrence, il faut déjà montrer que la normalisation est respectée, puisque vous intitulez votre billet : "Problème avec la forme normale". Si elle est respectée, voir alors ce que l’on peut gratter autrement.

    Lors de la dérivation du MCD en MLD, en utilisant un outil comme PowerAMC, on obtient une table que l’on peut continuer à appeler PRENDRE. Cette table a la structure suivante (à l’ordre des attributs près, ce qui n’a aucune importance) :
    PRENDRE (DisqueId, PisteId, TitreId, DuréeId, PoidsId)
    L’outil va générer comme clé primaire le n-uplet {DisqueId, PisteId, TitreId, DuréeId, PoidsId}. En effet, l’identifiant de l’association est par définition la concaténation des identifiants des entités-types participant à cette association.

    Avant d’aller plus loin et pour aider à la réflexion, je prends l’exemple des disques enregistrés par Glenn Gould. J’ai devant moi deux disques différents, sur lesquels on trouve les Variations Goldberg (BWV 988) : l’enregistrement historique de 1955 pour le premier et l’enregistrement de 1981 pour le deuxième (lequel contient aussi la fugue en mi majeur (BWV 878) et la fugue en fa# mineur (BWV 883)).

    La table PRENDRE a la valeur suivante (je remplace à l’occasion des valeurs d’identifiants par des chaînes de caractères, pour que cela soit plus parlant) :

    PRENDRE

    Figure 1 - Table PRENDRE

    Cette table est à vue d’œil fortement redondante. Mais alors, violerait-elle la forme normale de Boyce-Codd ? Que dis-je, la Cinquième ? (qui n’est pas de Beethoven, malgré le contexte musical...)

    Avant de vérifier cela, revenons à la clé primaire. Comme supposé plus haut, est-elle vraiment la suivante ?
    {DisqueId, PisteId, TitreId, DuréeId, PoidsId}
    La réponse est négative. Un identifiant merisien est toujours une surclé au sens de la théorie relationnelle, mais pas toujours une clé primaire, quoi qu’en disent d’éminents auteurs (cf. [1]). En effet, une clé primaire est un cas particulier du cas plus général de ce que l’on appelle une clé candidate, laquelle est à son tour un cas particulier de ce que l’on appelle une surclé, laquelle répond à la définition à suivre. Pardonnez-moi pour les précisions et définitions, mais j’aime bien que les concepts relationnels soient bien compris.

    Concept de surclé
    Soit K un sous-ensemble (non strict) des attributs composant l’entête d’une table S ; K est une surclé de S si et seulement si deux tuples (lignes) distincts de S ne peuvent avoir la même valeur.
    Cette contrainte porte le nom de Contrainte d’unicité.

    Dans votre cas, K = {DisqueId, PisteId, TitreId, DuréeId, PoidsId} est une surclé de la table PRENDRE.

    Concept de clé candidate

    La surclé K est une clé candidate si elle obéit non seulement à la contrainte d’unicité, mais aussi à une contrainte dite d’irréductibilité, selon laquelle :
    Il n’existe pas de sous-ensemble K’ strictement inclus dans K obéissant lui aussi à la contrainte d’unicité.

    Intuitivement, K n’est pas ici clé candidate, dans la mesure où débarrassée par exemple de PoidsId, elle garantit la contrainte d’unicité, même chose si on en évacue TitreId et DuréeId.
    De fait, si K est réduite à
    {DisqueId, PisteId}
    alors seulement elle devient clé candidate.

    En faisant appel à votre seul bon sens, vous pouvez vérifier que pour le couple {DisqueId, PisteId}, on a un seul titre, une seule durée et un seul poids. Toute autre combinaison est vouée à l’échec : le couple {DisqueId, PisteId} est la seule clé candidate de la table PRENDRE.

    Vous pouvez aussi vérifier que cette table respecte la BCNF (cf. la définition donnée dans http://www.developpez.net/forums/sho...d.php?t=281221, #4)

    Autrement dit, par les voies "normales", on aura du mal à évacuer des redondances. Maintenant, votre table pose un problème de redondance que l’on rencontre dans les tables à caractère historique, dans lesquelles on retrouve le binôme infernal {DateDébut, DateFin} et qui trouve généralement sa solution par l’utilisation du type Intervalle. Ainsi, vous pouvez éliminer les redondances engendrées par les titres, en projetant la table PRENDRE selon deux tables, PRENDRE_A et PRENDRE_B, et dans le cas des titres utiliser une représentation intervallaire (clé primaire soulignée) :

    PRENDRE_A

    Figure 2 - Table PRENDRE_A : données du niveau intervalle

    Vous observerez que si le couple {DisqueId, PisteDébutId} a été retenu comme clé primaire : à son tour, le couple {DisqueId, PisteFinId} répond à la définition de la clé candidate et devra donc être déclaré comme tel pour le SGBD. En l’occurrence, il s’agit d’une clé candidate non retenue comme clé primaire et qui doit être considérée comme clé alternative. Cela dit, pour la théorie relationnelle, les concepts de clé primaire et clé alternative sont devenus caducs, ne reste que ceux de surclé et de clé candidate.

    Concernant les données de niveau piste, on ne peut guère envisager de solution alternative, sauf au cas où, par exemple, à une valeur de durée correspondrait une seule valeur de poids (dépendance fonctionnelle entraînant un viol de 3NF, ou règle de calcul).

    PRENDRE_B

    Figure 3 - Table PRENDRE_B : données du niveau piste

    A noter que si vous disposez du type Intervalle, la table PRENDE_A a l’allure suivante :

    PRENDRE_A

    Figure 4 - Table PRENDRE_A : utilisation du type intervalle


    Je ne vous apporte pas de solution miracle, j’en suis désolé. Au moins aurons-nous évoqué les intervalles...


    [1] A. Rochfeld et J. Morejon. La Méthode MERISE. Tome 3. Gamme opératoire. (Les Éditions d'organisation. 1989).
    (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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Bonjour fsmrel,

    Je vous remercie pour cette réponse longue et détaillée.
    Je dois dire que je découvre ici les concepts de surclé, de clé candidate, etc.

    Je me suis d'ailleurs aussi aidé de vos réponses faites à C. Tobini et Yannick car j'ai fait une recherche google sur ces concepts et que vos discussions sont sorties les premières .

    Je vais donc reprendre la réflexion et l'étude sur ce point et vous remercie d'avoir pris autant de temps pour m'epliquer cette méthode.

    A bientôt et bonne journée.

    Leauh

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Bonjour à tous,

    Je voudrais encore une fois remercier fsmrel pour la qualité de sa réponse.

    J'ai repris mon MCD et l'ai bien simplifié. Mon incertitude porte sur la table "Pistes".

    Je prends un exemple pour clarifier les choses.
    Soit le groupe "Medeski Martin and Wood". Leur Concert du 3 Décembre 2000 au Warhouse de Toronto a été enregistré par Jeff Kemp (Notons qu'il existe aussi un enregistrement de Blane Harvey).
    La copie de Jeff Kemp circule sous la forme de 3 CDs. Le premier CD compte 7 pistes, le second en compte 5 et le troisième disques en compte 5.
    Les pistes du disque 1 sont donc numérotées de 1 à 7. Celles du disque 2 sont numérotées de 1 à 5. Enfin, les pistes du disque 3 sont numérotées de 1 à 5.
    Chacune de ces pistes a une durée exprimée en minutes et un poids exprimé en MB.

    Il est donc tout à fait probable que deux identifiants distincts "Piste_ID" de l'entité "Pistes" soient liés à des attributs identiques.
    Il est possible que la piste n°2 du premier disque d'une Copie X ait les même poids et durée que la piste n°2 du premier disque d'une Copie Y.
    Ceci est-il un problème ?

    Par ailleurs, une Copie a [1..n] Disques et un Disque a [1..n] Pistes. Faire de "Numéro_Disque" et "Numéro_Piste" des attributs de la table "Pistes" revient-il à violer la Normalisation des attributs ? Il me semble que cela me simplifierait la vie.

    Enfin, placer un attribut "Commentaire" au sein de l'entité "Copies" et de l'entité "Pistes" est-il un viol de la Normalisation des attributs ? Dans la mesure où les commentaires sont différenciés et clairement rattachés, l'un à l'entité "Pistes" et l'autre à l'entité "Copies", il me semble que je reste dans les clous. Qu'en est-il ?

    Je vous souhaite une bonne fin de journée

    Leauh
    Images attachées Images attachées  

  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 Leauh,


    Il est possible que la piste n°2 du premier disque d'une Copie X ait les même poids et durée que la piste n°2 du premier disque d'une Copie Y.
    Ceci est-il un problème ?
    Si c’est le fruit du hasard, il n’y a aucun problème : il n’est pas anormal que deux personnes de même sexe, s’appelant Martin soient nées dans la même ville, le même jour, à la même heure, qu’il s’agisse de jumeaux ou non.
    Si ça n’est pas le fruit du hasard, donc qu’il existe une règle stipulant que les deux deuxièmes pistes de deux copies distinctes doivent avoir mêmes poids et durée, alors évidemment il y aurait un problème de redondance, donc de modélisation à résoudre.


    placer un attribut "Commentaire" au sein de l'entité "Copies" et de l'entité "Pistes" est-il un viol de la Normalisation des attributs ? Dans la mesure où les commentaires sont différenciés et clairement rattachés, l'un à l'entité "Pistes" et l'autre à l'entité "Copies", il me semble que je reste dans les clous. Qu'en est-il ?
    Vous êtes dans les clous. Des commentaires donnent des précisions sur les copies, les autres sur les pistes, quel mal pourrait-il y avoir à cela ? Du point de vue de la théorie relationnelle, vous êtes blanc comme neige.


    Faire de "Numéro_Disque" et "Numéro_Piste" des attributs de la table "Pistes" revient-il à violer la Normalisation des attributs ? Il me semble que cela me simplifierait la vie.
    Je ne sais pas ce que vous entendez par normalisation des attributs. Parlez-vous de la normalisation qui concerne les tables, donc les formes normales, de la première à la cinquième, en passant par la BCNF ? la vérification de la normalisation concerne en l’occurrence chaque table, prise séparément, indépendamment des autres. Par exemple pour la deuxième forme normale :
    Une table S est en 2NF si et seulement si chaque attribut A de S n’appartenant à aucune une clé candidate K de S est tel que la DF : K -> {A} soit irréductible.
    (cf. http://www.developpez.net/forums/sho...=281221&page=2, message #26).

    En tout état de cause, si le couple {Numéro_Disque, Numéro_Piste} est une clé candidate pour la table Pistes, et seulement si les valeurs prises par ces attributs sont invariantes, alors ceux-ci sont suffisants et des attributs "artificiels" du genre DisqueId et PisteId peuvent partir à la poubelle.

    Exemple :

    Pistes


    Dans cette table, {Numéro_Disque, Numéro_Piste} est une clé candidate dans la mesure où pour chaque valeur du couple, on a une seule valeur de Durée, une seule valeur de Poids, une seule valeur de Commentaire et une seule valeur de CopieId. Il n’est pas interdit que des pistes distinctes aient même durée ou poids ou commentaire.

    En tout état de cause, quand vous évoquez l’attribut Numéro_Disque, je suppose que le disque impliqué a des attributs propres. Quels sont-ils ? Un seul attribut (artificiel qui plus est), ça fait un peu léger.

    Par ailleurs, autant je conçois qu’à un album on associe plusieurs pistes, autant j’ai du mal à comprendre qu’une piste soit sémantiquement associée à plusieurs albums.

    Pour une meilleure compréhension, il serait opportun que vous développiez jusqu’au bout l’exemple que vous avez retenu.
    (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.

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

Discussions similaires

  1. [NF] redondances dans les entités et 1ere forme normale
    Par sarah_insat dans le forum Schéma
    Réponses: 5
    Dernier message: 12/05/2008, 13h04
  2. redondances et formes normales
    Par new_wave dans le forum Schéma
    Réponses: 1
    Dernier message: 07/04/2008, 23h28
  3. Réponses: 4
    Dernier message: 11/06/2007, 17h49
  4. 1ere ,2eme ...forme normal
    Par Melvine dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 24/05/2005, 23h05
  5. explication de définition-formes normales
    Par new_wave dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/01/2005, 13h40

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