逻辑这个东西
2021-06-16 非非
昨天对测试结果有疑义,发现之前和程序开发员讨论的ERP系统数据采集方式他并没有彻底理解。自己也是码农出身,就让他把code发过来看,一看发现query条件写反了而且低效,好笑又无奈,知道他会绕很久就写了code发过去让他照做,今天果然还是不太懂的样子。
简单解释一下情况:系统有两个table记录月物料库存,一个是现在库存,一个是历史数据。历史数据只有在库存有变化时才会生成。举例来说:2021年1月物料库存为100KG,2021年2月消耗新进物料后为200KG,那么就会生成一条2021-01 100KG的历史记录,如果2月到现在都没有变化那么历史数据最新的就只是2021年一月的。要求是生成每月月初和月末库存的报表。想想老外大叔程序员的数理理解力,昨天甚至还列举了列子:
如果求证2021年3月末库存
历史数据: 2021-01 100KG, 2021-04 200KG, 那么就是200KG
历史数据: 2021-01 100KG, 2021-03 50KG,2021-04 200KG 那么就是50KG
历史数据: 没有任何等于或晚于 2021-03的记录,就用现在库存
2021年3月月初库存就等于2021年2月月末库存。
晚饭时给上高中的女儿出这道题,告诉她2月份家里有3袋米,6月份现在有2袋米,历史数据的生成如上规则,问她4月份家里该有多少袋米?这可难倒了公主,一顿无厘头的乱猜。我把答案给了又解释的半天,最后变成讨论规则的合理性了。我开始解释为什么系统用这样的规则呢,大概是当年硬件存储昂贵,所以没有必要的记录就俭省了,没有用一月一计的方式,这也更符合Transactional DB的原则,不是Analytical DB的做法,不过确实增加了生成报表运算的量。现行条件下可能不会这样设计了,谁还在乎那点空间啊,但是数据多了还是会影响performance啊,index啊,扯远了。
这件事让我再次明白逻辑这个东西吧,明明白白的就是能把人绕晕,有的是因为固有的印象覆盖了真相,有的是因为畏惧繁杂而不去剥丝抽茧,有的是鲁莽无脑揪着线团乱扯。那些脑筋急转弯都是让人打破常规开启思路,这个远远不算吧,只是当年设计系统的人的一点小心思就迷惑了这一众啊。
: