Реализация базы данных для сохранения информации об активности пользователя - PullRequest
1 голос
/ 24 апреля 2011

Я использую Ruby on Rails 3 и MySQL.

В моем проекте я хотел бы создать «модуль» потока операций, чтобы сохранить информацию о каждом действии пользователя в отдельной пользовательской таблице. То есть создать таблицу базы данных для каждого пользователя.

Это хороший подход для создания таблицы базы данных для каждого (нового зарегистрированного) пользователя в моем приложении?

Ответы [ 3 ]

2 голосов
/ 24 апреля 2011

Нет, это не очень хороший подход. Зачем вам создавать отдельные таблицы с одинаковыми полями? Просто добавьте user_id к вашей таблице и сохраните там всю информацию для каждого пользователя.

1 голос
/ 24 апреля 2011

Я делаю что-то подобное, и нет необходимости создавать целую таблицу для каждого пользователя.Например, у меня есть таблица с именем «user_actions», и в ней есть столбец «user_id».

Отношения:

Пользователь has_many :user_actions

UserAction belongs_to :user

И все готово.Пусть отношения внешнего ключа, возникающие естественным образом, позаботятся о том, чтобы связать конкретное действие с конкретным пользователем.

После этого вам нужно только решить:

  1. Какие действия вызываютзапись для добавления?
  2. Как долго вы должны хранить данные (1 неделя, 6 месяцев)?

Например, на моем сайте я веду журнал последних 5вещи, которые пользователь просматривал, и для удобства представляю им этот список в разделе страницы «Недавно просмотренные элементы».

У меня также есть отдельная таблица с именем «admin_actions», которую я использую для ведения журнала безопасности, в которойотслеживать все, что сделано под учетной записью администратора, и какая учетная запись администратора внесла какие изменения.

0 голосов
/ 24 апреля 2011

Полагаю, ответ в том, что это зависит от количества пользователей. Если это не маленькое определенное число, то я бы посоветовал не создавать хорошую таблицу для каждого пользователя.

Я бы предложил одну таблицу с одним столбцом, который является уникальным идентификатором пользователя. Убедитесь, что всякий раз, когда вы запрашиваете таблицу, вы используете индекс, у которого этот столбец является первым столбцом в ключе. Например. PRIMARY KEY(user_id, activity_time)

Это должно обеспечить быстрое и эффективное чтение строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...