【发布时间】:2011-11-01 19:55:51
【问题描述】:
假设我想在我的数据库的活动日志中记录某些内容。在某些情况下,这些活动与用户相关联(例如,用户创建了某些东西)。在某些情况下,这些活动是由应用程序自动完成的(例如,系统出于某种原因更新了某些记录)。我希望能够跟踪系统中谁做了什么。跟踪用户的行为似乎很简单:
TABLE: user
- user_id (PK)
TABLE: activity_log
- activity_log_id (PK)
- user_id (FK)
上述设计允许我将每个活动与特定用户相关联(并因此强制参照完整性)。但是,如果是系统采取了行动呢?它没有user_id,我可以插入activity_log。
我应该:
- 即使
0在user表中不存在,也只需插入,例如0作为activity_log.user_id来代表系统? InnoDB 不会让我这样做,对吧? - 专门创建一个用户来代表系统。问题是我的应用程序中的每个帐户所有者可能都需要它自己的“系统用户”,以便我以后可以区分一个帐户的系统用户和另一个帐户的系统用户。也许这可能会变得丑陋。不确定。
建议?
【问题讨论】:
标签: mysql database database-design