0

这是困扰我很长时间的事情,我仍然无法找到答案。

我有一个具有许多不同功能的庞大系统。这个系统的共同点当然是我users可以

创建、更新、读取和删除

我系统的不同部分。

出于简单的原因,可以说我有一个具有以下功能的应用程序:

  • 文件管理
  • 视频管理
  • 用户管理
  • 工资管理

(请注意,我随机取了这些只是为了证明所有这些都有自己的单独表格并且不一定是连接的)。

现在我希望创建某种日志系统。这样当有人创建、更新或删除实体时,它就会被记录下来。

现在据我所知,我可以通过两种方式做到这一点。

1.

为我系统中的 4 个功能中的每一个创建一个日志记录表。但是,使用这种方法,我需要为添加到系统的每个新功能创建一个日志记录表。如果我希望创建一个可能是一项艰巨任务的日志,我还必须合并来自 X 个表的数据!

2.

我可以创建如下内容:

在此处输入图像描述

然而,我必须再一次为我将添加的每个新功能添加一个 col。

所以我的问题是创建日志数据库架构的最佳方法是什么

或者有没有更简单的方法?

4

2 回答 2

1

您可以这样做,而不是每个功能一个 target_xx :

target_id | target_type
1           video
4           document
5           user
2           user

甚至更好。具有目标类型的表,并且仅在 target_type 上插入相应的 id

像这样的东西:

在此处输入图像描述

于 2016-01-05T10:51:33.013 回答
1

如果您想捕获每个表的创建和更新日期,我将只使用来自 mysql 的默认值和更新事件。您可以为表定义如下字段:

ALTER TABLE table 
ADD COLUMN CreateDate Datetime DEFAULT CURRENT_TIMESTAMP, 
ADD COLUMN LastModifiedDate Datetime ON UPDATE CURRENT_TIMESTAMP;

您可以在所有表​​中添加这 2 个字段。如果您想使用一个中央表进行日志记录(这可能更难管理,因为您总是需要创建连接,性能也可能更差),那么我会使用触发器。

于 2016-01-05T10:55:00.923 回答