我有一个“2人团队”模型和“项目”模型。我想创建一个连接表,这样我就可以在一个项目中将2个人组合在一起。但这个想法似乎很奇怪:
User
:id
Project
:id
Team
:user_id_1
:user_id_2
:project_id
这是个坏主意吗?我想也许只是创建一个Assignment
表,所以每个User
都有一个项目的赋值,但是没有一对用户的概念。
答案 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;