2010-12-06 5 views

Répondre

4

S'il suffit de connaître le nombre de fois qu'un article vous a été affiché pourrait utiliser quelque chose comme ceci:

daily_article_views(
    ,article_id 
    ,view_date 
    ,view_count 
    ,primary key(article_id, view_date) 
    ,foreign key(article_id) references articles 
); 

Pour chaque vue de l'article, vous auriez recherche une ligne dans la table à l'aide de la date et l'identifiant de l'article en cours de visualisation. Si une ligne existe, vous incrémentez le compteur. Si aucune ligne n'existe, vous l'insérez avec une valeur de 1 pour view_count (et une date tronquée). Vous pouvez ensuite regrouper les données de cette table en utilisant SUM (view_count) pour les chiffres hebdomadaires, mensuels ou annuels comme nécessaire. Toutefois, si vous avez besoin de stocker des informations sur chaque vue individuelle, vous pouvez utiliser une structure de table similaire à celle-ci.

article_views(
    ,view_id 
    ,article_id 
    ,view_date 
    ,additional_data_about_each_view 
    ,primary key(view_id) 
    ,foreign key(article_id) references articles 
); 

Le additional_data_about_each_view serait des colonnes représentant certains ID utilisateur, peut-être l'adresse IP ou tout ce que vous devez stocker. Notez que dans cette conception, vous allez stocker l'heure de la vue de l'article, y compris l'heure (heure, minutes, secondes). Cela vous permettrait d'analyser les données au cours d'une journée, exactement lorsque les articles sont consultés. L'inconvénient de la dernière conception est qu'elle génèrera potentiellement beaucoup de données, ce qui peut rendre les requêtes plus lentes. Bien sûr, rien ne vous empêche d'implémenter les deux alternatives :)

1

Si vous allez certainement jamais être intéressé par une information de temps jour, vous pouvez ensuite utiliser une table avec 3 colonnes

article_id 
date 
view_count 

Vous voudrez peut-être pas nécessairement à augmenter la colonne view_count pour chaque coup que. Vous pouvez mettre en cache certaines informations dans votre application et les mettre à jour par lots.

Questions connexes