【发布时间】:2010-05-09 12:23:01
【问题描述】:
在记录网站上的所有活动以及数据库更改方面需要帮助。
要求:
- 应该在数据库中
- 应该可以通过发起者(用户名/会话 ID)、事件(活动类型)和事件参数轻松搜索
我可以想到一种数据库设计,但要么它涉及很多表(每个事件一个),因此我可以将事件的每个参数记录在一个单独的字段中,或者它涉及一个带有通用字段的表(7 int numeric和 7 种文本类型)并将所有内容记录在一个带有事件类型字段的表中,以确定将哪些参数写入何处(并希望我不需要超过 7 个某种类型的字段,或者 8 个或 9 个或我选择的任何数字)。 ..
条目示例(通常的东西):
[username] login failed @datetime
[username] login successful @datetime
[username] changed password @datetime, estimated security of password [low/ok/high/perfect] @datetime
[username] clicked result [result number] [result id] after searching for [search string] and got [number of results] @datetime
[username] clicked result [result number] [result id] after searching for [search string] and got [number of results] @datetime
[username] changed profile name from [old name] to [new name] @datetime
[username] verified name with [credit card type] credit card @datetime
datbase table [table name] purged of old entries @datetime via automated process
等等……
所以之前有人处理过这个问题?有任何最佳做法/可以分享的链接?
我已经看到它使用上面提到的通用解决方案完成了,但不知何故,这与我从数据库设计中学到的东西背道而驰,但是正如您所见,需要跟踪的事件的绝对数量(每个用户都能够看到这个信息)让我很头疼,但我确实更喜欢每桌一个事件的解决方案,而不是通用的解决方案。
有什么想法吗?
编辑:另外,在某处可能有此类(可能)事件的权威列表吗?
thnx
堆栈溢出说:您提出的问题看起来很主观,可能会被关闭。
我的回答:可能是主观的,但这与我在设计数据库/编写代码时遇到的问题直接相关,所以我欢迎任何帮助。我还尝试将想法缩小到 2 个,因此希望其中一个会占上风,除非已经有针对此类事情的既定解决方案。
【问题讨论】:
-
Stackoverflow 说,仅因为您在标题中写了“最佳实践”,这不是对您的问题的分析:)
-
是的,我想,但只是想确保我没有被误解。谢谢
标签: database-design events logging