对数据的操作的信息是记录到数据表里好还是记录到操作日志表里好呢?

时间:2022-09-17 07:48:44
项目里有很多表都有创建者、创建时间、修改者、修改时间这些字段,但是从业务的角度看,这些并不属于对应对象自身应有的属性,所以觉得有些不妥。并且即便加了那么多字段,仍然不能完整的反映变更的情况。
但是,独立做的操作日志功能又遇上另一个障碍:
操作日志表[时间、操作者、操作类型(增删改查 )、功能模块、主键]
记录例如[2001-01-01 12:00:00,admin,1,department,12]
但是关键就在于“主键”字段,虽然目前所有的模块主键都是int型,但是谁也无法保证以后的其他模块不会用其他类型的主键,这样的局限性就太大了,有什么办法解决么?

7 个解决方案

#1


都存成String最方便....
不过按理现在都是int型以后设计新模块也会用int吧,或者都用long
记录到什么表我也不知道...一般重要的记录个log
我也不大会,感觉好像是这样

#2


数据库,日志都可以。怎么方便怎么来。 

#3


都可以,不过我们的系统是放在日志里,如果不确定,同时放日志和数据库里都行。

#4


平常项目日志的话呢, 一般放日志文件里面

重要的数据操作或者 需要展现给用户看的,就记录在库里面吧

#5


引用 3 楼 Inhibitory 的回复:
都可以,不过我们的系统是放在日志里,如果不确定,同时放日志和数据库里都行。

引用 4 楼 shijing266 的回复:
平常项目日志的话呢, 一般放日志文件里面

重要的数据操作或者 需要展现给用户看的,就记录在库里面吧


我们现在只讨论记录到数据库里,提供检索的情况,不讨论记录到文件。只是讨论在数据库里这些记录放在哪儿的问题,无论是采取在每个数据表都加四个字段的方式,还是采取单独建立一个操作日志表的方式,都无法完美的解决这个问题~

#6


存表里,同时对于重要业务操作单独的历史表,相当于日志表~

#7


引用 5 楼 owen1759 的回复:
我们现在只讨论记录到数据库里,提供检索的情况,不讨论记录到文件。只是讨论在数据库里这些记录放在哪儿的问题,无论是采取在每个数据表都加四个字段的方式,还是采取单独建立一个操作日志表的方式,都无法完美的解决这个问题~

如果是存库,单独存一张表的话,建议村上表名,主键字段用String保存 ,也就是varchar 这样读出来转换也好,你唯一要做的就是区分是那张表做了操作

#1


都存成String最方便....
不过按理现在都是int型以后设计新模块也会用int吧,或者都用long
记录到什么表我也不知道...一般重要的记录个log
我也不大会,感觉好像是这样

#2


数据库,日志都可以。怎么方便怎么来。 

#3


都可以,不过我们的系统是放在日志里,如果不确定,同时放日志和数据库里都行。

#4


平常项目日志的话呢, 一般放日志文件里面

重要的数据操作或者 需要展现给用户看的,就记录在库里面吧

#5


引用 3 楼 Inhibitory 的回复:
都可以,不过我们的系统是放在日志里,如果不确定,同时放日志和数据库里都行。

引用 4 楼 shijing266 的回复:
平常项目日志的话呢, 一般放日志文件里面

重要的数据操作或者 需要展现给用户看的,就记录在库里面吧


我们现在只讨论记录到数据库里,提供检索的情况,不讨论记录到文件。只是讨论在数据库里这些记录放在哪儿的问题,无论是采取在每个数据表都加四个字段的方式,还是采取单独建立一个操作日志表的方式,都无法完美的解决这个问题~

#6


存表里,同时对于重要业务操作单独的历史表,相当于日志表~

#7


引用 5 楼 owen1759 的回复:
我们现在只讨论记录到数据库里,提供检索的情况,不讨论记录到文件。只是讨论在数据库里这些记录放在哪儿的问题,无论是采取在每个数据表都加四个字段的方式,还是采取单独建立一个操作日志表的方式,都无法完美的解决这个问题~

如果是存库,单独存一张表的话,建议村上表名,主键字段用String保存 ,也就是varchar 这样读出来转换也好,你唯一要做的就是区分是那张表做了操作