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

问题描述:

我试图环绕一个数据库架构是什么样子,当你有一个项目像喜欢我的头:SQL数据库设计:一个项目 - 许多角色

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

所以我的问题是试图找出如何将多个角色添加到项目中。如果一个项目有一个捕捉管理者,一个项目经理和一个提案管理者......我如何在模式中最好地创建它?

+1

事实上,这个问题是'没有足够的信息'。 –

+0

您需要一个名为'ProjectRoles'的表,每个'project'有一行,每个'role'有一行。 –

+0

我相信你在问'多对多'的关系。如果是这种情况,解决方案通常使用第三个表格(在您的案例中为'Project_Role')。 –

我会做这样的事情:

::: 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  | 
+------------+---------+ 

这告诉你(以最小的重复),这要求做项目的角色。

+0

与Project_id和role_id是PK的和roles_to_projects都将FK?或者项目编号仍然是PK呢? –

+0

你是对的 - 这些ID是其普通表(项目,角色)中的PK和多对多映射表(roles_to_projects)中的FK。 –