如何创建用户邀请模型?

Nic*_*ick 6 erd database-design

我正在开发一个允许“用户”创建“列表”的应用程序。我在“用户”和“列表”之间存在多对多关系(这可能不对)。此外,“列表”有许多“任务”。

我想做的是扩展这个模型以包含“邀请”的想法。我希望用户能够互相邀请其他列表。一个用户可以创建多个邀请。用户可以创建一个“邀请”,邀请将有一个或多个“被邀请者”,而这些“被邀请者”又是“用户”。所以我对如何在关系数据库中组织它感到困惑。

我认为核心问题是:用户“拥有”邀请,但也可以是邀请的接收者。清如泥?:)

我希望有人可以就如何实现这一点提供一些建议。任何示例 ERD 都会有用。如果我的问题需要进一步澄清,我可以提供。

谢谢!

mir*_*173 2

我将概括一下您的描述:

  • 用户可以创建列表。
  • 列表可以解决一些任务。
  • 用户可以加入一些列表。
  • 用户可以向某些用户发送邀请并提议加入某些列表

根据这个描述,我会提出以下 ERD

ERD

由此我可以推导出以下关系

用户('用户id')
列表('list_id',user_id(创建))
加入('list_id','user_id')
任务('list_id','task_id')
邀请('invitation_id',user_id(发送))
接收('invitation_id','user_id')
提议('invitation_id','list_id')

主键位于撇号之间。如果字段(因此列表中的 user_id 引用用户中的 user_id),则可以通过名称推断出外键。foreign_key 后面括号中的单词描述了该外键是从 ERD 中的哪个关系派生的。

我不关心 id 列的名称。也许 id 是代理键(人工键)或实体的某些属性。我也没有添加可以轻松添加的其他属性。将任务描述为弱实体是相当任意的。