角色和权限,存储权限集在角色表或多个角色授权记录中?

时间:2014-01-15 08:50:50

标签: sql-server oracle database-design

哪种数据库设计对SaaS产品最有效,为什么?


Design1:三个表(设计角色权限表的标准方法)

ROLE
Id
Name
Description 

PERMISSION 
Id
Name

ROLEPERMISSION
Id
RoleId
PermissionId

Design2:两张表

ROLE
Id
Name
Description 
PermissionSetData


PERMISSION 
Id
Name

其中role.permissionsetdata列包含存储在角色记录中的权限集的CVS。 (保存数据库存储空间,可能对性能有帮助吗?)

1 个答案:

答案 0 :(得分:0)

解决方案1是唯一合适的设计。

  • 我认为,保存数据库存储空间几乎总是一个有争议的问题。当您以合理的价格购买 TERA 字节的空间时,为什么要尝试保存一些 kilo 字节? (每个解决方案所需的空间大致相同)。

  • 第二种设计中的多值列不遵循proper database design

  • 从实际的角度来看,在多值列中检索数据比在正确设计的数据库中更复杂和昂贵。例如,您无法正确索引CSV列,也无法轻松加入。