我有以下的登录日志表
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很快就会达到最大值。什么应该是最好的方式?请帮忙。
答案 0 :(得分:2)
为什么不创建包含2列的表注销日志 引用相应的login_id和注销时间。
而last_login和last_logout对我没有意义,但你的逻辑可能需要它。因为IMO你应该避免使用可以为NULL的列。
编辑:作为插件,我会说为什么要积累这么多数据。如果仅用于分析用户的浏览器,平台,则可以使用Google Analytics。然后你可以为每个用户保留last_login和last_logout。同样,您的业务逻辑可能需要它。
答案 1 :(得分:2)
单行同时登录和注销都只是要求麻烦,因为它假定每个登录都有相应的注销,但事实并非如此。有时他们会登录公共计算机而永远不会注销,有时他们会打开一个匿名窗口并登录。
相反,我会将其简化为一种类型:
答案 2 :(得分:0)
我的建议是,如果你想要上次登录和上次登出的信息,那么....将user_id作为主键...只需更改该信息而不是添加新记录...你可以添加一个计算字段以增强您的功能...获取此人登录的计数...
如果你想要每一个登录数据......只需要使用序列化概念......它将有助于...将数组集计数作为键,并将最后一次登录,注销,浏览器作为数组值。 ..串行化并存储在数据库中......
答案 3 :(得分:0)
我的建议是在他/她重新登录后更新每个用户的条目,以避免主键达到其最大值。