我正在尝试开发一个用于事件管理系统的新网站。
我希望每个人仅以简单用户身份注册,然后如果他们选择运行事件用户,则可以创建组织并创建事件。
每个俱乐部都会有很多工作人员,他们应该可以登录并对该事件进行更改。如会计,活动设置和条目,退款等。
所以我创建了几个角色,例如
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
-在Users
和Roles
之间具有多对多关系的联结表。换句话说,一个用户可以具有许多角色,并且可以将某个角色分配给许多用户。就像有许多俱乐部经理一样,但也许其中一些也可以是其他经理。Clubs
-是您的俱乐部。ClubUsers
(或职员)-是俱乐部的用户。如果只允许某个用户成为一个俱乐部的职员,则一对多将是一个合适的选择。否则,您可以再次使用联结表进行多对多关系,从而可以将用户分配到许多俱乐部。
术语又是主观的。您可以搜索Database practices/normalization
,以获得有关如何提出一个好的模式的基本想法。