Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP/MySQL创建和构造虚拟学分系统_Php_Mysql_Payment Gateway_Payment_Credits - Fatal编程技术网

如何使用PHP/MySQL创建和构造虚拟学分系统

如何使用PHP/MySQL创建和构造虚拟学分系统,php,mysql,payment-gateway,payment,credits,Php,Mysql,Payment Gateway,Payment,Credits,在PHP/MySQL中构建虚拟学分系统的最佳方法是什么 很明显,我需要为每笔交易(借方/贷方)提供一张表。我想我需要该表中的以下列: 交易ID(唯一的交易ID从1开始自动递增) UserID(主用户表中的用户唯一ID) 类型(赚取、购买、花费等) ItemID(如果花费在项目上) 金额(正数或负数) 问题: 1)此表中是否需要其他列? 2)我还需要其他表格吗? 例如,我是否需要另一个表来跟踪每个用户的总数?或者我会简单地将每个用户的总数计算为他们所有事务的总和吗 起初,这个信用系统将纯粹是“

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

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

  • 交易ID
    (唯一的交易ID从1开始自动递增)

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

  • 类型
    (赚取、购买、花费等)

  • ItemID
    (如果花费在项目上)

  • 金额
    (正数或负数)

问题:

1)此表中是否需要其他列?

2)我还需要其他表格吗?

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

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

除了回答我上面的问题之外,我非常感谢任何和所有的见解和想法,包括关于如何进行的具体文章的链接,因为我以前从未编写过类似的程序

谢谢

一些注释

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

首先,金融交易涉及到将资金从一个账户转移到另一个账户,因此我不会使用
user\u id
,而是使用
account\u id
。每个用户可能有一个以上的帐户,每个帐户有一个类型(查找)和货币。此外,我会避免使用“用户”一词,而使用“参与方”(参与方角色关系模型)

第二,总是有至少两方参与:资金从一个账户流向另一个账户。物料采购时,个人账户余额减少,组织账户余额增加

另外,我不会使用
item\u id
,而是使用类似
event\u id
的东西。每个事务都与一个业务事件关联。事件是系统中可能发生的各种事件的公共父表。每个
事件
的详细信息表将包含特定于事件类型的信息。例如,您可以有
购买\u事件
存款\u事件
,等等

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

我希望这是有意义的。

一些注释

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

首先,金融交易涉及到将资金从一个账户转移到另一个账户,因此我不会使用
user\u id
,而是使用
account\u id
。每个用户可能有一个以上的帐户,每个帐户有一个类型(查找)和货币。此外,我会避免使用“用户”一词,而使用“参与方”(参与方角色关系模型)

第二,总是有至少两方参与:资金从一个账户流向另一个账户。物料采购时,个人账户余额减少,组织账户余额增加

另外,我不会使用
item\u id
,而是使用类似
event\u id
的东西。每个事务都与一个业务事件关联。事件是系统中可能发生的各种事件的公共父表。每个
事件
的详细信息表将包含特定于事件类型的信息。例如,您可以有
购买\u事件
存款\u事件
,等等

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


我希望这是有意义的。

除非您真的知道系统应该做什么,否则很难说数据库的体系结构。但我仍然在努力

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

这样做我会做得更好-
交易(id、用户id、金额、时间戳)
,此表包含有关每次付款的最低信息

其他一切都是分开的,例如
交易\类型(交易\ id,类型)
交易\项目(交易\ id,项目)

关于学分。如果购买的是同一种货币,您只需再添加一种交易类型,如有必要,可将表添加为
transactions\u psid(transaction\u id,psid)


如果货币不同,这一切都取决于系统上的负载。只有一个具有唯一事务id的表是好的,直到它变成太多记录。

除非您确实知道系统应该做什么,否则很难说明数据库的体系结构。但我仍然在努力

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

这样做我会做得更好-
交易(id、用户id、金额、时间戳)
,此表包含有关每次付款的最低信息

其他一切都是分开的,例如
transactions\u type(transaction\u id,type)