2017-09-24 96 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

相关问题