我的网站上有100个视频。如果我必须存储点击的IP地址,点击的国家和时间,我是否需要为每个视频创建一个单独的表(在我的情况下为100个表)。 我的视频ID样本表架构:1
Table name: ID_1
IP_address | country | time
我可以采取哪些替代方法。 (我不想使用谷歌分析,因为我想首先尝试这一点)
我正在使用PHP和MySQL。
答案 0 :(得分:3)
我是否需要为每个视频创建一个单独的表格(在我的情况下为100个表格)
请播放不要!
只需在表格中添加一列作为视频表的外键即可。另外,为主键添加一列以及其他一些:
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的内容。它将使您的应用程序更加有效,最终使您的生活变得更加简单。