2011-03-24 52 views
0

我在我的網站有100個視頻。如果我必須存儲點擊的IP地址,單擊國家和時間,我是否需要爲每個視頻創建一個單獨的表(在我的情況下爲100個表)。 視頻ID我的示例表模式:1正確的DB模式來存儲視頻統計信息

Table name: ID_1 
IP_address | country | time 

什麼替代方法,我可以做到這一點。 (我不想使用谷歌分析,因爲我想先試試這個)

我正在使用PHP和MySQL。

回答

3

我需要創建一個單獨的表中的每個視頻(在我的情況下100桌)

請plase 不要

只需將一列添加到您的表中,作爲視頻表的外鍵。此外,添加一個主鍵和更多的列:

Table name: videos_clicks 
id | video_id | ip_address | clicks | country | last_time 
Primary key: id 
Unique Index: video_id, IP_address 

然後,您可以很簡單地使用它。例如,要插入一個新行:

INSERT INTO videos_clicks (video_id, ip_address, clicks, country, last_time) 
VALUES (1, '123.45.67.89', 1, 'country_name', UNIX_TIMESTAMP()) 
ON DUPLICATE KEY UPDATE clicks = clicks + 1, last_time = UNIX_TIMESTAMP() 

或獲得ID爲「1」的視頻的所有點擊:

SELECT id, ip_address, clicks, country, last_time 
FROM videos_clicks 
WHERE video_id = '1' 

您也可能要考慮創建一個表countries並將country varchar/text列替換爲數字country_id,它將指向countries表:

Table name: countries 
id | name | twoletter | threeletter 
----------------------------------- 
1 Andorra  AD   AND 
2 Afghanistan AF   AFG 
... 
----------------------------------- 
Primary key: id 

請閱讀關於databaze normalizing的內容。這將使您的應用程序更加有效,並最終讓您的生活變得更簡單。

+0

@Cezechnology:非常感謝您的回答。我還有一個問題:我如何確保這些點擊是唯一的,這意味着如果一個人點擊兩次相同的鏈接,我不應該插入。 – Maggie 2011-03-24 09:16:31

+0

@Mahin,這就是UNIQUE索引的意思!如果您將其設置在video_id和ip_address兩列上,則每個視頻只允許一個IP。在INSERT語句中,「ON DUPLICATE KEY」只是更新上次訪問的時間,並將訪問次數提高了一次。 – Czechnology 2011-03-24 09:35:37