id, userId, entityId, entityType, createdAt, updatedAt
Как то так можно.
Т.к.
id - УН записи
userId - УН пользователя
entityId - УН записи/лайка/etc...
entityType - тип сущности (post, like, msg ....)
createdAt - дата создания
updatedAt - дата обновления (т.е. когда юзер прочел уведомление)
Соответственно, если есть/отличается updatedAt, то не выводим.
Можно добавить id пользователя который запостил/лайкнул
Программа видит что есть новые не прочтенные записи, смотрит кому отображать, какую сущность взять (фото, пост и т.д.)
Все зависит от конкретной подачи информации.
Реализаций множество =)