SQL 数据库设计:一个项目 - 多个角色

SQL DB Design: One project - Many roles

我正在努力思考当您有一个像这样的项目时,数据库模式会是什么样子:

> +----------------+  +----------+  
| Project          |  | roles    |  
+------------------+  +----------+  
| project_id       +  + role_id  +
| project_roles_id +  + role_name+
+------------------+  +----------+ 

所以我的问题是想弄清楚如何向项目添加多个角色。如果一个项目有一个捕获经理、一个项目经理和一个提案经理...我如何最好地在模式中创建它?

我会这样做:

::: projects :::
+------------+---------------------+
| project_id | project_name        |
+------------+---------------------+
| 1          | Scoping a project   |
+------------+---------------------+
| 2          | Building a bridge   |
+------------+---------------------+
| 3          | Building a SQL db   |
+------------+---------------------+

::: roles ::: 
+---------+-------------------+
| role_id | role_name         |
+---------+-------------------+
| 1       | Project Manager   |
+---------+-------------------+
| 2       | Civil Engineer    |
+---------+-------------------+
| 3       | Computer Engineer |
+---------+-------------------+

::: roles_to_projects :::
+------------+---------+
| project_id | role_id |
+------------+---------+
| 1          | 1       |
+------------+---------+
| 2          | 1       |
+------------+---------+
| 2          | 2       |
+------------+---------+
| 3          | 3       |
+------------+---------+

这会告诉您(以最少的重复)哪些项目需要哪些角色。