Jer*_*emy 5 database logging database-design
我想向 a 寻求关于良好的数据库设计来记录用户活动的建议。
目前我正在为一个简单的网站实施这种方法,用户可以在网站上发布/编辑/删除文章。
表日志
- log_id
- log_change[Enum: new/edit/remove]
- log_date
- member_id
- post_id
Run Code Online (Sandbox Code Playgroud)
桌柱
- post_id
- post_title
- etc....
Run Code Online (Sandbox Code Playgroud)
表成员
- member_id
- member_username
- member_pwd
- etc..
Run Code Online (Sandbox Code Playgroud)
使用此表,每次用户对文章发表新帖子(或编辑/删除)时,都会将其记录在日志中(以及发生的时间)。
但是,如果我正在处理一个更大的系统,用户不仅可以发布文章,还可以执行其他操作,例如登录/注销(从系统)、进行购买(交易)。
我应该为每个模块选择不同的表吗?例如,如果系统具有发布文章、电子商务等模块,那么我将拥有以下日志表:
每个表将记录每个相应模块中的活动。
您可以使用实体子类型设计方法,其中常见的日志属性(例如谁和何时在单个表中跟踪所有类型的更改)。对于具有附加属性的更改,您可以拥有附加表,每种类型对应一个表。
每个子类型日志表都使用外键引用公共表。通常,子类型表到公共表的外键也是子类型表的主键,即1:1的关系。
在这样的设计中,公共表通常包括一列(分区属性),该列指示公共表中的每条记录适用哪种子类型。
这种方法减少了构建和维护日志系统所需的代码量,同时允许您保持日志表规范化。
归档时间: |
|
查看次数: |
5404 次 |
最近记录: |