database - 在数据库中存储用户历史记录的最佳实践

标签 database android-activity logging

我需要一些建议... 我有一个应用程序,用户可以在其中执行某些操作。 例如,用户可以有 friend 。 所以... 用户可以看到他的好友 Activity 。 那么我应该如何在数据库中实现 Activity 日志呢? 我应该换一张新 table 吗? 我可以从多个表中进行一些查询并对连接的结果进行排序吗?

最佳答案

我建议您创建一个 activity_type 表和一个日志表。

activity_type | id | name           | table
--------------+----+----------------+-------
                 1 | added friend   | tbl_users
                 2 | added comment  | tbl_comments
                 3 | added image    | tbl_images
                 4 | Updated dp     | NULL

现在您可以使用下表轻松维护日志

   logs_table | id | user | activity_type  | object_id | time_stamp
--------------+----+------+----------------+-----------+------------
                 1 | 15   | 1              | 5         | 2012-03-10 08:45:05
                 2 | 15   | 2              | 19        | 2012-03-10 08:46:05
                 3 | 15   | 3              | 84        | 2012-03-10 08:47:05
                 4 | 15   | 4              | NULL      | 2012-03-10 08:48:05

用户#15 在 3 月 10 日添加了一个新 friend 用户#5。

用户#15 在 3 月 10 日添加了一条新评论#19。

用户#15 在 3 月 10 日添加了一张新图片#84。

用户#15 在 3 月 10 日更改了他的显示图片。

更新 可能存在 object_id 没有意义的 Activity ,例如更新的显示图像、更新的个人资料信息等。在这里,您可以将文本差异存储在单独的列中。

同样的方法可以用于存储审计日志。

关于database - 在数据库中存储用户历史记录的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9653146/

相关文章:

mysql - 如何停止和启动mysql?

c# - NHibernate firebird 错误 - 索引超出范围

java - 如何使用 Intent 在主要 Activity 布局之上打开 Activity ?

mysql - NodeJS 应用程序数据库版本控制和数据迁移

sql - 如何从没有键的表中检索非重复记录?

java - 抽屉式导航栏未显示

java - 如何在 Android 的 ScrollView 中将图像锚定到 Imageview 的中心?

php - 用于 PHP sqlsrv_connect() 的 SQL Server 驱动程序使用忽略的错误填充 PHP 错误日志

ruby-on-rails - (config.filter_parameters) 相当于 Rails 2.3.5

java - 如何使用 Logback 将 System.out 重定向到日志文件?