2011-10-19 54 views
0

我想创建一个具有实体(用户和开发人员)的Web服务。面向用户和开发人员的数据库设计

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

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

权衡是 - 对于2个单独的表格,将会有冗余数据,但我希望与用户相比少数开发者。

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

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

回答

0

我认为这取决于您的通用用户与开发人员的差异。开发人员需要哪些额外的字段?如果没有,那么答案很简单:两个表都是。 您甚至可能会考虑与仅具有额外字段和user_id的开发人员表进行某种继承关系。

你认为你可能有什么额外的领域?

0

如果既没有完全从另一个继承,那么使用2个单独的表格也是有意义的。当然,他们可能有一些类似的属性,但我收集你永远不会真正使用用户/开发人员互换。

如果您真的担心冗余,另一种方法是自动将任何开发人员签名为用户,但具有附加属性,这些属性将存储在开发人员表的相关记录中。

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