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



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

  • 用户
  • 项目

因此,用户通过多对多关系与项目相关。因此,让我们假设联接表被称为user_projects,它包含user_idproject_id

因此,问题是,用户在项目中根据其角色拥有不同的访问权限(权限((因此我需要在数据库模式中以某种方式实现role实体(,我有点困惑如何在数据库中实现这一点。请记住,用户在注册期间不绑定到单个角色,该角色是在创建项目时决定的。

我的思路如下。我想用户项目都会以多对多的关系与角色相关,对吗?因此,两者都需要自己的联接表,类似于user_rolesproject_roles。但这对我来说似乎有点奇怪,我想可以以某种方式更优雅地处理。

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

非常感谢!

扩展您拥有的user_projects表:

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中的每个条目不仅与用户和项目相关,而且还分配了项目中的角色。

最新更新