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

Merise Discussion :

Avis sur MCD base de données indicateurs économiques


Sujet :

Merise

  1. #1
    Membre du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut Avis sur MCD base de données indicateurs économiques
    Bonjour,
    je reviens demander votre avis sur la modélisation d'une base de données. j'ai mis en pièce jointe le fichier excel du tableau que je souhaite modéliser.
    En tout je possède 18 tableaux de ce type. C'est pourquoi je tiens à m'assurer que la modélisation est correct avant de répliquer la même chose sur les autres tableaux.
    j'ai réalisé le MCD avec DB-MAIN comme m'avait conseillé une fois fsmrel. Et j'ai effectué le MLD avec MySQL WORKBENCH avant de pouvoir récupérer le script SQl en vu de son utilisation sur PHPMyAdmin.Nom : MCD.png
Affichages : 5804
Taille : 26,8 Ko
    Nom : MLD Secxteur Secondaire.png
Affichages : 2187
Taille : 31,6 Ko

    Ce qui m'inquiète particulièrement sur cette modélisation, c'est la redondance des dates (attributs mois et annee).
    merci d'avance de votre contribution.

    Lamine
    Fichiers attachés Fichiers attaché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
    Bonsoir Lamine,


    Vos entités-types PRODUIT, EAU, et ELECTRICITE ont la même structure, même chose pour les entités-types QUANTITE : pourquoi ne pas mettre en œuvre une entité-type SECTEUR (ou tout autre nom) prenant les valeurs : « produits , « eaux », « électricité », et fondre en une seule entité-type ce qui peut l’être ?

    Exemple :





    Si un jour il y a un secteur de plus, la maintenance sera légère...
    (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 du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut
    Effectivement ça semble plus simple et même en terme de performance, cette solution semble meilleur.
    j'vais pensé à créer une entité "matiere" mais pas une entité "secteur". c'est pour cela que j'étais bloqué.
    le MLD est trés parlant:
    Nom : MLD.png
Affichages : 1983
Taille : 29,9 Ko
    voici quelques exemple tabulaires:
    1)la table unité: Nom : unite.png
Affichages : 1262
Taille : 2,4 Ko


    2) la table secteur: Nom : secteur.png
Affichages : 1273
Taille : 2,0 Ko

    3) la table quantite: Nom : quantite.png
Affichages : 1300
Taille : 3,2 Ko

    4) table Matiere: Nom : matiere.png
Affichages : 1452
Taille : 9,9 Ko

    encore une fois merci.
    bonne journée

  4. #4
    Membre du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut
    D'ailleurs je pense pouvoir adapter cette modélisation à la première qu'on avait effectuée au mois d'août dernier: http://www.developpez.net/forums/d15...-base-donnees/
    En effet, il y'a une redondance au niveau des dates et des valeurs. Dans quatre tables différentes (Matiere_cours, Monnaie_Cours, Taux_Interet_Nominal, Prix_a_la_Consommation), on est obligé de renseigner l'année, le mois et la valeur. Et si on mettait le tout dans une seule table Quantite?
    Mais difficulté est que seule la partie "cours des matières premières" dispose d'une unite. De ce fait, pour que ce modèle marche il faudrait que je supprime l'entité Unite.
    La conséquence est que dans ma base, une partie de mes données n'aura pas d'unité.
    auriez vous une piste que je pourrais exploiter?

    merci d'avance

  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 Normalisation 3NF
    Bonjour Lamine,


    Dans votre table QUANTITE, la cellule correspondant à la ligne 1 de l’attribut valeur vaut 114,9, mais c’est un résultat de calcul : 100 + 14,9 c'est-à-dire la somme des quantités de phosphate de calcium et d’attapulgite. Autrement dit, cette ligne 1 est une redondance et ne devrait pas exister.

    En fait, il apparaît qu’à un secteur correspond une et une seule unité : techniquement, on dit qu’il existe une dépendance fonctionnelle {idSecteur} -> {idUnite} concernant la table MATIERE, et comme {idSecteur} n’est pas clé candidate de cette table, la troisième forme normale est violée.

    Il faut donc normaliser, c'est-à-dire supprimer l’attribut idUnite de la table MATIERE et le faire figurer dans l’en-tête de la table SECTEUR. A cette occasion, je propose d’affiner les produits, en produits phosphates et produits arachidiers :





    D’où le MCD :






    Concernant la discussion du mois d'août dernier, on pourra effectivement étudier un scénario possible quand on aura abouti à une solution pour la discussion en cours et voir à l’adapter.

    En passant : vous ne votez plus ?
    (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 du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut 3FN
    Bonjour fsmrel,
    Sur le coup ça se complique un peu. J’espérais au fond de moi, n’avoir jamais à évoquer les formes nominales. Cette notion m’avait terrorisé en MASTER.
    Premier point:

    En fait, il apparaît qu’à un secteur correspond une et une seule unité : techniquement, on dit qu’il existe une dépendance fonctionnelle {idSecteur} -> {idUnite} concernant la table MATIERE
    Je confirme la dépendance fonctionnelle entre {idSecteur} et {idUnite} .
    comme {idSecteur} n’est pas clé candidate de cette table, la troisième forme normale est violée.
    Là, faut qu’on revoie ensemble,la chose. Voici un rappel des définitions de clé candidate et 3FN.
    Définition « clé candidate »: Dans le domaine des bases de données, une clé candidate est un ensemble des données permettant d'indexer chaque ligne d'une table donnée de manière différenciée.

    Définition « 3FN »: Relation respectant la seconde forme normale et respectant le principe suivant :
    Les attributs d'une relation sont divisés en deux groupes : le premier groupe est composé de la clé (un ou plusieurs attributs). Le deuxième groupe est composé des autres attributs (éventuellement vide). La troisième forme normale stipule que tout attribut du deuxième groupe ne peut pas dépendre que d'un sous-ensemble (strict) d'attribut(s) du deuxième groupe. En d'autres termes : « Un attribut non clé ne dépend pas d'un ou plusieurs attributs ne participant pas à la clé ».

    Revoici la table Matiere (idMatiere, idSecteur, libelleMatiere, idUnite). Ici la clé, qui constitue le premier groupe des attributs de la relation est {idMatiere} et les autres attributs composant le deuxième groupe sont {idSecteur, libelleMatiere, idUnite}. D’après la définition de 3FN, un élément du deuxième groupe peut bel et bien dépendre d’un autre élément de ce même groupe. Donc la dépendance fonctionnelle entre {idSecteur} et {idUnite} ne viole pas la troisième forme nominale.

    Deuxième Point:
    Dans votre table QUANTITE, la cellule correspondant à la ligne 1 de l’attribut valeur vaut 114,9, mais c’est un résultat de calcul : 100 + 14,9 c'est-à-dire la somme des quantités de phosphate de calcium et d’attapulgite. Autrement dit, cette ligne 1 est une redondance et ne devrait pas exister.
    Oui ! C’est une redondance mais c fait exprès. Car je le rappelle, la finalité de cette base de données est d’être mise en ligne. Lorsqu’un utilisateur choisira d’afficher les données d’une période allant d’un mois M1 de l’année A1 au mois M2 de l’année A2, il doit se retrouver avec un tableau de données similaire au fichier Excel, et , il doit y avoir un lien lui permettant de télécharger le tableau au format Excel !!!
    Mais il est certain qu’avec la fonction SUM() de SQL je peux retrouver la valeur, donc pourquoi pas supprimer cette redondance ? J’accepte.
    En résumé, la nouvelle modélisation est très bonne, mais je ne suis pas encore convaincu que la 3FN a été violée.
    PS: je suis un peu gêné concernant les votes car j'étais pas informé. j'ai honte mais comment voter?

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


    Citation Envoyé par laminekane
    J’espérais au fond de moi, n’avoir jamais à évoquer les formes nominales. Cette notion m’avait terrorisé en MASTER
    Pas « nominales », mais « normales », en souvenir de la normalisation des relations Est-Ouest du temps de Nixon (dit-on)...



    Citation Envoyé par laminekane
    Cette notion m’avait terrorisé en MASTER
    Le prof avait donc réussi à rendre la chose absconse ?



    Citation Envoyé par laminekane
    Définition « clé candidate » : Dans le domaine des bases de données, une clé candidate est un ensemble des données permettant d'indexer chaque ligne d'une table donnée de manière différenciée.
    Définition en partie vraie (il manque le principe fondamental d’irréductibilité des clés candidates), non rigoureuse et de toute façon, l’indexation est du niveau physique donc cette définition est à oublier.

    Voici la vraie définition (à laquelle je vous ai renvoyé dans mon message précédent) :


    Une clé candidate (ou plus simplement clé, quand il n’y a pas de confusion possible) est un sous-ensemble de colonnes K de l’en-tête d’une table R, respectant les deux contraintes suivantes :

    Unicité. Deux lignes distinctes 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é.



    Citation Envoyé par laminekane
    Définition « 3FN »: Relation respectant la seconde forme normale et respectant le principe suivant :

    Les attributs d'une relation sont divisés en deux groupes : le premier groupe est composé de la clé (un ou plusieurs attributs). Le deuxième groupe est composé des autres attributs (éventuellement vide).

    La troisième forme normale stipule que tout attribut du deuxième groupe ne peut pas dépendre que d'un sous-ensemble (strict) d'attribut(s) du deuxième groupe. En d'autres termes : « Un attribut non clé ne dépend pas d'un ou plusieurs attributs ne participant pas à la clé ».
    1re remarque : quand vous écrivez « la clé », je pose la question « de quelle clé s’agit-il quand il y en a plusieurs ? », comme par exemple ci-dessous :




    2e remarque : la définition à laquelle vous vous référez est affreuse et ambiguë (je comprends que vous ayez été terrorisé ). En effet, il y est écrit :

    « tout attribut du deuxième groupe ne peut pas dépendre que d'un sous-ensemble (strict) d'attribut(s) du deuxième groupe »

    Je passe sur l’emploi du terme « groupe » qui doit être remplacé par le terme « sous-ensemble », car l’en-tête H d’une relvar (variable relationnelle, informellement table en SQL) est un ensemble d’attributs (nom et type de chaque attribut), lesquels peuvent être éléments de sous-ensembles de H (opération de projection).


    Quoi qu’il en soit, prenons le cas de l’attribut idUnite : {idUnite} dépend de {idSecteur} qui appartient au 2e groupe, mais {idUnite} dépend aussi directement de {idMatiere} qui est clé candidate, et constitue ainsi le 1er groupe : la phrase en cause est donc à reformuler (je ne l’ai pas comprise, tellement elle est alambiquée), par exemple de cette façon (je ne devrais pas, mais je conserve quand même le terme « groupe ») :

    Tout attribut du 2e groupe doit dépendre de toute la clé et rien que la clé (c’est une reformulation de ce qu’a écrit William Kent il y a un peu plus de trente ans).


    Je cite : « Un attribut non clé ne dépend pas d'un ou plusieurs attributs ne participant pas à la clé »

    C’est plus conforme. Et comme, {idUnite} dépend de {idSecteur} qui n’appartient pas à (l’unique) clé {idMatiere}, la 3NF est donc violée.


    Vous écrivez : « D’après la définition de 3FN, un élément du deuxième groupe peut bel et bien dépendre d’un autre élément de ce même groupe. » : Non, en vertu de ce qui précède... Pour respecter la 3FN un élément du 2e groupe ne peut pas dépendre de quelque élément que ce soit de ce groupe, si ce n’est que de lui-même : {idUnite} -> {idUnite} (dépendance fonctionnelle triviale).



    Citation Envoyé par laminekane
    Mais il est certain qu’avec la fonction SUM() de SQL je peux retrouver la valeur, donc pourquoi pas supprimer cette redondance ? J’accepte.
    Effectivement, il est facile d’afficher les données avec la fonction SUM(). Voyons ça avec un script SQL :

    Création des tables

    
    USE temp ;
    
    
    CREATE TABLE UNITE 
    (
         idUnite                  SMALLINT         NOT NULL,
         libelleUnite             VARCHAR(16)      NOT NULL,
         CONSTRAINT UNITE_PK PRIMARY KEY (idUnite)
    ) ;
    
    CREATE TABLE SECTEUR 
    (
        idSecteur                SMALLINT         NOT NULL,
        libelleSecteur           VARCHAR(64)      NOT NULL,
        idUnite                  SMALLINT         NOT NULL,
         CONSTRAINT SECTEUR_PK PRIMARY KEY (idSecteur)
       , CONSTRAINT SECTEUR_UNITE_FK FOREIGN KEY (idUnite)
             REFERENCES UNITE (idUnite) 
    ) ;
     
    CREATE TABLE MATIERE 
    (
         idSecteur                SMALLINT         NOT NULL,
         idMatiere                SMALLINT         NOT NULL,
         libelleMatiere           VARCHAR(64)      NOT NULL,
         CONSTRAINT MATIERE_PK PRIMARY KEY (idMatiere)
       , CONSTRAINT MATIERE_SECTEUR_FK FOREIGN KEY (idSecteur)
             REFERENCES SECTEUR (idSecteur) 
    ) ;
    
    CREATE TABLE QUANTITE 
    (
         idMatiere                SMALLINT         NOT NULL,
         annee                    YEAR             NOT NULL,
         mois                     SMALLINT         NOT NULL,
         valeur                   DECIMAL(7,2)     NOT NULL,
         CONSTRAINT QUANTITE_PK PRIMARY KEY (idMatiere, annee, mois)
       , CONSTRAINT QUANTITE_MATIERE_FK FOREIGN KEY (idMatiere)
           REFERENCES MATIERE (idMatiere)
    ) ;
    
    

    Un début de jeu d’essai :

    
    
    INSERT INTO UNITE (idUnite, libelleUnite) VALUES
        (1, '1000 tonnes'), (2, 'millions de KWh'), (3, 'millions de m3')
    ;    
    
    INSERT INTO SECTEUR (idSecteur, libelleSecteur, idUnite) VALUES
        (1, 'produits phosphates', 1), (2, 'eau', 3), (3, 'électricité', 2), (4, 'produits arachidiers', 1)
    ;
    
    INSERT INTO MATIERE (idSecteur, idMatiere, libelleMatiere) VALUES
        (1, 1, 'phos. calcium'), (1, 2, 'attapulgite')
      , (4, 3, 'huile brute'), (4, 4, 'huile raffinée'), (4, 5, 'tourteaux')
      , (3, 6, 'basse tension'), (3, 7, 'moyenne tension'), (3, 8, 'haute tension')    
      , (2, 9, 'production'), (2, 10, 'production vendue')  
    ;
    
    -- Phosphates
    
    INSERT INTO QUANTITE (idMatiere, annee, mois, valeur) VALUES
        (1, 2006, 1, 119.0), (1, 2006, 2, 100.0), (1, 2006, 3, 0.0), (1, 2006, 4, 0.0)
      , (1, 2006, 5, 121.0), (1, 2006, 6, 50.0), (1, 2006, 7, 0.0), (1, 2006, 8, 0.0)
      , (1, 2006, 9, 0.0), (1, 2006, 10, 51.0), (1, 2006, 11, 66.0), (1, 2006, 12, 77.0)
    
      , (1, 2007, 1, 72.0), (1, 2007, 2, 60.0), (1, 2007, 3, 50.0), (1, 2007, 4, 96.0)
      , (1, 2007, 5, 70.3), (1, 2007, 6, 56.0), (1, 2007, 7, 73.0), (1, 2007, 8, 51.0)
      , (1, 2007, 9, 47.0), (1, 2007, 10, 44.0), (1, 2007, 11, 60.0), (1, 2007, 12, 38.9)
    
      , (2, 2006, 1, 13.5), (2, 2006, 2, 14.9), (2, 2006, 3, 11.3), (2, 2006, 4, 9.5)
      , (2, 2006, 5, 10.6), (2, 2006, 6, 14.2), (2, 2006, 7, 12.3), (2, 2006, 8, 16.7)
      , (2, 2006, 9, 10.5), (2, 2006, 10, 7.1), (2, 2006, 11, 10.6), (2, 2006, 12, 20.0)
      
      , (2, 2007, 1, 10.2), (2, 2007, 2, 10.3), (2, 2007, 3, 6.9), (2, 2007, 4, 9.3)
      , (2, 2007, 5, 10.4), (2, 2007, 6, 14.4), (2, 2007, 7, 12.5), (2, 2007, 8, 11.1)
      , (2, 2007, 9, 10.4), (2, 2007, 10, 13.2), (2, 2007, 11, 7.5), (2, 2007, 12, 17.5)
    ;
    
    -- Produits arachidiers
    
    INSERT INTO QUANTITE (idMatiere, annee, mois, valeur) VALUES
        (3, 2006, 1, 0.0), (3, 2006, 2, 1.2), (3, 2006, 3, 6.8), (3, 2006, 4, 5.0)
      , (3, 2006, 5, 6.0), (3, 2006, 6, 7.1), (3, 2006, 7, 6.4), (3, 2006, 8, 5.1)
      , (3, 2006, 9, 3.0), (3, 2006, 10, 7.5), (3, 2006, 11, 9.2), (3, 2006, 12, 6.1)
     
      , (3, 2007, 1, 4.2), (3, 2007, 2, 6.7), (3, 2007, 3, 7.4), (3, 2007, 4, 8.7)
      , (3, 2007, 5, 8.2), (3, 2007, 6, 7.7), (3, 2007, 7, 0.0), (3, 2007, 8, 2.1)
      , (3, 2007, 9, 0.0), (3, 2007, 10, 0.0), (3, 2007, 11, 0.0), (3, 2007, 12, 0.0)
      
      , (4, 2006, 1, 5.2), (4, 2006, 2, 6.0), (4, 2006, 3, 7.4), (4, 2006, 4, 9.3)
      , (4, 2006, 5, 8.3), (4, 2006, 6, 9.8), (4, 2006, 7, 6.7), (4, 2006, 8, 7.7)
      , (4, 2006, 9, 7.2), (4, 2006, 10, 8.2), (4, 2006, 11, 10.0), (4, 2006, 12, 8.9)
     
      , (4, 2007, 1, 5.4), (4, 2007, 2, 12.1), (4, 2007, 3, 9.2), (4, 2007, 4, 4.0)
      , (4, 2007, 5, 6.8), (4, 2007, 6, 3.5), (4, 2007, 7, 9.4), (4, 2007, 8, 8.9)
      , (4, 2007, 9, 7.6), (4, 2007, 10, 8.0), (4, 2007, 11, 8.2), (4, 2007, 12, 9.3)
      
      , (5, 2006, 1, 0.0), (5, 2006, 2, 1.3), (5, 2006, 3, 8.5), (5, 2006, 4, 5.8)
      , (5, 2006, 5, 5.6), (5, 2006, 6, 3.5), (5, 2006, 7, 11.2), (5, 2006, 8, 7.9)
      , (5, 2006, 9, 4.8), (5, 2006, 10, 8.6), (5, 2006, 11, 11.0), (5, 2006, 12, 8.0)
     
      , (5, 2007, 1, 5.4), (5, 2007, 2, 6.2), (5, 2007, 3, 8.6), (5, 2007, 4, 11.0)
      , (5, 2007, 5, 9.3), (5, 2007, 6, 9.9), (5, 2007, 7, 1.7), (5, 2007, 8, 1.4)
      , (5, 2007, 9, 0.8), (5, 2007, 10, 0.3), (5, 2007, 11, 0.0), (5, 2007, 12, 0.0)
    ;
    
    

    Une vue faisant office de table, unissant les totaux et les détails :


    
    CREATE VIEW TABLEAU AS 
    
    SELECT SECTEUR.idSecteur, libelleSecteur AS libelle, annee, mois, SUM(valeur) AS valeur, 1 as niveau
    FROM   QUANTITE JOIN MATIERE ON QUANTITE.idMatiere = MATIERE.idMatiere
                    JOIN SECTEUR ON MATIERE.idSecteur = SECTEUR.idSecteur 
    GROUP BY SECTEUR.idSecteur, libelleSecteur, annee, mois
    
    UNION
    
    SELECT idSecteur, libelleMatiere, annee, mois, valeur, 2 as niveau
    FROM   QUANTITE JOIN MATIERE ON QUANTITE.idMatiere = MATIERE.idMatiere
    ;
    
    

    Utilisation de la vue :

    
    SELECT libelle, annee, mois, valeur
    FROM   TABLEAU
    ORDER BY idSecteur, annee, mois, niveau
    ;
    
    

    =>

    
    libelle                 annee    mois    valeur
    --------------------    -----    ----    ------
    produits phosphates     2006     1       132.50         -- total des 2 lignes qui suivent
    phos. calcium           2006     1       119.00
    attapulgite             2006     1        13.50
    produits phosphates     2006     2       114.90         -- total des 2 lignes qui suivent, etc.
    phos. calcium           2006     2       100.00
    attapulgite             2006     2        14.90
    produits phosphates     2006     3        11.30
    phos. calcium           2006     3         0.00
    attapulgite             2006     3        11.30
    produits phosphates     2006     4         9.50
    phos. calcium           2006     4         0.00
    attapulgite             2006     4         9.50
    produits phosphates     2006     5       131.60
    phos. calcium           2006     5       121.00
    attapulgite             2006     5        10.60
    produits phosphates     2006     6        64.20
    phos. calcium           2006     6        50.00
    attapulgite             2006     6        14.20
    produits phosphates     2006     7        12.30
    phos. calcium           2006     7         0.00
    attapulgite             2006     7        12.30
    produits phosphates     2006     8        16.70
    phos. calcium           2006     8         0.00
    attapulgite             2006     8        16.70
    produits phosphates     2006     9        10.50
    phos. calcium           2006     9         0.00
    attapulgite             2006     9        10.50
    produits phosphates     2006     10       58.10
    phos. calcium           2006     10       51.00
    attapulgite             2006     10        7.10
    produits phosphates     2006     11       76.60
    phos. calcium           2006     11       66.00
    attapulgite             2006     11       10.60
    produits phosphates     2006     12       97.00
    phos. calcium           2006     12       77.00
    attapulgite             2006     12       20.00
    produits phosphates     2007     1        82.20
    phos. calcium           2007     1        72.00
    attapulgite             2007     1        10.20
    produits phosphates     2007     2        70.30
    phos. calcium           2007     2        60.00
    attapulgite             2007     2        10.30
    produits phosphates     2007     3        56.90
    phos. calcium           2007     3        50.00
    attapulgite             2007     3         6.90
    produits phosphates     2007     4       105.30
    phos. calcium           2007     4        96.00
    attapulgite             2007     4         9.30
    produits phosphates     2007     5        80.70
    phos. calcium           2007     5        70.30
    attapulgite             2007     5        10.40
    produits phosphates     2007     6        70.40
    phos. calcium           2007     6        56.00
    attapulgite             2007     6        14.40
    produits phosphates     2007     7        85.50
    phos. calcium           2007     7        73.00
    attapulgite             2007     7        12.50
    produits phosphates     2007     8        62.10
    phos. calcium           2007     8        51.00
    attapulgite             2007     8        11.10
    produits phosphates     2007     9        57.40
    phos. calcium           2007     9        47.00
    attapulgite             2007     9        10.40
    produits phosphates     2007     10       57.20
    phos. calcium           2007     10       44.00
    attapulgite             2007     10       13.20
    produits phosphates     2007     11       67.50
    phos. calcium           2007     11       60.00
    attapulgite             2007     11        7.50
    produits phosphates     2007     12       56.40
    phos. calcium           2007     12       38.90
    attapulgite             2007     12       17.50
    produits arachidiers    2006     1         5.20
    huile brute             2006     1         0.00
    huile raffinée          2006     1         5.20
    tourteaux               2006     1         0.00
    produits arachidiers    2006     2         8.50
    huile brute             2006     2         1.20
    huile raffinée          2006     2         6.00
    tourteaux               2006     2         1.30
    produits arachidiers    2006     3        22.70
    huile brute             2006     3         6.80
    huile raffinée          2006     3         7.40
    tourteaux               2006     3         8.50
    produits arachidiers    2006     4        20.10
    huile brute             2006     4         5.00
    huile raffinée          2006     4         9.30
    tourteaux               2006     4         5.80
    produits arachidiers    2006     5        19.90
    huile brute             2006     5         6.00
    huile raffinée          2006     5         8.30
    tourteaux               2006     5         5.60
    produits arachidiers    2006     6        20.40
    huile brute             2006     6         7.10
    huile raffinée          2006     6         9.80
    tourteaux               2006     6         3.50
    produits arachidiers    2006     7        24.30
    huile brute             2006     7         6.40
    huile raffinée          2006     7         6.70
    tourteaux               2006     7        11.20
    produits arachidiers    2006     8        20.70
    huile brute             2006     8         5.10
    huile raffinée          2006     8         7.70
    tourteaux               2006     8         7.90
    produits arachidiers    2006     9        15.00
    huile brute             2006     9         3.00
    huile raffinée          2006     9         7.20
    tourteaux               2006     9         4.80
    produits arachidiers    2006     10       24.30
    huile brute             2006     10        7.50
    huile raffinée          2006     10        8.20
    tourteaux               2006     10        8.60
    produits arachidiers    2006     11       30.20
    huile brute             2006     11        9.20
    huile raffinée          2006     11       10.00
    tourteaux               2006     11       11.00
    produits arachidiers    2006     12       23.00
    huile brute             2006     12        6.10
    huile raffinée          2006     12        8.90
    tourteaux               2006     12        8.00
    produits arachidiers    2007     1        15.00
    huile brute             2007     1         4.20
    huile raffinée          2007     1         5.40
    tourteaux               2007     1         5.40
    produits arachidiers    2007     2        25.00
    huile brute             2007     2         6.70
    huile raffinée          2007     2        12.10
    tourteaux               2007     2         6.20
    produits arachidiers    2007     3        25.20
    huile brute             2007     3         7.40
    huile raffinée          2007     3         9.20
    tourteaux               2007     3         8.60
    produits arachidiers    2007     4        23.70
    huile brute             2007     4         8.70
    huile raffinée          2007     4         4.00
    tourteaux               2007     4        11.00
    produits arachidiers    2007     5        24.30
    huile brute             2007     5         8.20
    huile raffinée          2007     5         6.80
    tourteaux               2007     5         9.30
    produits arachidiers    2007     6        21.10
    huile brute             2007     6         7.70
    huile raffinée          2007     6         3.50
    tourteaux               2007     6         9.90
    produits arachidiers    2007     7        11.10
    huile brute             2007     7         0.00
    huile raffinée          2007     7         9.40
    tourteaux               2007     7         1.70
    produits arachidiers    2007     8        12.40
    huile brute             2007     8         2.10
    huile raffinée          2007     8         8.90
    tourteaux               2007     8         1.40
    produits arachidiers    2007     9         8.40
    huile brute             2007     9         0.00
    huile raffinée          2007     9         7.60
    tourteaux               2007     9         0.80
    produits arachidiers    2007     10        8.30
    huile brute             2007     10        0.00
    huile raffinée          2007     10        8.00
    tourteaux               2007     10        0.30
    produits arachidiers    2007     11        8.20
    huile brute             2007     11        0.00
    huile raffinée          2007     11        8.20
    tourteaux               2007     11        0.00
    produits arachidiers    2007     12        9.30
    huile brute             2007     12        0.00
    huile raffinée          2007     12        9.30
    tourteaux               2007     12        0.00
    
    

    Je ne suis pas spécialiste de MySQL, mais pour une présentation à la façon EXCEL, je suggère que vous essayiez avec la fonction GROUP_CONCAT (à défaut, poser la question dans le forum MySQL), mais peut-être avez-vous déjà une requête permettant de faire pivoter les lignes en colonnes lors de l’affichage, et qui soit adaptable à la vue ?



    Citation Envoyé par laminekane
    En résumé, la nouvelle modélisation est très bonne, mais je ne suis pas encore convaincu que la 3FN a été violée.
    Êtes-vous maintenant convaincu ? {idSecteur} -> {idUnite}, or {idSecteur} n’est pas clé candidate, donc {idUnite} dépend d’un sous-ensemble non clé, donc la 3NF est violée (William Kent en tombera d’accord... )



    Citation Envoyé par laminekane
    je suis un peu gêné concernant les votes car j'étais pas informé. j'ai honte mais comment voter?
    Il suffit de cliquer sur le pouce vert qui figure en bas à droite des messages (comme l’a fait celui qui a déjà voté pour le message #5...) Vous pouvez par ailleurs cliquer sur le pseudo (fsmrel) en haut et à gauche des messages, puis cliquer sur le « profil pro ».

    Bon courage !
    (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
    Membre du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut
    Êtes-vous maintenant convaincu ? {idSecteur} -> {idUnite}, or {idSecteur} n’est pas clé candidate, donc {idUnite} dépend d’un sous-ensemble non clé, donc la 3NF est violée (William Kent en tombera d’accord... )
    Comment ne pas être d'accord?! C'est clair net et précis. Pour une fois, je peux dire que j'ai compris la troisième forme normale ("nominal" c'est un lapsus ).
    je dispose de 15 autres tableaux identiques à celle ci.
    je vais prendre le temps de réfléchir sur la modélisation du mois d'août. certainement, ce lundi, je posterai une proposition.
    j'ai aimé le ton pédagogique que tu as employé !!!
    thank you

  9. #9
    Membre du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut mes respects
    Je viens de visiter votre profil pro, et, franchement je suis resté sans mots en voyant que vous êtes ingénieur à la retraite.
    Vous pouviez simplement profiter de votre retraite, mais non, vous avez choisi le bénévolat pour aider les gens. Respect!

  10. #10
    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
    Merci Lamine. Vous savez, je ne suis pas le seul retraité dans ce cas Et puis je ne vais quand même pas resté scotché devant une télé crétinisante... En tout cas, ma participation à la vie de developpez.com ne m’empêche pas de faire de la musique, de chanter...

    (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.

  11. #11
    Membre du Club
    Homme Profil pro
    statisticien
    Inscrit en
    Juin 2015
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Sénégal

    Informations professionnelles :
    Activité : statisticien

    Informations forums :
    Inscription : Juin 2015
    Messages : 48
    Points : 67
    Points
    67
    Par défaut
    votre joie de vivre se ressent, sur vos messages.
    je ne peux que vous souhaiter, une excellente et longue retraite. profites en bien.
    Hé mais pourquoi pas un petit séjour à Dakar?!
    vous êtes le bienvenu. en plus il fait beau!

  12. #12
    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 Lamine,



    Mais je n’ai plus le droit de prendre l’avion...
    (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. Comment avoir un avis sur la base de données que je réalise
    Par Dermochelys dans le forum Modélisation
    Réponses: 12
    Dernier message: 19/06/2011, 19h09
  2. Besoin de vos avis éclairé sur ma base de données
    Par scaleo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/12/2005, 18h36
  3. Conseil sur choix base de donnée "individuelle"
    Par Rica dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 12/05/2005, 13h16
  4. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02
  5. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27

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