我有一个处理用户登录总数的数据库表和另一个处理各个登录会话的表。我应该将这些表分开,还是应该继续合并?
users_logins
users_id
successful_logins(total)
last_online
users_logins_sessions
users_id
session_id
ip_address
user_agent
last_activity(time-stamp)
答案 0 :(得分:1)
这实际上取决于你,但我理解为(在此做出假设)会话被清除了?通常在我的应用程序会话过期,并且创建一个新会话时,我不确定您是如何在users_logins_sessions
中管理它的,因为您没有提供更多关于此的信息,它可以以任何方式工作。
如果你的'session'表永远不会删除条目,你应该合并,或者如果会话到期/每隔一段时间删除就不管它是什么。
我还假设users_id
在其他地方使用,如果你将它们分开。
答案 1 :(得分:1)
您可能会丢失user_logins,因为我假设last_online和last_activity包含相同的值。
但是,您必须查询user_logins_sessions表以获取给定用户成功登录的总数。
SELECT COUNT(user_id) FROM user_login_sessions WHERE user_id = ?
答案 2 :(得分:1)
如果您只有users_logins_sessions表,则可以轻松查询successful_logins和last_online。
SELECT COUNT(1) AS successful_logins
FROM users_logins_sessions
WHERE users_id = <user_id>;
SELECT MAX(last_activity) AS last_online
FROM users_logins_sessions
WHERE users_id = <user_id>;