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

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

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

所以我创建了几个角色,例如

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问题,轻松地提名其他用户和在不同俱乐部中具有不同角色的同一用户。

任何建议将不胜感激。

谢谢

最佳答案

尽管此主题是许多开发人员的主题,但我相信您的方向正确。

Permissions-通常对应于最小的动作单位,例如“查看俱乐部职员”,“添加俱乐部职员”,“删除俱乐部职员”等等。普通俱乐部职员可以查看其俱乐部内的其他职员,但不能添加或删除俱乐部成员。

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

Users-是您的用户,仅此而已。

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

Clubs-是您的俱乐部。

ClubUsers(或职员)-是俱乐部的用户。如果只允许某个用户成为一个俱乐部的职员,则一对多将是一个合适的选择。否则,您可以再次使用联结表进行多对多关系,从而可以将用户分配到许多俱乐部。

术语又是主观的。您可以搜索Database practices/normalization,以获得有关如何提出一个好的模式的基本想法。

10-02 08:47