【问题标题】:Database structure that can effectively gauge trends and popularity?可以有效衡量趋势和流行度的数据库结构?
【发布时间】:2013-06-05 21:31:14
【问题描述】:

假设我有一个包含各种小部件的网站。这些小部件受用户“喜欢”的影响。那么,我如何能够使用“喜欢”作为衡量标准来衡量任何给定小部件在特定时间跨度内的受欢迎程度?我可以组装能够识别今天或本周、本月(等等)的热门小部件的脚本。

我之前想只统计总点赞数,但这无法告诉我它是否受欢迎或不知道如何与时间无关。

【问题讨论】:

  • 这个问题相当广泛。了解what you have tried 或您目前对如何实施它的想法会很有帮助。
  • 刚刚编辑,抱歉。它很广泛。希望缩小范围。
  • +1 为新形式的问题 :)

标签: php mysql data-structures data-modeling


【解决方案1】:
 CREATE TABLE WidgetLikes (
     WidgetID INTEGER NOT NULL REFERENCES Widgets(WidgetID), 
     UserID   VARCHAR(20) NOT NULL REFERENCES Users(UserID),
     LikedAt DATETIME NOT NULL,
     PRIMARY KEY (WidgetID, UserID)
 );

假设:

  1. Widgets 表包含一个小部件列表,并具有一个称为 WidgetID 的整数主键。
  2. Users 表包含一个用户列表,并且有一个名为 UserID 的 VARCHAR(20) 主键。
  3. 每个用户最多可以“喜欢”一个小部件一次。
  4. 您希望能够跟踪短于一天和更长时期的趋势。

要使用此表,只要用户喜欢某个小部件,就插入一条记录。

要获得结果,请发出如下命令:

 SELECT WidgetID, COUNT(UserID) FROM WidgetLikes 
    WHERE LikedAt BETWEEN `2012-09-01 00:00:00` AND `2012-09-03 11:59:59';

【讨论】:

  • 这是我一直在想的,但我担心它可能太麻烦了。
  • 对我来说似乎很轻巧,并为您提供所需的灵活性。
  • 是的,这个问题说服了我。当有 一堆 查询时,它就会陷入困境。
猜你喜欢
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 2011-11-15
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多