0
我在我的網站有100個視頻。如果我必須存儲點擊的IP地址,單擊國家和時間,我是否需要爲每個視頻創建一個單獨的表(在我的情況下爲100個表)。 視頻ID我的示例表模式:1正確的DB模式來存儲視頻統計信息
Table name: ID_1
IP_address | country | time
什麼替代方法,我可以做到這一點。 (我不想使用谷歌分析,因爲我想先試試這個)
我正在使用PHP和MySQL。
我在我的網站有100個視頻。如果我必須存儲點擊的IP地址,單擊國家和時間,我是否需要爲每個視頻創建一個單獨的表(在我的情況下爲100個表)。 視頻ID我的示例表模式:1正確的DB模式來存儲視頻統計信息
Table name: ID_1
IP_address | country | time
什麼替代方法,我可以做到這一點。 (我不想使用谷歌分析,因爲我想先試試這個)
我正在使用PHP和MySQL。
我需要創建一個單獨的表中的每個視頻(在我的情況下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的內容。這將使您的應用程序更加有效,並最終讓您的生活變得更簡單。
@Cezechnology:非常感謝您的回答。我還有一個問題:我如何確保這些點擊是唯一的,這意味着如果一個人點擊兩次相同的鏈接,我不應該插入。 – Maggie 2011-03-24 09:16:31
@Mahin,這就是UNIQUE索引的意思!如果您將其設置在video_id和ip_address兩列上,則每個視頻只允許一個IP。在INSERT語句中,「ON DUPLICATE KEY」只是更新上次訪問的時間,並將訪問次數提高了一次。 – Czechnology 2011-03-24 09:35:37