[英]Count visitor hits per day, last week and last month
我创建了一个包含文章的网站,我想计算每篇文章的观点,以显示最受欢迎的文章:今天,本周和本月。
你会如何为此做数据库架构?
如果足以知道文章显示的次数,您可以使用以下内容:
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地址或您需要存储的任何内容的列。 请注意,在此设计中,您将存储文章视图的时间,包括时间(小时,分钟,秒)。 这样您就可以分析一天中的数据,确切地说是查看文章的时间。
最后一个设计的缺点是它可能会生成大量数据,这可能会使查询变慢。 当然,没有什么能阻止你实现两种选择:)
如果您绝对不会对时间信息感兴趣,那么您可以使用包含3列的表格
article_id
date
view_count
您可能不一定希望为每次命中增加view_count
列。 您可以在应用程序中缓存一些信息并批量更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.