2012-11-13 19 views
0

我正在設計我的第一個大數據庫,並且想檢查我是否可以提供表關係。關係表概念:檢查我的理解,請

我設計一個Web應用程序,其中

  1. users能起到gamesteams
  2. 每個game都有它categories
  3. users創建他們teamgame和選擇自己teamcategory
  4. game有它自己的子集categories已啓用
  5. 其實categories每場比賽略有不同。例如,slowpoke類別遊戲1遊戲2,但他們在不同的時間。

如何做,我希望存儲此:

  1. 有表usersteamsgamescategories,每個都有它足夠的數據域和INT primary_key小號
  2. user - team MN關係表
  3. game - category MN關係表,其中有時間c olumn
  4. 有在teamcategory_idgame_id外鍵列

我的常用查詢:

  1. 用戶 - >所有他/她的團隊,在他們的遊戲,類別
  2. 遊戲 - >所有類別
  3. 遊戲 - >所有團隊預計,與類別,與用戶
  4. ga我 - >所有用戶參與
  5. 團隊 - >這是遊戲,

我建議類別對我說:

  1. 做一個真正的類ID在category創建單獨的INT主索引 - game關係表並在團隊表中使用它
  2. 用team_id category_id game_id創建單獨的表並將它們全部設置爲連接的主索引
  3. 只需設置game_idteams表中作爲INDEX

問題是如果這件事情是確定的,有什麼建議可以接受?

+0

如果您覺得一切正常,請留下評論。 –

回答

1

的幾點思考:

  • 使用UNSIGNED INT主鍵,而不是INT
  • 你必須有一些TEAM - > GAME映射,對吧?

鑑於此,您似乎可以輕鬆處理您的「常見問題」。

你的「建議」試圖解決什麼問題?

+0

1.謝謝。這是值得一提的。是的。而我只是不確定,如何組織:無論是在球隊表中擁有外鍵還是爲團隊類別 - 遊戲關係設置特殊表格。 3.很高興聽到這樣的話:) 4.提出的建議只是爲了展示,我不確定哪些設計點。他們展示我沒有選擇的變體,但實際上並不知道爲什麼。 –

+0

如果一個遊戲只能有一個團隊,那麼你可以把team_id放在遊戲桌上。如果每場比賽有多個隊伍,則使用一個映射表,例如game_teams(game_id,team_id)。 –

+0

遊戲可以有多個團隊,但團隊只參與一個遊戲。但我明白了,謝謝:) –