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

use*_*875 5 database logging android-activity

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

jer*_*use 9

我建议您创建一个activity_type表和一个logs表。

activity_type | id | name           | table
--------------+----+----------------+-------
                 1 | added friend   | tbl_users
                 2 | added comment  | tbl_comments
                 3 | added image    | tbl_images
                 4 | Updated dp     | NULL
Run Code Online (Sandbox Code Playgroud)

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

   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
Run Code Online (Sandbox Code Playgroud)

用户#15 在 3 月 10 日添加了一位新朋友用户#5。

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

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

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

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

相同的方法可用于存储审核日志。