2017-05-26 51 views
1

我試圖環繞一個數據庫架構是什麼樣子,當你有一個項目像喜歡我的頭:SQL數據庫設計:一個項目 - 許多角色

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

所以我的問題是試圖找出如何將多個角色添加到項目中。如果一個項目有一個捕捉管理者,一個項目經理和一個提案管理者......我如何在模式中最好地創建它?

+1

事實上,這個問題是'沒有足夠的信息'。 –

+0

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

+0

我相信你在問'多對多'的關係。如果是這種情況,解決方案通常使用第三個表格(在您的案例中爲'Project_Role')。 –

回答

0

我會做這樣的事情:

::: 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。 –