отдельная таблица для пользовательской активности или одного запроса выбора - PullRequest
0 голосов
/ 25 мая 2011

Я создаю социальную сеть для моего клиента, где ему нужна стена в стиле Facebook и недавняя активность пользователей.

У меня около 8 таблиц, в которых указаны учетная запись пользователя, информация, группы, комментарии, страница, фотогалерея, лайки, публикации.

В user profile им нужна вся активность пользователя на сайте.

Могу ли я использовать один запрос на присоединение или мне нужно иметь отдельную таблицу в качестве воспринимаемой .

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Вы можете запросить объединение, чтобы извлечь данные из разных таблиц и сохранить их в виде.Вот общая идея ...

create view 'v_recent_activity' as 
select user_id, 'comment' as action, comment_text as action_info, comment_date as action_date from comments
union
select user_id, 'photo' as action, photo_url as action_info, photo_date as action_date from photos
union
select user_id, 'page' as action, page_url as action_info, comment_date as action_date from pages
union
select user_id, 'likes' as action, like_info as action_info, comment_date as action_date from likes
union
select user_id, 'shares' as action, share_info as action_info, share_date as action_date from shares

Тогда вы можете получить к нему что-то вроде

Select * from v_recent_activity where action_date between <begin_date> and <end_date>

или с объединением

Select a.*, b.* from users a join v_recent_activity b on a.id = b.user_id where a.id = <user_id> and b.action_date between <begin_date> and <end_date>
0 голосов
/ 25 мая 2011

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

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