1 前言
在做企业级管理系统时,我们需要对用户的操作行为进行跟踪,以便出现问题后对问题数据进行分析或者恢复。
2 系统设计
2.1 场景
例如现在我们有一张用户表User:
字段名 | 字段解释 |
USER_ID | 用户ID |
USER_NAME | 用户姓名 |
STATUS | 用户状态 1:正常 2:封账号 3:禁发动态 4:禁言 |
如果后台管理员对用户做了禁言等操作,必然需要对该操作以及原因进行日志记录以便后续的用户管理。最简单的日志记录就是针对这张USER表建立一张USER_LOG日志表,然后对操作进行记录。但是如果每张业务表的操作都如此进行日志记录,势必会造成日志表数量倍增,而且还会加大开发量。针对这种情况,我们可以设计一个通用的操作日志模块。
2.2 表设计
表说明:
操作日志表 -- 主要用来保存表名,业务模块名称,操作类型,操作内容等。
操作日志详细表 -- 主要用来保存字段的原始值和新值,用于数据恢复。
考虑到如果操作的字段较多,详细表可能数据量会很大,重新设计数据库表:
说明:CHANGE_COLUMN字段冗余了操作的字段名+前后值得json字符串。