在两个表中都有信息会更好吗?或者创建第三个表?

asl*_*lum 1 php mysql performance

我有一张桌子GAMES和另一张桌子PLAYERS.目前每个"游戏"都有一列,players_in_game但我没有任何回应PLAYERS.由于这个列是一个数组(以逗号分隔的玩家ID#列表),我认为让每个玩家的记录也包含他们所属游戏的列表可能会更好.另一方面,在两个单独的表中复制信息实际上可能需要更多的DB调用.

从视角来看,游戏中不可能有十几个玩家(通常是4-6是常态),但可能会有大量游戏.

有没有一种好方法可以找出哪种更有效?谢谢.

Mik*_*e B 5

规范化通常是一件好事.表中的逗号分隔列表表示表格迫切需要外键.如果您担心额外的查询,请查看JOINING

dbo.games
+----+----------+
| id |   name   |
+----+----------+
| 1  |    war   |
| 2  | invaders |
+----+----------+

dbo.players
+----+----------+---------+
| id |   name   | game_id |
+----+----------+---------+
| 1  |   john   |    1    |
| 2  |   mike   |    1    |
+----+----------+---------+

SELECT games.name, count(players.id) as total_players FROM games INNER JOIN players ON games.id = players.game_id GROUP BY games.name;

Result:
+-----------+--------------+
| name      |total_players |
+-----------+--------------+
| war       |       2      |
| invaders  |       0      |
+-----------+--------------+
Run Code Online (Sandbox Code Playgroud)

旁注:去Hokies :)