建议DB Design记录系统中的用户活动

时间:2013-04-17 03:15:03

标签: database database-design logging

我想问一个关于良好数据库设计的建议,以记录用户活动。

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

表日志

- 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. 电子商务日志
  3. 每个表将记录每个相应模块中的活动。

1 个答案:

答案 0 :(得分:1)

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

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

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

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