【问题标题】:Structure of MYSQL database table for visitor counter [closed]访客计数器的MYSQL数据库表的结构[关闭]
【发布时间】:2014-01-22 13:17:38
【问题描述】:

我在 db 上有一个用户群

______________________________________________
id | Name | so many details | Unique page link
______________________________________________
1  | abc  | bla bla         | username

所以,用户 abc 有一个页面 xyz.com/username

我想显示有关访问者的用户 abc 统计信息,即喜欢
1 月 1 日 - 400
1 月 2 日 - 350
以此类推过去 7 天
以及过去 12 个月的月度记录
1 月 - 49009
二月 - 73849

什么是最好的 MYSQL 数据库表结构设计。

 _________________________________________________________________
    user id | day 1 | day2| and so on for 7 day | Jan | Feb | Mar
    ______________________________________________________________
    111111  |  400  | 300 |                     | 4250|24534|2435

我想到了这样的事情 - 可以吗?还是有其他优化的设计?

【问题讨论】:

  • 您的问题包含的数据不足,例如日期在哪里。请编辑。另外,一个带有实数的预期结果的例子会很好。
  • 我在下面得到了解决方案的答案。我认为从我的角度来看问题非常清楚和充分,而且数字的格式与上面给出的相同。我只想知道可用于访客计数目的的最佳格式。

标签: php mysql sql relational-database visitor-statistic


【解决方案1】:

我不会以这种方式在数据库中进行计数。

我会将带有时间戳的记录存储为一列,并在每次需要时使用 GROUP BY 将它们汇总。

如果这是一个报告数据库,我建议查看具有时间维度的星型模式。

【讨论】:

    【解决方案2】:

    您不想按照自己的方式进行操作,因为您将为每个用户设置一个很长的日历。
    它会很快失控。

    您会希望有一个包含以下内容的表格:


    ID |用户 ID |时间戳 |信息


    1 | 324 | 2014/1/22 | 300


    2 | 327 | 2014/1/20 | 500


    3 | 324 | 2014/1/19 | 900

    比你想要的信息。

    Select * FROM table where user_id = 324 会返回


    ID |用户 ID |时间戳 |信息


    1 | 324 | 2014/1/22 | 300


    3 | 324 | 2014/1/19 | 900


    【讨论】:

    • 我有一个已经在运行的网站,用户的页面浏览量约为 4K-5K。这种方法是否可以并针对我的目的进行定制,因为它每天会添加数千行。
    • 是的,这将是最简单的跟踪方式。
    【解决方案3】:

    a我认为这样的事情会更容易管理。

    user_id
    date
    counter
    

    对于每次访问,检查用户在该日期是否在场。如果增加,否则创建记录。 然后,您可以使用日期(日、月、间隔等)进行任意数量的统计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2011-08-20
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多