4

我想请教一个好的数据库设计来记录用户活动的建议。

目前我正在为一个简单的网站实施这种方法,用户可以在该网站上发布/编辑/删除文章。

表日志

- log_id
- log_change[Enum: new/edit/remove]
- log_date
- member_id
- post_id

桌柱

- post_id
- post_title
- etc....

表成员

- member_id
- member_username
- member_pwd
- etc..

使用此表,每次用户发表一篇文章的新帖子(或编辑/删除)时,它都会记录在日志中(连同它发生的时间)。

但是,如果我正在处理一个更大的系统,用户不仅可以发布文章,还可以执行其他操作,例如登录/注销(从系统),进行购买(交易)。

我应该为每个模块选择不同的表吗?例如,如果系统具有发布文章、电子商务等模块。因此,我将有以下日志表:

  1. 文章日志
  2. 电子商务日志

每个表将记录每个相应模块中的活动。

4

1 回答 1

2

您可以使用实体子类型设计方法,其中常见的日志属性,如何时在单个表中跟踪所有类型的更改。对于具有附加属性的更改,您可以拥有附加表,每种类型一个。

每个子类型的日志表都使用外键引用公用表。通常从子类型表到普通表的外键也是子类型表的主键,即1:1的关系。

在这样的设计中,公用表通常包括一个列(分区属性),该列指示公用表中的每条记录适用哪个子类型。

这种方法减少了构建和维护日志系统所需的代码量,同时允许您保持日志表的规范化。

于 2013-04-17T12:55:18.393 回答