通常,数据库范式会要求我们减少数据冗余,但实际上现在的应用会越来越多的采用数据冗余的方式来改善性能. 在实际应用中,数据冗余通常可分为以下几种情况
1. 必要的数据冗余
必须认识到,很多数据冗余是必要,类似产品的单价,或者是汇率,有必要记录到每次交易中,这些这些数据是经常变化的,如果不记录,将来对该交易就不能还原到当时的情况
2. 可选的数据冗余
比方说金额,它通常是单价*数量(有时它还需要考虑折扣和汇率),这些数据如果不使用数据冗余,通常的做法它会在sql查询中计算,或者使用特定数据访问的功能,像datacolumn的expression.
我们要讨论的第二种,默认的,ax并没有提供计算列 或是在sql中创建计算列的功能. 标准的,它使用edit/display方法. 而这些方法通常会造成一次client/server往返,有时它还要查询额外的数据库.
当然,另一种选项是使用临时列,但实际上,它并没有将该数据作冗余处理简单.
当将某一数据作冗余处理时,我们需要在table 的modifiedField方法中捕捉相关列的变化. 当使用临时列时,额外的,我们还需要在postLoad后 装载初始数据
3. 节省连接的数据冗余
必须承认,在ax作表连接是一个比较繁琐的事情,特别是与form在一起时, 仅仅在更新或新增数据时保存冗余的数据,有时会大大的节省代码.
所以,一句话,在ax中,没有必要排斥数据冗余,这是我项目进行中的一个体会.