Реализация функционала лайков, где и как правильно хранить информацию?

Есть бд, где есть посты и пользователи. У поста есть характеристика: сколько лайков. Пользователи могут оставлять и убирать лайки. Как правильно хранить информацию о том, какой пользователь кому поставил лайки? В голове только 1 реализация: у каждого юзера в бд добавить свойство "лайкнутые посты", в котором будут перечисляться айдишки постов, на которых от него уже стоит лайк (чтобы он не мог поставить второй, но мог убрать). Но мне кажется это не оптимизированным чтоли, как будто есть более элегантное решение хранение этой информации. Как это реализуют на реальных проектах?


Ответы (1 шт):

Автор решения: Semen

Создать поле у постов likeUsers при этом при лайке будет использоваться уникальный идентификатор пользователя id а при убирании лайка он будет автоматически удаляться.

Если есть и дизлайки то у постов должно быть еще одно поле, а там дальше как у likeUsers.

Также можно использовать Ваш вариант который мог бы пригодиться для выводы общей статистики по лайкнутым постам, но можно брать массив постов, искать по likeUsers указав уникальный идентификатор пользователя. Дальше делаете самостоятельно.

→ Ссылка