操作日志表设计

管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。
 
  在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?
  在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。
  打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,如:
  生成订单 → 生成商品快照 → 发送一条站内信 → 删除购物车里对应宝贝
  这样一个下单操作就包含了4部分,可以把这4部分看成是4张表,分别对这4张表进行对应的操作,就实现了业务。
  但今天我要讲的不是业务操作日志,因为不同项目的业务不尽相同,所以它无法做成通用模块,而我要讲的,就是普通操作日志。
  上面解释了一大段,下面干货就要亮相了,先洗把脸清醒下。
  ……
  首先,哪些地方需要记录操作日志?执行insert、update、delete这3个操作的时候,就需要进行日志,而日志执行的先后顺序如下
insert 在insert后执行
update 在update前后都要执行,操作前获取操作前数据,操作后获取操作后数据
delete 在delete前执行
  顺序清楚后,就来看下我写的一份日志操作类吧,第一版随便写写的,重复代码有点多,还未来得及优化。

  • View Code
      使用前,需要引入数据库操作类,这是我之前写的一份,可参考《全新的PDO数据库操作类(仅适用Mysql)》。
      引入之后,就可以开始使用了。
      select
$log->insert(82, 'tb_member');

update

$log->updateStart(82, 'tb_member');

//中间放更新操作代码

$log->updateEnd();
  delete
$log->delete(82, 'tb_member');

可以看到,一共只需要两个参数即可,分别是表ID(主键)和表名称。
  另外需要强调一点,表注释和字段注释一定要完整,因为记录的信息包含注释,目的就是为了查阅的时候能清楚哪个字段是干什么用的。
  下面就看下成品吧
在这里插入图片描述
在这里插入图片描述

最后把表结构分享下,一共2张表,一张主表一张从表,主表记录操作表及操作人等信息,从表记录操作的表字段信息。

CREATE TABLE `tb_log` (
  `tbid` bigint(20) NOT NULL AUTO_INCREMENT,
  `adminid` bigint(20) DEFAULT NULL COMMENT '管理员id',
  `type` tinyint(4) DEFAULT '1' COMMENT '操作类型:1新增2修改3删除',
  `tableid` bigint(20) DEFAULT NULL,
  `tablename` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '表名',
  `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `dt` datetime DEFAULT NULL,
  PRIMARY KEY (`tbid`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `tb_log_content` (
  `tbid` bigint(20) NOT NULL AUTO_INCREMENT,
  `logid` bigint(20) DEFAULT NULL,
  `tbkey` longtext COLLATE utf8_unicode_ci,
  `tbvalue` longtext COLLATE utf8_unicode_ci,
  `currenttbvalue` longtext COLLATE utf8_unicode_ci,
  `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`tbid`)
) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

转自:https://www.cnblogs.com/hooray/archive/2012/09/05/2672133.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值