俱乐部和员工数据库的MySQL数据库结构

时间:2018-03-22 04:23:18

标签: mysql sql

我正在尝试为事件管理系统开发一个新网站。

我希望每个人都只注册为简单用户,然后如果他们选择运行事件用户,则可以创建组织并创建事件。

每个俱乐部都会有很多工作人员,他们应该能够登录并对活动进行更改。像会计,事件设置和条目,退款等。

所以我创建了一些像

这样的角色
clubOwner :- All permission
eventManager :- Tier 1
treasurer :- Tier 2

现在我应该如何构建员工角色和权限表,以便在club的未来创建者离开该组织时,他/她可以轻松地提名其他人clubOwner

同样的情况是,一个eventManager处理不同俱乐部的活动,或者他们也可以在自己的组织名称下运行活动。

到目前为止,我已经提出了以下结构

clubs
=========
id | clubName | clubOwner

club_staff
id | clubId | accountId | roleId

club_roles
id | name 

club_role_permission
id | roleId | permissionId

club_role_permission_details
id| name |

我不确定这是否能解决我clubOwner轻易提名其他用户和不同俱乐部中不同角色的同一用户的问题。

任何建议都将受到赞赏。

谢谢

1 个答案:

答案 0 :(得分:0)

虽然这个主题对许多开发者来说都是主观的,但我相信你是在正确的轨道上。

Permissions - 通常对应于View Club Staff,Add Club Staff,Remove Club Staff等最小的操作单元。普通俱乐部工作人员可以查看俱乐部内的其他工作人员,但不能添加删除俱乐部会员。

Roles - 是Permissions的一组,彼此相关。例如,ClubManagerRole必须拥有与管理俱乐部相关的所有权限,而ClubStaffRole只能查看成员。

Users - 是您的用户,就是这样。

UserRoles - 在UsersRoles之间具有多对多关系的联结表。换句话说,用户可以拥有多个角色,并且某个角色可以分配给多个用户。就像有很多俱乐部经理一样,但也许其中一些人也可以其他经理

Clubs - 是你的俱乐部。

ClubUsers(或工作人员) - 是俱乐部的用户。如果某个用户仅被允许成为一个俱乐部的员工,那么一对多将是一个合适的选择。否则,您可以再次使用联结表进行多对多关系,这样就可以将用户分配到多个俱乐部。

再次命名,也是主观的。您可以搜索Database practices/normalization以获得有关如何提出良好架构的基本知识。