假设数据库中包含一些帐户及其交易。
会有一个表Account
(为简单起见,它仅包含一个ID)和一个表Transaction
,该表具有列id
,account_id
(外键),{ {1}}和type
。
现在,如果存入一些钱,那就没问题了。选择value
并定义account_id
和type
。但是,如果我想从帐户a转移到帐户b,该怎么办?
我曾考虑过添加一种value
来区分从哪里到哪里,但这不是imo的好解决方案。
还是为每个涉及的帐户添加两个交易?然后,我首先必须同时插入两者,并在更新后都需要互相引用。
第三,我考虑添加一个“转帐”表,该表将保存所涉及帐户的offset_account_id
。
我最后一个解决方案的问题是,如果我要删除一个帐户,而我想在整个数据库中级联它,则所有交易都应自动删除。但是,如果我删除a,则a的交易将消失,转帐表中的条目也将消失,但帐户b的交易仍将存在于数据库中。
如何解决这些“会计”问题?
其他问题:您是在运行时计算余额还是在插入/删除/更新触发器上使用余额来存储相应帐户?