2014-01-15 62 views
0

哪个数据库设计对于SaaS产品最有效,为什么?角色和权限,在角色表或多个角色权限记录中存储权限集?


设计1:三个表(标准的方式来设计自己的角色权限表)

ROLE 
Id 
Name 
Description 

PERMISSION 
Id 
Name 

ROLEPERMISSION 
Id 
RoleId 
PermissionId 

设计2:两个表

ROLE 
Id 
Name 
Description 
PermissionSetData 


PERMISSION 
Id 
Name 

凡role.permissionsetdata列包含一个CVS存储在角色记录中的权限集。 (保存数据库存储空间,可能有助于提高性能?)

回答

0

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

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

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

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