2017-09-24 186 views
0

我需要創建一個club表格,這個表格可以在選擇玩家自己的team時作爲過濾器。這樣的club應該由一些重要的列組成,例如id,name,tag,federation,但它也必須包含約50個信息,因爲它由這樣的玩家數量組成。MySQL - 創建多列表的正確方法是什麼?

有當然最簡單的(最長和最不可靠也?)的方式來做到這一點 - 只要CREATE另外50列,他們的名字player1 ...... player50,但我不知道是否有任何更好的一種方法,例如情況呢?也許存儲它作爲單個字符串(player1,player2,player3...),然後分裂成數組協作id在PHP?

讓我知道你對它有什麼想法。

這裏有一個SQL小提琴的情況下,它似乎是沒有人在那裏有用: http://sqlfiddle.com/#!9/b786b4

回答

4

正確的方法是數據標準化的,因此會很容易的工作。您應該使用兩個不同的表:

Club(ID,Name,Tag,Federation) 
Club_Players(ID,Player_ID,Club_ID) 

在此計劃下,球員名冊跨,不列分佈。 SQL數據庫可以對大量行進行操作,而不是對列進行操作。此外,這種方法可以輕鬆添加新玩家;我們只需要添加一個新行。根據您目前的方法,我們必須爲每個超過50人的新玩家添加一個新列,這不是一個非常靈活的設計。

+0

謝謝你這個可愛的編輯:) @TimBiegeleisen – sagi

+0

我已經有一個表,包含進一步的球員數據爲他們每個人(也'club_ID'有),但過濾器認爲它會更好地有它俱樂部也。所以你建議一旦我想要顯示只有這個CLUBS的球員,我應該驗證所選俱樂部的身份證,然後在另一個表(「球員」)列'club_ID'中尋找這個ID吧? –

+0

事實上,表格之間的簡單連接可以讓你製作所有你想要的過濾器,並且這樣可以更快,更清晰地處理逗號分隔的字符串,或者維護一個60列的表格(可能會增長)。 – sagi

相關問題