结构

2014-01-22 30 views
2

我有dB的用户群结构

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

因此,用户ABC有一个页面xyz.com/username

我想告诉用户ABC统计约游客,即像
1月-100日
2月-150日
最近7日等
以及最近12个月的明月记录
扬 - 49009
月 - 73849

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

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

我想到了这样的事情 - 是好的还是其他优化设计在那里?

+0

你的问题包含了足够的数据,e.g那里的日子。请编辑。另外,用实际数字预期结果的例子会很好。 –

+0

我在下面解答了答案。 我认为问题是相当明确和充分的,并且数字也与上面给出的格式相同。我只想知道可用于访客计数目的的最佳格式。 –

回答

1

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

你会希望有一个包含表:


ID | user_id | time_stamp | info


1 | 324 | 2014/1/22 | 300


2 | 327 | 2014/1/20 | 500


3 | 324 | 2014/1/19 | 900

比你想要的信息。

SELECT * FROM表,其中USER_ID = 324 将返回


ID | user_id | time_stamp | info


1 | 324 | 2014/1/22 | 300


3 | 324 | 2014/1/19 | 900


+0

我有一个已经运行的网站,用户的页面浏览量约为4K-5K。 这种方法是否可行并根据我的用途进行定制,因为它会每天增加数千行。 –

+0

是的,这将是最简单的跟踪方式。 –

1

我不会用这种方法在数据库中进行计数。

我会将记录与时间戳存储在列中,并在每次需要时使用GROUP BY进行滚动。

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

1

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

user_id 
date 
counter 

对于每次访问检查用户是否在那个日期。如果这样增加,否则创建记录。 然后,您可以使用日期(日期,月份,时间间隔等)做任意数量的统计数据。