2017-09-28 49 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

相關問題