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