假设您拥有一个包含客户和订单的简单CRM系统。如果客户更改了他的名字,您是否希望旧历史订单也获得新名称,或者您是否将其复制到订单上的字符串值以保持准确性?
我怀疑有一个涵盖所有情况的答案,但我正在努力决定在哪里可以接受要更改的历史数据以及我无法接受的地方。一般来说,我认为如果可以打印,它必须在以后再次打印,因此不应该改变。
很高兴听到你的想法......
(如果此问题属于其他地方,请指明方向......)
答案 0 :(得分:2)
您不能允许更改此类历史数据,尤其是有朝一日可能需要打印并转交法院的内容。
一般来说,我使用的想法是,如果可以打印,那一定是 可以在以后再打印,因此不应该改变。
这不是一个糟糕的开始。但是一些印刷品预计会随着时间而改变。电话簿,十字交叉目录,账单地址。您希望允许包含“当前帐单邮寄地址”的列更改,但您不希望更改包含“订单时的帐单邮寄地址”的列。您希望“当前价格”随时间变化,但“订单时的价格”不应随时间而变化。
简而言之,在决定是否对其进行级联更新之前,您需要知道每个列的含义。
如果您允许“订单时的价格”随着时间的推移而改变,您将随着时间的推移更改订单总数 - 我确信您的会计师会对此感到满意。
有多种方法可以防止更改历史数据。
...JOIN customer_billing_addresses c ON c.start_date <= orders.order_date AND orders.order_date < c.end_date...
)。
您需要仔细设计以确保没有重叠
句点,并严格控制从客户帐单地址删除行。 (也就是说,几乎完全禁止。)无论采用何种方法,都要认真考虑谁应该有权更改历史表中的数据。一旦订单发货,这意味着几乎没有人。