Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dans une nouvelle table ou dans la table elle-même

Sujet résolu
    15 février 2012 à 13:53:28

    Bonjour,

    Premierement, je tiens à m'excuser si le titre n'est pas assez explicite.
    Au lieu de vous expliquer mon problème, je vais vous donner un exemple concret.

    Imaginez que nous avons un site web qui héberge des vidéos. Le webmaster aimerait bien savoir combien de fois une vidéo a été vue, ainsi que le profil d'une personne.

    Doit-il mettre un champ "nbreVue" dans la table "t_video" et la table "t_profil" ou faire une nouvelle table "t_vue" et utilier des foreign key dans "t_video" et la table "t_profil"?

    En code ça donne ça ...

    /* 
      Premiere façon de faire 
      D'incrémenter directement dans la table en elle même le champ vue
    */
    
    CREATE TABLE t_video (
    
      id              INT(11)       NOT NULL AUTO_INCREMENT,
      nbreVue         INT(11)       NOT NULL,
      
      /* ... */
      
      PRIMARY KEY (id)
    
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE t_profil (
    
      id              INT(11)       NOT NULL AUTO_INCREMENT,
      nbreVue         INT(11)       NOT NULL,
      
      /* ... */
      
      PRIMARY KEY (id)
    
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    
    
    /* 
      Deuxieme façon de faire 
      D'inccrémenter le champ associé avec la fk qui se trouve dans t_vue
    */
    
    CREATE TABLE t_video (
    
      id              INT(11)       NOT NULL AUTO_INCREMENT,
      fk_vue          INT(11)       NOT NULL,
      
      /* ... */
      
      PRIMARY KEY (id),
      FOREIGN KEY (fk_vue) REFERENCES t_vue (id),
    
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    
    
    CREATE TABLE t_profil (
    
      id              INT(11)       NOT NULL AUTO_INCREMENT,
      fk_vue          INT(11)       NOT NULL,
      
      /* ... */
      
      PRIMARY KEY (id),
      FOREIGN KEY (fk_vue) REFERENCES t_vue (id),
    
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    
    
    CREATE TABLE t_vue (
    
      id              INT(11)       NOT NULL AUTO_INCREMENT,
      nbreVue         INT(11)       NOT NULL,
      
      /* ... */
      
      PRIMARY KEY (id)
    
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    


    Voila je sais pas si vous avez compris ^^
    Merci d'avance pour vos réponses.
    • Partager sur Facebook
    • Partager sur Twitter
      15 février 2012 à 14:48:07

      Tout dépend de ce qui t'intéresse. Si c'est juste un comptage, tu peux avoir un champ incrémenté chaque fois. Si tu veux savoir en plus qui a vu quoi (et éventuellement quand), tu dois avoir une table intermédiaire qui lie l'individu à la vidéo vue. Aggréger (compter), c'est perdre de l'info; maintenant cela ne sert à rien de stocker de l'information que l'on ne regarde pas.
      • Partager sur Facebook
      • Partager sur Twitter

      Dans une nouvelle table ou dans la table elle-même

      × 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