Database 面向用户和开发人员的数据库设计

Database 面向用户和开发人员的数据库设计,database,Database,我想创建一个具有实体的web服务—用户和开发人员 开发人员可能是用户,也可能不是用户,我希望他在大多数情况下都是用户。他可以使用web API在我的web服务上创建他的应用程序。例如,Facebook允许我们在developer.Facebook.com上创建应用程序,在这里我们使用我们的FB帐户登录 我的问题是-我应该为用户和开发人员创建单独的表吗?用户具有一些典型开发人员不需要的属性。开发人员看到了一些典型用户看不到的特性 折衷是——对于两个单独的表,将有冗余数据,但我希望与用户相比,开发人

我想创建一个具有实体的web服务—用户和开发人员

开发人员可能是用户,也可能不是用户,我希望他在大多数情况下都是用户。他可以使用web API在我的web服务上创建他的应用程序。例如,Facebook允许我们在developer.Facebook.com上创建应用程序,在这里我们使用我们的FB帐户登录

我的问题是-我应该为用户和开发人员创建单独的表吗?用户具有一些典型开发人员不需要的属性。开发人员看到了一些典型用户看不到的特性

折衷是——对于两个单独的表,将有冗余数据,但我希望与用户相比,开发人员很少

对于同一个表-将有冗余属性


这个场景的最佳设计是什么?

我认为这取决于您的通用用户与开发人员的不同程度。开发人员需要哪些额外字段?如果没有,那么答案很简单:两个都有一个表。 您甚至可以考虑与开发人员表建立某种继承关系,该表只包含额外的字段和用户id


您认为您可能有哪些类型的额外字段?

如果两个字段都不完全从另一个继承,那么使用两个单独的表是有意义的。当然,它们可能有一些相似的属性,但我想你永远不会真正互换地使用用户/开发人员

如果您真的担心冗余,那么另一种选择是自动将任何开发人员注册为用户,但附加属性将存储在开发人员表中的相关记录中

简言之,如果实体是100%独立的,开发人员有必要注册一次作为开发人员,另一次作为用户注册,并且帐户之间没有链接,那么它们可能属于两个独立的表。但是,如果开发人员可以被视为具有扩展属性的超级用户,那么我会将所有基本记录存储在用户表中,并将添加的开发人员属性存储在他们自己的表中。第二种情况对我来说更可能