具有两个角色的帐户之间的关系的最佳实践是什么?

时间:2019-12-09 01:42:24

标签: database entity-relationship entity-relationship-model

我正在尝试在一个帐户可以拥有的两个角色(“用户”和“公司”)之间取得最佳联系。我要在这些之间做出决定:

如果某人要注册,则他/她需要在要使用的角色之间进行选择,然后填写其余字段。例如,如果我注册为用户,则字段“ companyId”将为空,而我不希望那样...

enter image description here

这里也是一样,如果我注册为公司,则需要填写必填字段,仅此而已,但是如果收到任何反馈或放置了项目,则“ userId”字段为空。

enter image description here

那么,这样做的最佳实践是什么?您可以阅读UserCompany需要填写的完整“字段”。

1 个答案:

答案 0 :(得分:1)

第一个肯定会提出一些问题。

  • 为什么将account建模为feedbackproject的子代?
  • 类似地,为什么usercompany都是account的子实体?

我认为这些关系是倒退的:代替“拥有帐户的用户”,请改为“拥有帐户的用户”。将其应用于Account --> FeedbackAccount --> Project:对帐户提供反馈,并且项目与帐户相关。这与您在第二张图中完成的操作很接近,但是那里也存在一些问题:

  • 如何处理CompanyCompany 真的是与User分开的实体吗?还是它们之间有关系?
  • Account在第二张图中的哪里?

我建议使用类似的方法(需要使用正确的键来更新字段,但是关系是重要的部分):

Diagram

这允许UserCompany都具有Account。它还允许将User分配给CompanyAccount属于UserCompany,并且ProjectFeedback都是根据Account定义的。 / p>

还要考虑以下每种关系的基数

  • 一个用户可以与多个公司关联吗?必须所有用户分配到公司吗?
  • 公司可以没有用户吗?
  • 一个帐户是否只有1个所有者?可以同时由用户和公司所有吗?它可以完全没有所有者吗?

还有一些要考虑的一般问题:

  • 项目是否独立于帐户而存在(这可以表述为“ Project还是 strong 实体?”)?
  • 反馈真的适用于帐户吗?还是反馈实际上是用户/公司的财产?