結構

2014-01-22 33 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 

對於每次訪問檢查用戶是否在那個日期。如果這樣增加,否則創建記錄。 然後,您可以使用日期(日期,月份,時間間隔等)做任意數量的統計數據。