2017-09-28 61 views
0

我需要一些帮助来正确设计SQL数据库。下面是我想:SQL数据库设计|管理员和组之间的角色关系

**Group A :** 

- Alice (Manager) 
- Bob 
- Carol 

**Group B :** 

- Dave (Manager) 
- Eve 
- Mallory 

**Group C :** 

- Oscar (Manager) 
- Trudy 
- Isaac 

**Group Z** 

- Admin (Manager) 
- Alice 
- Dave 
- Oscar 

有几个限制:

1)每个成员都可以看到人们在他们的小组计划。对于 例子,当Bob登录时,他可以咨询Alice和Carole计划添加到他自己的计划 。

2)经理可以更新群组中人员的时间表,但不是他们自己的!所以 Alice可以管理Bob和Carol,Dave可以管理Eve和Mallory,Oscar 管理Trudy和Isaac,最后Admin管理Alice,Dave和 Oscar计划。

3)已同意爱丽丝能帮助戴夫来管理他的团队, 所以爱丽丝可以管理夏娃和马洛里(但不是戴夫),但除夕和 马洛里无法看到爱丽丝的计划,她仍然属于A组。

4)管理员是唯一可以更新自己的计划的经理。此外,他 可以咨询大家计划,但只有人在他们的小组可以看到 他规划(于是,爱丽丝,Dave和奥斯卡基本上)

5)用户可以在多个组(看爱丽丝,Dave和奥斯卡这 是也在Z组)。当他们登录时,他们可以选择咨询 计划指定组,因此这不是问题。

我会做这样的:

TABLE User 
id 
nom 
prenom 
login 
password 
userGroup 

TABLE group 
id 
groupName 
groupManager 

不过这显然不会工作,除非我可以设置一个数组作为groupManager值(我不擅长SQL,但我很肯定这是不可能的,不是吗?)

有人能指导我什么,可以让我达到我所期望的吗?

+0

最简单的解决方案是使用不同的groupManager创建新的组条目 – FilipRistic

+0

是的,但是如何让groupManager访问更多的组? – Will

+0

例如,您可以在组表中包含三行,如下所示:1,GroupA,Oscar | 2,A组,Alice | 3,GroupB,Oscar – FilipRistic

回答

2

由于您的设计需要用户和组之间的许多一对多的关系(一组包含多个用户;用户可以在多个组),我会用这样的:

User 
(
    ID 
    , Name 
    , Login 
    , Password 
    , etc. 
) 

Group 
(
    ID 
    , Name 
    , etc. 
) 

Group_Role 
(
    ID 
    , Role_Description 
    , etc. 
) 
User_Group_Role 
(
    ID 
    , User_ID   -- foreign key to User.ID 
    , Group_ID   -- foreign key to Group.ID 
    , Group_Role_ID -- foreign key to Group_Role.ID 
) 

所以你的用户表将包含

1 | Alice 
2 | Bob 
3 | Carol 
4 | Dave 
5 | Eve 
6 | Mallory 
99 | Admin 

,您的组表将包含

1 | Group A 
2 | Group B 
99 | Group Z 

,你Group_Roles表将包含之类的东西

1 | Consult 
2 | Manage     -- cannot manage self 
3 | Assist 
4 | SuperManage    -- can manage self 

,终于,在User_Group_Role表:

1 | 1 | 1 | 2    -- Alice manages Group A 
2 | 2 | 1 | 1    -- Bob consults in Group A 
3 | 3 | 1 | 1    -- Carol consults in Group A 
4 | 4 | 2 | 2    -- Dave manages Group B 
5 | 1 | 2 | 3    -- Carol assists with Group B 
6 | 5 | 2 | 1    -- Eve consults in Group A 
7 | 6 | 2 | 1    -- Mallory consults in Group A 
etc. 

这是否有意义?

+0

谢谢,将做这项工作;-) – Will