Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql:处理用户和团队关系的正确方法?_Mysql_Database - Fatal编程技术网

mysql:处理用户和团队关系的正确方法?

mysql:处理用户和团队关系的正确方法?,mysql,database,Mysql,Database,这里是mysql数据库的新版本。我有一张用户表和一张团队表。一个用户可以在多个团队中。存储用户与其所在团队之间关系的最佳方式是什么 假设有数百个团队,每个团队由大约20个用户组成,平均一个用户可以加入大约10个团队,还请注意,用户可以随时更换团队 我可以考虑向我的TEAMS表中添加一列,该列包含一个用户ID列表,但随后我必须向我的USERS表中添加一列,该列包含一个团队ID列表。虽然这可能是一个解决方案,但对于更新成员资格来说似乎很麻烦。似乎有更聪明的方法来处理这些信息。。。要不要换张桌子?想法

这里是mysql数据库的新版本。我有一张用户表和一张团队表。一个用户可以在多个团队中。存储用户与其所在团队之间关系的最佳方式是什么

假设有数百个团队,每个团队由大约20个用户组成,平均一个用户可以加入大约10个团队,还请注意,用户可以随时更换团队

我可以考虑向我的TEAMS表中添加一列,该列包含一个用户ID列表,但随后我必须向我的USERS表中添加一列,该列包含一个团队ID列表。虽然这可能是一个解决方案,但对于更新成员资格来说似乎很麻烦。似乎有更聪明的方法来处理这些信息。。。要不要换张桌子?想法

谢谢

ps,存储列表的最佳字段类型是什么,最好的分隔方式是什么

存储列表的最佳字段类型是什么?最好的分隔方式是什么

尝试在一列中存储多个值通常是一个非常糟糕的主意。这是地狱般的过程,你永远不会得到适当的引用完整性

你真正要找的是一份工作。例如:

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组合,反之亦然。