我需要一些数据库设计方面的帮助。我是一名有兴趣的开发商,只处理过非常基本的数据库。我刚刚开始分支到更多“高级”的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名称,关系如何工作?真的需要帮助我解决这个问题。
我希望这是有道理的,如果您需要更多信息,我将编辑问题。
提前感谢您的帮助!
答案 0 :(得分:1)
您的问题并不完全清楚要求。我的设计假定了以下有关要求:
我认为你的困惑围绕着配对。而是将其视为团队。一个团队最多可以拥有两个人这一事实并不重要; 2,10,100无关紧要,因为任何数字都以相同的方式处理。这种方式是一个已分配成员的Team表。每个人可以属于一个或多个团队,每个团队可以有一个或多个成员。这意味着我们在Person和Team之间存在Many-To-Many关系。多对多是关系设计中的问题,总是通过添加第三个中间或“桥”表来解决。在这种情况下,该桥接表为membership_
。
每个团队拥有零个,一个或多个任务。每个任务由一个且仅一个团队拥有。这是团队与任务之间的简单One-To-Many关系。
如果这些假设和约束是正确的,那么您可以在relational database中设置以下表格,例如Postgres。
我在start_
上添加了stop_
和membership_
对字段,以表明人们可能已经过去,现在或将来的团队作业。