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 и т.д.
  • Вопрос задан
  • 293 просмотра
Решения вопроса 1
@shoomyst
dumb
Отдельные таблицы для каждого типа уведомления не рассматриваются?
Сущности у вас же будут разные, какой тип для resource_id вы выберете? Bigint надо брать :)
Можно иметь общую таблицу уведомлений (notifications) для удобства выборки, в которой будет помимо прочего пара полей FK (notification_type + notification_id) и на каждый тип своя таблица (comment_notifications, like_notifications) с любыми наборами полей, необходимыми для каждого типа.
Ну это так, первые мысли вслух.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы