mysql db和php结构存储用户虚拟货币

mysql db和php结构存储用户虚拟货币,php,mysql,transactions,laravel,sms,Php,Mysql,Transactions,Laravel,Sms,我在我的国家拥有小型sms高级网关。现在我正在重建它,所以问题是如何组织数据库结构,以便能够从每个用户帐户中提取资金或添加资金(当进行新的sms交易时) 现在我有了一个结构,当我存储每一笔交易时,它都有货币价值,比如说1美元,而且每个用户都有自己的静态帐户,该帐户由用户id和其中的货币组织,如下所示: user_id money 1 15.55 流程是这样的: 交易完成了 我收到成功的费用 然后我向数据库中写入一个事务 并向用户钱包中添加如下货币:money=money+1 但我

我在我的国家拥有小型sms高级网关。现在我正在重建它,所以问题是如何组织数据库结构,以便能够从每个用户帐户中提取资金或添加资金(当进行新的sms交易时)

现在我有了一个结构,当我存储每一笔交易时,它都有货币价值,比如说1美元,而且每个用户都有自己的静态帐户,该帐户由用户id和其中的货币组织,如下所示:

user_id money

1       15.55
流程是这样的:

  • 交易完成了
  • 我收到成功的费用
  • 然后我向数据库中写入一个事务
  • 并向用户钱包中添加如下货币:money=money+1
  • 但我认为这种结构很糟糕,因为您需要复制所有数据,而且数据很可能无法同步。 在用户统计中,我将统计他的所有交易,当交易中的钱和钱包中的钱不同时,可能会出现这种情况。此外,从用户帐户中取款非常困难,因为我将它们存储在单独的表中,作为“取款标记”和期间,所以当我计算金额时,我将该期间与交易分开

    据我所知,银行没有固定的用户钱包,每天下班时都会清点所有的钱,并做特殊标记,但找不到任何相关信息

    所以,请给我指出数据库结构的正确方向,以便保存用户资金,这样就可以创建统计数据,动态提取和添加资金

    我正在使用PHP/laravel和mysql数据库

    编辑: 根据评论中的要求,我将发布旧代码结构: 进行事务处理时,我在数据库中写入一条记录:

    sms_记录:

    id = 12345
    transaction_id = 12345
    value = 1.50 ( $ )
    user_id = 10
    datetime = 05.12.2013
    ... other columns ...
    
    我还向用户钱包(用户帐户)收费

    用户可以按周期(一个月周期)查看从每月第一天到每月最后一天的统计数据。上个月(期间)每月提款

    提取时,我在数据库中插入一个特殊标记:

    期间标记:

    id = 12345
    payout_id => referes to bill table
    start_period = 01.12.2013
    end_period = 31.12.2013
    period_mark = 2013-12
    total = 1.50 ( $ )
    
    ( so it means that all transactions that was made from 01.12.2013 till 31.12.2013 are payed out to user )
    
    而且,当进行取款时,我会从静态用户帐户取款:

    UPDATE user_accounts SET money = money - '1.50' WHERE user_id = 12345.
    
    我认为这种结构是非常困难和错误的。使用这种结构,在静态用户帐户(用户钱包)中很容易出错,当您将钱包中的钱与统计数据(所有记录)进行比较时,可能会导致统计数据和静态用户帐户之间的金额不同


    如何更好地组织这种结构?

    您应该给出您编写的代码,这样SOER可以帮助您纠正错误并改进编码。根据您的要求,问题已更新为更详细的示例。
    UPDATE user_accounts SET money = money - '1.50' WHERE user_id = 12345.