数据库实现以保存用户活动信息

时间:2011-04-23 20:17:43

标签: mysql ruby-on-rails database android-activity

我正在使用Ruby on Rails 3和MySQL。

在我的项目中,我想创建一个活动流“模块”,以便将每个用户操作信息保存在专用用户表中。也就是说,为每个用户创建一个数据库表。

在我的应用程序中为每个(新注册的)用户创建数据库表是一种好方法吗?

3 个答案:

答案 0 :(得分:2)

不,这不是一个好方法。为什么要创建一个包含所有相同字段的单独表?只需将user_id添加到您的表中,并存储其中每个用户的所有信息。

答案 1 :(得分:1)

我做了类似的事情,没有必要为每个用户创建一个完整的表。例如,我有一个名为“user_actions”的表,其中有一列“user_id”。

关系是:

用户has_many :user_actions

UserAction belongs_to :user

你已经完成了。让外键关系自然而然地将特定操作绑定到特定用户。

一旦你这样做,你只需要决定:

  1. 哪些操作会导致添加条目?
  2. 您应保留多长时间(1周,6个月)?
  3. 例如,在我的网站上,我会记录用户查看的最后5件事情,并在页面的“最近查看的项目”部分显示该列表,以方便使用。

    我还有一个名为“admin_actions”的单独表,我用它来进行安全日志记录,跟踪管理员帐户下完成的所有操作,以及哪些管理员帐户进行了哪些更改。

答案 2 :(得分:-2)

我想答案是,这取决于有多少用户。如果它不是一个小的,定义的数字,那么我建议每个用户创建一个表不是一个好主意。

我建议使用一个表,其中一列是用户的唯一标识符。确保在您查询表时,您正在使用将此列作为键中第一列的索引。例如。 PRIMARY KEY(user_id, activity_time)

这样可以快速有效地读取行。