具有多个余额的用户的数据库设计

时间:2018-05-23 01:08:08

标签: mysql

我有以下情况:(MYSQL) 注册游戏的每个用户都可以拥有多达100种不同货币的余额。我本来打算只为每个用户创建一个包含~105列的用户表(userid,name,email,pw,currency1,currency2,...,currency100)但它看起来很傻。还有另一种方法是将每个单独的余额与货币ID和用户ID放在一个大型平衡表中,但如果我要扩大规模,这似乎有点傻。在用户上存储100个数据点的最佳方法是什么,同时考虑效率和可扩展性

1 个答案:

答案 0 :(得分:0)

这是像MySQL这样的关系型数据库的问题。它是一个经典的"一对多"拥有多种货币的每个用户的关系。从技术上讲,将货币放在一个单独的表格中并不愚蠢。

另一方面,这实际上是一个多对多的"关系,因为许多货币可以拥有许多所有者。在这种情况下,您需要第三个表格,AKA a"联结表",这相当于用户银行帐户。

设置表的最有效方法是使用每个表的主键的ID号。在检索数据时,服务器处理数字ID更容易,更快。

联结表的主键实际上可能是一个"复合键"使用两个其他表中的两个主键。但是,在这种情况下制作唯一的银行帐户ID可能会更好,因为您希望每个银行交易帐户中都有许多货币ID。

设计数据库具有挑战性,因此可能有助于绘制所有不同数据类别的可视化图表以及它们之间的相互关系。用户可能希望访问游戏中的平衡历史记录和银行对帐单以及现实生活。货币应根据供求情况改变价值,并可根据汇率进行互换。

Source