MySQL присоединяется к фиду друзей - PullRequest
1 голос
/ 06 октября 2010

В настоящее время я регистрирую все действия пользователей и хочу показать их действия для людей, которые следят за ними, - вроде как Facebook делает это для друзей.

Я записываю все эти действия в таблицу со следующей структурой:

  • id - PK
  • идентификатор пользователя - идентификатор пользователя, чье действие регистрируется
  • actiondate - когда действие произошло
  • actiontypeid - идентификатор типа действия (типы действий, хранящиеся в другой таблице - например, следование за другими пользователями, запись в профилях людей, создание нового контента, комментирование существующего контента и т. д.)
  • objectid - идентификатор объекта, который они только что создали(т. е. идентификатор комментария)
  • onobjectid - идентификатор объекта, с которым они выполнили действие (т. е. идентификатор содержимого, к которому они прокомментировали)

ТеперьПроблема в том, что существует несколько типов действий, которые регистрируются ( actiontypeid ).

Каков наилучший способ получения данных для отображения пользователю?

Самый простой выход - это набрать людей, за которыми пользователь следит за набором данных, а затем просто пойти оттуда и взять всю остальную информацию из других таблиц (то есть имен пользователей, за которыми вы следите, только что начали следить, имена профилей пользователей, на которых они написали, и т. д.).Однако это создаст огромное количество небольших запросов и обращений к базе данных в цикле while.Не очень хорошая идея.

Я мог бы использовать объединения для извлечения всего в одном массиве данных, но как узнать, откуда можно получить данные всего за один запрос?- есть различные типы действий, которые требуют от меня просмотра нескольких разных таблиц для извлечения данных, основанных на actiontypeid ...

, т. е. чтобы получить Пользователь Xтеперь следует за пользователем Y Я должен был бы получить свои данные (имя пользователя пользователя Y) из таблицы последователей , тогда как пользователь X прокомментировал содержание Y потребуется, чтобы я заглянул в таблицу content , чтобы получить заголовок и URL контента.

Любые советы приветствуются, спасибо!

1 Ответ

1 голос
/ 08 ноября 2010

Рассмотрите возможность создания нескольких представлений для различных типов типов действий.Объедините их, чтобы иметь одну полную историю.

...