基于项目角色的数据库设计
Database design for project-based roles
假设我有一个包含以下实体的项目:
- 用户
- 项目
因此,用户与项目[相关=51=] 通过多对多关系。所以我们假设连接 table 被称为 user_projects 其中包含 user_id 和 project_id.
所以,问题是用户根据他们的角色具有不同的访问权限(权限)(所以我需要以某种方式实现 Role entity into my database schema) 在项目中,我对如何在我的数据库中实现它感到有点困惑。请记住,用户在注册时并没有绑定到一个角色,角色是在创建项目时决定的。
我的思路是这样的。我想 Users 和 Projects 都与Role 作为多对多关系,对吗?所以两者都需要自己的连接 table,比如 user_roles 和 project_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
中的每个条目不仅关联了用户和项目,而且还分配了项目中的角色。
假设我有一个包含以下实体的项目:
- 用户
- 项目
因此,用户与项目[相关=51=] 通过多对多关系。所以我们假设连接 table 被称为 user_projects 其中包含 user_id 和 project_id.
所以,问题是用户根据他们的角色具有不同的访问权限(权限)(所以我需要以某种方式实现 Role entity into my database schema) 在项目中,我对如何在我的数据库中实现它感到有点困惑。请记住,用户在注册时并没有绑定到一个角色,角色是在创建项目时决定的。
我的思路是这样的。我想 Users 和 Projects 都与Role 作为多对多关系,对吗?所以两者都需要自己的连接 table,比如 user_roles 和 project_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
中的每个条目不仅关联了用户和项目,而且还分配了项目中的角色。