在PHP/MySQL中构建虚拟学分系统的最佳方法是什么?
显然,每次交易我都需要一张桌子(借方/贷方)。我想我需要该表中的下列列:
TransactionID (从1开始使用Auto-Increment)UserID的唯一事务ID )(用户来自主要用户的唯一ID table)Type (已获得、购买、使用、etc.)ItemID )(如果用于item)Amount (正或负))。问题:
1)我需要这个表中的其他列吗?
2)为此目的,我还需要其他表格吗?
例如,我是否需要另一个表来跟踪每个用户的总数?或者,我会简单地计算每个用户的总数作为他们所有事务的总和吗?
首先,这个信用系统将是纯粹的“玩钱”,但我确实期望在未来增加一个“购买信用”选项,所以也许我应该为第三方支付处理器的唯一交易ID添加一个列?或者我应该为购买的信贷创建一个单独的表,然后通过我的脚本将两者结合在一起(例如,总信贷=已获得的信贷+购买的信贷-已使用的信贷)?
除了回答上面的问题外,我还会感谢任何和所有的见解和想法,包括关于如何进行这方面的具体文章的链接,因为我以前从未编写过类似的程序。
谢谢!
发布于 2012-05-21 15:13:02
一些笔记。
我认为,如果你想要建立一个坚实的系统来处理财务问题,那么使用金融界的一些基本概念是有意义的。我不想说你必须完全实现所有的会计功能,但在我看来,很多事情似乎都是合理的。
首先,金融交易涉及将资金从一个帐户转移到另一个帐户,所以我不使用user_id,而是使用account_id。每个用户可能有一个以上的帐户,每个帐户有一个类型(查找)和货币。此外,我会避免使用“用户”一词,而更倾向于“派对”(派对-角色-关系模式)。
其次,至少有两个参与者参与:资金从一个账户转移到另一个账户。在购买项目时,个人账户余额减少,组织账户余额增加。
而且,我不使用item_id,而是使用类似于event_id的东西。每个事务都与一个业务事件相关联。事件是系统中可能发生的各种事件的公共父表。Event的每个细节表都将保存特定于事件类型的信息。例如,您可以拥有purchase_event、deposit_event等。
因为transaction表是许多(可能有数千个)插入的主题,所以我不会每次需要帐户余额时都会查询它。在account表中保持合并平衡是有意义的。
我希望这是有意义的。
发布于 2012-05-21 15:26:07
除非您真正知道系统应该做什么,否则很难对数据库的体系结构说些什么。但我还是尽力了。
我不认为把这么多信息放在一张桌子上是个好主意。
这样我会做得更好-- transactions(id, user_id, amount, timestamp),这个表包含了关于每笔付款的最小信息。
其他一切都是分开的,例如transactions_types(transaction_id, type)和transactions_items(transaction_id, item)
关于学分。如果购买的是相同的货币,您只需再添加一种类型的事务,并在必要时将表作为transactions_psid(transaction_id, psid)。
如果货币不同,则一切取决于系统上的负载。只有一个表具有唯一的transaction_id是好的,直到它变成太多的记录。
https://stackoverflow.com/questions/10687274
复制相似问题