在SQL中创建登录表

时间:2013-03-19 13:37:16

标签: sql database database-design

我的目标是创建一个存储用户信息及其密码的表。此外,我想跟踪登录失败的次数。但是,以下是关于表格的简要说明:

首先:用户表

UserNo:用户的ID

名称:用户名

电子邮件

第二:登录表

UserNo:与最后一个

相同

密码

第三:跟踪表

UserNo

日期时间:登录日期和时间

count:每次用户登录错误时计数器都会增加。

从最后三张表中,我不认为我所做的是一种专业的方式。有没有更好的想法?特别是跟踪表。

由于

4 个答案:

答案 0 :(得分:3)

为什么要将它们分开?为什么不只有一个带有id,用户名,密码哈希,上次登录日期和失败尝试计数器的用户表?

否则,您可以将登录尝试与其自己的表分开并记录状态,例如SUCCESS或FAIL,因此您可以在程序上计算自上次成功尝试失败后的尝试次数,并且还提供对登录的完整审核,无论是否失败。

答案 1 :(得分:3)

您可能希望将前两个表合并在一起,因为每个用户只有一个密码,因此在一个表中的一行上拥有用户的所有数据是有意义的。

第三个表记录了每次登录的时间戳,如果添加了一个额外的列,还可以记录每个失败登录的时间戳,然后问题将给出每个用户登录失败总数的计数。

或者,如果您计算自上次登录后登录失败的次数,那么您可以再次将计数器放在第一个表中。

答案 2 :(得分:2)

有几点:

  1. 除非您要保留密码历史记录,否则您的第二个表格没有理由(在这种情况下,您需要一个额外的字段来跟踪密码的创建日期)

  2. 在第三个表中,不要使用计数器来记录错误的次数;相反,为每次登录尝试(成功或其他)写一条记录,并在需要时使用查询来检索计数。

答案 3 :(得分:0)

您可以将所有字段放在一个表格中

UserID, UserName, UserEmail, Password, Login_Timestamp, Counter

然后您可以将所有值保存在单个表中