[英]SQL Database Design | Roles relationship between managers and group
我需要一些幫助來正確設計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)管理員是唯一可以更新自己計划的經理。 他還可以咨詢每個計划的人,但只有小組中的人才能看到他的計划(所以基本上是Alice,Dave和Oscar)
5)用戶可以在多個組中(也可以在Z組中查看Alice,Dave和Oscar)。 他們將在登錄時選擇咨詢指定小組的計划,因此這不是問題。
我會做類似的事情:
TABLE User
id
nom
prenom
login
password
userGroup
TABLE group
id
groupName
groupManager
但這顯然是行不通的,除非我可以將Array設置為groupManager的值(我不擅長SQL,但我很確定這是不可能的,不是嗎?)
有人可以指導我做一些能讓我達到期望的事情嗎?
由於您的設計要求用戶和組之間存在多對多關系(一個組包含多個用戶;一個用戶可以位於多個組中),因此我將使用以下方式:
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.
那有意義嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.