可以有效衡量趋势和流行度的数据库结构?

时间:2012-09-20 05:06:45

标签: php mysql data-structures data-modeling

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

我之前曾想过只计算总喜欢的数量,但这无法告诉我它是否受欢迎或者没有看到它是如何与时间无关的。

1 个答案:

答案 0 :(得分:3)

 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. 您希望能够跟踪短于一天或更长时间段的趋势。
  5. 要使用此表,请在用户喜欢小部件时插入记录。

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

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