基于项目角色的数据库设计

Database design for project-based roles

假设我有一个包含以下实体的项目:

因此,用户项目[相关=51=] 通过多对多关系。所以我们假设连接 table 被称为 user_projects 其中包含 user_idproject_id.

所以,问题是用户根据他们的角色具有不同的访问权限(权限)(所以我需要以某种方式实现 Role entity into my database schema) 在项目中,我对如何在我的数据库中实现它感到有点困惑。请记住,用户在注册时并没有绑定到一个角色,角色是在创建项目时决定的。

我的思路是这样的。我想 UsersProjects 都与Role 作为多对多关系,对吗?所以两者都需要自己的连接 table,比如 user_rolesproject_roles。但这对我来说似乎有点奇怪,我想可以以某种方式更优雅地处理。

任何建议将不胜感激,如果答案显而易见,我深表歉意,我是数据库设计的新手。

非常感谢!

扩展您拥有的 user_projects table:

CREATE TABLE roles (
   role_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
   role_description text NOT NULL
);

CREATE TABLE user_projects (
   user_id bigint REFERENCES users NOT NULL,
   project_id bigint REFERENCES projects NOT NULL,
   PRIMARY KEY (project_id, user_id),
   role_id bigint REFERENCES roles  NOT NULL
);

那么user_projects中的每个条目不仅关联了用户和项目,而且还分配了项目中的角色。