我正在设计一个在线应用程序,允许用户登录应用程序并创建项目。现在我们需要添加公司,以便用户可以属于他们自己的公司,并让团队成员加入他们的公司并在项目上进行协作。
据我所知,有两种不同的方法可以做到这一点:
展开当前的Users表,以便每个用户都可以成为公司。其他用户将以父/子关系加入现有公司用户。系统中的每个用户都可以成为一个完全成熟的公司,或者只是一个权力下降的下属团队成员。项目由作为公司的主要用户拥有。如果不关闭公司,主用户永远不会被删除,他们是同一个人。 Users表现在混合了公司用户和团队成员用户。
保留当前的Users表并添加第二个Companies表。每个用户将不再拥有自己的项目,公司将拥有所有项目,而用户只是代表公司行事。每个用户不需要存储除登录详细信息之外的任何内容,他们所属的公司以及他们的权限级别。另一方面,公司存储所有项目,团队成员和客户。但这需要对代码进行一些重构。
在我看来,排名第二的显然是更好的方式,非常简单。我纠正了,还是有什么我错过的?
TL; DR:用户和公司在一个表中,或将用户和公司分成两个不同的表?
答案 0 :(得分:1)
选项2,绝对。我不会想到你错过了什么。你有没有读过选项1给自己几次?这听起来像是一场彻头彻尾的噩梦。
如果不关闭公司,主用户永远无法移除,他们是同一个人。
这句话特别是dooms选项1本身。
如果它意味着选择2的更简单,更灵活的数据库设计,我会做一些代码重构。