Schema

遊戲網站:架構設計

  • June 8, 2017

我想為 Magic the Gathering 製作一個遊戲網站來報告活動結果和管理使用者套牌。

這是我到目前為止所擁有的。

賽事是一種錦標賽,玩家在錦標賽中競爭。玩家有套牌,類似於一副牌(在本例中為 60 張萬智牌)。

因此,Decks 表有這些列,其中包含與 Events 和 Players 表相關的外部 Id:

  • event_id
  • player_id

但是,我也希望使用者擁有 Decks。使用者不同於玩家。使用者登錄網站。然後,他們創建和編輯套牌。

我應該只創建一個 Decks 表還是創建一個像 UserDecks 這樣的第二個 Decks 表?

如果我有一個 Decks 表,它將包含以下列:

  • event_id
  • player_id
  • 使用者身份

但是,事件 Decks 不會有 user_ids,使用者 Decks 不會有 event_ids 或 player_ids。可以在具有外國 ID 的列中使用 null 嗎?

我可以只為事件牌組做一個 Decks 表,為使用者牌組做一個 UserDecks 表,但是除了一些具有外國 ID 的不同列之外,擁有兩個相同的 Decks 表似乎不正確?

據我所知,您的基本設計不應該比我在下圖中繪製的複雜:

在此處輸入圖像描述

這假設您只有一個實體代表一個人(“玩家”,但也可以是“使用者”),套牌必須屬於一個人,並且多個人可以作為參與者進入事件。我假設他們會帶上自己的套牌,而賽事不能擁有套牌。

您在解釋中缺少範例。您的範例並不常見。

例如,使用者登錄並創建 2 個卡片組,它看起來像

UserID  DeckID
1   1
1   2

問題1:玩家會使用使用者創建的套牌還是他們將創建自己的套牌?玩家和使用者之間共享什麼樣的關係。

問題2:就像撲克牌一樣,魔法卡有沒有限制,或者它可以是任何東西。

PlayerID    DeckID  EventID
1   3   1
1   5   1

他們都將在單獨的表中。雖然用範例解釋以及會出現什麼查詢。

我認為如果它們在同一個表中,查詢會變得複雜。也只是因為只有 DeckID 在使用者和玩家之間共享並不意味著他們會在同一個地方。

引用自:https://dba.stackexchange.com/questions/175611