关于数据日志的设计方案

06-01-18 frank_cn

在项目中经常碰到需要对客户户的数据变更进行跟踪或监控的需求,如客户信息管理模块中:

客户信息:

姓名:张三

地址:北京海淀区中关村XXX

电话:66666666

1月2日 地址被修改为:北京朝阳区国贸大厦xxx

5月1日 电话变更为:88888888

客户希望能够提供对其系统数据的历史情况进行查询,应该如何进行设计?

anklyang
2006-01-19 08:27

如果你的客户的数据是一个独立的表,假如是user

那么你可以考虑多加一个历史记录表,分别记录变更前后的客户的数据,假如是history_user,

在history_user你可以记录变更的情况,以及变更的人,时间等等,方便以后查询

warmcool
2006-01-19 09:36

我觉得可以设计一个HISTORY表,用来记录所有操作历史,记录的地方在每个组件中的add(),update(),delete()等方法中。其实我觉得用Log记也很方便。

frank_cn
2006-01-19 10:19

如果是单数据修改,记录日志的问题不大,如果进行批量操作时,如何设计实现,如:

update Custom set custom_status=3 where (select custom_id from

custom_buy where sum(buy_money)>=1000)

需要对所有被更新的客户进行日志记录。

类似这样的应用,如何进行通用数据日志设计?

anklyang
2006-01-19 12:46

这个跟单数据没有关系吧

既然你你能修改到,同样也可以把抓出来再塞到历史表中

条件和你update的一样的

比如是:

insert into history(custom_id,custom_status,phone,previous_phone)

select custom_id,custom_status,(新的电话),phone(旧的电话) from

custom_buy

where custom_id in(select custom_id from

custom_buy where sum(buy_money)>=1000)