到目前为止,我有一个带有一个表的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个用户
我只有3个角色供所有团队和团队使用
一个用户可以创建X个团队
一个用户可以创建X个数量的组
团体和团队可以为用户分配不同的角色(管理员,会员,访客)
一个用户可以属于一个或多个团队或小组
一个用户可以属于一个或多个角色
我很难理解这些表之间的关系。
以下是我根据@Robertas Valeika的答案设法实现的目标。
答案 0 :(得分:3)
您还需要3张桌子。 UsersRoles UsersRolesGroups UsersRolesTeams。
关系:
UsersRoles - UsersRolesGroups, 组 - UsersRolesGroups
UsersRoles - UsersRolesTeams, 团队 - UsersRolesTeams
用户 - UsersRoles, 角色 - UsersRoles。
将FK添加到组和团队表中的用户,以识别组和团队的创建者。