3

当我们为访客检测到这些项目时:

  • 浏览器名称
  • 浏览器版本
  • 操作系统名称
  • 操作系统版本
  • 屏幕分辨率
  • 屏幕深度
  • 闪光灯启用
  • ...

这些都应该存储在数据库中的单独列中,还是应该将它们全部存储为用户代理字符串,然后在应用程序中分解?

为了安全起见,我应该使用varchar(255)它还是这些项目有明确定义的数据类型?我使用 MySQL 和 PHP

4

3 回答 3

3

这真的取决于你想用这些信息做什么。如果您计划将数据用于非常详细的统计信息,请使用单独的列,以便您可以运行详细的查询,例如“为使用 Internet Explorer 6 的用户显示所有屏幕分辨率”等。

如果您不希望需要如此详细的统计信息,将用户代理字符串存储在一个字段中通常可以正常工作。

于 2010-12-20T00:20:54.257 回答
2

您应该将每个项目存储在其自己的列中。这将允许您轻松查询和汇总您的数据。

插入时解析一次很便宜。解析每个查询非常昂贵。

于 2010-12-20T00:30:49.340 回答
1

这些项目没有定义的数据类型,因此您可以使用varchar(255)甚至更小。最好在单独的字段中将此值添加到数据库中,因为它对性能没有明显影响+插入完成一次,读取 - 更多次,那么为什么不拆分一次,在写入时,而不是在每次读取时?:)

于 2010-12-20T00:25:08.170 回答