Задать вопрос
banderos120
@banderos120
Играю на балалайке

Как спроектировать БД для работы с уведомлениями?

Здравствуйте.
Есть задача, сделать систему уведомлений. Направления, по которым будут работать уведомления - множество. Тут как и оповещение о добавлении новых постов, заказов, комментариев, так и системные уведомления. Например, при добавлении ответа на комментарий, должен оповещаться и владелец комментария и владелец записи, под которой был комментарий.
В голову приходит мысль хранить уведомления следующим образом:
|-----Notifications-----|
=================
| id----------------------|
| user_id ---------------| - это от кого уведомление
| subscriber_id -------| - это ДЛЯ кого уведомление
| type ------------------| - это строка с название ТИПА уведомления (_comment, _post, _hire, _answer и т.д.)
| resource_id ---------| - это указатель на сущность, которая привязана к уведомлению
| created_at ----------|
| is_active ------------| - отметить если прочитано
================

Еще думал добавить поля для сохранения информации (title, description) .
В принципе вопрос в заголовке. Может кто-то уже решал подобные задачи и может поделиться своим опытом. Опять же, рассматривал варианты с явной связью, т.е. добавлением в таблицу полей - comment_id, post_id и т.д.
  • Вопрос задан
  • 319 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@shoomyst
dumb
Отдельные таблицы для каждого типа уведомления не рассматриваются?
Сущности у вас же будут разные, какой тип для resource_id вы выберете? Bigint надо брать :)
Можно иметь общую таблицу уведомлений (notifications) для удобства выборки, в которой будет помимо прочего пара полей FK (notification_type + notification_id) и на каждый тип своя таблица (comment_notifications, like_notifications) с любыми наборами полей, необходимыми для каждого типа.
Ну это так, первые мысли вслух.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы