SQL数据库设计:一个项目 - 许多角色
问题描述:
我试图环绕一个数据库架构是什么样子,当你有一个项目像喜欢我的头:SQL数据库设计:一个项目 - 许多角色
> +----------------+ +----------+
| 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 |
+------------+---------+
这告诉你(以最小的重复),这要求做项目的角色。
+0
与Project_id和role_id是PK的和roles_to_projects都将FK?或者项目编号仍然是PK呢? –
+0
你是对的 - 这些ID是其普通表(项目,角色)中的PK和多对多映射表(roles_to_projects)中的FK。 –
事实上,这个问题是'没有足够的信息'。 –
您需要一个名为'ProjectRoles'的表,每个'project'有一行,每个'role'有一行。 –
我相信你在问'多对多'的关系。如果是这种情况,解决方案通常使用第三个表格(在您的案例中为'Project_Role')。 –