我们正在开发预付卡的平台,该平台基本上保存有关卡及其余额,付款等的数据.
到目前为止,我们有一个卡实体,其中有一个账户实体的集合,每个账户都有一个金额,每次存款/取款都会更新.
现在团队中有一场辩论;有人告诉我们,这打破了Codd’s 12 Rules并且每次付款更新其价值都是麻烦.
这真的是个问题吗?
如果是,我们如何解决这个问题?
解决方法
是的,这是非标准化的,但偶尔的非标准化设计因性能原因而胜出.
但是,出于安全考虑,我可能会采用不同的方法. (免责声明:我目前没有,也没有在金融领域工作过.我只是把它扔到那里.)
在卡片上张贴已发布的余额表.这将为每个帐户插入一行,指示每个期间结束时的过帐余额(日,周,月或任何适当的值).按帐号和日期索引此表.
使用另一个表来保存挂起的事务,这些事务是即时插入的.在每个期间结束时,运行一个例程,将未过帐的交易添加到帐户的最后期末余额以计算新余额.将待处理的交易标记为已过帐,或查看日期以确定尚未处理的交易.
这样,您可以根据需要计算卡余额,而无需总结所有帐户历史记录,并通过将余额重新计算放入专用过帐例程,您可以确保此重新计算的交易安全性仅限于一个地方(并且还限制了余额表的安全性,因此只有过帐例程可以写入它).
然后,只需保留审计,客户服务和性能要求所需的历史数据.