我正在使用mysql开发一个Web应用程序,我有几个表,包括用户和文章。
由于我想记录已更新所选文章的用户,我想到了三种可能性:
在我看来,第三个是多余的,第一个是非常概念化的(并且只保留了最后一个变化)。即使第二个似乎仅适用于一个表(文章),但如果必须为超过30个表保存更改,我担心它会变得更复杂且非常慢 - 表示更改表将有30个外键(?!)
最好的方法是什么?你对此有何看法?
答案 0 :(得分:1)
为此,MySQL有一个名为Audit Log的功能。这个想法是"审计"这是一系列数据更改事件,写入数据库外的日志文件。这样,您可以检查日志中的更改,您可以看到对同一数据的多个更改,您可以使日志到期等等。
审核日志需要插件实现才能完成其工作。 MySQL制作企业审计插件,但它不是免费的 - 您必须成为付费客户才能获得MySQL Enterprise。
审计日志插件实现也有一些免费替代方案。
您可能想尝试Percona Audit Log Plugin。这是Percona Server(MySQL Community Edition的一个分支)附带的可选插件。你只需要启用插件。
安装和配置文档:https://www.percona.com/doc/percona-server/5.7/management/audit_log_plugin.html
答案 1 :(得分:0)
你真的想知道修改文章的每个人吗?如果答案是肯定的,你必须使用第二个,我认为最好的选择是第一个(考虑到计算速度,时间),我想你只需要知道修改文章的最后一个人。