2017-10-07 67 views
2

所以我有一個類似戰爭的遊戲有三個表格:用戶,玩家和遊戲。我應該使用多對多關係還是通過一對多關係獲取信息?

  • 用戶表包含電子郵件,用戶名,密碼哈希和其他用戶特定的信息。
  • 遊戲桌包含有關每個遊戲的信息和每個遊戲世界的狀態。
  • 玩家表包含在遊戲中每個玩家的信息:他們有多少單位等

我有以下關係:

  • 用戶之間的一個一對多的關係和玩家,因爲每個用戶可以在幾個不同的遊戲中,並同時控制幾個不同的玩家。
  • 遊戲和玩家之間的一對多關係,因爲每個遊戲都有多個玩家。

所以爲了找到遊戲特定用戶是,是更好的做法之一:

  • 做一個多到許多用戶和遊戲,或
  • 關係編寫一個函數,獲取用戶的玩家列表,然後從玩家列中找到遊戲ID?

(我使用SQLAlchemy的使用SQLite和瓶,但我不認爲這是對這個問題很重要。)

attached image可以更好地解釋:我應該有用戶之間的任何數據庫連接遊戲?

我很樂意澄清任何事情,並感謝任何可能的幫助!對不起,如果這是一個StackOverflow的問題。

回答

1

當存在多對多關係時,比如說gameUsers,一個常見的實現是創建一箇中間表,其中包含每個表的id,在這種情況下是user_id,game_id對的列表,每個對錶示每個遊戲用戶在。

但是......你已經有了這樣一張表,玩家表。所以我的方法是將玩家表視爲分辨率表。玩家表已經包含了每個用戶所在的遊戲,所以第二個多對多並不是真正需要的。