php - 货币 SQL 数据结构

标签 php mysql sql laravel currency

我想在我一直致力于的自定义论坛上开发货币系统,但我不知道最好的方法。

我应该向用户表添加一个新的“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/

相关文章:

php - Mysql查询计数某些值

mysql - 搜索以排除 MySQL 中的 html 标签

c# - 使用 Parameters.AddWithValue 将两个 gridviews 中的值插入到一个 sql 列中

sql - 什么时候使用复合索引?

php - 几秒到几分钟,几天到几周

php - 使用 PDO 登录后显示个人资料页面

php - 在 SQL 中标记结果

php - 在 tag.php 模板上显示帖子?

sql - 如何强制 SQL Server 登录 nolock 提示

mysql - 尝试将范围选定的数据从一个数据库复制到另一个数据库;我可以加快这个查询吗?