gpt4 book ai didi

php - 在用户表中存储用户登录时间

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:46 25 4
gpt4 key购买 nike

在用户表中,我想跟踪每个用户登录的时间作为运行总计。例如

UserID    midnightTo6am    6amToNoon    noonTo6pm    6pmToMidnight
User1 3 2 7 1
User2 4 9 1 8

请注意,这是包含有关用户的更多信息的更大表格的一部分,例如地址和性别、头发颜色等。

在此示例中,存储此数据的最佳方式是什么?它是否应该成为用户表的一部分,尽管知道并非每个用户都会在每次登录(用户可能永远不会在早上 6 点到中午之间登录)?或者这个表是 1NF 失败,因为重复的列应该被移动到一个单独的表?

如果存储为用户表的一部分,可能会有空单元格永远不会填充数据,因为用户当时从未登录。

如果这个数据是 1NF 失败,数据要放在一个单独的表中,我将如何确保某个时间的 +1 顺利进行?我是否会在单独的表格中搜索用户以查看他们之前是否已登录并+1?或者如果他们是在该时间段内首次登录,则向该表添加一列?

欢迎任何澄清或其他解决方案!

最佳答案

我建议将登录事件存储在基于文件的日志中,或者存储在仅包含登录的用户 ID 和 DATETIME 的简单表中。

每天一次,或者无论您需要多久报告一次您在问题中说明的数据,将这些数据聚合到您想要的形状的表格中。这样您就不会丢弃任何原始数据,并且始终可以在以后按小时等不同时间段重新聚合。

补充:我怀疑导出聚合数据的最快方法是为每个聚合周期运行多个范围查询,以便您搜索(例如)2011- 范围内的登录日期12-25 00:00:00 - 2011-12-24 03:00:00。如果您采用这种方法, (datetime, user_id) 的索引会很好地工作。这似乎违反直觉,因为您想在以用户为中心的基础上做事,但 DATETIME 字段上的索引将允许轻松查找行,然后尾随的 user_id 索引将允许快速分组。

关于php - 在用户表中存储用户登录时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com