2016-07-04 241 views
1

我有注册用户的用户表。这些注册用户可以添加已注册的联系人(注册用户)以及尚未注册的联系人(可以在将来注册)。注册用户和未注册用户

什么是最好的数据库结构?

  1. 我是否应该创建两个用户表(已注册和未注册),其中 ID作为主键并将该电子邮件用作唯一标识符。
  2. 我应该存储的所有联系人(注册,并在同一 表#Users表未注册),其具有记住,不存在用户/电子邮件 可以添加到表使它有可能 不会存在用户的很多。

回答

0

我从6年开始管理一个网站,我把所有的用户都放在同一个表中,名为“profile”的列中有任何问题。将所有表放在同一个表中非常有用。 你可以有一个布尔列:注册和未注册。

+0

谢谢@Zeek。如果用户尝试输入联系人并且输入错误的电子邮件地址(比如[email protected]和类型[email protected])会自动创建两个具有相同名称的用户,那么它会使表具有很多可能永远不会使用的数据 –

+0

您必须使用两次输入检查电子邮件。 – Zeek

0

无需创建两个表,您可以为user_status创建单独的列,可以注册或不注册,并且电子邮件可以是唯一的列,对于未注册的用户,它将为空(违反规范化原则),但它适用于您

0

为了在您的设计中保持规范化和灵活性,以便将联系人信息用于超出您的描述范围之外的目的,我将与之一起使用。

联系人表 - 大家共享联系信息 用户表 - 特定于用户和细节方面的用户帐户(例如加密/散列密码和电子邮件)

现在,如果你只想要一个1对1的关系用户&联系人只需在用户表中包含一个外键给联系人表。

如果您想允许一对多或多对多使用第三个表来存储用户和联系人之间的关系。我认为这很少见,而且确实很难管理,但是我从我自己的访客数据环境中了解到,电子邮件地址对个人来说永远不是唯一的。家庭共享!丈夫的妻子,孩子等。另外,根据你的销售/做同一个人可能需要2个帐户1的业务和1个人,或1她不关心她的丈夫看到和她1。此外,如果您希望允许群组使用同一个帐户,则可能需要捕获所有联系信息。