数据库设计 - 链接两个用户

时间:2013-12-08 22:48:06

标签: sql database database-design

我需要一些数据库设计方面的帮助。我是一名有兴趣的开发商,只处理过非常基本的数据库。我刚刚开始分支到更多“高级”的Web应用程序,并希望为方案指出正确的方向。

我正在寻找的是一个基本上可以链接两个帐户的帐户系统。我会告诉你我想象的场景。

用户以常规方式注册,只提供姓名,电子邮件,密码以简化此问题。注册后,用户可以通过输入其他用户的电子邮件并让其他用户接受,将他们的帐户链接到另一个用户。

创建此链接后,两个用户可以一起完成CRUD任务。

我正在努力解决的问题是如何在两个用户之间建立链接。我显然有我的用户表。

USERS:
 id
 name
 email
 password

现在,我相信我需要创建另一个包含两个链接帐户的表,这些帐户具有我们可用于CRUD任务的唯一ID。类似的东西:

LINKED_USERS:
 id
 user1id
 user2id
 verified

TASKS
 id
 lu_id (FK, Linked_Users id)
 // Any other fields for the two combined here.

这是对的吗?如果是这样,我将如何设置users表和linked_users表之间的关系?这让我感到困惑,因为我需要关系来引用两个用户ID。假设我想显示user1id和user2id名称,关系如何工作?真的需要帮助我解决这个问题。

我希望这是有道理的,如果您需要更多信息,我将编辑问题。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的问题并不完全清楚要求。我的设计假定了以下有关要求:

  • 人们成对联系在一起
  • 每对都拥有零个,一个或多个任务记录。
  • 每个人都可以分配为零,一对或多对。如果不是当前,那么可能随着时间的推移(过去的对,当前对,未来的对)。

我认为你的困惑围绕着配对。而是将其视为团队。一个团队最多可以拥有两个人这一事实并不重要; 2,10,100无关紧要,因为任何数字都以相同的方式处理。这种方式是一个已分配成员的Team表。每个人可以属于一个或多个团队,每个团队可以有一个或多个成员。这意味着我们在Person和Team之间存在Many-To-Many关系。多对多是关系设计中的问题,总是通过添加第三个中间或“桥”表来解决。在这种情况下,该桥接表为membership_

每个团队拥有零个,一个或多个任务。每个任务由一个且仅一个团队拥有。这是团队与任务之间的简单One-To-Many关系。

如果这些假设和约束是正确的,那么您可以在relational database中设置以下表格,例如Postgres

我在start_上添加了stop_membership_对字段,以表明人们可能已经过去,现在或将来的团队作业。

ERD Entity-Relationship Diagram for table design