База данных для отслеживания уведомлений или активности пользователей (например, в Facebook)

Я только что прочитал следующие сообщения по той же теме:

Facebook как отслеживание уведомлений (DB Design) и Дизайн базы данных для хранения уведомлений для пользователей

Были предложены некоторые решения, но не совсем то, что мне нужно и каким оно должно быть для системы уведомлений, подобной Facebook.

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

notification
-----------------
id (pk)
userid
notification_type
notification_text
timestamp
last_read

С помощью этой структуры таблицы мы можем показать все уведомления для одного пользователя, и это довольно солидное решение. Но в этом случае мы можем отображать только текстовое уведомление. Мы не можем просто сослаться на пользователя или сообщение на стене.

Я пытаюсь найти решение этой проблемы. Один из них - хранить BB-коды в свойстве notification_text, но тогда вам нужно написать парсер BB-кода как для веб-приложений, так и для мобильных. Другой вариант - создание другой таблицы, производной от этой таблицы уведомлений, с идентификаторами необходимых нам сущностей. Пример:

PostCommentNotification : Notification
----------------------------------------
id
userId (user who commented on a wall post)
postId (post where comment was made)

Теперь мы можем написать шаблон для отображения уведомления (нам больше не нужно свойство text в таблице уведомлений), а затем обработать его отображение. Я тоже не удовлетворен этим решением, так как количество таблиц, полученных из таблицы уведомлений, может быть большим (для каждого типа уведомлений).

Я ищу идеи! :)

7
задан Community 23 May 2017 в 11:45
поделиться