将包含2个FK的表连接到一个表

时间:2017-03-12 20:20:57

标签: mysql sql database postgresql

我有一个“2人团队”模型和“项目”模型。我想创建一个连接表,这样我就可以在一个项目中将2个人组合在一起。但这个想法似乎很奇怪:

User
:id

Project
:id

Team
:user_id_1
:user_id_2
:project_id

这是个坏主意吗?我想也许只是创建一个Assignment表,所以每个User都有一个项目的赋值,但是没有一对用户的概念。

1 个答案:

答案 0 :(得分:1)

您可以使用以下架构

User
:id

Project
:id

Assignment
:user_id
:project_id
(create 1 row for each user in the project)

示例,查看项目的用户:

SELECT u.*
FROM User u
JOIN Assignment a ON a.user_id = u.id
JOIN Project p ON p.id = a.project_id
WHERE p.id = xxx;

在项目中找到用户的队友:

SELECT u.*
FROM User u
JOIN Assignment a ON a.user_id = u.id
JOIN Project p ON p.id = a.project_id
WHERE p.id = xxx AND u.id != yyy;