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

时间:2011-10-19 06:07:37

标签: database

我想创建一个包含实体的Web服务 - 用户和开发人员。

开发者可能是也可能不是用户(我希望他在大多数情况下都是用户)。他可以使用Web API在我的Web服务上创建他的应用程序。示例 - Facebook允许我们在developer.facebook.com上创建应用程序,我们使用我们的FB帐户登录。

我的查询是 - 我应该为User和Developer创建单独的表吗?用户具有一些典型开发人员不需要的属性。开发人员会看到典型用户看不到的某些功能。

权衡是 - 对于2个单独的表,将有冗余数据,但我认为与用户相比,开发人员很少。

对于同一张表 - 会有多余的属性。

这种情况的最佳设计是什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果两者都不完全从另一个继承,则使用2个单独的表是有意义的。当然,他们可能有一些类似的属性,但我认为你永远不会真正交替使用用户/开发人员。

如果您真的担心冗余,那么替代方案是自动将任何开发人员作为用户签名,但使用其他属性将存储在Developer表中的相关记录中。

简而言之,如果实体真的是100%分开,那么开发人员必须先注册一次作为开发者而另一次注册为用户(账号之间没有链接),那么他们可能属于2单独的表格。但是如果开发人员可以被视为一种具有扩展属性的“超级用户”,那么我将所有基本记录存储在Users表中,并在他们自己的表中添加Developer属性(第二种情况听起来更可能对我来说。