首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多人多人博弈MySQL表的设计

多人多人博弈MySQL表的设计
EN

Stack Overflow用户
提问于 2014-07-21 19:32:00
回答 2查看 1.7K关注 0票数 1

我在一个多人游戏中陷入困境,发现我正在用MySQL做一些皱眉的动作(我是一个数据库和PHP的初学者)。

我有一个包含所有相关信息的用户列表和一个包含他们大部分相关信息的游戏表格。我的问题是,我在动态地为每个游戏创建一个表,其中包含一个用户id、他们的分数和其他特定于游戏的数据。我知道这是个糟糕的做法,所以我想把它和我的游戏表中的一个条目合并起来,但是我不知道怎么做,因为有几个问题:

  • 每个游戏都可以有3-6个玩家,所以我想我必须假设最大限度,只是不填充条目?
  • 玩家应该能够进入多个游戏,所以只在users表中有一个"active_game“列是行不通的。

我一直在寻找资源,但我能找到的最好的方法是,在列中包含一个“伪数组”也是不好的做法。这意味着,如果我有一个"active_games“列,那么将数据作为当前所有活动game_ids的CSV并不是最佳实践。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-21 19:44:28

你需要三张桌子:

  1. 与用户相关的数据集的表。
  2. 与游戏相关的数据集的表。
  3. 为游戏分配用户的表(使用ID)。

原因

  • 你可以设定最大值。对应数据集中的游戏玩家数量。
  • 你不是每场比赛都需要新的桌子。
  • 你可以为每一个游戏分配每一个玩家。
  • 您的数据库结构是normalized
票数 2
EN

Stack Overflow用户

发布于 2014-07-21 19:45:21

这里有一种方法可以简单地安排数据库来保存这些信息:

表1:

代码语言:javascript
复制
PLAYERS(user_id)
Primary key: user_id

表2:

代码语言:javascript
复制
GAMES(game_id, game_type, etc.)
Primary key: game_id

表3:

代码语言:javascript
复制
PLAYER_GAME_DATA(user_id, game_id, score, active)
Primary key: user_id, game_id

所以每个玩家都有一个条目,每一个游戏都有一个游戏条目,你可以将两者和PLAYER_GAME_DATA链接起来,每个游戏中的每个玩家都有一个条目。user_id和game_id列在PLAYER_GAME_DATA中是指向前两个表的外键。

您可以在PLAYER_GAME_DATA中为每个玩家和每个游戏有多个条目,这是没有问题的。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24873188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档