1

我正在开发一款游戏应用程序,并且正在争论哪个用户是玩游戏的所有者的正确方法。正确处理匿名用户和注册用户的方式

您可以作为只需提供您的位置或作为注册用户的匿名来宾进行游戏。所有用户都存储在数据库中。一旦你完成了一个游戏,一个数据库条目将与你的分数一起添加,我也想记录谁玩过这个游戏。

表如下所示:

USERS(ID | USER_NAME |密码|国家) 游戏(ID | user_ID的|分数)

截至目前我只是存储用户提供一个参考(ID)在GAMES(user_id)中,我应该如何处理匿名用户?

一种方法是将每个匿名用户存储为ID和位置,然后向名为anonymous_id的GAMES添加一列。但是,根据玩家是否注册,user_id或anonymous_id中的每一个都必须为NULL。

另一种方法是将所有匿名用户添加到USER表,并允许user_name和password为空。

有没有更好的方法来处理这个问题?

任何意见赞赏。

+0

您是否将“国家”数据存储在某处或者它只是纯文本? – Nicolas

+0

是的,国家被存储在另一个表中,这是由USERS(国家) – DrDumbom

回答

1

如果你在别处存储你的国家,我不会在每个匿名用户的User表中添加一个出现。因为对于每个匿名用户,您将有2个插入行(1个用户,1个游戏)。

相反,你可以有

GAMES (id | user_id | score | country_id) 

USER_ID和COUNTRY_ID都希望能为空的外键。

注册用户结束游戏时,存储user_id。你可以离开country_id为null,因为它是一个重复数据的情况。 当一个匿名用户结束游戏时,您只需将游戏中的分数和country_id存储起来。

您可以通过在Games中过滤user_id is null来识别匿名用户,并且仍然可以按用户和国家进行排名。