2011-03-24 51 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