用户数据库表方案。是好是坏?

时间:2014-04-23 08:22:42

标签: mysql sql database

我有一个表users,它还有一个列active,它是0或1.还有一个activation_keys表,用于存储新注册的非活动用户的激活密钥( where active == 0)。

注册新帐户的所有用户将从非活动状态开始,并且在activation_keys表中始终具有匹配的关系行。如果用户激活他/她的帐户,则会从activation_keys表中删除关系行,并在users表中为该用户设置为active。

但是现在我想通过将active设置为0来禁用用户。为了区分仍需要激活其帐户的新注册用户和已禁用的用户,我将检查是否存在关系activation_keys表中的激活密钥。如果有,则表示用户未被禁用。如果没有,则表示用户已被禁用,无法访问其帐户。

我刚刚描述的方式是一种处理它的好方法吗?

另外,我最终会在users表中混合使用已禁用和活动的用户。这样没关系,还是应该将禁用的用户专门删除到另一个表?任何被禁用的用户都将被永久禁用。

欢迎任何建议。

1 个答案:

答案 0 :(得分:2)

我通常只使用“状态”列,如果用户处于“活动状态”,“等待激活”或“禁用”,我会存储该列。

但是总有很多方法可以完成任务,我认为你的方法没有什么问题,但是最好分离激活逻辑(activation_keys表)和禁用用户,因为你可能想要 - 稍后 - 可能会为残疾用户添加一些重新激活或类似的东西。