我需要创建一个club
表,在将玩家挑选到某些人自己的team
时用作过滤器。此类club
应包含一些重要的列,例如id
,name
,tag
,federation
,但它也必须包含大约50 {{1}的信息因为它由如此多的玩家组成。
当然最简单(最长也最不可靠?)的方式 - 只需player_id
个额外的50列,将它们命名为CREATE
... player1
,但是我我想知道这种情况是否有更好的方法?也许将它存储为单个字符串(player50
),然后在php中拆分成assosiative player1,player2,player3...
数组?
让我知道你对此有何看法。
这是一个SQL小提琴,以防它似乎对任何人有用: http://sqlfiddle.com/#!9/b786b4
答案 0 :(得分:4)
正确的方法是规范化数据,以便于使用。您应该使用两个不同的表:
Club(ID,Name,Tag,Federation)
Club_Players(ID,Player_ID,Club_ID)
在此方案下,播放器名单分布在行中,而不是列。 SQL数据库可以在大量行上执行操作,而不是列。此外,这种方法可以轻松添加新玩家;我们只需要添加一个新行。根据您目前的方法,我们必须为超过50的每个新玩家添加一个新列,这不是一个非常灵活的设计。