Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更好的桌子设计_Mysql_Sql - Fatal编程技术网

Mysql 更好的桌子设计

Mysql 更好的桌子设计,mysql,sql,Mysql,Sql,我和其他一些人目前正在开发一款游戏,将使用MySQL保存角色。目前,我们有一个保存字符信息(用户名、密码、id、库存和物品存储箱)的表 我们正试图找到处理物品存储箱数据的最佳方法。现在,我们只将其存储在两列中。一个角色的存储箱可以容纳大约300个项目,每个项目的堆栈大小可以达到一个整数的最大值。我们在一列中保存项目id,在另一列中保存项目各自的金额 然而,我们一直在讨论这个设计,并一直在思考改进它的方法。现在,我们有以下想法: 仅为项目存储创建一个新表。在该表中,有一列用于前面提到的用户表中的

我和其他一些人目前正在开发一款游戏,将使用MySQL保存角色。目前,我们有一个保存字符信息(用户名、密码、id、库存和物品存储箱)的表

我们正试图找到处理物品存储箱数据的最佳方法。现在,我们只将其存储在两列中。一个角色的存储箱可以容纳大约300个项目,每个项目的堆栈大小可以达到一个整数的最大值。我们在一列中保存项目id,在另一列中保存项目各自的金额

然而,我们一直在讨论这个设计,并一直在思考改进它的方法。现在,我们有以下想法:

  • 仅为项目存储创建一个新表。在该表中,有一列用于前面提到的用户表中的玩家id号(主键),一列用于项目id号,另一列用于金额

  • 仅为项目存储创建一个新表。在该表中,有一列用于前面提到的用户表中的玩家id号(主键),一列用于所有id号和由分隔符分隔的金额

  • 别管它了


我们预计将创建和使用约10000个帐户,很有可能创建更多帐户。我们只是不确定什么是最佳性能,在这种情况下,1或2个表在可伸缩性方面的影响大于性能。更好的方法是使用3个表。1个用于玩家,1个用于物品,1个用于关系玩家物品

player
id   name  

item
id   amount description

player_item
id_player id_item

拥有这个额外的项目表将允许您拥有项目类型。您可以轻松地添加项目以及其他信息,例如描述,您只需设置一次金额。

我建议第一个选项。创建逗号分隔的字段会给您带来问题。。。一般来说,你应该有一个单独的实体表(用户和存储箱)。快速阅读将非常有用。