gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:46:07 24 4
gpt4 key购买 nike

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

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

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

所以我创建了几个像下面这样的角色

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 容易提名其他用户和同一用户在不同俱乐部中担任不同角色的问题。

任何建议将不胜感激。

谢谢

最佳答案

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

权限 - 通常对应于最小的操作单元,例如查看俱乐部员工、添加俱乐部员工、删除俱乐部员工等。普通俱乐部员工可以查看他们俱乐部内的其他员工,但不能添加删除俱乐部成员。

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

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

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

俱乐部 - 是你的俱乐部。

ClubUsers(或员工)- 是俱乐部的用户。如果允许某个用户只能成为一个俱乐部的员工,那么一对多将是一个合适的选择。否则,您可以再次使用联结表来处理多对多关系,这将允许将用户分配到多个俱乐部。

同样,命名法也是主观的。您可以搜索 Database practices/normalization 以获得关于如何提出良好模式的基本概念。

关于俱乐部和员工数据库的 MySQL 数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com