MySQL - 创建多列表的正确方法是什么?

时间:2017-09-24 14:42:45

标签: mysql sql database

我需要创建一个club表,在将玩家挑选到某些人自己的team时用作过滤器。此类club应包含一些重要的列,例如idnametagfederation,但它也必须包含大约50 {{1}的信息因为它由如此多的玩家组成。

当然最简单(最长也最不可靠?)的方式 - 只需player_id个额外的50列,将它们命名为CREATE ... player1,但是我我想知道这种情况是否有更好的方法?也许将它存储为单个字符串(player50),然后在php中拆分成assosiative player1,player2,player3...数组?

让我知道你对此有何看法。

这是一个SQL小提琴,以防它似乎对任何人有用: http://sqlfiddle.com/#!9/b786b4

1 个答案:

答案 0 :(得分:4)

正确的方法是规范化数据,以便于使用。您应该使用两个不同的表:

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

在此方案下,播放器名单分布在中,而不是列。 SQL数据库可以在大量行上执行操作,而不是列。此外,这种方法可以轻松添加新玩家;我们只需要添加一个新行。根据您目前的方法,我们必须为超过50的每个新玩家添加一个新列,这不是一个非常灵活的设计。