为在线php游戏构建数据库。如何在mySQL数据库中查找两个人之间的游戏

为在线php游戏构建数据库。如何在mySQL数据库中查找两个人之间的游戏,php,mysql,database,database-design,Php,Mysql,Database,Database Design,我有一个用PHP编写的游戏。就我的问题而言,我们可以将我的游戏与iPhone上的“与朋友的话”进行比较,对于那些不熟悉该游戏的人来说,它是一款在线/移动拼字游戏。游戏包括3个主要步骤: 前两个用户决定开始游戏 第二,在数据库表“DATA”中创建一个新行 保存两个用户的游戏数据 第三,也是最后一点,这两个人被重新定位到一个新的页面,在那里他们玩 比赛。当游戏结束时,“数据”表中的行将显示 已删除和赢/输将被保存并反映在“用户”表中。 就像与朋友聊天一样,一个用户可以随时拥有多个“开放游戏” 片刻

我有一个用PHP编写的游戏。就我的问题而言,我们可以将我的游戏与iPhone上的“与朋友的话”进行比较,对于那些不熟悉该游戏的人来说,它是一款在线/移动拼字游戏。游戏包括3个主要步骤:

  • 前两个用户决定开始游戏
  • 第二,在数据库表“DATA”中创建一个新行 保存两个用户的游戏数据
  • 第三,也是最后一点,这两个人被重新定位到一个新的页面,在那里他们玩 比赛。当游戏结束时,“数据”表中的行将显示 已删除和赢/输将被保存并反映在“用户”表中。 就像与朋友聊天一样,一个用户可以随时拥有多个“开放游戏” 片刻。这意味着他们不必在一场比赛之前完成另一场比赛 开始
背景:在MySQL数据库中,我将至少有两个表,一个用于标记为:USER的通用玩家数据,另一个用于保存当前正在进行的游戏的统计数据,称为:data。每个用户在创建帐户时都将获得一个唯一的9位ID主键

我需要一些关于实现类似目标的最佳实践的建议。我有一些想法,在我看来相当原始,它们会奏效,但我想用一些更专业的

我的一个想法是取两个用户ID中较低的一个,将其连接到较大的一个的开头,并将其保存在数据库中。举个例子。我们有两个用户:亚当和艾伦。他们的ID分别是
123456789
223456789
。这两个人开始一个游戏,在数据表中生成一个新行,
GAMEID
等于
1234567892456789
。他们玩到一半就退出了。第二天,他们试图开始一场新的比赛。数据库检查哪个用户的ID较小,并将它们连接在一起,以检查游戏记录是否已经存在。它注意到
1234567898923456789
游戏已经开始,它没有创建一个全新的游戏,而是将他们带回已经进行的游戏


我觉得这肯定是过火了,应该有一个更简单的方法来解决这个问题。请给我一些建议或提示。

一个简单的
用户游戏
表格,您可以将游戏与用户关联起来。您甚至可以为active添加标志,或为last active at添加日期时间

CREATE TABLE user_games (
  user_id INT NOT NULL,
  game_id INT NOT NULL,
  UNIQUE KEY index_user_games_on_user_game (user_id, game_id),
  KEY index_user_games_on_game (game_id)
);
不要编造无法正确索引的键,从而使这一点过于复杂。索引可以防止您的表变成无法查询的混乱。可以通过
user\u id
查询此表以查找他们的游戏列表,通过
game\u id
查找游戏中的用户,或同时通过这两种方式查找游戏中是否有用户