在数据库中存储信用

Tom*_*mas 4 php mysql database-design

只是一个quickey.我正在开发网站,您可以在网站上购买积分并将其用于网站上.我的问题是,用户(用户表,列信用额和迭代金额)存储信用额度是否可以,或者有必要(或者更好)拥有用户ID和金额的单独表格?

谢谢

And*_*ore 5

两个都是.

考虑到您将处理货币交易以获得这些信用,您希望能够获得所有交易的日志(根据您所在国家/地区的法律,您将需要此信息).因此你需要一张credits_transactions桌子.

user_id, transaction_id, transaction_details, transaction_delta
Run Code Online (Sandbox Code Playgroud)

由于以编程方式计算当前的贷方余额对于拥有大量交易的用户来说成本太高,因此您还需要credit_balance在用户表中添加一行以便快速访问.使用触发器自动更新每当行从插入的列credits_transactions(在技术上,updatedelete不应在该表允许).这是插入触发器的代码.

CREATE TRIGGER ct_insert
AFTER INSERT ON credits_transactions
BEGIN
  UPDATE users SET credit_balance = credit_balance + NEW.transaction_delta WHERE user_id = NEW.user_id;
END
;;
Run Code Online (Sandbox Code Playgroud)