我创建了一个包含文章的网站,我想计算每一篇文章的浏览量,以显示最受欢迎的文章:今天、本周和本月。
你将如何做的数据库架构?

最佳答案

如果知道一篇文章显示的次数就足够了,您可以使用这样的方法:

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

对于每个项目视图,您将使用当前日期和当前正在查看的项目的ID在表中查找一行。如果存在行,则递增计数器。如果不存在行,则将其插入VIEWSCOUNT(和截断日期)的值为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
);

关于每个视图的额外数据应该是表示某个用户id的列,可能是ip地址或任何您需要存储的内容。注意,在此设计中,您将存储项目视图的时间,包括时间(小时、分钟、秒)。这将使您能够分析一天中的数据,准确地看文章的时间。
最后一个设计的缺点是它可能会生成大量数据,这可能会使查询速度变慢。当然,没有什么能阻止您实现这两种选择:)

关于database - 计算每天,上周和上个月的访问者点击量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4366830/

10-09 09:16