货币 SQL 数据结构
Currency SQL data structure
我想在我一直致力于开发的自定义论坛上开发一个货币系统,但我不知道最好的方法。
我应该向我的用户 table 添加一个新的 "gold" 字段并使用 sql 语句递增吗?
id, user, pass, created_at, gold
逻辑:用户创建新论坛post;更新用户 table:gold + 1
或
我是否应该添加记录所有内容的事务 table 并执行 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 并不难,因为 table 可以在您执行事务时被锁定。但是冗余数据更让人痛苦。您必须确保在其他操作干扰之前同时更改所有位置的数据。
在基本系统上,我会将数据存储在用户 table 中,并将所有事务作为日志保存在另一个 table 中。但切勿将其用于向用户输出。至于更进一步,这取决于您的系统需要什么。
我想在我一直致力于开发的自定义论坛上开发一个货币系统,但我不知道最好的方法。
我应该向我的用户 table 添加一个新的 "gold" 字段并使用 sql 语句递增吗?
id, user, pass, created_at, gold
逻辑:用户创建新论坛post;更新用户 table:gold + 1
或
我是否应该添加记录所有内容的事务 table 并执行 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 并不难,因为 table 可以在您执行事务时被锁定。但是冗余数据更让人痛苦。您必须确保在其他操作干扰之前同时更改所有位置的数据。
在基本系统上,我会将数据存储在用户 table 中,并将所有事务作为日志保存在另一个 table 中。但切勿将其用于向用户输出。至于更进一步,这取决于您的系统需要什么。