我正在使用Ruby on Rails 3和MySQL。
在我的项目中,我想创建一个活动流“模块”,以便将每个用户操作信息保存在专用用户表中。也就是说,为每个用户创建一个数据库表。
在我的应用程序中为每个(新注册的)用户创建数据库表是一种好方法吗?
答案 0 :(得分:2)
不,这不是一个好方法。为什么要创建一个包含所有相同字段的单独表?只需将user_id
添加到您的表中,并存储其中每个用户的所有信息。
答案 1 :(得分:1)
我做了类似的事情,没有必要为每个用户创建一个完整的表。例如,我有一个名为“user_actions”的表,其中有一列“user_id”。
关系是:
用户has_many :user_actions
UserAction belongs_to :user
你已经完成了。让外键关系自然而然地将特定操作绑定到特定用户。
一旦你这样做,你只需要决定:
例如,在我的网站上,我会记录用户查看的最后5件事情,并在页面的“最近查看的项目”部分显示该列表,以方便使用。
我还有一个名为“admin_actions”的单独表,我用它来进行安全日志记录,跟踪管理员帐户下完成的所有操作,以及哪些管理员帐户进行了哪些更改。
答案 2 :(得分:-2)
我想答案是,这取决于有多少用户。如果它不是一个小的,定义的数字,那么我建议每个用户创建一个表不是一个好主意。
我建议使用一个表,其中一列是用户的唯一标识符。确保在您查询表时,您正在使用将此列作为键中第一列的索引。例如。 PRIMARY KEY(user_id, activity_time)
这样可以快速有效地读取行。