mysql:处理用户和团队关系的正确方法?
这里是mysql数据库的新版本。我有一张用户表和一张团队表。一个用户可以在多个团队中。存储用户与其所在团队之间关系的最佳方式是什么 假设有数百个团队,每个团队由大约20个用户组成,平均一个用户可以加入大约10个团队,还请注意,用户可以随时更换团队 我可以考虑向我的TEAMS表中添加一列,该列包含一个用户ID列表,但随后我必须向我的USERS表中添加一列,该列包含一个团队ID列表。虽然这可能是一个解决方案,但对于更新成员资格来说似乎很麻烦。似乎有更聪明的方法来处理这些信息。。。要不要换张桌子?想法 谢谢 ps,存储列表的最佳字段类型是什么,最好的分隔方式是什么 存储列表的最佳字段类型是什么?最好的分隔方式是什么 尝试在一列中存储多个值通常是一个非常糟糕的主意。这是地狱般的过程,你永远不会得到适当的引用完整性 你真正要找的是一份工作。例如:mysql:处理用户和团队关系的正确方法?,mysql,database,Mysql,Database,这里是mysql数据库的新版本。我有一张用户表和一张团队表。一个用户可以在多个团队中。存储用户与其所在团队之间关系的最佳方式是什么 假设有数百个团队,每个团队由大约20个用户组成,平均一个用户可以加入大约10个团队,还请注意,用户可以随时更换团队 我可以考虑向我的TEAMS表中添加一列,该列包含一个用户ID列表,但随后我必须向我的USERS表中添加一列,该列包含一个团队ID列表。虽然这可能是一个解决方案,但对于更新成员资格来说似乎很麻烦。似乎有更聪明的方法来处理这些信息。。。要不要换张桌子?想法
CREATE TABLE user_teams (
user_id INT NOT NULL FOREIGN KEY REFERENCES users(id),
team_id INT NOT NULL FOREIGN KEY REFERENCES teams(id),
PRIMARY KEY (user_id, team_id)
);
因此,一个用户可以有任意数量的团队ID,一个团队可以有任意数量的用户ID。但是主键确保同一用户和团队没有重复的映射
然后,要为用户选择团队详细信息,您可以说:
SELECT teams.*
FROM user_teams
JOIN teams ON teams.id= user_teams.team_id
WHERE user_teams.user_id= (...some id...);
存储列表的最佳字段类型是什么?最好的分隔方式是什么
尝试在一列中存储多个值通常是一个非常糟糕的主意。这是地狱般的过程,你永远不会得到适当的引用完整性
你真正要找的是一份工作。例如:
CREATE TABLE user_teams (
user_id INT NOT NULL FOREIGN KEY REFERENCES users(id),
team_id INT NOT NULL FOREIGN KEY REFERENCES teams(id),
PRIMARY KEY (user_id, team_id)
);
因此,一个用户可以有任意数量的团队ID,一个团队可以有任意数量的用户ID。但是主键确保同一用户和团队没有重复的映射
然后,要为用户选择团队详细信息,您可以说:
SELECT teams.*
FROM user_teams
JOIN teams ON teams.id= user_teams.team_id
WHERE user_teams.user_id= (...some id...);
完美的这正是我想要的。谢谢。@Ubersoldat:因为它可以阻止重复的用户id/团队id组合,但仍然允许不同团队id的用户id的不同组合,反之亦然。完美。这正是我想要的。谢谢。@Ubersoldat:因为它可以阻止重复的用户id/团队id组合,但仍然允许不同团队id的不同用户id组合,反之亦然。