2016-12-05 70 views
0

我有3种类型的用户(用户,主持人,管理员)。 和具体数据为所有3(用户有名字,管理员有电话号码...)数据库建模,用户,主持人,管理员

我的解决方案的角色,是两个有一个表“用户”(ID,名称...),一个表“角色” (ID角色,名称...)和一个xref表usersXrefRoles(连接表)(IDusers,IdRoles) 但这不是解决方案的部分“所有3表有不同的领域”,换句话说我必须有3个单独的表(用户,主持人,管理员)还是某种继承?

这种od问题的最佳做法是什么?

+0

这些字段真的不一样吗?如果他们没有那么不同,只要把他们全部放在一张桌子上,留下那些不需要空白的。 “最佳实践”是由其他约束支配的,例如有多少其他表需要引用用户表? –

回答

0

如果您只有三种类型的角色,你可以有作为具有role列单用户表这样简单的事情,这将举行一个枚举值(或role_id列,将坚持一个角色表的引用 - 如果有这是任何需要)。

如果您对每种用户类型都有不同的字段,可以使用其他表格并执行table subclassing,但很高兴告诉哪些类型的字段。也许有更好的方法去做你想做的事。

此外,阅读有关RBACACLs以替代静态的角色。许多流行的框架都带有内置支持或扩展的解决方案。

+0

THX快速的回答,用户有姓名,电话,城市, 版主有最近登录日期,类别(FK)... 管理员有产品等等这样的领域有很大的不同。 我接受了你的建议,并且子类化非常符合我的需要。 thx again – TestAndSet

+0

@TestAndSet我强烈建议你只有一个用户表和所有描述的列应用于所有用户。产品将只有属于管理员的“user_id”,而不适用于某个类别的用户将具有“空”类别。子类化将使你的应用程序变得复杂,并且使“促使”用户成为管理员或管理员变得更加困难。 – ddinchev

0

子分类。您应该有三个表,但它们应该是用户(具有userId,名称和其他所有用户共同的字段)每个用户都应该在此表中,包括主持人和管理员。然后有两个具有相同PK值的表作为主持人的用户,以及具有特定于这些角色的数据字段的管理员用户。

相关问题