2

我在 db 上有一个用户群

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

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

我想显示有关访问者的用户 abc 统计信息,即过去 7 天的
1 月 - 400
日 2 月 - 350
等等,
以及过去 12 个月的月明智记录 1 月
- 49009 年
2 月 - 73849

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

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

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

4

3 回答 3

2

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

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

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

于 2014-01-22T13:21:11.410 回答
1

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

user_id
date
counter

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

于 2014-01-22T13:22:46.430 回答
1

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

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


身份证 | 用户 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 | 时间戳 | 信息


1 | 324 | 2014/1/22 | 300


3 | 324 | 2014/1/19 | 900


于 2014-01-22T13:35:22.520 回答