计算每天,上周和上个月的访客点击量

时间:2010-12-06 13:26:33

标签: database database-design relational-database

我创建了一个包含文章的网站,我想计算每篇文章的观点,以显示最受欢迎的文章:今天,本周和本月。

您将如何为此做数据库架构?

2 个答案:

答案 0 :(得分:4)

如果足以知道文章显示的次数,您可以使用以下内容:

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

对于每篇文章视图,您将使用当前日期和当前正在查看的文章的ID查找表格中的行。如果存在行,则递增计数器。如果不存在任何行,则为view_count(以及截断日期)插入值为1的行。 然后,您可以使用SUM(view_count)将此表中的数据汇总为每周,每月或每年的数据。

但是,如果您需要存储有关每个视图的信息,可以使用类似于以下内容的表结构。

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

additional_data_about_each_view将是表示某些用户ID的列,可能是IP地址或您需要存储的任何内容。请注意,在此设计中,您将存储文章视图的时间,包括时间(小时,分钟,秒)。这样您就可以在一天中分析数据,确切地说是查看文章的时间。

最后一个设计的缺点是它可能会生成大量数据,这可能会使查询变慢。当然,没有什么能阻止你实现两种选择:)

答案 1 :(得分:1)

如果您绝对不会对时间信息感兴趣,那么您可以使用包含3列的表格

article_id
date
view_count

您可能不一定希望为每次点击增加view_count列。您可以在应用程序中缓存一些信息并批量更新。