SQL Server数据库设计用户,组,角色,成员

时间:2014-10-01 16:09:46

标签: sql-server database database-design relational-database

到目前为止,我有一个带有一个表的SQL Server数据库。

----------------
|Users         | 
----------------
| UserId    PK |
|              |
| Other fields |
----------------

我需要添加更多表格,这不是问题,但这是目标:

----------------    ----------------    ----------------   ---------------- 
|Users         |    |Roles         |    | Teams       |    | Groups       | 
----------------    ----------------    ----------------   ---------------- 
| UserId    PK |    | RoleId    PK |    | TeamId    PK |   | GroupId   PK | 
|              |    |              |    |              |   |              | 
| Other fields |    | Other fields |    | Other fields |   | Other fields | 
----------------    ----------------    ----------------   ---------------- 

我需要做的是:

  • 我有X个用户

    • 用户1
    • 用户2
    • 用户X
  • 我只有3个角色供所有团队和团队使用

    • 管理
    • 会员
    • 访问者
  • 一个用户可以创建X个团队

    • TEAM1
    • 的Team2
    • TeamX
  • 一个用户可以创建X个数量的组

    • 组别1
    • 组2
    • GroupX
  • 团体和团队可以为用户分配不同的角色(管理员,会员,访客)

  • 一个用户可以属于一个或多个团队或小组

  • 一个用户可以属于一个或多个角色

我很难理解这些表之间的关系。

以下是我根据@Robertas Valeika的答案设法实现的目标。

http://i58.tinypic.com/3588h0i.png

1 个答案:

答案 0 :(得分:3)

您还需要3张桌子。 UsersRoles UsersRolesGroups UsersRolesTeams。

关系:

UsersRoles - UsersRolesGroups, 组 - UsersRolesGroups

UsersRoles - UsersRolesTeams, 团队 - UsersRolesTeams

用户 - UsersRoles, 角色 - UsersRoles。

将FK添加到组和团队表中的用户,以识别组和团队的创建者。