SQL数据库设计|管理者和团队之间的角色关系

时间:2017-09-28 14:58:18

标签: mysql sql database-design

我需要一些帮助才能正确设计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)经理可以更新他们小组中的人员的时间表,但不能更新他们自己的时间表!所以   爱丽丝可以管理鲍勃和卡罗尔,戴夫可以管理夏娃和马洛里,奥斯卡   管理Trudy和Isaac,最后Admin管理Alice,Dave和   奥斯卡计划。

     

3)已经同意Alice会帮Dave管理他的小组,   所以,爱丽丝可以管理夏娃和马洛里(但不是戴夫),但夏娃和夏娃   马洛里看不到爱丽丝的计划,因为她仍然属于A组。

     

4)管理员是唯一可以更新自己计划的经理。还有他   可以咨询每个人的计划,但只有他们小组中的人才能看到   他的计划(所以爱丽丝,戴夫和奥斯卡基本上)

     

5)用户可以在多个组中(看看Alice,Dave和Oscar那个   也在Z组)。他们可以选择咨询   在他们登录时计划指定的组,这不是问题。

我会做类似的事情:

TABLE User
id
nom
prenom
login
password
userGroup

TABLE group
id
groupName
groupManager

但是这显然不会起作用,除非我可以将Array设置为groupManager的值(我不擅长SQL,但我很确定这是不可能的,不是吗?)

有人可以指导我做一些能让我达到预期目标的东西吗?

1 个答案:

答案 0 :(得分: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
)

所以您的Users表将包含

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

,您的Groups表将包含

 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.

这有意义吗?