我应该使用多对多关系还是通过一对多关系获取信息?

时间:2017-10-07 05:14:00

标签: sql database

所以我有一个类似战争的游戏,有三个表:用户,玩家和游戏。

  • 用户表包含电子邮件,用户名,密码哈希和其他特定于用户的信息。
  • 游戏表包含有关每个游戏的信息以及每个游戏世界的状态。
  • 播放器表包含有关游戏中每个玩家的信息:他们拥有多少单位等等。

我有以下关系:

  • 用户与玩家之间的一对多关系,因为每个用户可以在多个不同的游戏中,并同时控制多个不同的玩家。
  • 游戏与玩家之间的一对多关系,因为每个游戏中都有多个玩家。

因此,为了找到特定用户所在的游戏,更好的做法是:

  • 在用户和游戏之间建立多对多关系,或
  • 编写一个从用户那里获取玩家列表的函数,然后从玩家列中找到游戏ID?

(我正在使用SQLAlchemy和SQLite和Flask,但我认为这对这个问题不重要。)

attached image可以更好地解释一下:我应该在用户和游戏之间建立任何数据库连接吗?

我很乐意澄清任何事情,并感谢任何可能的帮助!很抱歉,如果这对StackOverflow来说是一个糟糕的问题。

1 个答案:

答案 0 :(得分:1)

当存在多对多关系时,比如gameUsers,一个常见的实现是创建一个中间表,包含每个表的id,在这种情况下是user_id的列表,game_id对表示每个用户的哪些游戏是在。

但是......你已经有了这样一张桌子,玩家桌子。所以我的方法是将播放器表视为该分辨率表。播放器表已经包含了每个用户所在的游戏,因此不需要第二个多对多游戏。