2009-12-09 5 views
3

Я разрабатываю facebook как модуль уведомлений в php/mysql, где пользователь уведомляется о последних мероприятиях среди своих друзей (добавлено фото/добавлено видео/комментарий и т. Д.). Каков наилучший подход к разработке этого модуля с точки зрения базы данных. Нужно ли иметь отдельную таблицу для каждого вида деятельности (например, фотографии). Или одного стола достаточно.Facebook, как Уведомления Система

И какая лучшая логика. Один из вариантов - каждый раз, когда пользователь выполняет действие, эта активность может быть вставлена ​​в таблицу со всеми идентификаторами друзей, то есть если у него 50 друзей, 50 записей. Таким образом, скрипт php не нужен, просто сканируйте таблицу при входе пользователя в систему. Второй вариант - всякий раз, когда пользователь вводит логин, просматривает своих друзей, хранит в массиве & просматривает таблицу уведомлений для каждого друга, сделал ли друг какие-либо действия.

Спасибо заранее, Хари

ответ

1

С точки зрения нормализации я бы сказал, есть базовая таблица и реализовать IS-A отношения между вашими таблицами (так что бы «отдельные таблицы»). С прагматичной и ориентированной на производительность точки зрения я бы сказал, что вам лучше использовать одну таблицу для всех из них и иметь столбец вроде type или что-то подобное.

Ваш первый пример логики не имеет смысла. Что, если парень входит в систему, получает 50 записей и быстро добавляет другого друга? Нет информации для этого парня ... Таким образом, я бы пошел со вторым предложением.

1

Индекс всех мероприятий с ID. Затем введите столбец записи в пользовательской таблице со всеми идентификаторами, которые «Просмотрены». Проверяйте каждый раз, когда пользователь входит в систему, какие идентификаторы действий (перекрестные проверки только для действий только для друзей) еще не находятся в столбце «Просмотр» и отображают их пользователю.

Смежные вопросы