用于访问/管理多组织的数据库设计

时间:2011-08-15 07:00:03

标签: c# sql-server database database-design

您如何设计数据库来管理多个组织? (即1个用户可以拥有/管理1个以上的组织)

示例

  • Xero(www.xero.com),您可以登录xero,然后在列表中选择您要管理的公司。我认为新书有类似的东西。

USER_ACCESS

  • 编号
  • CompanyUserId(公司的UserId)
  • UserId(将管理公司的UserId)

USER_PERMISSION

  • 编号
  • UserAccessId
  • CanViewM
  • CanEditM ....
  • CanViewN
  • CanEditN

1 个答案:

答案 0 :(得分:2)

您不应混用用户和登录。应将它们作为单独的表格/对象进行处理。因为一家公司的角色可能与另一家公司的角色不同。

另外,不要为每个可能的权限创建一个包含一列的权限表。相反,您应该为每个允许的权限创建一行。 (如果需要,还有一个定义所有权限的表)

因此你应该有像这样的表:

USER_ACCOUNT(用于定义登录)

  • 编号
  • 用户名
  • 密码

USER

  • 编号
  • AccountId(用于登录的帐户)
  • CompanyId(用户所属的公司)

权限

  • 编号
  • 名称

USER_ALLOWED_PERMISSIONS

  • 用户ID
  • PermissionId

登录时,只需检查USER表是否为帐户返回多行,并在需要时显示选择用户表单。