Database design 一个简单的支付交易数据库设计

Database design 一个简单的支付交易数据库设计,database-design,Database Design,我需要设计一个基本的数据库支付交易。在这里,我可以为用户分配余额,每当他们购买东西时,我都会在应用程序中手动输入值,他们的余额应该会减少 这是我目前的设计 AccountTable Id Identity PK Balance decimal (18,2) CustomerID FK(Customer) Withdrawal Table Id Identity PK Amount decimal(18,2) Timestamp datetime comment varchar(100) Acc

我需要设计一个基本的数据库支付交易。在这里,我可以为用户分配余额,每当他们购买东西时,我都会在应用程序中手动输入值,他们的余额应该会减少

这是我目前的设计

AccountTable
Id Identity PK
Balance decimal (18,2)
CustomerID FK(Customer)

Withdrawal Table
Id Identity PK
Amount decimal(18,2)
Timestamp datetime
comment varchar(100)
AccountID FK(AccountTable)

Deposit Table
Id Identity PK
Amount decimal(18,2)
Timestamp datetime
comment varchar(100)
AccountID FK(AccountTable)
我不知道如何更新余额

这是一个ASP.NET MVC网站,所以我想无论何时发生交易(购买产品)或加满他们的帐户,我都会在控制器中有一个进程来获取存款总额和交易总额,并进行存款-取款和更新余额


这是一个不错的选择,还是一个非常糟糕的主意?我可以在设计上做一些简单的改进。

为什么不使用一个表,在表中用负号记录取款,用正号记录存款?。然后,当您需要显示余额时,您只需要运行一个SQL SUM即可。请同意,使用单个事务表可能是最好的方法。至于更新余额,或者不更新,并创建一个进行求和的视图(非常简单的解决方案,但如果有太多事务,则可能会变得太慢),或者使用触发器,以便无论事务如何更新,余额仍然是正确的。