sql - SQL循环外键
问题描述
假设一个数据库拥有一些账户和它的交易。
将有一个表Account
(为简单起见,它只包含一个 id)和一个Transaction
包含列id
、account_id
(外键)、type
和的表value
。
现在,如果存入一些钱,那就没有问题了。account_id
被选择并且type
被value
定义。但是,如果我想将钱从账户 a 转移到账户 b 怎么办?
我考虑过添加某种offset_account_id
来区分从哪里到哪里,但这不是一个好的解决方案。
或者我是否为每个涉及的帐户添加两个交易?然后我首先必须插入两者,然后更新两者,因为它们需要相互循环引用。
第三,我考虑添加一个“转移”表来保存transaction_id
相关帐户。
尽管如此,我对最后一个解决方案的问题是,如果我删除帐户 a 我想在整个数据库中级联,所有事务都应该被自动删除。但是如果我删除a,那么a的交易将消失,转移表中的条目也会消失,但账户b的交易仍将在数据库中。
这些“会计”问题的好布局是什么?
附带问题:您会在运行时计算余额还是使用插入/删除/更新触发器来将余额存储在相应的帐户中?
解决方案
推荐阅读
- excel - 从范围中提取数据的 Excel 输入字段
- java - 如何从 jacoco 报告中正确排除和包含类、包和 jar 类、lib(离线仪器)
- rust - Rust 克隆的闭包预期闭包,发现不同的闭包
- python - Scrapy - 如何写入自定义 FEED_URI
- asp.net-core - 如何在具有模型继承的 ASP.Net Core Razor 页面中使用 DisplayTemplates?
- laravel - 在 Laravel vuejs Axios 中根据下拉列表选择值填充表格
- linux - 如何查找所有以 /filesystem 开头的文件系统
- powershell - 以输出路径为变量的 Export-CSV
- winapi - 如何检测是否连接了外部硬盘驱动器
- hybris - 当我将目录的暂存版本与在线版本同步时,媒体容器未同步