我正在为sqlite中的以下问题寻找最佳的数据库架构:
我有球员和球队,球员分配到球队(一个球员可以属于多个球队),我需要能够找到指定球员作为参数传球的球队。例如,如果第2队有1号,3号和4号队员,那么如果我查询队员1,3和4,我需要得到第2队。
此外,查询团队并获取其中的玩家列表会很有用。
目前我的架构是:
players: id(PK), name
teams: id(PK), name
players_in_teams: player_id(FK), team_id(FK)
但我怀疑这是最好的解决方案,因此需要帮助。
答案 0 :(得分:0)
您的架构很好。在中间有一个“交汇点”或“链接”表是建立多对多关系的标准。
您只需要考虑联结表的索引设计,以便最好地支持查询的“指示”(您已指明需要)。
{player_id, team_id}
上的索引来满足。{team_id, player_id}
上的索引来满足。换句话说,您需要在相同字段上使用两个复合索引,但字段顺序不同。其中一个索引,您可能已经隐式创建(当您创建主键时),因此您只需要显式创建剩余索引。