数据库设计的问题:查询历史记录
我问个数据库设计的,如果发货表里面有一个字段是跟运输方式关联的,关联的是运输方式表,运输方式表里面保存了单价等各种信息。假如以后单价改变了,那么在去查历史记录的时候计算价格就不正确了,这怎么处理。
比如上个月单价是10元/KG,上个月的发货量是100KG,那么发货费是1000元。这个月单价变成了11元/KG,然后我在查上个月的发货费,就变成了1100元,这怎么办?
我想到的是把那些关联的字段都放到一个表里,但是这样的话表的数据就有很多冗余了,大家是怎么做的
------解决方案--------------------运输方式表不能在加个日期字段吗?
------解决方案--------------------基表的数据可以作为参考,或为了后续选择方便。但是由于很多情况的不确定性。在明细表中增加 单价字段,在业务发生的过程中, 单价做成即可选又可写入的灵活方式。如果为了更好说明,可以增加一个 备注字段,加以说明。 数据冗余有时候是必要的,只要能很好的解决问题就可以。要灵活多用。不能四套理论。
------解决方案--------------------发货表里面追加一个运费列,记录运费如何?
或者用一个表记录价格调整记录?
------解决方案--------------------直接在发货表里加入单价字段,每次生成发货记录时都写入运输方式中的单价即可。
------解决方案-------------------- 如果明细表引用了字典表的数值并且该值可能发生变化,但历史记录不允许改变的情况下,明细表必须完整记录所引用数值。
即:
发货表中必须完整记录下运输方式、价格。
同时,运输表中的记录不能进行删除(除非没有被引用过),可以增加有效状态标志,如果有修改需求(如调价)则应采用“调整”功能,将之前记录标记为停用,然后新增加一条可用记录。
------解决方案--------------------多加个字段来记录