【问题标题】:How to create and structure a Virtual Credits System using PHP/MySQL如何使用 PHP/MySQL 创建和构建虚拟积分系统
【发布时间】:2012-05-28 01:45:05
【问题描述】:

在 PHP/MySQL 中构建虚拟积分系统的最佳方法是什么?

我显然需要为每笔交易(借方/贷方)提供一张表格。我想我需要该表中的以下列:

  • TransactionID(从 1 开始并自动递增的唯一事务 ID)

  • UserID(主用户表中的用户唯一 ID)

  • Type(赚取、购买、花费等)

  • ItemID(如果花费在某件物品上)

  • Amount(正或负)。

问题:

1) 我需要此表中的任何其他列吗?

2) 我是否需要任何其他表格来实现此目的?

例如,我是否需要另一个表来跟踪每个用户的总数?还是我会简单地将每个用户的总数计算为他们所有交易的总和?

起初,这个信用系统将纯粹是“玩钱”,但我确实希望将来添加一个“购买信用”选项,所以也许我应该为 3rd 方支付处理器 Unique Transaction ID 添加一列?或者我应该为购买的积分创建一个单独的表,然后通过我的脚本将两者联系在一起(例如,总积分 = 获得的积分 + 购买的积分 - 已用的积分)?

除了回答我上面的问题之外,我将不胜感激任何和所有的见解和想法,包括指向如何解决这个问题的具体文章的链接,因为我以前从未编写过这样的东西。

谢谢!

【问题讨论】:

    标签: php mysql payment-gateway payment credits


    【解决方案1】:

    一些笔记。

    我认为,如果您想建立一个处理财务的可靠系统,那么使用金融界的一些基本概念是有意义的。我不想说你必须完全实现所有的会计功能,但我觉得很多事情都是合理的。

    首先,金融交易涉及将钱从一个账户转移到另一个账户,所以我会使用account_id而不是account_id。每个用户可能有多个帐户,每个帐户都有一个类型(查找)和货币。另外,我会避免使用“用户”一词来支持“派对”(派对角色关系模型)。

    其次,总是至少涉及 2 方:资金从一个帐户转移到另一个帐户。购买物品时,个人账户余额减少,组织账户余额增加。

    另外,我不会使用 item_id,而是使用类似 event_id 的东西。每笔交易都与一个业务事件相关联。事件是系统中可能发生的各种事件的公共父表。每个Event 的详细信息表都将保存特定于事件类型的信息。例如,你可以有purchase_eventdeposit_event等。

    因为transaction 表是许多(可能数千)插入的主题,所以我不会在您每次需要帐户余额时查询它。在account 表中保持合并余额是有意义的。

    我希望这是有道理的。

    【讨论】:

      【解决方案2】:

      除非你真的知道系统应该做什么,否则很难说数据库的架构。不过我还是试试看。

      我认为在一张表中存储这么多信息并不是一个好主意。

      这样我会做得更好 - transactions(id, user_id, amount, timestamp),此表包含有关每次付款的最少信息。

      其他所有内容都分开保存,例如transactions_types(transaction_id, type)transactions_items(transaction_id, item)

      关于学分。如果购买的货币相同,您只需再添加一种交易类型,如有必要,表格为transactions_psid(transaction_id, psid)

      如果货币不同,则完全取决于系统的负载。只有一个具有唯一transaction_id的表是好的,直到它变得太多记录。

      【讨论】:

        猜你喜欢
        • 2011-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 2019-08-17
        • 2015-08-25
        相关资源
        最近更新 更多