我想在我一直致力于的自定义论坛上开发货币系统,但我不知道最好的方法。
我应该向用户表添加一个新的“gold”字段并使用 sql 语句递增吗?
id, user, pass, created_at, gold
逻辑:用户创建新的论坛帖子;更新用户表:gold + 1
或
我应该添加一个记录所有内容的事务表并执行 count where user = x
?
id, user_id, amount
1 3 1 (new forum post)
2 3 1 (new forum post)
3 12 -5 (item purchase)
4 3 -1 (deleted post)
5 9 1 (new forum post)
或者有更好的方法吗?
最佳答案
这很大程度上取决于您想用它做什么以及您喜欢哪种编程方式。
用一些事实来解决这个问题:
我希望论坛速度能够很快。为此,您应该只使用简单的
Select
。像SUM()
这样的函数需要更多的时间来执行。在小型系统中,这很可能不是问题,但 mysql-db 通常扩展性非常差,因此您应该从一开始就记住这一点。您肯定需要一种跟踪交易的方法。主要是为了能够检查实际发生的情况。即使您制定了一个出色的系统来处理您的黄金,您仍然希望不时地跟踪发生的情况。因此,存储交易会更方便。
冗余数据和事务同步可能是一个问题。每个交易系统都存在保持一切同步的问题。对于 MySQL,这并不是那么困难,因为在执行事务时可以锁定表。但冗余数据更令人痛苦。您必须确保在其他操作干扰之前同时更改各处数据。
在基本系统上,我会将数据存储在用户表中,并将所有事务作为日志保存在另一个表中。但切勿将其用于向用户输出。对于任何进一步的情况,这取决于您的系统需要什么。
关于php - 货币 SQL 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31418500/