[英]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.