我正在使用PHP编写游戏。出于我的问题的目的,我们可以将我的游戏与iPhone上的“Words with Friends”进行比较,对于那些不熟悉游戏的人来说,这是一个在线/移动拼字游戏。游戏包括3个主要步骤:
背景:我将至少有两个表,一个用于标记为USER的通用播放器数据,另一个用于保持当前正在进行的游戏统计数据:DATA。每个用户在创建帐户时都会获得一个唯一的9位ID主键。
我需要一些关于用于完成这样的事情的最佳实践的建议。我有一些想法,在我看来相当原始,他们会工作,但我想使用更专业的东西。
我的一个想法是获取两个用户ID的较低数量,并将其连接到较大的ID的开头,并将其保存在数据库中。一个例子。我们有2位用户:adam和alan。他们的ID分别为123456789
和223456789
。这两个开始一个游戏,在DATA表中创建一个GAMEID
等于123456789223456789
的新行。他们在比赛中途进行比赛并退出比赛。第二天他们尝试开始新游戏。数据库检查哪个用户具有较小的ID并将它们连接在一起以检查游戏记录是否已存在。它注意到已经开始的123456789223456789
游戏,而不是创建一个全新的游戏,它将它们带回到他们正在进行的游戏中。
我觉得这肯定是过度杀戮,应该有一个更容易解决这个问题的方法。请欣赏,建议或提示。
答案 0 :(得分:2)
将游戏与用户关联起来的简单user_games
表就足够了。您甚至可以为活动标记或最后一个活动的日期时间添加。
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_id
可以查询此表格以查找他们的游戏列表,game_id
可以查找游戏中的用户,或者同时查看用户是否存在于游戏中。