我正在尝试为事件管理系统开发一个新网站。
我希望每个人都只注册为简单用户,然后如果他们选择运行事件用户,则可以创建组织并创建事件。
每个俱乐部都会有很多工作人员,他们应该能够登录并对活动进行更改。像会计,事件设置和条目,退款等。
所以我创建了一些像
这样的角色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
轻易提名其他用户和不同俱乐部中不同角色的同一用户的问题。
任何建议都将受到赞赏。
谢谢
答案 0 :(得分:0)
虽然这个主题对许多开发者来说都是主观的,但我相信你是在正确的轨道上。
Permissions
- 通常对应于View Club Staff,Add Club Staff,Remove Club Staff等最小的操作单元。普通俱乐部工作人员可以查看俱乐部内的其他工作人员,但不能添加或删除俱乐部会员。
Roles
- 是Permissions
的一组,彼此相关。例如,ClubManagerRole
必须拥有与管理俱乐部相关的所有权限,而ClubStaffRole
只能查看成员。
Users
- 是您的用户,就是这样。
UserRoles
- 在Users
和Roles
之间具有多对多关系的联结表。换句话说,用户可以拥有多个角色,并且某个角色可以分配给多个用户。就像有很多俱乐部经理一样,但也许其中一些人也可以其他经理。
Clubs
- 是你的俱乐部。
ClubUsers
(或工作人员) - 是俱乐部的用户。如果某个用户仅被允许成为一个俱乐部的员工,那么一对多将是一个合适的选择。否则,您可以再次使用联结表进行多对多关系,这样就可以将用户分配到多个俱乐部。
再次命名,也是主观的。您可以搜索Database practices/normalization
以获得有关如何提出良好架构的基本知识。