我想存储发票数据,如人员地址。但问题是地址会随着时间的推移而改变——例如,有人会搬出去改变他的地址。存储此类数据的问题出现了,因为我们无法更改某些发票上引用的数据。
我有 3 个表:(AddressInfo包含 StreetAddress 等),Person它们与AddressInfo, 和Invoice表具有一对多关系。
我有两个解决方案,但我不确定哪个方向是正确的方法:
创建AddressInfo并使其可软删除,添加一些类似的列IsActive,IsDeleted以便我的Invoice表可以通过其 ID 引用此地址信息,并且保证保持不变,除非有人在不使用我的应用程序的情况下直接更改此数据。
因此,当有人更改他的地址时,我会软删除(也许应该称为软更新?)当前地址并添加新地址,而根本不会触及旧记录。最好先检查一下发票上是否引用了它以防止污染。
我的Invoice桌子看起来有点像:
| InvoiceId | AddressInfoId |
将所需的列添加AddressInfo到我的Invoice表中。每次创建新发票时,我都必须复制数据,地址不会经常更改,重复记录会稍微污染我的数据库。
我的Invoice表看起来有点像(大大简化):
| InvoiceId | StreetAddress |
您是否有使用解决此特定问题的数据库(可能是某些 ERP 软件)的经验?
有趣的朗读: