Partage
  • Partager sur Facebook
  • Partager sur Twitter

regrouper observations dans une base de données

SVP

    8 octobre 2021 à 20:02:16

    BONJOUR! 

    Je travaille sur une base de données d'environ 10000 observations et 5 variables. 

    L'une des variables est l'année. 

    Au lieu d'avoir quelque chose comme 

    Année : 2012 Identifiant du produit : A29867 Nombre de ventes : 2

    Année 2012 Identifiant du produit : B776556 Nombre de ventes : 6

    J'aimerais faire en sorte de regrouper les années ensemble , et calculer le nombre d'identifiant de produit (variable caractère). 

    Chaque identifiant est différent mais il correspond a une vente. Ensuite il faudra que je produise un graphique qui montre le nombre de ventes par années.

    Je ne sais pas si ma demande est claire. En tout cas si quelqu'un arrive à me comprendre ben je veux bien un coup de main! Merci milles fois

    -
    Edité par Coline-Piera 8 octobre 2021 à 20:20:26

    • Partager sur Facebook
    • Partager sur Twitter
      8 octobre 2021 à 22:01:48

      Identifier un produit de ce type n'est pas normal. Mais, tu dois avoir une raison. Si tu peux la donner je te prie.

      J'ai essayé de comprendre pourquoi tes identifiant sont différents.

      J'ai conceptualisé très rapidement une mini BDD.

      J'imagine qu'on a des PS5 comme produits et qu'on veut différencier les modèles par pays.

      Ça donne les tables suivantes :

      CONSOLE :
      id_console PK,
      nom_console
      
      --
      
      PAYS :
      id_pays PK,
      nom_pays
      
      --
      
      1 console provient d'1 seul pays
      1 pays fournit plusieurs consoles.
      
      --
      
      mise à jour de la table CONSOLE
      CONSOLE :
      id_console PK,
      nom_console
      #pays FK PAYS(id_pays)
      numero_de_serie_console

      Ensuite, on peut créer une table VENTE :

      logiquement, on vend des consoles, donc, pas de lien entre VENTE et PAYS.

      1 console concerne 1 seule vente.
      1 vente concerne possiblement plusieurs consoles.
      
      VENTE :
      id_vente
      
      --
      
      CONSOLE :
      id_console
      #vente FK VENTE(id_vente)

      Comme chaque vente est unique, c'est dans cette table que tu mets les colonnes de l'année. Il ne faut pas de colonne quantité car c'est une valeur calculée.

      Je t'explique en remplissant la BDD :

      PAYS:
      id_pays
      
      --
      
      VENTE:
      id_vente
      année_vente
      
      --
      
      CONSOLE:
      id_console
      #pays FK PAYS(id_pays)
      #vente FK VENTE(id_vente
      
      --
      
      Tu vends 2 consoles sur 1 seule vente (code : V1), une console JAP (code : P1)
      et une autre US (code : P2) :
      
      VENTE
      id_vente | année_vente
      V1 | 2021
      
      CONSOLE
      id_console | #pays | #vente
      1 | P1 | V1 -- vente (V1) de la console japonaise
      2 | P2 | V1 -- vente (V1) de la console américaine
      
      Tu fais un SUM de V1 et tu obtiens 2 qui est la quantité de consoles vendues.

      L'exemple des consoles est arbitraire, mais, tu peux facilement l'adapter avec tes produits.

      Le MCD :

      PAYS === 1,n === 1,1 === CONSOLE ===
      === 1,1 === 1,n === VENTE


      La critique de ma BDD est qu'on contraint à vendre une console insérée à cause de la FK #vente. Soit, tu indiques en amont à tous les utilisateurs de la BDD que la FK #vente vaut NULL tant que la console n'est pas vendue.

      Soit, et c'est ma préférence car je suis anti NULL, tu crées une table de relation entre CONSOLE et VENTE, tu retireras, dans ce cas, la FK vente de la table CONSOLE que tu mettras dans la table de relation en plus avec la FK de la console. L'année peut rester dans la table VENTE.

      Selon moi, il est préférable de ne pas avoir de colonne NULLABLE. Pourquoi ?

      Dans le cas où par défaut, la colonne #vente dans la table CONSOLE est nullable, on doit créer autant de lignes que de consoles.

      Mais, en créant une table de relation entre CONSOLE et VENTE, on met le numéro de série dans la relation. On peut faire pareil avec une table de relation entre CONSOLE et PAYS.

      Ainsi, CONSOLE ne contiendra qu'une seule ligne pour la PS5. La relation entre CONSOLE et PAYS aura la clé étrangère de la PS5 et la clé étrangère de chacun des pays. Si tu as 3 PS5 (EUR, US, JAP), tu auras 3 lignes dans la relation.

      Créer des tables de relations alourdit la base de données, mais, améliore la lecture des jointures qui, si elles sont logiquement assemblées, facilitent les requêtes.

      -
      Edité par CristianoRolando 9 octobre 2021 à 2:04:49

      • Partager sur Facebook
      • Partager sur Twitter

      regrouper observations dans une base de données

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown