应该是什么表结构来维护登录注销日志?

时间:2012-03-14 06:41:35

标签: php mysql database-design database-table

我有以下的登录日志表

Field       Type
login_id    int(10)     NOT NULL
platform    varchar(50) NOT NULL
browser     varchar(50) NOT NULL
ipaddress   varchar(50) NOT NULL
last_login  datetime    NULL
last_logout datetime    NULL

但是在这个结构上,我很困惑我可以添加登录时间,但很难在注销时更新它。我没有添加主键,因为日志频繁且primarykey很快就会达到最大值。什么应该是最好的方式?请帮忙。

4 个答案:

答案 0 :(得分:2)

为什么不创建包含2列的表注销日志 引用相应的login_id和注销时间。

而last_login和last_logout对我没有意义,但你的逻辑可能需要它。因为IMO你应该避免使用可以为NULL的列。

编辑:作为插件,我会说为什么要积累这么多数据。如果用于分析用户的浏览器,平台,则可以使用Google Analytics。然后你可以为每个用户保留last_login和last_logout。同样,您的业务逻辑可能需要它。

答案 1 :(得分:2)

单行同时登录和注销都只是要求麻烦,因为它假定每个登录都有相应的注销,但事实并非如此。有时他们会登录公共计算机而永远不会注销,有时他们会打开一个匿名窗口并登录。

相反,我会将其简化为一种类型:

  • LOGIN_ID
  • 平台
  • 浏览器
  • IP_ADDRESS
  • 日期
  • 类型(登录/注销)

答案 2 :(得分:0)

我的建议是,如果你想要上次登录和上次登出的信息,那么....将user_id作为主键...只需更改该信息而不是添加新记录...你可以添加一个计算字段以增强您的功能...获取此人登录的计数...

如果你想要每一个登录数据......只需要使用序列化概念......它将有助于...将数组集计数作为键,并将最后一次登录,注销,浏览器作为数组值。 ..串行化并存储在数据库中......

答案 3 :(得分:0)

我的建议是在他/她重新登录后更新每个用户的条目,以避免主键达到其最大值。