我想知道关于最佳做法的用户注册。我倾向于储存的网站注册一个单独的登记表,然后一旦注册已经确认了通过电子邮件传送的数据的用户表。

受益于这将是读取从用户表不混乱,从来没有激活注册。另一个好处是,电子邮件(username)领域可以保持独特的用户表格,但是如果你尝试注册的电子邮件地址你不自己,主人的电子邮件地址将仍然能够登记册的电子邮件领域将不是唯一的登记表。

我想知道如果这是常见的做法,或如果有任何原因,这不是一个好主意吗?

有帮助吗?

解决方案

激活或者不

有没有真正的需要存储用户在不同的表格。只是储存中的所有用户的一个表,与布尔指示的标志,如果他们的活性或者没有。常运行,一个计划的工作,以检查,看看是否有帐户x天旧和不活性和将它们删除。

电子邮件

所以大概你们激活的用户的电子邮件吗?你还想设置这样,如果另一个用户进入了别人的电子邮件,其他人仍然可以注册正确的吗?这实际上是相当简单的做到的。在这e-mail是错误地送到他们,只有一个链接到删除,电子邮件数据库,因为显然这不是他们和他们永远不会激活的帐户。

但是,如果其他人只是删除它吗?

然后当他们注册告诉他们你已经有了自己的电子邮件和提供发送的再次激活,这个电子邮件还将有选择的移除它从数据库。

只是删除旧的帐户的数据库。理所当然的原因,如果该人是试图启一个新的帐户,并有一个古老的一个永远不会被激活你们可以只删除。

其他提示

我认为这是在工程。

店铺所有的人都在一个表中,并安排一个SQL查询(每天)删除30天以上不actived账户。

请你帮个忙,并保持一个表。你只是不会有足够的中止注册的性能问题来发挥作用(特别是如果你在3周后擦拭)。

您对电子邮件地址的理由是愚蠢的。没有人有可能得到阻止由虚假注册他们的电子邮件。

有可能会在你在逻辑上划分两个表一个情况:如果您的注册过程中要求申请人具有很强的强制用户信息您确认电子邮件地址之后。例如,如果您提交注册申请表也将结束,只有少数列,如电子邮件和激活密钥,而你的用户表中有许多额外的列,如用户名,名字,姓氏,邮政地址等

在分裂可能使在这种情况下有道理的,因为你可以申报这些列NOT NULL

除此之外,虽然,我与大多数其他的答案的同意;这听起来像过早的优化给我。具有相同结构的多个表是的强烈的警示标志乌尔上来理解错了。的不明确,但一个强烈的警告。

我同意这种做法的原因关注分离:A“注册处理”和“用户帐户”是两个不同的概念

在登记表将用于坚持以“注册处理”的状态。 一旦这个过程完成(一旦邮件被验证),过程的“输出”将是一个新的“用户帐户”。如果过程失败(例如,“超时”,用户不能确认他的1个月后的电子邮件),有关于“用户账户”的概念没有影响。

如在另一个答案被说,这可能是在某些情况下的工程,但它也可以是enapsulate的这两个不同的概念复杂性的有效方式。它也可以被看作是悖逆正常化的原则,但我相信你有选择的封装和标准化之间的权衡取决于上下文。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top