sqlite的最佳数据库模式和查询语句

时间:2013-12-27 15:52:38

标签: sql sqlite database-schema

我正在为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)

但我怀疑这是最好的解决方案,因此需要帮助。

1 个答案:

答案 0 :(得分:0)

您的架构很好。在中间有一个“交汇点”或“链接”表是建立多对多关系的标准。

您只需要考虑联结表的索引设计,以便最好地支持查询的“指示”(您已指明需要)。

  • 查询:“对于给定的玩家,找到团队”可以通过{player_id, team_id}上的索引来满足。
  • 查询:“对于给定的团队,找到玩家”可以通过{team_id, player_id}上的索引来满足。

换句话说,您需要在相同字段上使用两个复合索引,但字段顺序不同。其中一个索引,您可能已经隐式创建(当您创建主键时),因此您只需要显式创建剩余索引。