2017-05-26 7 views
1

私はあなたのようなプロジェクトしている時にDBスキーマがどのように見えるだろうか周り私の頭をラップしようとしている。だから私の問題を把握するSQL DB設計:ワンプロジェクト - 多くの役割

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

をしようとしていますプロジェクトに複数のロールを追加する方法。プロジェクトにキャプチャマネージャ、プロジェクトマネージャ、およびプロポーザルマネージャがある場合、そのスキーマ内でどのように作成するのが最適でしょうか?

+1

実際、問題は「十分ではない情報」です。 –

+0

'ProjectRoles'のようなテーブルが必要です。このテーブルは' project'ごとに1行、そのプロジェクトの 'role'には1行あります。 –

+0

私はあなたが「多対多」の関係について質問していると信じています。これが当てはまる場合、解決策は通常3番目のテーブル(あなたの場合は '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ですか?あるいは、プロジェクトIDはまだPKになっていますか? –

+0

正しいです - IDは通常のテーブル(プロジェクト、ロール)のPKと多対多マッピングテーブル(roles_to_projects)のFKです。 –

関連する問題