Php 数据库模式设计:如何处理未经验证的邀请?

Php 数据库模式设计:如何处理未经验证的邀请?,php,sql,schema,Php,Sql,Schema,我不太确定如何处理这个问题: 我正在创建一个具有仅邀请注册系统的web应用程序。管理员用户向用户发送电子邮件邀请,用户单击链接,并将他们带到一个页面,在那里他们可以创建一个已链接到其电子邮件地址的帐户 我最初的想法是在users表中插入一行,将verified列标记为false。问题是我有用户名,密码作为必填字段,用户名必须是唯一的。所以我不能只插入一个空行,以后再填写 我应该为邀请创建一个单独的表吗?处理这种情况的最佳方法是什么 更新:管理员将输入名字、姓氏、电子邮件地址和用户角色(权限)。因

我不太确定如何处理这个问题:

我正在创建一个具有仅邀请注册系统的web应用程序。管理员用户向用户发送电子邮件邀请,用户单击链接,并将他们带到一个页面,在那里他们可以创建一个已链接到其电子邮件地址的帐户

我最初的想法是在
users
表中插入一行,将
verified
列标记为
false
。问题是我有用户名,密码作为必填字段,用户名必须是唯一的。所以我不能只插入一个空行,以后再填写

我应该为邀请创建一个单独的表吗?处理这种情况的最佳方法是什么


更新:管理员将输入名字、姓氏、电子邮件地址和用户角色(权限)。因此,我需要将所有这些内容存储在邀请表中。我也可以存储日期发送和更新该值,如果电子邮件需要重新发送。

< P>你必须考虑邀请丢失,意外删除,或由于其他许多原因,不可用,必须重新发送的情况。
此外,邀请是注册的独立实体。我认为您应该创建一个单独的表来跟踪邀请和查看谁注册(从哪个邀请)

两种方法来查看这一点。如果您采用单独的方法创建另一个表,那么评估阶段结束时会发生什么情况,您是否必须将这些评估用户复制到您的真实用户表中?用户名可以默认为精心编制的GUID,您已对其进行编程,以处理进入用户表的条目。

我建议为邀请设置一个单独的表。我很清楚,你的邀请基本上是一种允许某人注册的象征。

一张单独的桌子对我来说最有意义。这将允许您维护users表中的数据完整性,并提供更可读的数据模型。说“邀请进入邀请表”比说“邀请进入用户表但验证列设置为false”更容易。是的,您可以创建一个单独的表来管理邀请

然后当邀请被接受时,你有几个选择。首先,您需要决定是否需要维护与原始邀请的关联,以用于跟踪或“家谱”或其他历史目的

下一步,如果是这样的话,你需要决定怎么做。是否删除邀请并存储任何与用户记录相关的信息?是否保留邀请记录并设置外键


如果我对您打算创建的系统有更多了解,我可能会给出一些更精细的建议。

您所说的评估阶段是什么意思?我认为John假设您正在进行一个只邀请的测试版,就像google喜欢做的那样,并且在某个时候您的系统将对所有人开放。我从你的帖子中得到的印象是,你的系统将始终是只邀请。是的,这是一个私人的,只邀请的系统。永远不要向公众开放。@Peter-是的,这就是我的意思:)@Andrew-很抱歉我的问题有了更新。如果你有更具体的问题,请问。是的,我真的没有什么要补充的。你只需要问问自己,在邀请函->注册过程后,你需要关注哪些历史信息。谢谢,在你回答之前,我还没有想过如何处理这些历史。token,没错!除非他们的电子邮件地址(令牌)已添加到列表中,否则用户无法注册。鉴于您最近的更新,我想我的观点已经改变。以前,不清楚发送邀请时是否指定了大量帐户信息。如果管理员已经知道他们的姓名、电子邮件、角色等,那么您也可以创建用户并返回到您的
verified
专栏。您可以始终使用他们的电子邮件地址作为用户名,您可以允许他们在验证/完成注册后更改用户名。谢谢您的回答。在你回答之前,我还没有考虑过丢失/删除的邀请电子邮件。