在设计在线b2b应用程序时,哪种方式可以存储用户和公司?

时间:2014-10-02 13:22:25

标签: database-design architecture

我正在设计一个在线应用程序,允许用户登录应用程序并创建项目。现在我们需要添加公司,以便用户可以属于他们自己的公司,并让团队成员加入他们的公司并在项目上进行协作。

据我所知,有两种不同的方法可以做到这一点:

  1. 展开当前的Users表,以便每个用户都可以成为公司。其他用户将以父/子关系加入现有公司用户。系统中的每个用户都可以成为一个完全成熟的公司,或者只是一个权力下降的下属团队成员。项目由作为公司的主要用户拥有。如果不关闭公司,主用户永远不会被删除,他们是同一个人。 Users表现在混合了公司用户和团队成员用户。

  2. 保留当前的Users表并添加第二个Companies表。每个用户将不再拥有自己的项目,公司将拥有所有项目,而用户只是代表公司行事。每个用户不需要存储除登录详细信息之外的任何内容,他们所属的公司以及他们的权限级别。另一方面,公司存储所有项目,团队成员和客户。但这需要对代码进行一些重构。

  3. 在我看来,排名第二的显然是更好的方式,非常简单。我纠正了,还是有什么我错过的?

    TL; DR:用户和公司在一个表中,或将用户和公司分成两个不同的表?

1 个答案:

答案 0 :(得分:1)

选项2,绝对。我不会想到你错过了什么。你有没有读过选项1给自己几次?这听起来像是一场彻头彻尾的噩梦。

  

如果不关闭公司,主用户永远无法移除,他们是同一个人。

这句话特别是dooms选​​项1本身。

如果它意味着选择2的更简单,更灵活的数据库设计,我会做一些代码重构。