适当的数据库架构来存储视频统计信息

时间:2011-03-24 08:25:21

标签: php mysql

我的网站上有100个视频。如果我必须存储点击的IP地址,点击的国家和时间,我是否需要为每个视频创建一个单独的表(在我的情况下为100个表)。 我的视频ID样本表架构:1

Table name: ID_1
IP_address | country | time

我可以采取哪些替代方法。 (我不想使用谷歌分析,因为我想首先尝试这一点)

我正在使用PHP和MySQL。

1 个答案:

答案 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的内容。它将使您的应用程序更加有效,最终使您的生活变得更加简单。